summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Benisch <tbe@openoffice.org>2010-03-01 12:22:02 +0100
committerThomas Benisch <tbe@openoffice.org>2010-03-01 12:22:02 +0100
commitcff63b8d9dea2d92d10e25d88d47dcfa630cd526 (patch)
treeb2a5176563450976c722ab1cab42875c04a979b4
parent749cf33e099b4224f7c808effed7c8c702da7215 (diff)
parent13666e4e72c8d01e360f8074a9ce81895c5119d3 (diff)
chartshapes: merge with DEV300_m72
-rw-r--r--filter/inc/filter.hrc24
-rw-r--r--filter/inc/filter/msfilter/countryid.hxx318
-rw-r--r--filter/inc/filter/msfilter/escherex.hxx1612
-rw-r--r--filter/inc/filter/msfilter/mscodec.hxx340
-rw-r--r--filter/inc/filter/msfilter/msdffimp.hxx861
-rw-r--r--filter/inc/filter/msfilter/msfilterdllapi.h41
-rw-r--r--filter/inc/filter/msfilter/msfiltertracer.hxx96
-rw-r--r--filter/inc/filter/msfilter/msocximex.hxx1420
-rw-r--r--filter/inc/filter/msfilter/msoleexp.hxx60
-rw-r--r--filter/inc/filter/msfilter/svdfppt.hxx1440
-rw-r--r--filter/inc/filter/msfilter/svxmsbas.hxx94
-rw-r--r--filter/inc/makefile.mk6
-rw-r--r--filter/inc/pch/precompiled_filter.cxx5
-rw-r--r--filter/inc/pch/precompiled_filter.hxx5
-rw-r--r--filter/prj/build.lst25
-rw-r--r--filter/prj/d.lst7
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/Helper.java5
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/TypeDetection.java5
-rw-r--r--filter/qa/complex/filter/detection/typeDetection/makefile.mk6
-rw-r--r--filter/qa/complex/filter/misc/FinalizedMandatoryTest.java5
-rwxr-xr-xfilter/qa/complex/filter/misc/makefile.mk6
-rw-r--r--filter/source/config/cache/basecontainer.cxx5
-rw-r--r--filter/source/config/cache/basecontainer.hxx5
-rw-r--r--filter/source/config/cache/cacheitem.cxx5
-rw-r--r--filter/source/config/cache/cacheitem.hxx5
-rw-r--r--filter/source/config/cache/cacheupdatelistener.cxx5
-rw-r--r--filter/source/config/cache/cacheupdatelistener.hxx5
-rw-r--r--filter/source/config/cache/configflush.cxx5
-rw-r--r--filter/source/config/cache/configflush.hxx5
-rw-r--r--filter/source/config/cache/constant.hxx5
-rw-r--r--filter/source/config/cache/contenthandlerfactory.cxx5
-rw-r--r--filter/source/config/cache/contenthandlerfactory.hxx5
-rw-r--r--filter/source/config/cache/filtercache.cxx7
-rw-r--r--filter/source/config/cache/filtercache.hxx7
-rw-r--r--filter/source/config/cache/filterfactory.cxx5
-rw-r--r--filter/source/config/cache/filterfactory.hxx5
-rw-r--r--filter/source/config/cache/frameloaderfactory.cxx5
-rw-r--r--filter/source/config/cache/frameloaderfactory.hxx5
-rw-r--r--filter/source/config/cache/lateinitlistener.cxx5
-rw-r--r--filter/source/config/cache/lateinitlistener.hxx5
-rw-r--r--filter/source/config/cache/lateinitthread.cxx5
-rw-r--r--filter/source/config/cache/lateinitthread.hxx5
-rw-r--r--filter/source/config/cache/macros.hxx5
-rw-r--r--filter/source/config/cache/makefile.mk6
-rw-r--r--filter/source/config/cache/querytokenizer.cxx5
-rw-r--r--filter/source/config/cache/querytokenizer.hxx5
-rw-r--r--filter/source/config/cache/registration.cxx5
-rw-r--r--filter/source/config/cache/registration.hxx5
-rw-r--r--filter/source/config/cache/typedetection.cxx5
-rw-r--r--filter/source/config/cache/typedetection.hxx5
-rw-r--r--filter/source/config/cache/versions.hxx5
-rw-r--r--filter/source/config/fragments/filters/makefile.mk6
-rw-r--r--filter/source/config/fragments/makefile.mk10
-rw-r--r--filter/source/config/fragments/packagedef.mk6
-rw-r--r--filter/source/config/fragments/types/makefile.mk6
-rwxr-xr-xfilter/source/config/tools/merge/pyAltFCFGMerge2
-rw-r--r--filter/source/config/tools/split/FCFGSplit.java5
-rw-r--r--filter/source/config/tools/split/Splitter.java5
-rw-r--r--filter/source/config/tools/split/SplitterData.java5
-rw-r--r--filter/source/config/tools/split/makefile.mk6
-rw-r--r--filter/source/docbook/docbooktosoffheadings.xsl8
-rw-r--r--filter/source/docbook/makefile.mk6
-rw-r--r--filter/source/docbook/sofftodocbookheadings.xsl8
-rw-r--r--filter/source/filtertracer/filtertracer.cxx5
-rw-r--r--filter/source/filtertracer/filtertracer.hxx5
-rw-r--r--filter/source/filtertracer/filtertraceruno.cxx5
-rw-r--r--filter/source/filtertracer/makefile.mk6
-rw-r--r--filter/source/flash/impswfdialog.cxx5
-rw-r--r--filter/source/flash/impswfdialog.hrc5
-rw-r--r--filter/source/flash/impswfdialog.hxx5
-rw-r--r--filter/source/flash/impswfdialog.src5
-rw-r--r--filter/source/flash/makefile.mk6
-rw-r--r--filter/source/flash/swfdialog.cxx7
-rw-r--r--filter/source/flash/swfdialog.hxx5
-rw-r--r--filter/source/flash/swfexporter.cxx8
-rw-r--r--filter/source/flash/swfexporter.hxx7
-rw-r--r--filter/source/flash/swffilter.cxx5
-rw-r--r--filter/source/flash/swfuno.cxx5
-rw-r--r--filter/source/flash/swfwriter.cxx20
-rw-r--r--filter/source/flash/swfwriter.hxx10
-rw-r--r--filter/source/flash/swfwriter1.cxx88
-rw-r--r--filter/source/flash/swfwriter2.cxx11
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.cxx108
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.hrc36
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.hxx71
-rw-r--r--filter/source/graphicfilter/egif/dlgegif.src118
-rw-r--r--filter/source/graphicfilter/egif/egif.cxx629
-rw-r--r--filter/source/graphicfilter/egif/egifstr.src39
-rw-r--r--filter/source/graphicfilter/egif/exports.map8
-rw-r--r--filter/source/graphicfilter/egif/giflzwc.cxx256
-rw-r--r--filter/source/graphicfilter/egif/giflzwc.hxx65
-rw-r--r--filter/source/graphicfilter/egif/makefile.mk78
-rw-r--r--filter/source/graphicfilter/egif/strings.hrc28
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.cxx179
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.hrc41
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.hxx80
-rw-r--r--filter/source/graphicfilter/eos2met/dlgeos2.src162
-rw-r--r--filter/source/graphicfilter/eos2met/eos2met.cxx2648
-rw-r--r--filter/source/graphicfilter/eos2met/eos2mstr.src38
-rw-r--r--filter/source/graphicfilter/eos2met/exports.map8
-rw-r--r--filter/source/graphicfilter/eos2met/makefile.mk74
-rw-r--r--filter/source/graphicfilter/eos2met/strings.hrc29
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.cxx99
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.hrc34
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.hxx71
-rw-r--r--filter/source/graphicfilter/epbm/dlgepbm.src106
-rw-r--r--filter/source/graphicfilter/epbm/epbm.cxx272
-rw-r--r--filter/source/graphicfilter/epbm/epbmstr.src35
-rw-r--r--filter/source/graphicfilter/epbm/exports.map8
-rw-r--r--filter/source/graphicfilter/epbm/makefile.mk75
-rw-r--r--filter/source/graphicfilter/epbm/strings.hrc27
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.cxx97
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.hrc34
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.hxx71
-rw-r--r--filter/source/graphicfilter/epgm/dlgepgm.src105
-rw-r--r--filter/source/graphicfilter/epgm/epgm.cxx297
-rw-r--r--filter/source/graphicfilter/epgm/epgmstr.src35
-rw-r--r--filter/source/graphicfilter/epgm/exports.map8
-rw-r--r--filter/source/graphicfilter/epgm/makefile.mk76
-rw-r--r--filter/source/graphicfilter/epgm/strings.hrc27
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.cxx183
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.hrc41
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.hxx80
-rw-r--r--filter/source/graphicfilter/epict/dlgepct.src163
-rw-r--r--filter/source/graphicfilter/epict/epict.cxx2387
-rw-r--r--filter/source/graphicfilter/epict/epictstr.src38
-rw-r--r--filter/source/graphicfilter/epict/exports.map8
-rw-r--r--filter/source/graphicfilter/epict/makefile.mk76
-rw-r--r--filter/source/graphicfilter/epict/strings.hrc29
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.cxx96
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.hrc34
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.hxx71
-rw-r--r--filter/source/graphicfilter/eppm/dlgeppm.src106
-rw-r--r--filter/source/graphicfilter/eppm/eppm.cxx305
-rw-r--r--filter/source/graphicfilter/eppm/eppmstr.src35
-rw-r--r--filter/source/graphicfilter/eppm/exports.map8
-rw-r--r--filter/source/graphicfilter/eppm/makefile.mk76
-rw-r--r--filter/source/graphicfilter/eppm/strings.hrc27
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.cxx206
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.hrc43
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.hxx82
-rw-r--r--filter/source/graphicfilter/eps/dlgeps.src160
-rw-r--r--filter/source/graphicfilter/eps/eps.cxx2793
-rw-r--r--filter/source/graphicfilter/eps/epsstr.src70
-rw-r--r--filter/source/graphicfilter/eps/exports.map8
-rw-r--r--filter/source/graphicfilter/eps/makefile.mk79
-rw-r--r--filter/source/graphicfilter/eps/strings.hrc29
-rw-r--r--filter/source/graphicfilter/eras/eras.cxx317
-rw-r--r--filter/source/graphicfilter/eras/exports.map7
-rw-r--r--filter/source/graphicfilter/eras/makefile.mk67
-rw-r--r--filter/source/graphicfilter/etiff/etiff.cxx648
-rw-r--r--filter/source/graphicfilter/etiff/exports.map7
-rw-r--r--filter/source/graphicfilter/etiff/makefile.mk65
-rw-r--r--filter/source/graphicfilter/expm/expm.cxx302
-rw-r--r--filter/source/graphicfilter/expm/exports.map7
-rw-r--r--filter/source/graphicfilter/expm/makefile.mk66
-rw-r--r--filter/source/graphicfilter/icgm/actimpr.cxx1134
-rw-r--r--filter/source/graphicfilter/icgm/bitmap.cxx410
-rw-r--r--filter/source/graphicfilter/icgm/bitmap.hxx87
-rw-r--r--filter/source/graphicfilter/icgm/bundles.cxx288
-rw-r--r--filter/source/graphicfilter/icgm/bundles.hxx173
-rw-r--r--filter/source/graphicfilter/icgm/cgm.cxx927
-rw-r--r--filter/source/graphicfilter/icgm/cgm.hxx178
-rw-r--r--filter/source/graphicfilter/icgm/cgmres.hrc28
-rw-r--r--filter/source/graphicfilter/icgm/cgmtypes.hxx145
-rw-r--r--filter/source/graphicfilter/icgm/chart.cxx100
-rw-r--r--filter/source/graphicfilter/icgm/chart.hxx214
-rw-r--r--filter/source/graphicfilter/icgm/class0.cxx138
-rw-r--r--filter/source/graphicfilter/icgm/class1.cxx231
-rw-r--r--filter/source/graphicfilter/icgm/class2.cxx227
-rw-r--r--filter/source/graphicfilter/icgm/class3.cxx144
-rw-r--r--filter/source/graphicfilter/icgm/class4.cxx861
-rw-r--r--filter/source/graphicfilter/icgm/class5.cxx524
-rw-r--r--filter/source/graphicfilter/icgm/class7.cxx237
-rw-r--r--filter/source/graphicfilter/icgm/classx.cxx262
-rw-r--r--filter/source/graphicfilter/icgm/elements.cxx395
-rw-r--r--filter/source/graphicfilter/icgm/elements.hxx145
-rw-r--r--filter/source/graphicfilter/icgm/exports.map7
-rw-r--r--filter/source/graphicfilter/icgm/main.hxx63
-rw-r--r--filter/source/graphicfilter/icgm/makefile.mk80
-rw-r--r--filter/source/graphicfilter/icgm/outact.cxx200
-rw-r--r--filter/source/graphicfilter/icgm/outact.hxx148
-rw-r--r--filter/source/graphicfilter/idxf/dxf2mtf.cxx980
-rw-r--r--filter/source/graphicfilter/idxf/dxf2mtf.hxx128
-rw-r--r--filter/source/graphicfilter/idxf/dxfblkrd.cxx139
-rw-r--r--filter/source/graphicfilter/idxf/dxfblkrd.hxx87
-rw-r--r--filter/source/graphicfilter/idxf/dxfentrd.cxx871
-rw-r--r--filter/source/graphicfilter/idxf/dxfentrd.hxx602
-rw-r--r--filter/source/graphicfilter/idxf/dxfgrprd.cxx361
-rw-r--r--filter/source/graphicfilter/idxf/dxfgrprd.hxx155
-rw-r--r--filter/source/graphicfilter/idxf/dxfreprd.cxx385
-rw-r--r--filter/source/graphicfilter/idxf/dxfreprd.hxx138
-rw-r--r--filter/source/graphicfilter/idxf/dxftblrd.cxx348
-rw-r--r--filter/source/graphicfilter/idxf/dxftblrd.hxx183
-rw-r--r--filter/source/graphicfilter/idxf/dxfvec.cxx254
-rw-r--r--filter/source/graphicfilter/idxf/dxfvec.hxx261
-rw-r--r--filter/source/graphicfilter/idxf/exports.map7
-rw-r--r--filter/source/graphicfilter/idxf/idxf.cxx82
-rw-r--r--filter/source/graphicfilter/idxf/makefile.mk79
-rw-r--r--filter/source/graphicfilter/ieps/exports.map7
-rw-r--r--filter/source/graphicfilter/ieps/ieps.cxx771
-rw-r--r--filter/source/graphicfilter/ieps/makefile.mk66
-rw-r--r--filter/source/graphicfilter/ios2met/exports.map7
-rw-r--r--filter/source/graphicfilter/ios2met/ios2met.cxx2784
-rw-r--r--filter/source/graphicfilter/ios2met/makefile.mk68
-rw-r--r--filter/source/graphicfilter/ipbm/exports.map7
-rw-r--r--filter/source/graphicfilter/ipbm/ipbm.cxx565
-rw-r--r--filter/source/graphicfilter/ipbm/makefile.mk68
-rw-r--r--filter/source/graphicfilter/ipcd/exports.map7
-rw-r--r--filter/source/graphicfilter/ipcd/ipcd.cxx422
-rw-r--r--filter/source/graphicfilter/ipcd/makefile.mk67
-rw-r--r--filter/source/graphicfilter/ipcx/exports.map7
-rw-r--r--filter/source/graphicfilter/ipcx/ipcx.cxx458
-rw-r--r--filter/source/graphicfilter/ipcx/makefile.mk67
-rw-r--r--filter/source/graphicfilter/ipict/exports.map7
-rw-r--r--filter/source/graphicfilter/ipict/ipict.cxx1937
-rw-r--r--filter/source/graphicfilter/ipict/makefile.mk68
-rw-r--r--filter/source/graphicfilter/ipsd/exports.map7
-rw-r--r--filter/source/graphicfilter/ipsd/ipsd.cxx763
-rw-r--r--filter/source/graphicfilter/ipsd/makefile.mk67
-rw-r--r--filter/source/graphicfilter/iras/exports.map7
-rw-r--r--filter/source/graphicfilter/iras/iras.cxx383
-rw-r--r--filter/source/graphicfilter/iras/makefile.mk67
-rw-r--r--filter/source/graphicfilter/itga/exports.map7
-rw-r--r--filter/source/graphicfilter/itga/itga.cxx758
-rw-r--r--filter/source/graphicfilter/itga/makefile.mk67
-rw-r--r--filter/source/graphicfilter/itiff/ccidecom.cxx1112
-rw-r--r--filter/source/graphicfilter/itiff/ccidecom.hxx125
-rw-r--r--filter/source/graphicfilter/itiff/exports.map7
-rw-r--r--filter/source/graphicfilter/itiff/itiff.cxx1342
-rw-r--r--filter/source/graphicfilter/itiff/lzwdecom.cxx192
-rw-r--r--filter/source/graphicfilter/itiff/lzwdecom.hxx79
-rw-r--r--filter/source/graphicfilter/itiff/makefile.mk71
-rw-r--r--filter/source/msfilter/countryid.cxx342
-rw-r--r--filter/source/msfilter/escherex.cxx4918
-rw-r--r--filter/source/msfilter/eschesdo.cxx1253
-rw-r--r--filter/source/msfilter/eschesdo.hxx206
-rw-r--r--filter/source/msfilter/makefile.mk86
-rw-r--r--filter/source/msfilter/makefile.pmk30
-rw-r--r--filter/source/msfilter/mscodec.cxx534
-rw-r--r--filter/source/msfilter/msdffimp.cxx8143
-rw-r--r--filter/source/msfilter/msfiltertracer.cxx251
-rw-r--r--filter/source/msfilter/msocximex.cxx5957
-rw-r--r--filter/source/msfilter/msoleexp.cxx364
-rw-r--r--filter/source/msfilter/msvbasic.cxx674
-rw-r--r--filter/source/msfilter/msvbasic.hxx126
-rw-r--r--filter/source/msfilter/powerpoint/makefile.mk6
-rw-r--r--filter/source/msfilter/powerpoint/pptcom.hxx5
-rw-r--r--filter/source/msfilter/powerpoint/pptimporter.cxx5
-rw-r--r--filter/source/msfilter/powerpoint/pptimporter.hxx5
-rw-r--r--filter/source/msfilter/powerpoint/pptimporteruno.cxx5
-rw-r--r--filter/source/msfilter/powerpoint/ppttoxml.cxx5
-rw-r--r--filter/source/msfilter/powerpoint/ppttoxml.hxx5
-rw-r--r--filter/source/msfilter/svdfppt.cxx7809
-rw-r--r--filter/source/msfilter/svxmsbas.cxx403
-rw-r--r--filter/source/msfilter/svxmsbas2.cxx85
-rw-r--r--filter/source/msfilter/viscache.hxx82
-rw-r--r--filter/source/pdf/impdialog.cxx400
-rw-r--r--filter/source/pdf/impdialog.hrc6
-rw-r--r--filter/source/pdf/impdialog.hxx45
-rw-r--r--filter/source/pdf/impdialog.src18
-rw-r--r--filter/source/pdf/makefile.mk6
-rw-r--r--filter/source/pdf/pdf.hrc5
-rw-r--r--filter/source/pdf/pdf.src5
-rw-r--r--filter/source/pdf/pdfdialog.cxx17
-rw-r--r--filter/source/pdf/pdfdialog.hxx27
-rw-r--r--filter/source/pdf/pdfexport.cxx87
-rw-r--r--filter/source/pdf/pdfexport.hxx5
-rw-r--r--filter/source/pdf/pdffilter.cxx10
-rw-r--r--filter/source/pdf/pdffilter.hxx5
-rw-r--r--filter/source/pdf/pdfuno.cxx5
-rw-r--r--filter/source/placeware/Base64Codec.cxx5
-rw-r--r--filter/source/placeware/Base64Codec.hxx5
-rw-r--r--filter/source/placeware/exporter.cxx5
-rw-r--r--filter/source/placeware/exporter.hxx5
-rw-r--r--filter/source/placeware/filter.cxx5
-rw-r--r--filter/source/placeware/makefile.mk6
-rw-r--r--filter/source/placeware/tempfile.cxx5
-rw-r--r--filter/source/placeware/tempfile.hxx5
-rw-r--r--filter/source/placeware/uno.cxx5
-rw-r--r--filter/source/placeware/zip.cxx5
-rw-r--r--filter/source/placeware/zip.hxx5
-rw-r--r--filter/source/placeware/zipfile.hxx5
-rw-r--r--filter/source/svg/SOTranscoder.java5
-rw-r--r--filter/source/svg/makefile.mk9
-rw-r--r--filter/source/svg/svgexport.cxx11
-rw-r--r--filter/source/svg/svgfilter.cxx5
-rw-r--r--filter/source/svg/svgfilter.hxx7
-rw-r--r--filter/source/svg/svgfontexport.cxx5
-rw-r--r--filter/source/svg/svgfontexport.hxx5
-rw-r--r--filter/source/svg/svgimport.cxx5
-rw-r--r--filter/source/svg/svgscript.hxx5
-rw-r--r--filter/source/svg/svguno.cxx5
-rw-r--r--filter/source/svg/svgwriter.cxx173
-rw-r--r--filter/source/svg/svgwriter.hxx10
-rw-r--r--filter/source/t602/filterenv.cxx5
-rw-r--r--filter/source/t602/makefile.mk6
-rw-r--r--filter/source/t602/t602filter.cxx5
-rw-r--r--filter/source/t602/t602filter.hrc5
-rw-r--r--filter/source/t602/t602filter.hxx5
-rw-r--r--filter/source/t602/t602filter.src5
-rw-r--r--filter/source/xmlfilteradaptor/XmlFilterAdaptor.cxx6
-rw-r--r--filter/source/xmlfilteradaptor/XmlFilterAdaptor.hxx5
-rw-r--r--filter/source/xmlfilteradaptor/genericfilter.cxx5
-rw-r--r--filter/source/xmlfilteradaptor/makefile.mk6
-rwxr-xr-xfilter/source/xmlfilteradaptor/streamwrap.cxx5
-rwxr-xr-xfilter/source/xmlfilteradaptor/streamwrap.hxx5
-rw-r--r--filter/source/xmlfilterdetect/fdcomp.cxx5
-rw-r--r--filter/source/xmlfilterdetect/filterdetect.cxx6
-rw-r--r--filter/source/xmlfilterdetect/filterdetect.hxx5
-rw-r--r--filter/source/xmlfilterdetect/makefile.mk6
-rw-r--r--filter/source/xslt/common/math.xsl8
-rw-r--r--filter/source/xslt/common/measure_conversion.xsl6
-rw-r--r--filter/source/xslt/export/common/ooo2ms_docpr.xsl8
-rw-r--r--filter/source/xslt/export/spreadsheetml/formular.xsl8
-rw-r--r--filter/source/xslt/export/spreadsheetml/ooo2spreadsheetml.xsl8
-rw-r--r--filter/source/xslt/export/spreadsheetml/style_mapping.xsl8
-rw-r--r--filter/source/xslt/export/spreadsheetml/styles.xsl8
-rw-r--r--filter/source/xslt/export/spreadsheetml/table.xsl8
-rw-r--r--filter/source/xslt/export/wiki/mediawiki.ottbin6304 -> 0 bytes
-rwxr-xr-xfilter/source/xslt/export/wiki/odt2mediawiki.xsl1567
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_border.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_custom_draw.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_draw.xsl18
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_field.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_list.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_page.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_path.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_settings.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_table.xsl8
-rw-r--r--filter/source/xslt/export/wordml/ooo2wordml_text.xsl8
-rw-r--r--filter/source/xslt/import/common/ms2ooo_docpr.xsl8
-rw-r--r--filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_custom_draw.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_draw.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_field.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_list.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_page.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_path.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_settings.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_table.xsl8
-rw-r--r--filter/source/xslt/import/wordml/wordml2ooo_text.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/body.xsl50
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl50
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl50
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table_cells.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table_columns.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table/table_rows.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/common/table_of_content.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/body.xsl5676
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/header.xsl972
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/opendoc2xhtml.xsl8
-rw-r--r--filter/source/xslt/odf2xhtml/export/xhtml/table.xsl8
-rw-r--r--filter/source/xsltdialog/hidother.src5
-rw-r--r--filter/source/xsltdialog/makefile.mk6
-rw-r--r--filter/source/xsltdialog/typedetectionexport.cxx5
-rw-r--r--filter/source/xsltdialog/typedetectionexport.hxx5
-rw-r--r--filter/source/xsltdialog/typedetectionimport.cxx5
-rw-r--r--filter/source/xsltdialog/typedetectionimport.hxx5
-rw-r--r--filter/source/xsltdialog/xmlfileview.cxx5
-rw-r--r--filter/source/xsltdialog/xmlfileview.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfileview.hxx7
-rw-r--r--filter/source/xsltdialog/xmlfileview.src5
-rw-r--r--filter/source/xsltdialog/xmlfiltercommon.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfiltercommon.hxx5
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogcomponent.cxx7
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogstrings.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogstrings.src5
-rw-r--r--filter/source/xsltdialog/xmlfilterhelpids.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfilterjar.cxx7
-rw-r--r--filter/source/xsltdialog/xmlfilterjar.hxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.cxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.hxx9
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.src5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.cxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.hxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabdialog.src5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.cxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.hxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.src5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.cxx7
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.hxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagexslt.src5
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.cxx5
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.hrc5
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.hxx7
-rw-r--r--filter/source/xsltdialog/xmlfiltertestdialog.src5
-rw-r--r--filter/source/xsltfilter/Base64.java5
-rw-r--r--filter/source/xsltfilter/XSLTFilter.cxx5
-rw-r--r--filter/source/xsltfilter/XSLTFilterOLEExtracter.java10
-rw-r--r--filter/source/xsltfilter/XSLTransformer.java10
-rw-r--r--filter/source/xsltfilter/fla.cxx5
-rw-r--r--filter/source/xsltfilter/fla.hxx5
-rw-r--r--filter/source/xsltfilter/makefile.mk6
-rw-r--r--filter/source/xsltvalidate/XSLTValidate.java5
-rw-r--r--filter/source/xsltvalidate/makefile.mk6
-rw-r--r--hwpfilter/inc/makefile.mk6
-rw-r--r--hwpfilter/inc/pch/precompiled_hwpfilter.cxx5
-rw-r--r--hwpfilter/inc/pch/precompiled_hwpfilter.hxx5
-rw-r--r--hwpfilter/source/attributes.cxx5
-rw-r--r--hwpfilter/source/attributes.hxx5
-rw-r--r--hwpfilter/source/cspline.cpp5
-rw-r--r--hwpfilter/source/cspline.h5
-rw-r--r--hwpfilter/source/datecode.h5
-rw-r--r--hwpfilter/source/drawdef.h5
-rw-r--r--hwpfilter/source/drawing.h5
-rw-r--r--hwpfilter/source/fontmap.cpp5
-rw-r--r--hwpfilter/source/formula.cpp5
-rw-r--r--hwpfilter/source/formula.h5
-rw-r--r--hwpfilter/source/grammar.cpp5
-rw-r--r--hwpfilter/source/grammar.h5
-rw-r--r--hwpfilter/source/hbox.cpp5
-rw-r--r--hwpfilter/source/hbox.h5
-rw-r--r--hwpfilter/source/hcode.cpp5
-rw-r--r--hwpfilter/source/hcode.h5
-rw-r--r--hwpfilter/source/hfont.cpp5
-rw-r--r--hwpfilter/source/hfont.h5
-rw-r--r--hwpfilter/source/hgzip.cpp5
-rw-r--r--hwpfilter/source/hgzip.h5
-rw-r--r--hwpfilter/source/himgutil.cpp5
-rw-r--r--hwpfilter/source/himgutil.h5
-rw-r--r--hwpfilter/source/hinfo.cpp5
-rw-r--r--hwpfilter/source/hinfo.h5
-rw-r--r--hwpfilter/source/hiodev.cpp5
-rw-r--r--hwpfilter/source/hiodev.h5
-rw-r--r--hwpfilter/source/hpara.cpp5
-rw-r--r--hwpfilter/source/hpara.h5
-rw-r--r--hwpfilter/source/hstream.cpp5
-rw-r--r--hwpfilter/source/hstream.h5
-rw-r--r--hwpfilter/source/hstyle.cpp5
-rw-r--r--hwpfilter/source/hstyle.h5
-rw-r--r--hwpfilter/source/htags.cpp5
-rw-r--r--hwpfilter/source/htags.h5
-rw-r--r--hwpfilter/source/hutil.cpp5
-rw-r--r--hwpfilter/source/hutil.h5
-rw-r--r--hwpfilter/source/hwpeq.cpp6
-rw-r--r--hwpfilter/source/hwpeq.h5
-rw-r--r--hwpfilter/source/hwpfile.cpp5
-rw-r--r--hwpfilter/source/hwpfile.h5
-rw-r--r--hwpfilter/source/hwplib.h5
-rw-r--r--hwpfilter/source/hwpread.cpp5
-rw-r--r--hwpfilter/source/hwpreader.cxx5
-rw-r--r--hwpfilter/source/hwpreader.hxx5
-rw-r--r--hwpfilter/source/list.hxx5
-rw-r--r--hwpfilter/source/makefile.mk6
-rw-r--r--hwpfilter/source/mapping.h5
-rw-r--r--hwpfilter/source/mzstring.cpp5
-rw-r--r--hwpfilter/source/mzstring.h5
-rw-r--r--hwpfilter/source/nodes.h5
-rw-r--r--hwpfilter/source/precompile.h5
-rw-r--r--hwpfilter/source/solver.cpp5
-rw-r--r--hwpfilter/source/solver.h5
-rw-r--r--oox/inc/oox/core/binarycodec.hxx5
-rw-r--r--oox/inc/oox/core/binaryfilterbase.hxx5
-rw-r--r--oox/inc/oox/core/contexthandler.hxx5
-rw-r--r--oox/inc/oox/core/contexthandler2.hxx5
-rw-r--r--oox/inc/oox/core/fasttokenhandler.hxx5
-rw-r--r--oox/inc/oox/core/filterbase.hxx5
-rw-r--r--oox/inc/oox/core/filterdetect.hxx5
-rw-r--r--oox/inc/oox/core/fragmenthandler.hxx5
-rw-r--r--oox/inc/oox/core/fragmenthandler2.hxx5
-rw-r--r--oox/inc/oox/core/recordparser.hxx5
-rw-r--r--oox/inc/oox/core/relations.hxx5
-rw-r--r--oox/inc/oox/core/relationshandler.hxx5
-rw-r--r--oox/inc/oox/core/xmlfilterbase.hxx5
-rw-r--r--oox/inc/oox/dllapi.h5
-rw-r--r--oox/inc/oox/drawingml/chart/axiscontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/axisconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/axismodel.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/chartcontextbase.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/chartconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/chartspaceconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/chartspacefragment.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/chartspacemodel.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/converterbase.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/datasourcecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/datasourceconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/datasourcemodel.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/modelbase.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/objectformatter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/plotareacontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/plotareaconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/plotareamodel.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/seriescontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/seriesconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/seriesmodel.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/titlecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/titleconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/titlemodel.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/typegroupcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/chart/typegroupconverter.hxx6
-rw-r--r--oox/inc/oox/drawingml/chart/typegroupmodel.hxx5
-rw-r--r--oox/inc/oox/drawingml/clrscheme.hxx5
-rw-r--r--oox/inc/oox/drawingml/clrschemecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/color.hxx5
-rw-r--r--oox/inc/oox/drawingml/colorchoicecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/connectorshapecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/customshapegeometry.hxx5
-rw-r--r--oox/inc/oox/drawingml/customshapeproperties.hxx5
-rw-r--r--oox/inc/oox/drawingml/diagram/datamodelcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/diagram/diagram.hxx5
-rw-r--r--oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx5
-rw-r--r--oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx5
-rw-r--r--oox/inc/oox/drawingml/drawingmltypes.hxx5
-rw-r--r--oox/inc/oox/drawingml/embeddedwavaudiofile.hxx5
-rw-r--r--oox/inc/oox/drawingml/fillproperties.hxx5
-rw-r--r--oox/inc/oox/drawingml/fillpropertiesgroupcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/graphicshapecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/guidcontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/lineproperties.hxx5
-rw-r--r--oox/inc/oox/drawingml/linepropertiescontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/objectdefaultcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/shape.hxx5
-rw-r--r--oox/inc/oox/drawingml/shapecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/shapegroupcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/shapepropertiescontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/shapestylecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/spdefcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/table/tablebackgroundstylecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablecell.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablecellcontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablepartstylecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tableproperties.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablerow.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablerowcontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestyle.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestylecellstylecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestylecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestylelist.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestylelistfragmenthandler.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestylepart.hxx6
-rw-r--r--oox/inc/oox/drawingml/table/tablestyletextstylecontext.hxx6
-rw-r--r--oox/inc/oox/drawingml/textbody.hxx5
-rw-r--r--oox/inc/oox/drawingml/textbodycontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/textbodyproperties.hxx5
-rw-r--r--oox/inc/oox/drawingml/textbodypropertiescontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/textcharacterproperties.hxx5
-rw-r--r--oox/inc/oox/drawingml/textcharacterpropertiescontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/textfield.hxx5
-rw-r--r--oox/inc/oox/drawingml/textfieldcontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/textfont.hxx5
-rw-r--r--oox/inc/oox/drawingml/textliststyle.hxx5
-rw-r--r--oox/inc/oox/drawingml/textliststylecontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/textparagraph.hxx5
-rw-r--r--oox/inc/oox/drawingml/textparagraphproperties.hxx5
-rw-r--r--oox/inc/oox/drawingml/textparagraphpropertiescontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/textrun.hxx5
-rw-r--r--oox/inc/oox/drawingml/textspacing.hxx5
-rw-r--r--oox/inc/oox/drawingml/theme.hxx5
-rw-r--r--oox/inc/oox/drawingml/themeelementscontext.hxx5
-rw-r--r--oox/inc/oox/drawingml/themefragmenthandler.hxx5
-rw-r--r--oox/inc/oox/drawingml/transform2dcontext.hxx5
-rw-r--r--oox/inc/oox/dump/biffdumper.hxx18
-rw-r--r--oox/inc/oox/dump/dffdumper.hxx5
-rw-r--r--oox/inc/oox/dump/dumperbase.hxx18
-rw-r--r--oox/inc/oox/dump/oledumper.hxx5
-rw-r--r--oox/inc/oox/dump/pptxdumper.hxx5
-rw-r--r--oox/inc/oox/dump/xlsbdumper.hxx6
-rw-r--r--oox/inc/oox/export/shapes.hxx5
-rw-r--r--oox/inc/oox/export/utils.hxx5
-rw-r--r--oox/inc/oox/export/vmlexport.hxx5
-rw-r--r--oox/inc/oox/helper/attributelist.hxx5
-rw-r--r--oox/inc/oox/helper/binaryinputstream.hxx5
-rw-r--r--oox/inc/oox/helper/binaryoutputstream.hxx5
-rw-r--r--oox/inc/oox/helper/binarystreambase.hxx5
-rw-r--r--oox/inc/oox/helper/containerhelper.hxx5
-rw-r--r--oox/inc/oox/helper/graphichelper.hxx5
-rw-r--r--oox/inc/oox/helper/helper.hxx5
-rw-r--r--oox/inc/oox/helper/modelobjecthelper.hxx5
-rw-r--r--oox/inc/oox/helper/olestorage.hxx5
-rw-r--r--oox/inc/oox/helper/progressbar.hxx5
-rw-r--r--oox/inc/oox/helper/propertymap.hxx5
-rw-r--r--oox/inc/oox/helper/propertyset.hxx5
-rw-r--r--oox/inc/oox/helper/recordinputstream.hxx5
-rw-r--r--oox/inc/oox/helper/storagebase.hxx5
-rw-r--r--oox/inc/oox/helper/zipstorage.hxx5
-rw-r--r--oox/inc/oox/ole/axbinaryreader.hxx185
-rw-r--r--oox/inc/oox/ole/axcontrol.hxx39
-rw-r--r--oox/inc/oox/ole/axcontrolfragment.hxx9
-rw-r--r--oox/inc/oox/ole/axcontrolhelper.hxx5
-rw-r--r--oox/inc/oox/ole/olehelper.hxx5
-rw-r--r--oox/inc/oox/ole/oleobjecthelper.hxx5
-rw-r--r--oox/inc/oox/ole/vbainputstream.hxx5
-rw-r--r--oox/inc/oox/ppt/animationspersist.hxx5
-rw-r--r--oox/inc/oox/ppt/backgroundproperties.hxx5
-rw-r--r--oox/inc/oox/ppt/headerfooter.hxx5
-rw-r--r--oox/inc/oox/ppt/layoutfragmenthandler.hxx5
-rw-r--r--oox/inc/oox/ppt/pptimport.hxx5
-rw-r--r--oox/inc/oox/ppt/pptshape.hxx5
-rw-r--r--oox/inc/oox/ppt/pptshapecontext.hxx5
-rw-r--r--oox/inc/oox/ppt/pptshapegroupcontext.hxx5
-rw-r--r--oox/inc/oox/ppt/pptshapepropertiescontext.hxx5
-rw-r--r--oox/inc/oox/ppt/presentationfragmenthandler.hxx5
-rw-r--r--oox/inc/oox/ppt/slidefragmenthandler.hxx5
-rw-r--r--oox/inc/oox/ppt/slidemastertextstylescontext.hxx5
-rw-r--r--oox/inc/oox/ppt/slidepersist.hxx5
-rw-r--r--oox/inc/oox/ppt/slidetimingcontext.hxx5
-rw-r--r--oox/inc/oox/ppt/slidetransition.hxx5
-rw-r--r--oox/inc/oox/ppt/slidetransitioncontext.hxx5
-rw-r--r--oox/inc/oox/ppt/soundactioncontext.hxx5
-rw-r--r--oox/inc/oox/ppt/timenode.hxx5
-rw-r--r--oox/inc/oox/ppt/timenodelistcontext.hxx5
-rw-r--r--oox/inc/oox/token/propertylist.hxx5
-rw-r--r--oox/inc/oox/token/tokenmap.hxx5
-rw-r--r--oox/inc/oox/vml/vmldrawing.hxx7
-rw-r--r--oox/inc/oox/vml/vmldrawingfragment.hxx5
-rw-r--r--oox/inc/oox/vml/vmlformatting.hxx5
-rw-r--r--oox/inc/oox/vml/vmlinputstream.hxx5
-rw-r--r--oox/inc/oox/vml/vmlshape.hxx7
-rw-r--r--oox/inc/oox/vml/vmlshapecontainer.hxx5
-rw-r--r--oox/inc/oox/vml/vmlshapecontext.hxx5
-rw-r--r--oox/inc/oox/xls/addressconverter.hxx5
-rw-r--r--oox/inc/oox/xls/autofiltercontext.hxx5
-rw-r--r--oox/inc/oox/xls/biffcodec.hxx5
-rw-r--r--oox/inc/oox/xls/biffdetector.hxx5
-rw-r--r--oox/inc/oox/xls/biffhelper.hxx32
-rw-r--r--oox/inc/oox/xls/biffinputstream.hxx5
-rw-r--r--oox/inc/oox/xls/biffoutputstream.hxx5
-rw-r--r--oox/inc/oox/xls/chartsheetfragment.hxx5
-rw-r--r--oox/inc/oox/xls/commentsbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/commentsfragment.hxx5
-rw-r--r--oox/inc/oox/xls/condformatbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/condformatcontext.hxx5
-rw-r--r--oox/inc/oox/xls/connectionsfragment.hxx5
-rw-r--r--oox/inc/oox/xls/defnamesbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/drawingfragment.hxx7
-rw-r--r--oox/inc/oox/xls/excelchartconverter.hxx6
-rw-r--r--oox/inc/oox/xls/excelfilter.hxx5
-rw-r--r--oox/inc/oox/xls/excelhandlers.hxx5
-rw-r--r--oox/inc/oox/xls/externallinkbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/externallinkfragment.hxx5
-rw-r--r--oox/inc/oox/xls/formulabase.hxx5
-rw-r--r--oox/inc/oox/xls/formulaparser.hxx5
-rw-r--r--oox/inc/oox/xls/numberformatsbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/ooxformulaparser.hxx5
-rw-r--r--oox/inc/oox/xls/pagesettings.hxx5
-rw-r--r--oox/inc/oox/xls/pivotcachebuffer.hxx5
-rw-r--r--oox/inc/oox/xls/pivotcachefragment.hxx5
-rw-r--r--oox/inc/oox/xls/pivottablebuffer.hxx5
-rw-r--r--oox/inc/oox/xls/pivottablefragment.hxx5
-rw-r--r--oox/inc/oox/xls/querytablefragment.hxx5
-rw-r--r--oox/inc/oox/xls/richstring.hxx5
-rw-r--r--oox/inc/oox/xls/richstringcontext.hxx5
-rw-r--r--oox/inc/oox/xls/scenariobuffer.hxx5
-rw-r--r--oox/inc/oox/xls/scenariocontext.hxx5
-rw-r--r--oox/inc/oox/xls/sharedformulabuffer.hxx5
-rw-r--r--oox/inc/oox/xls/sharedstringsbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/sharedstringsfragment.hxx5
-rw-r--r--oox/inc/oox/xls/sheetdatacontext.hxx5
-rw-r--r--oox/inc/oox/xls/stylesbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/stylesfragment.hxx5
-rw-r--r--oox/inc/oox/xls/tablebuffer.hxx5
-rw-r--r--oox/inc/oox/xls/tablefragment.hxx5
-rw-r--r--oox/inc/oox/xls/themebuffer.hxx5
-rw-r--r--oox/inc/oox/xls/unitconverter.hxx5
-rw-r--r--oox/inc/oox/xls/viewsettings.hxx5
-rw-r--r--oox/inc/oox/xls/webquerybuffer.hxx5
-rw-r--r--oox/inc/oox/xls/workbookfragment.hxx5
-rw-r--r--oox/inc/oox/xls/workbookhelper.hxx5
-rw-r--r--oox/inc/oox/xls/workbooksettings.hxx5
-rw-r--r--oox/inc/oox/xls/worksheetbuffer.hxx5
-rw-r--r--oox/inc/oox/xls/worksheetfragment.hxx7
-rw-r--r--oox/inc/oox/xls/worksheethelper.hxx5
-rw-r--r--oox/inc/oox/xls/worksheetsettings.hxx5
-rw-r--r--oox/source/core/binarycodec.cxx5
-rw-r--r--oox/source/core/binaryfilterbase.cxx5
-rw-r--r--oox/source/core/contexthandler.cxx5
-rw-r--r--oox/source/core/contexthandler2.cxx5
-rw-r--r--oox/source/core/facreg.cxx5
-rw-r--r--oox/source/core/fasttokenhandler.cxx5
-rw-r--r--oox/source/core/filterbase.cxx5
-rw-r--r--oox/source/core/filterdetect.cxx5
-rw-r--r--oox/source/core/fragmenthandler.cxx5
-rw-r--r--oox/source/core/fragmenthandler2.cxx5
-rw-r--r--oox/source/core/makefile.mk8
-rw-r--r--oox/source/core/recordparser.cxx5
-rw-r--r--oox/source/core/relations.cxx5
-rw-r--r--oox/source/core/relationshandler.cxx5
-rw-r--r--oox/source/core/xmlfilterbase.cxx5
-rw-r--r--oox/source/docprop/docprophandler.cxx5
-rw-r--r--oox/source/docprop/docprophandler.hxx5
-rw-r--r--oox/source/docprop/makefile.mk6
-rw-r--r--oox/source/docprop/ooxmldocpropimport.cxx5
-rw-r--r--oox/source/docprop/ooxmldocpropimport.hxx5
-rw-r--r--oox/source/drawingml/chart/axiscontext.cxx5
-rw-r--r--oox/source/drawingml/chart/axisconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/axismodel.cxx5
-rw-r--r--oox/source/drawingml/chart/chartcontextbase.cxx6
-rw-r--r--oox/source/drawingml/chart/chartconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/chartspaceconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/chartspacefragment.cxx6
-rw-r--r--oox/source/drawingml/chart/chartspacemodel.cxx6
-rw-r--r--oox/source/drawingml/chart/converterbase.cxx6
-rw-r--r--oox/source/drawingml/chart/datasourcecontext.cxx6
-rw-r--r--oox/source/drawingml/chart/datasourceconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/datasourcemodel.cxx6
-rw-r--r--oox/source/drawingml/chart/makefile.mk8
-rw-r--r--oox/source/drawingml/chart/modelbase.cxx6
-rw-r--r--oox/source/drawingml/chart/objectformatter.cxx6
-rw-r--r--oox/source/drawingml/chart/plotareacontext.cxx5
-rw-r--r--oox/source/drawingml/chart/plotareaconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/plotareamodel.cxx5
-rw-r--r--oox/source/drawingml/chart/seriescontext.cxx5
-rw-r--r--oox/source/drawingml/chart/seriesconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/seriesmodel.cxx5
-rw-r--r--oox/source/drawingml/chart/titlecontext.cxx6
-rw-r--r--oox/source/drawingml/chart/titleconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/titlemodel.cxx6
-rw-r--r--oox/source/drawingml/chart/typegroupcontext.cxx5
-rw-r--r--oox/source/drawingml/chart/typegroupconverter.cxx6
-rw-r--r--oox/source/drawingml/chart/typegroupmodel.cxx5
-rw-r--r--oox/source/drawingml/clrscheme.cxx5
-rw-r--r--oox/source/drawingml/clrschemecontext.cxx5
-rw-r--r--oox/source/drawingml/color.cxx5
-rw-r--r--oox/source/drawingml/colorchoicecontext.cxx5
-rw-r--r--oox/source/drawingml/connectorshapecontext.cxx5
-rw-r--r--oox/source/drawingml/customshapegeometry.cxx5
-rw-r--r--oox/source/drawingml/customshapeproperties.cxx5
-rw-r--r--oox/source/drawingml/diagram/datamodelcontext.cxx5
-rw-r--r--oox/source/drawingml/diagram/diagram.cxx5
-rw-r--r--oox/source/drawingml/diagram/diagramdefinitioncontext.cxx5
-rw-r--r--oox/source/drawingml/diagram/diagramdefinitioncontext.hxx5
-rw-r--r--oox/source/drawingml/diagram/diagramfragmenthandler.cxx5
-rw-r--r--oox/source/drawingml/diagram/diagramlayoutatoms.cxx5
-rw-r--r--oox/source/drawingml/diagram/layoutnodecontext.cxx5
-rw-r--r--oox/source/drawingml/diagram/layoutnodecontext.hxx5
-rw-r--r--oox/source/drawingml/diagram/makefile.mk6
-rw-r--r--oox/source/drawingml/drawingmltypes.cxx5
-rw-r--r--oox/source/drawingml/embeddedwavaudiofile.cxx5
-rw-r--r--oox/source/drawingml/fillproperties.cxx5
-rw-r--r--oox/source/drawingml/fillpropertiesgroupcontext.cxx5
-rw-r--r--oox/source/drawingml/graphicshapecontext.cxx5
-rw-r--r--oox/source/drawingml/guidcontext.cxx6
-rw-r--r--oox/source/drawingml/hyperlinkcontext.cxx5
-rw-r--r--oox/source/drawingml/hyperlinkcontext.hxx5
-rw-r--r--oox/source/drawingml/lineproperties.cxx5
-rw-r--r--oox/source/drawingml/linepropertiescontext.cxx5
-rw-r--r--oox/source/drawingml/makefile.mk8
-rw-r--r--oox/source/drawingml/objectdefaultcontext.cxx5
-rw-r--r--oox/source/drawingml/shape.cxx5
-rw-r--r--oox/source/drawingml/shapecontext.cxx5
-rw-r--r--oox/source/drawingml/shapegroupcontext.cxx5
-rw-r--r--oox/source/drawingml/shapepropertiescontext.cxx5
-rw-r--r--oox/source/drawingml/shapestylecontext.cxx5
-rw-r--r--oox/source/drawingml/spdefcontext.cxx5
-rw-r--r--oox/source/drawingml/table/makefile.mk6
-rw-r--r--oox/source/drawingml/table/tablebackgroundstylecontext.cxx5
-rw-r--r--oox/source/drawingml/table/tablecell.cxx5
-rw-r--r--oox/source/drawingml/table/tablecellcontext.cxx5
-rw-r--r--oox/source/drawingml/table/tablecontext.cxx5
-rw-r--r--oox/source/drawingml/table/tablepartstylecontext.cxx5
-rw-r--r--oox/source/drawingml/table/tableproperties.cxx5
-rw-r--r--oox/source/drawingml/table/tablerow.cxx5
-rw-r--r--oox/source/drawingml/table/tablerowcontext.cxx5
-rw-r--r--oox/source/drawingml/table/tablestyle.cxx5
-rw-r--r--oox/source/drawingml/table/tablestylecellstylecontext.cxx5
-rw-r--r--oox/source/drawingml/table/tablestylecontext.cxx5
-rw-r--r--oox/source/drawingml/table/tablestylelist.cxx5
-rw-r--r--oox/source/drawingml/table/tablestylelistfragmenthandler.cxx5
-rw-r--r--oox/source/drawingml/table/tablestylepart.cxx5
-rw-r--r--oox/source/drawingml/table/tablestyletextstylecontext.cxx5
-rw-r--r--oox/source/drawingml/textbody.cxx5
-rw-r--r--oox/source/drawingml/textbodycontext.cxx5
-rw-r--r--oox/source/drawingml/textbodypropertiescontext.cxx5
-rw-r--r--oox/source/drawingml/textcharacterproperties.cxx5
-rw-r--r--oox/source/drawingml/textcharacterpropertiescontext.cxx5
-rw-r--r--oox/source/drawingml/textfield.cxx5
-rw-r--r--oox/source/drawingml/textfieldcontext.cxx5
-rw-r--r--oox/source/drawingml/textfont.cxx5
-rw-r--r--oox/source/drawingml/textliststyle.cxx5
-rw-r--r--oox/source/drawingml/textliststylecontext.cxx5
-rw-r--r--oox/source/drawingml/textparagraph.cxx5
-rw-r--r--oox/source/drawingml/textparagraphproperties.cxx5
-rw-r--r--oox/source/drawingml/textparagraphpropertiescontext.cxx5
-rw-r--r--oox/source/drawingml/textrun.cxx5
-rw-r--r--oox/source/drawingml/textspacingcontext.cxx5
-rw-r--r--oox/source/drawingml/textspacingcontext.hxx5
-rw-r--r--oox/source/drawingml/texttabstoplistcontext.cxx5
-rw-r--r--oox/source/drawingml/texttabstoplistcontext.hxx5
-rw-r--r--oox/source/drawingml/theme.cxx5
-rw-r--r--oox/source/drawingml/themeelementscontext.cxx5
-rw-r--r--oox/source/drawingml/themefragmenthandler.cxx5
-rw-r--r--oox/source/drawingml/transform2dcontext.cxx5
-rw-r--r--oox/source/dump/biffdumper.cxx615
-rw-r--r--oox/source/dump/biffdumper.ini310
-rw-r--r--oox/source/dump/dffdumper.cxx5
-rw-r--r--oox/source/dump/dumperbase.cxx19
-rw-r--r--oox/source/dump/dumperbase.ini18
-rw-r--r--oox/source/dump/makefile.mk8
-rw-r--r--oox/source/dump/oledumper.cxx6
-rw-r--r--oox/source/dump/pptxdumper.cxx5
-rw-r--r--oox/source/dump/xlsbdumper.cxx82
-rw-r--r--oox/source/dump/xlsbdumper.ini4
-rw-r--r--oox/source/export/drawingml.cxx11
-rw-r--r--oox/source/export/preset-definitions-to-shape-types.pl2
-rw-r--r--oox/source/export/presetShapeDefinitions.xml39830
-rw-r--r--oox/source/export/shapes.cxx11
-rw-r--r--oox/source/export/vmlexport.cxx5
-rw-r--r--oox/source/helper/attributelist.cxx5
-rw-r--r--oox/source/helper/binaryinputstream.cxx5
-rw-r--r--oox/source/helper/binaryoutputstream.cxx5
-rw-r--r--oox/source/helper/binarystreambase.cxx5
-rw-r--r--oox/source/helper/containerhelper.cxx5
-rw-r--r--oox/source/helper/graphichelper.cxx5
-rw-r--r--oox/source/helper/makefile.mk8
-rw-r--r--oox/source/helper/modelobjecthelper.cxx5
-rw-r--r--oox/source/helper/olestorage.cxx5
-rw-r--r--oox/source/helper/progressbar.cxx5
-rw-r--r--oox/source/helper/propertymap.cxx5
-rw-r--r--oox/source/helper/propertyset.cxx5
-rw-r--r--oox/source/helper/recordinputstream.cxx5
-rw-r--r--oox/source/helper/storagebase.cxx5
-rw-r--r--oox/source/helper/zipstorage.cxx5
-rw-r--r--oox/source/ole/axbinaryreader.cxx213
-rw-r--r--oox/source/ole/axcontrol.cxx233
-rw-r--r--oox/source/ole/axcontrolfragment.cxx37
-rw-r--r--oox/source/ole/axcontrolhelper.cxx9
-rw-r--r--oox/source/ole/makefile.mk9
-rw-r--r--oox/source/ole/olehelper.cxx6
-rw-r--r--oox/source/ole/oleobjecthelper.cxx5
-rw-r--r--oox/source/ole/vbainputstream.cxx5
-rw-r--r--oox/source/ppt/animationspersist.cxx5
-rw-r--r--oox/source/ppt/animationtypes.cxx5
-rw-r--r--oox/source/ppt/animationtypes.hxx5
-rw-r--r--oox/source/ppt/animvariantcontext.cxx5
-rw-r--r--oox/source/ppt/animvariantcontext.hxx5
-rw-r--r--oox/source/ppt/backgroundproperties.cxx5
-rw-r--r--oox/source/ppt/buildlistcontext.cxx5
-rw-r--r--oox/source/ppt/buildlistcontext.hxx5
-rw-r--r--oox/source/ppt/commonbehaviorcontext.cxx5
-rw-r--r--oox/source/ppt/commonbehaviorcontext.hxx5
-rw-r--r--oox/source/ppt/commontimenodecontext.cxx5
-rw-r--r--oox/source/ppt/commontimenodecontext.hxx5
-rw-r--r--oox/source/ppt/conditioncontext.cxx5
-rw-r--r--oox/source/ppt/conditioncontext.hxx5
-rw-r--r--oox/source/ppt/customshowlistcontext.cxx5
-rw-r--r--oox/source/ppt/customshowlistcontext.hxx5
-rw-r--r--oox/source/ppt/headerfootercontext.cxx5
-rw-r--r--oox/source/ppt/headerfootercontext.hxx5
-rw-r--r--oox/source/ppt/layoutfragmenthandler.cxx5
-rw-r--r--oox/source/ppt/makefile.mk6
-rw-r--r--oox/source/ppt/pptfilterhelpers.cxx5
-rw-r--r--oox/source/ppt/pptfilterhelpers.hxx5
-rw-r--r--oox/source/ppt/pptimport.cxx5
-rw-r--r--oox/source/ppt/pptshape.cxx5
-rw-r--r--oox/source/ppt/pptshapecontext.cxx5
-rw-r--r--oox/source/ppt/pptshapegroupcontext.cxx5
-rw-r--r--oox/source/ppt/pptshapepropertiescontext.cxx5
-rw-r--r--oox/source/ppt/presentationfragmenthandler.cxx5
-rw-r--r--oox/source/ppt/slidefragmenthandler.cxx5
-rw-r--r--oox/source/ppt/slidemastertextstylescontext.cxx5
-rw-r--r--oox/source/ppt/slidepersist.cxx5
-rw-r--r--oox/source/ppt/slidetimingcontext.cxx5
-rw-r--r--oox/source/ppt/slidetransition.cxx5
-rw-r--r--oox/source/ppt/slidetransitioncontext.cxx5
-rw-r--r--oox/source/ppt/soundactioncontext.cxx5
-rw-r--r--oox/source/ppt/timeanimvaluecontext.cxx5
-rw-r--r--oox/source/ppt/timeanimvaluecontext.hxx5
-rw-r--r--oox/source/ppt/timenode.cxx5
-rw-r--r--oox/source/ppt/timenodelistcontext.cxx5
-rw-r--r--oox/source/ppt/timetargetelementcontext.cxx5
-rw-r--r--oox/source/ppt/timetargetelementcontext.hxx5
-rw-r--r--oox/source/shape/FastTokenHandlerService.cxx5
-rw-r--r--oox/source/shape/FastTokenHandlerService.hxx5
-rw-r--r--oox/source/shape/ShapeContextHandler.cxx5
-rw-r--r--oox/source/shape/ShapeContextHandler.hxx5
-rw-r--r--oox/source/shape/ShapeFilterBase.cxx5
-rw-r--r--oox/source/shape/ShapeFilterBase.hxx5
-rw-r--r--oox/source/shape/makefile.mk6
-rw-r--r--oox/source/token/makefile.mk8
-rw-r--r--oox/source/token/propertylist.cxx5
-rw-r--r--oox/source/token/tokenmap.cxx5
-rw-r--r--oox/source/vml/makefile.mk8
-rw-r--r--oox/source/vml/vmldrawing.cxx5
-rw-r--r--oox/source/vml/vmldrawingfragment.cxx5
-rw-r--r--oox/source/vml/vmlformatting.cxx5
-rw-r--r--oox/source/vml/vmlinputstream.cxx5
-rw-r--r--oox/source/vml/vmlshape.cxx5
-rw-r--r--oox/source/vml/vmlshapecontainer.cxx5
-rw-r--r--oox/source/vml/vmlshapecontext.cxx5
-rw-r--r--oox/source/xls/addressconverter.cxx5
-rw-r--r--oox/source/xls/autofiltercontext.cxx5
-rw-r--r--oox/source/xls/biffcodec.cxx5
-rw-r--r--oox/source/xls/biffdetector.cxx5
-rw-r--r--oox/source/xls/biffhelper.cxx5
-rw-r--r--oox/source/xls/biffinputstream.cxx5
-rw-r--r--oox/source/xls/biffoutputstream.cxx5
-rw-r--r--oox/source/xls/chartsheetfragment.cxx5
-rw-r--r--oox/source/xls/commentsbuffer.cxx5
-rw-r--r--oox/source/xls/commentsfragment.cxx5
-rw-r--r--oox/source/xls/condformatbuffer.cxx5
-rw-r--r--oox/source/xls/condformatcontext.cxx5
-rw-r--r--oox/source/xls/connectionsfragment.cxx5
-rw-r--r--oox/source/xls/defnamesbuffer.cxx5
-rw-r--r--oox/source/xls/drawingfragment.cxx5
-rw-r--r--oox/source/xls/excelchartconverter.cxx6
-rw-r--r--oox/source/xls/excelfilter.cxx5
-rw-r--r--oox/source/xls/excelhandlers.cxx5
-rw-r--r--oox/source/xls/externallinkbuffer.cxx5
-rw-r--r--oox/source/xls/externallinkfragment.cxx5
-rw-r--r--oox/source/xls/formulabase.cxx14
-rw-r--r--oox/source/xls/formulaparser.cxx5
-rw-r--r--oox/source/xls/makefile.mk8
-rw-r--r--oox/source/xls/numberformatsbuffer.cxx5
-rw-r--r--oox/source/xls/ooxformulaparser.cxx5
-rw-r--r--oox/source/xls/pagesettings.cxx5
-rw-r--r--oox/source/xls/pivotcachebuffer.cxx5
-rw-r--r--oox/source/xls/pivotcachefragment.cxx5
-rw-r--r--oox/source/xls/pivottablebuffer.cxx5
-rw-r--r--oox/source/xls/pivottablefragment.cxx5
-rw-r--r--oox/source/xls/querytablefragment.cxx5
-rw-r--r--oox/source/xls/richstring.cxx5
-rw-r--r--oox/source/xls/richstringcontext.cxx5
-rw-r--r--oox/source/xls/scenariobuffer.cxx5
-rw-r--r--oox/source/xls/scenariocontext.cxx5
-rw-r--r--oox/source/xls/sharedformulabuffer.cxx5
-rw-r--r--oox/source/xls/sharedstringsbuffer.cxx5
-rw-r--r--oox/source/xls/sharedstringsfragment.cxx5
-rw-r--r--oox/source/xls/sheetdatacontext.cxx5
-rw-r--r--oox/source/xls/stylesbuffer.cxx6
-rw-r--r--oox/source/xls/stylesfragment.cxx5
-rw-r--r--oox/source/xls/tablebuffer.cxx5
-rw-r--r--oox/source/xls/tablefragment.cxx5
-rw-r--r--oox/source/xls/themebuffer.cxx5
-rw-r--r--oox/source/xls/unitconverter.cxx5
-rw-r--r--oox/source/xls/viewsettings.cxx7
-rw-r--r--oox/source/xls/webquerybuffer.cxx5
-rw-r--r--oox/source/xls/workbookfragment.cxx5
-rw-r--r--oox/source/xls/workbookhelper.cxx5
-rw-r--r--oox/source/xls/workbooksettings.cxx5
-rw-r--r--oox/source/xls/worksheetbuffer.cxx5
-rw-r--r--oox/source/xls/worksheetfragment.cxx23
-rw-r--r--oox/source/xls/worksheethelper.cxx5
-rw-r--r--oox/source/xls/worksheetsettings.cxx38
-rw-r--r--oox/util/makefile.mk8
-rw-r--r--oox/util/makefile.pmk6
-rw-r--r--unoxml/qa/complex/RDFRepositoryTest.java8
-rw-r--r--unoxml/qa/complex/makefile.mk8
-rw-r--r--unoxml/source/dom/attr.cxx5
-rw-r--r--unoxml/source/dom/attr.hxx5
-rw-r--r--unoxml/source/dom/attributesmap.cxx5
-rw-r--r--unoxml/source/dom/attributesmap.hxx5
-rw-r--r--unoxml/source/dom/cdatasection.cxx5
-rw-r--r--unoxml/source/dom/cdatasection.hxx5
-rw-r--r--unoxml/source/dom/characterdata.cxx5
-rw-r--r--unoxml/source/dom/characterdata.hxx5
-rw-r--r--unoxml/source/dom/childlist.cxx5
-rw-r--r--unoxml/source/dom/childlist.hxx5
-rw-r--r--unoxml/source/dom/comment.cxx5
-rw-r--r--unoxml/source/dom/comment.hxx5
-rw-r--r--unoxml/source/dom/document.cxx5
-rw-r--r--unoxml/source/dom/document.hxx5
-rw-r--r--unoxml/source/dom/documentbuilder.cxx5
-rw-r--r--unoxml/source/dom/documentbuilder.hxx5
-rw-r--r--unoxml/source/dom/documentfragment.cxx5
-rw-r--r--unoxml/source/dom/documentfragment.hxx5
-rw-r--r--unoxml/source/dom/documenttype.cxx5
-rw-r--r--unoxml/source/dom/documenttype.hxx5
-rw-r--r--unoxml/source/dom/domimplementation.cxx5
-rw-r--r--unoxml/source/dom/domimplementation.hxx5
-rw-r--r--unoxml/source/dom/element.cxx5
-rw-r--r--unoxml/source/dom/element.hxx5
-rw-r--r--unoxml/source/dom/elementlist.cxx5
-rw-r--r--unoxml/source/dom/elementlist.hxx5
-rw-r--r--unoxml/source/dom/entitiesmap.cxx5
-rw-r--r--unoxml/source/dom/entitiesmap.hxx5
-rw-r--r--unoxml/source/dom/entity.cxx5
-rw-r--r--unoxml/source/dom/entity.hxx5
-rw-r--r--unoxml/source/dom/entityreference.cxx5
-rw-r--r--unoxml/source/dom/entityreference.hxx5
-rw-r--r--unoxml/source/dom/makefile.mk6
-rw-r--r--unoxml/source/dom/node.cxx11
-rw-r--r--unoxml/source/dom/node.hxx15
-rw-r--r--unoxml/source/dom/notation.cxx5
-rw-r--r--unoxml/source/dom/notation.hxx5
-rw-r--r--unoxml/source/dom/notationsmap.cxx5
-rw-r--r--unoxml/source/dom/notationsmap.hxx5
-rw-r--r--unoxml/source/dom/processinginstruction.cxx5
-rw-r--r--unoxml/source/dom/processinginstruction.hxx5
-rw-r--r--unoxml/source/dom/saxbuilder.cxx5
-rw-r--r--unoxml/source/dom/saxbuilder.hxx5
-rw-r--r--unoxml/source/dom/text.cxx5
-rw-r--r--unoxml/source/dom/text.hxx5
-rw-r--r--unoxml/source/events/makefile.mk6
-rw-r--r--unoxml/source/events/testlistener.cxx5
-rw-r--r--unoxml/source/events/testlistener.hxx5
-rw-r--r--unoxml/source/rdf/CBlankNode.cxx5
-rw-r--r--unoxml/source/rdf/CLiteral.cxx5
-rw-r--r--unoxml/source/rdf/CNodes.hxx5
-rw-r--r--unoxml/source/rdf/CURI.cxx5
-rw-r--r--unoxml/source/rdf/librdf_repository.cxx5
-rw-r--r--unoxml/source/rdf/librdf_repository.hxx5
-rw-r--r--unoxml/source/rdf/librdf_services.cxx5
-rw-r--r--unoxml/source/rdf/makefile.mk8
-rw-r--r--unoxml/source/service/makefile.mk6
-rw-r--r--unoxml/source/service/services.cxx5
-rw-r--r--unoxml/source/xpath/makefile.mk6
-rw-r--r--unoxml/source/xpath/nodelist.cxx5
-rw-r--r--unoxml/source/xpath/nodelist.hxx5
-rw-r--r--unoxml/source/xpath/xpathapi.cxx5
-rw-r--r--unoxml/source/xpath/xpathapi.hxx5
-rw-r--r--unoxml/source/xpath/xpathobject.cxx5
-rw-r--r--unoxml/source/xpath/xpathobject.hxx5
-rw-r--r--unoxml/test/domtest.cxx7
-rw-r--r--unoxml/test/export.map6
-rw-r--r--unoxml/test/makefile.mk17
-rw-r--r--writerfilter/inc/WriterFilterDllApi.hxx5
-rw-r--r--writerfilter/inc/dmapper/DomainMapper.hxx5
-rw-r--r--writerfilter/inc/doctok/WW8Document.hxx5
-rw-r--r--writerfilter/inc/ooxml/OOXMLDocument.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/OutputWithDepth.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/QNameToString.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/SubSequence.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/TableData.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/TableManager.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/TagLogger.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/WW8ResourceModel.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/exceptions.hxx5
-rw-r--r--writerfilter/inc/resourcemodel/util.hxx5
-rw-r--r--writerfilter/inc/rtftok/RTFInputSource.hxx29
-rw-r--r--writerfilter/inc/rtftok/RTFParseException.hxx29
-rw-r--r--writerfilter/inc/rtftok/RTFScanner.hxx29
-rw-r--r--writerfilter/inc/rtftok/RTFScannerHandler.hxx29
-rw-r--r--writerfilter/inc/writerfilter.mk6
-rw-r--r--writerfilter/qa/cppunittests/doctok/makefile.mk9
-rw-r--r--writerfilter/qa/cppunittests/doctok/testdoctok.cxx2
-rw-r--r--writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.cxx27
-rw-r--r--writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.hxx27
-rw-r--r--writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx27
-rw-r--r--writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.hxx27
-rw-r--r--writerfilter/qa/cppunittests/odiapi/export.map6
-rw-r--r--writerfilter/qa/cppunittests/odiapi/makefile.mk18
-rw-r--r--writerfilter/qa/cppunittests/odiapi/testCore.cxx32
-rw-r--r--writerfilter/qa/cppunittests/odiapi/testProperty.cxx31
-rw-r--r--writerfilter/qa/cppunittests/qname/export.map6
-rw-r--r--writerfilter/qa/cppunittests/qname/makefile.mk16
-rw-r--r--writerfilter/qa/cppunittests/qname/testQName.cxx29
-rw-r--r--writerfilter/qa/cppunittests/sl/export.map6
-rw-r--r--writerfilter/qa/cppunittests/sl/makefile.mk18
-rw-r--r--writerfilter/qa/cppunittests/sl/testOD_SL.cxx33
-rw-r--r--writerfilter/qa/cppunittests/xxml/export.map6
-rw-r--r--writerfilter/qa/cppunittests/xxml/makefile.mk18
-rw-r--r--writerfilter/qa/cppunittests/xxml/testXXML.cxx32
-rw-r--r--writerfilter/source/dmapper/BorderHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/BorderHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/CellColorHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/CellColorHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/CellMarginHandler.cxx6
-rw-r--r--writerfilter/source/dmapper/CellMarginHandler.hxx6
-rw-r--r--writerfilter/source/dmapper/ConversionHelper.cxx6
-rw-r--r--writerfilter/source/dmapper/ConversionHelper.hxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.hxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.cxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.hxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx5
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx5
-rw-r--r--writerfilter/source/dmapper/FontTable.cxx5
-rw-r--r--writerfilter/source/dmapper/FontTable.hxx5
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx6
-rw-r--r--writerfilter/source/dmapper/GraphicImport.hxx5
-rw-r--r--writerfilter/source/dmapper/LFOTable.cxx5
-rw-r--r--writerfilter/source/dmapper/LFOTable.hxx5
-rw-r--r--writerfilter/source/dmapper/ListTable.cxx5
-rw-r--r--writerfilter/source/dmapper/ListTable.hxx5
-rw-r--r--writerfilter/source/dmapper/MeasureHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/MeasureHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/ModelEventListener.cxx5
-rw-r--r--writerfilter/source/dmapper/ModelEventListener.hxx5
-rw-r--r--writerfilter/source/dmapper/OLEHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/OLEHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx5
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx5
-rw-r--r--writerfilter/source/dmapper/PropertyMap.cxx6
-rw-r--r--writerfilter/source/dmapper/PropertyMap.hxx5
-rw-r--r--writerfilter/source/dmapper/SectionColumnHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/SectionColumnHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx5
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.hxx5
-rw-r--r--writerfilter/source/dmapper/TDefTableHandler.cxx5
-rw-r--r--writerfilter/source/dmapper/TDefTableHandler.hxx5
-rw-r--r--writerfilter/source/dmapper/ThemeTable.cxx5
-rw-r--r--writerfilter/source/dmapper/ThemeTable.hxx5
-rw-r--r--writerfilter/source/dmapper/makefile.mk6
-rw-r--r--writerfilter/source/doctok/Dff.cxx5
-rw-r--r--writerfilter/source/doctok/Dff.hxx6
-rw-r--r--writerfilter/source/doctok/DffImpl.cxx5
-rw-r--r--writerfilter/source/doctok/PLCF.hxx5
-rw-r--r--writerfilter/source/doctok/WW8Annotation.cxx5
-rw-r--r--writerfilter/source/doctok/WW8BinTable.hxx5
-rw-r--r--writerfilter/source/doctok/WW8BinTableImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8BinTableImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8Clx.cxx5
-rw-r--r--writerfilter/source/doctok/WW8Clx.hxx5
-rw-r--r--writerfilter/source/doctok/WW8CpAndFc.cxx5
-rw-r--r--writerfilter/source/doctok/WW8CpAndFc.hxx5
-rw-r--r--writerfilter/source/doctok/WW8DocumentImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8DocumentImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8FKP.hxx5
-rw-r--r--writerfilter/source/doctok/WW8FKPImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8FKPImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8FontTable.cxx5
-rw-r--r--writerfilter/source/doctok/WW8LFOLevel.cxx6
-rw-r--r--writerfilter/source/doctok/WW8LFOTable.cxx6
-rw-r--r--writerfilter/source/doctok/WW8ListTable.cxx5
-rw-r--r--writerfilter/source/doctok/WW8OutputWithDepth.cxx5
-rw-r--r--writerfilter/source/doctok/WW8OutputWithDepth.hxx5
-rw-r--r--writerfilter/source/doctok/WW8Picture.cxx5
-rw-r--r--writerfilter/source/doctok/WW8PieceTable.hxx5
-rw-r--r--writerfilter/source/doctok/WW8PieceTableImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8PieceTableImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8PropertySetImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8PropertySetImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8ResourceModelImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8ResourceModelImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8StreamImpl.cxx5
-rw-r--r--writerfilter/source/doctok/WW8StreamImpl.hxx5
-rw-r--r--writerfilter/source/doctok/WW8StructBase.cxx5
-rw-r--r--writerfilter/source/doctok/WW8StructBase.hxx5
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.cxx5
-rw-r--r--writerfilter/source/doctok/WW8Sttbf.hxx5
-rw-r--r--writerfilter/source/doctok/WW8StyleSheet.cxx5
-rw-r--r--writerfilter/source/doctok/WW8Table.cxx5
-rw-r--r--writerfilter/source/doctok/WW8Text.cxx5
-rw-r--r--writerfilter/source/doctok/WW8inc.xsl8
-rw-r--r--writerfilter/source/doctok/WW8sprms.xsl8
-rw-r--r--writerfilter/source/doctok/WW8xmi.xsl8
-rw-r--r--writerfilter/source/doctok/XNoteHelper.hxx5
-rw-r--r--writerfilter/source/doctok/XNoteHelperImpl.hxx5
-rw-r--r--writerfilter/source/doctok/analyzer.xsl8
-rw-r--r--writerfilter/source/doctok/doctokLoggers.hxx5
-rw-r--r--writerfilter/source/doctok/doctokutil.cxx5
-rw-r--r--writerfilter/source/doctok/escherdoc.xsl8
-rw-r--r--writerfilter/source/doctok/genqnametostr6
-rw-r--r--writerfilter/source/doctok/makefile.mk6
-rw-r--r--writerfilter/source/doctok/qnametostr.xsl8
-rw-r--r--writerfilter/source/doctok/qnametostrheader6
-rw-r--r--writerfilter/source/doctok/resourceidmapper.xsl9
-rw-r--r--writerfilter/source/doctok/resourceidmapperback.xsl9
-rw-r--r--writerfilter/source/doctok/resourceids.xsl12
-rw-r--r--writerfilter/source/doctok/resources.xsl12
-rw-r--r--writerfilter/source/doctok/resourcesimpl.xsl8
-rw-r--r--writerfilter/source/doctok/resourcetools.xsl12
-rw-r--r--writerfilter/source/doctok/sprmcodetostr.xsl8
-rw-r--r--writerfilter/source/doctok/sprmids.xsl12
-rw-r--r--writerfilter/source/doctok/tidyxmi.xsl8
-rw-r--r--writerfilter/source/doctok/util.hxx5
-rw-r--r--writerfilter/source/doctok/xmistat.xsl8
-rwxr-xr-xwriterfilter/source/doctok/xmitocpp6
-rw-r--r--writerfilter/source/filter/ImportFilter.cxx5
-rw-r--r--writerfilter/source/filter/WriterFilter.cxx5
-rw-r--r--writerfilter/source/filter/WriterFilter.hxx5
-rw-r--r--writerfilter/source/filter/WriterFilterDetection.cxx5
-rw-r--r--writerfilter/source/filter/WriterFilterDetection.hxx5
-rw-r--r--writerfilter/source/filter/makefile.mk6
-rw-r--r--writerfilter/source/ooxml/Handler.cxx5
-rw-r--r--writerfilter/source/ooxml/Handler.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastHelper.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLParserState.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySet.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx6
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLStreamImpl.cxx5
-rw-r--r--writerfilter/source/ooxml/OOXMLStreamImpl.hxx5
-rw-r--r--writerfilter/source/ooxml/RefAndPointer.hxx5
-rw-r--r--writerfilter/source/ooxml/analyzer.xsl8
-rw-r--r--writerfilter/source/ooxml/checkmodel.xsl8
-rw-r--r--writerfilter/source/ooxml/dummyannotate.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-baseStylesheet.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-baseTypes.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-chartDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-documentProperties.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-graphicalObject.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shape3DCamera.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shape3DLighting.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shape3DScene.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shape3DStyles.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeEffects.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeGeometry.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeLineProperties.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-shapeProperties.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-styleDefaults.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-stylesheet.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-textCharacter.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_dml-wordprocessingDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_shared-math.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_shared-relationshipReference.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_sml-customXmlMappings.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_vml-main.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_vml-officeDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_vml-wordprocessingDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresources_wml.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-baseStylesheet.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-baseTypes.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-chartDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-documentProperties.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-graphicalObject.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DCamera.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DLighting.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DScene.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DStyles.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeEffects.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeGeometry.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeLineProperties.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-shapeProperties.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-styleDefaults.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-stylesheet.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-textCharacter.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_dml-wordprocessingDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_shared-math.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_shared-relationshipReference.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_sml-customXmlMappings.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_vml-main.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_vml-officeDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_vml-wordprocessingDrawing.xsl8
-rw-r--r--writerfilter/source/ooxml/fastresourcesimpl_wml.xsl8
-rw-r--r--writerfilter/source/ooxml/fasttokens.xsl8
-rw-r--r--writerfilter/source/ooxml/fasttokensimpl.xsl8
-rw-r--r--writerfilter/source/ooxml/gperffasttokenhandler.xsl8
-rw-r--r--writerfilter/source/ooxml/makefile.mk6
-rw-r--r--writerfilter/source/ooxml/modelcleanup.xsl8
-rw-r--r--writerfilter/source/ooxml/modelpreprocess.xsl8
-rw-r--r--writerfilter/source/ooxml/namespaceids.xsl8
-rw-r--r--writerfilter/source/ooxml/ooxmlLoggers.hxx5
-rw-r--r--writerfilter/source/ooxml/qnametostr.xsl8
-rw-r--r--writerfilter/source/ooxml/resourceids.xsl8
-rw-r--r--writerfilter/source/ooxml/resourcestools.xsl50
-rw-r--r--writerfilter/source/ooxml/values.xsl8
-rw-r--r--writerfilter/source/ooxml/valuesimpl.xsl8
-rw-r--r--writerfilter/source/resourcemodel/TagLogger.cxx5
-rw-r--r--writerfilter/source/resourcemodel/WW8Analyzer.cxx5
-rw-r--r--writerfilter/source/resourcemodel/WW8Analyzer.hxx5
-rw-r--r--writerfilter/source/resourcemodel/analyzerheader6
-rwxr-xr-xwriterfilter/source/resourcemodel/genqnametostr6
-rw-r--r--writerfilter/source/resourcemodel/makefile.mk6
-rw-r--r--writerfilter/source/resourcemodel/qnametostrheader6
-rw-r--r--writerfilter/source/resourcemodel/resourcemodel.cxx5
-rw-r--r--writerfilter/source/resourcemodel/resourcemodel.hxx5
-rw-r--r--writerfilter/source/resourcemodel/sprmcodetostrheader6
-rw-r--r--writerfilter/source/resourcemodel/util.cxx5
-rw-r--r--writerfilter/source/rtftok/FlexLexer.h5
-rw-r--r--writerfilter/source/rtftok/RTFParseException.cxx9
-rw-r--r--writerfilter/source/rtftok/RTFScanner.lex6
-rw-r--r--writerfilter/source/rtftok/makefile.mk9
-rw-r--r--writerfilter/unocomponent/component.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.hxx9
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokTestService.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/DocTokTestService.hxx9
-rw-r--r--writerfilter/unocomponent/debugservices/doctok/makefile.mk6
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.hxx9
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.hxx9
-rw-r--r--writerfilter/unocomponent/debugservices/ooxml/makefile.mk6
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.hxx9
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/XMLScanner.cxx9
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/XMLScanner.hxx9
-rw-r--r--writerfilter/unocomponent/debugservices/rtftok/makefile.mk6
-rw-r--r--writerfilter/unocomponent/makefile.mk6
-rw-r--r--writerfilter/util/makefile.mk8
-rw-r--r--xmerge/build.xml6
-rw-r--r--xmerge/inc/makefile.mk6
-rw-r--r--xmerge/inc/pch/precompiled_xmerge.cxx5
-rw-r--r--xmerge/inc/pch/precompiled_xmerge.hxx5
-rw-r--r--xmerge/java/build.xml7
-rw-r--r--xmerge/java/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/Convert.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/ConvertData.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/ConvertException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/ConverterFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/Document.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentMerger.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentSerializer.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/MergeException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/PluginFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/Version.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/dom/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/dom/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/dom/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/Record.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/package.html8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/Style.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/converter.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/converter.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/converter.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/converter.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/converter.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/DBFilter.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/makefile.mk8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbooktosoffheadings.xsl8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/literallayout.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_article.xsl8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_chapter.xsl8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/htmltosoff.xsl8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/xslt/sofftohtml.xsl8
-rw-r--r--xmerge/java/org/openoffice/xmerge/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/Difference.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/Iterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/diff/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/merge/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/merger/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties6
-rw-r--r--xmerge/java/org/openoffice/xmerge/test/Driver.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/test/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/test/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/ColourConverter.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/Debug.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/Debug.properties6
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/EndianConverter.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/IntArrayList.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/Resources.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/XmlUtil.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/build.xml6
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/converter.dtd8
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/makefile.mk6
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/registry/package.html8
-rw-r--r--xmerge/java/org/openoffice/xmerge/util/resources.properties6
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/FlatXml.cxx5
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/makefile.mk6
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/Makefile1
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XFilterAdapter.idl5
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XInputStreamToInputStreamAdapter.java5
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XOutputStreamToOutputStreamAdapter.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/makefile.mk8
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.cxx5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.hxx5
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java_prettyprint/Makefile1
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/Makefile_sdk1
-rw-r--r--xmerge/java/org/openoffice/xmerge/xmergebridge/TestStream.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/XMergeBridge.java5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.cxx5
-rwxr-xr-xxmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.hxx5
-rw-r--r--xmerge/source/activesync/makefile.mk6
-rw-r--r--xmerge/source/aportisdoc/build.xml6
-rw-r--r--xmerge/source/aportisdoc/converter.xml6
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java5
-rw-r--r--xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html8
-rw-r--r--xmerge/source/aportisdoc/makefile.mk6
-rw-r--r--xmerge/source/bridge/build.xml6
-rw-r--r--xmerge/source/bridge/java/XMergeBridge.java5
-rw-r--r--xmerge/source/bridge/makefile.mk6
-rw-r--r--xmerge/source/htmlsoff/build.xml6
-rw-r--r--xmerge/source/htmlsoff/converter.xml6
-rw-r--r--xmerge/source/htmlsoff/htmltosoff.xsl8
-rw-r--r--xmerge/source/htmlsoff/makefile.mk6
-rw-r--r--xmerge/source/htmlsoff/package.html8
-rw-r--r--xmerge/source/htmlsoff/sofftohtml.xsl8
-rw-r--r--xmerge/source/minicalc/build.xml6
-rw-r--r--xmerge/source/minicalc/converter.xml6
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java5
-rw-r--r--xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html8
-rw-r--r--xmerge/source/minicalc/makefile.mk6
-rwxr-xr-xxmerge/source/palmtests/bin/verify_sane.pl6
-rwxr-xr-xxmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl6
-rwxr-xr-xxmerge/source/palmtests/qa-wrapper/bin/qa_test_driver.pl6
-rwxr-xr-xxmerge/source/palmtests/qa-wrapper/bin/run-convtest6
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/form.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/script.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/style.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/table.mod8
-rw-r--r--xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/text.mod8
-rwxr-xr-xxmerge/source/palmtests/qa/bin/mysplit.pl6
-rwxr-xr-xxmerge/source/palmtests/qa/bin/tappen.pl6
-rwxr-xr-xxmerge/source/palmtests/qa/bin/template.pl6
-rwxr-xr-xxmerge/source/palmtests/qa/bin/test_driver.pl6
-rw-r--r--xmerge/source/palmtests/qa/comparator/OfficeZip.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/PDBDecoder.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/PDBHeader.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/PDBUtil.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/PalmDB.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/Record.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlDiff.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlWrapper.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/XmlZipExtract.java5
-rw-r--r--xmerge/source/palmtests/qa/comparator/comparator.pl6
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/chart.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/drawing.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/form.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/meta.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/office.dtd8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/office.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/script.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/settings.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/style.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/table.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/dtd/text.mod8
-rw-r--r--xmerge/source/palmtests/qa/comparator/pdbcomparison.java5
-rw-r--r--xmerge/source/palmtests/qa/lib/converterlib.pm6
-rw-r--r--xmerge/source/pexcel/build.xml6
-rw-r--r--xmerge/source/pexcel/converter.xml6
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html8
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java5
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html8
-rw-r--r--xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html8
-rw-r--r--xmerge/source/pexcel/makefile.mk6
-rw-r--r--xmerge/source/pocketword/build.xml6
-rw-r--r--xmerge/source/pocketword/converter.xml6
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java5
-rw-r--r--xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html8
-rw-r--r--xmerge/source/pocketword/makefile.mk6
-rw-r--r--xmerge/source/regutil/makefile.mk6
-rw-r--r--xmerge/source/wordsmith/build.xml6
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java5
-rw-r--r--xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java5
-rw-r--r--xmerge/source/wordsmith/makefile.mk6
-rw-r--r--xmerge/source/xmerge/build.xml6
-rw-r--r--xmerge/source/xmerge/converter.dtd8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertData.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertException.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/Document.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMerger.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/MergeException.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/PluginFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/Version.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties6
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Difference.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Iterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/merger/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties6
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/test/Driver.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.properties6
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/Resources.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java5
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/build.xml6
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/package.html8
-rw-r--r--xmerge/source/xmerge/java/org/openoffice/xmerge/util/resources.properties6
-rw-r--r--xmerge/source/xmerge/makefile.mk6
-rw-r--r--xmerge/util/build.xml6
-rw-r--r--xmerge/util/makefile.mk6
-rw-r--r--xmerge/workben/XmlDiff.java5
-rw-r--r--xmerge/workben/XmlDiff.properties6
-rw-r--r--xmerge/workben/build.xml6
-rw-r--r--xmerge/workben/jstyle.pl6
-rw-r--r--xmerge/workben/makefile.mk6
1916 files changed, 105164 insertions, 33218 deletions
diff --git a/filter/inc/filter.hrc b/filter/inc/filter.hrc
index 2de43b4576c5..4bea3330f617 100644
--- a/filter/inc/filter.hrc
+++ b/filter/inc/filter.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filter.hrc,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,10 +30,7 @@
// include ---------------------------------------------------------------
-
-#ifndef _SOLAR_HRC
-#include <svtools/solar.hrc>
-#endif
+#include <svl/solar.hrc>
// Help-Ids --------------------------------------------------------------
@@ -46,8 +40,20 @@
#define RID_XSLT_DIALOG_END (RID_FILTER_START + 69)
#define RID_PDF_OLD_EXPORT_DLG (RID_FILTER_START + 70)
-// warning, next range is RID_FILTER_START + 100 !
+#define DLG_EXPORT_EPCT (RID_GOODIES_START+ 0)
+#define DLG_EXPORT_GIF (RID_GOODIES_START+ 1)
+#define DLG_EXPORT_EMET (RID_GOODIES_START+ 2)
+#define DLG_EXPORT_JPG (RID_GOODIES_START+ 3)
+#define DLG_IMPORT_PCD (RID_GOODIES_START+ 4)
+#define DLG_EXPORT_EPNG (RID_GOODIES_START+ 5)
+#define DLG_EXPORT_EPS (RID_GOODIES_START+ 8)
+#define DLG_EXPORT_EPBM (RID_GOODIES_START+ 9)
+#define DLG_EXPORT_EPGM (RID_GOODIES_START+ 10)
+#define DLG_EXPORT_EPPM (RID_GOODIES_START+ 11)
+#define DLG_SSL_NEWCERT (RID_GOODIES_START+ 12)
+#define DLG_SSL_INFCERT (RID_GOODIES_START+ 13)
+// warning, next range is RID_FILTER_START + 100 !
#define HID_FILTER_XSLT_START (HID_FILTER_START + 0) // see source/xsltdialog/xmlfilterhelpids.hrc for range
#define HID_FILTER_XSLT_END (HID_FILTER_START + 99)
diff --git a/filter/inc/filter/msfilter/countryid.hxx b/filter/inc/filter/msfilter/countryid.hxx
new file mode 100644
index 000000000000..f33b2fe6b5ac
--- /dev/null
+++ b/filter/inc/filter/msfilter/countryid.hxx
@@ -0,0 +1,318 @@
+/*************************************************************************
+ *
+ * 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 INCLUDED_SVX_COUNTRYID_HXX
+#define INCLUDED_SVX_COUNTRYID_HXX
+
+#include <sal/types.h>
+#include <i18npool/lang.h>
+#include "filter/msfilter/msfilterdllapi.h"
+
+// ----------------------------------------------------------------------------
+
+namespace msfilter {
+
+// Windows Country IDs ========================================================
+
+/** Represents a Windows country ID.
+
+ The country IDs used in Windows are equal to the international calling
+ code of each country, i.e. the code 353 represents Ireland (+353).
+
+ ATTENTION: These country codes are not supposed to be used anywhere in core
+ structures! They shall ONLY be used in the import/export filters for
+ Microsoft Office documents!
+ */
+typedef sal_uInt16 CountryId;
+
+const CountryId COUNTRY_DONTKNOW = 0;
+const CountryId COUNTRY_USA = 1;
+const CountryId COUNTRY_DOMINICAN_REPUBLIC = 1; // NANP
+const CountryId COUNTRY_GUAM = 1; // NANP
+const CountryId COUNTRY_JAMAICA = 1; // NANP
+const CountryId COUNTRY_PUERTO_RICO = 1; // NANP
+const CountryId COUNTRY_TRINIDAD_Y_TOBAGO = 1; // NANP
+const CountryId COUNTRY_CANADA = 2;
+const CountryId COUNTRY_RUSSIA = 7;
+const CountryId COUNTRY_KAZAKHSTAN = 7; // no own ID
+const CountryId COUNTRY_TATARSTAN = 7; // no own ID
+const CountryId COUNTRY_EGYPT = 20;
+const CountryId COUNTRY_SOUTH_AFRICA = 27;
+const CountryId COUNTRY_GREECE = 30;
+const CountryId COUNTRY_NETHERLANDS = 31;
+const CountryId COUNTRY_BELGIUM = 32;
+const CountryId COUNTRY_FRANCE = 33;
+const CountryId COUNTRY_SPAIN = 34;
+const CountryId COUNTRY_HUNGARY = 36;
+const CountryId COUNTRY_ITALY = 39;
+const CountryId COUNTRY_ROMANIA = 40;
+const CountryId COUNTRY_SWITZERLAND = 41;
+const CountryId COUNTRY_AUSTRIA = 43;
+const CountryId COUNTRY_UNITED_KINGDOM = 44;
+const CountryId COUNTRY_DENMARK = 45;
+const CountryId COUNTRY_SWEDEN = 46;
+const CountryId COUNTRY_NORWAY = 47;
+const CountryId COUNTRY_POLAND = 48;
+const CountryId COUNTRY_GERMANY = 49;
+const CountryId COUNTRY_PERU = 51;
+const CountryId COUNTRY_MEXICO = 52;
+const CountryId COUNTRY_CUBA = 53;
+const CountryId COUNTRY_ARGENTINIA = 54;
+const CountryId COUNTRY_BRAZIL = 55;
+const CountryId COUNTRY_CHILE = 56;
+const CountryId COUNTRY_COLOMBIA = 57;
+const CountryId COUNTRY_VENEZUELA = 58;
+const CountryId COUNTRY_MALAYSIA = 60;
+const CountryId COUNTRY_AUSTRALIA = 61;
+const CountryId COUNTRY_INDONESIA = 62;
+const CountryId COUNTRY_PHILIPPINES = 63;
+const CountryId COUNTRY_NEW_ZEALAND = 64;
+const CountryId COUNTRY_SINGAPORE = 65;
+const CountryId COUNTRY_THAILAND = 66;
+const CountryId COUNTRY_JAPAN = 81;
+const CountryId COUNTRY_SOUTH_KOREA = 82;
+const CountryId COUNTRY_VIET_NAM = 84;
+const CountryId COUNTRY_PR_CHINA = 86;
+const CountryId COUNTRY_TIBET = 86; // no own ID
+const CountryId COUNTRY_TURKEY = 90;
+const CountryId COUNTRY_INDIA = 91;
+const CountryId COUNTRY_PAKISTAN = 92;
+const CountryId COUNTRY_AFGHANISTAN = 93;
+const CountryId COUNTRY_SRI_LANKA = 94;
+const CountryId COUNTRY_MYANMAR = 95;
+const CountryId COUNTRY_MOROCCO = 212;
+const CountryId COUNTRY_ALGERIA = 213;
+const CountryId COUNTRY_TUNISIA = 216;
+const CountryId COUNTRY_LIBYA = 218;
+const CountryId COUNTRY_GAMBIA = 220;
+const CountryId COUNTRY_SENEGAL = 221;
+const CountryId COUNTRY_MAURITANIA = 222;
+const CountryId COUNTRY_MALI = 223;
+const CountryId COUNTRY_GUINEA = 224;
+const CountryId COUNTRY_COTE_D_IVOIRE = 225;
+const CountryId COUNTRY_BURKINA_FARSO = 226;
+const CountryId COUNTRY_NIGER = 227;
+const CountryId COUNTRY_TOGO = 228;
+const CountryId COUNTRY_BENIN = 229;
+const CountryId COUNTRY_MAURITIUS = 230;
+const CountryId COUNTRY_LIBERIA = 231;
+const CountryId COUNTRY_SIERRA_LEONE = 232;
+const CountryId COUNTRY_GHANA = 233;
+const CountryId COUNTRY_NIGERIA = 234;
+const CountryId COUNTRY_CHAD = 235;
+const CountryId COUNTRY_CENTRAL_AFR_REP = 236;
+const CountryId COUNTRY_CAMEROON = 237;
+const CountryId COUNTRY_CAPE_VERDE = 238;
+const CountryId COUNTRY_SAO_TOME = 239;
+const CountryId COUNTRY_EQUATORIAL_GUINEA = 240;
+const CountryId COUNTRY_GABON = 241;
+const CountryId COUNTRY_CONGO = 242;
+const CountryId COUNTRY_ZAIRE = 243;
+const CountryId COUNTRY_ANGOLA = 244;
+const CountryId COUNTRY_GUINEA_BISSAU = 245;
+const CountryId COUNTRY_DIEGO_GARCIA = 246;
+const CountryId COUNTRY_ASCENSION_ISLAND = 247;
+const CountryId COUNTRY_SEYCHELLES = 248;
+const CountryId COUNTRY_SUDAN = 249;
+const CountryId COUNTRY_RWANDA = 250;
+const CountryId COUNTRY_ETHIOPIA = 251;
+const CountryId COUNTRY_SOMALIA = 252;
+const CountryId COUNTRY_DJIBOUTI = 253;
+const CountryId COUNTRY_KENYA = 254;
+const CountryId COUNTRY_TANZANIA = 255;
+const CountryId COUNTRY_UGANDA = 256;
+const CountryId COUNTRY_BURUNDI = 257;
+const CountryId COUNTRY_MOZAMBIQUE = 258;
+const CountryId COUNTRY_ZANZIBAR = 259;
+const CountryId COUNTRY_ZAMBIA = 260;
+const CountryId COUNTRY_MADAGASKAR = 261;
+const CountryId COUNTRY_REUNION = 262;
+const CountryId COUNTRY_ZIMBABWE = 263;
+const CountryId COUNTRY_NAMIBIA = 264;
+const CountryId COUNTRY_MALAWI = 265;
+const CountryId COUNTRY_LESOTHO = 266;
+const CountryId COUNTRY_BOTSWANA = 267;
+const CountryId COUNTRY_SWAZILAND = 268;
+const CountryId COUNTRY_COMOROS_MAYOTTE = 269;
+const CountryId COUNTRY_ST_HELENA = 290;
+const CountryId COUNTRY_ERITREA = 291;
+const CountryId COUNTRY_ARUBA = 297;
+const CountryId COUNTRY_FAEROE_ISLANDS = 298;
+const CountryId COUNTRY_GREEN_ISLAND = 299;
+const CountryId COUNTRY_GIBRALTAR = 350;
+const CountryId COUNTRY_PORTUGAL = 351;
+const CountryId COUNTRY_LUXEMBOURG = 352;
+const CountryId COUNTRY_IRELAND = 353;
+const CountryId COUNTRY_ICELAND = 354;
+const CountryId COUNTRY_ALBANIA = 355;
+const CountryId COUNTRY_MALTA = 356;
+const CountryId COUNTRY_CYPRUS = 357;
+const CountryId COUNTRY_FINLAND = 358;
+const CountryId COUNTRY_BULGARIA = 359;
+const CountryId COUNTRY_LITHUANIA = 370;
+const CountryId COUNTRY_LATVIA = 371;
+const CountryId COUNTRY_ESTONIA = 372;
+const CountryId COUNTRY_MOLDOVA = 373;
+const CountryId COUNTRY_ARMENIA = 374;
+const CountryId COUNTRY_BELARUS = 375;
+const CountryId COUNTRY_ANDORRA = 376;
+const CountryId COUNTRY_MONACO = 377;
+const CountryId COUNTRY_SAN_MARINO = 378;
+const CountryId COUNTRY_VATICAN_CITY = 379;
+const CountryId COUNTRY_UKRAINE = 380;
+const CountryId COUNTRY_SERBIA = 381;
+const CountryId COUNTRY_CROATIA = 385;
+const CountryId COUNTRY_SLOVENIA = 386;
+const CountryId COUNTRY_BOSNIA = 387;
+const CountryId COUNTRY_MACEDONIA = 389;
+const CountryId COUNTRY_CZECH = 420;
+const CountryId COUNTRY_SLOVAK = 421;
+const CountryId COUNTRY_LIECHTENSTEIN = 423;
+const CountryId COUNTRY_FALKLAND_ISLANDS = 500;
+const CountryId COUNTRY_BELIZE = 501;
+const CountryId COUNTRY_GUATEMALA = 502;
+const CountryId COUNTRY_EL_SALVADOR = 503;
+const CountryId COUNTRY_HONDURAS = 504;
+const CountryId COUNTRY_NICARAGUA = 505;
+const CountryId COUNTRY_COSTA_RICA = 506;
+const CountryId COUNTRY_PANAMA = 507;
+const CountryId COUNTRY_ST_PIERRE = 508;
+const CountryId COUNTRY_HAITI = 509;
+const CountryId COUNTRY_GUADELOUPE = 590;
+const CountryId COUNTRY_BOLIVIA = 591;
+const CountryId COUNTRY_GUYANA = 592;
+const CountryId COUNTRY_ECUADOR = 593;
+const CountryId COUNTRY_FRENCH_GUIANA = 594;
+const CountryId COUNTRY_PARAGUAY = 595;
+const CountryId COUNTRY_MARTINIQUE = 596;
+const CountryId COUNTRY_SURINAME = 597;
+const CountryId COUNTRY_URUGUAY = 598;
+const CountryId COUNTRY_NETHERL_ANTILLES = 599;
+const CountryId COUNTRY_EAST_TIMOR = 670;
+const CountryId COUNTRY_ANTARCTICA = 672;
+const CountryId COUNTRY_BRUNEI_DARUSSALAM = 673;
+const CountryId COUNTRY_NARUPU = 674;
+const CountryId COUNTRY_PAPUA_NEW_GUINEA = 675;
+const CountryId COUNTRY_TONGA = 676;
+const CountryId COUNTRY_SOLOMON_ISLANDS = 677;
+const CountryId COUNTRY_VANUATU = 678;
+const CountryId COUNTRY_FIJI = 679;
+const CountryId COUNTRY_PALAU = 680;
+const CountryId COUNTRY_WALLIS_AND_FUTUNA = 681;
+const CountryId COUNTRY_COOK_ISLANDS = 682;
+const CountryId COUNTRY_NIUE_ISLAND = 683;
+const CountryId COUNTRY_AMERICAN_SAMOA = 684;
+const CountryId COUNTRY_WESTERN_SAMOA = 685;
+const CountryId COUNTRY_KIRIBATI = 686;
+const CountryId COUNTRY_NEW_CALEDONIA = 687;
+const CountryId COUNTRY_TUVALU = 688;
+const CountryId COUNTRY_FRENCH_POLYNESIA = 689;
+const CountryId COUNTRY_TOKELAU = 690;
+const CountryId COUNTRY_MICRONESIA = 691;
+const CountryId COUNTRY_MARSHALL_ISLANDS = 692;
+const CountryId COUNTRY_NORTH_KOREA = 850;
+const CountryId COUNTRY_HONG_KONG = 852;
+const CountryId COUNTRY_MACAU = 853;
+const CountryId COUNTRY_CAMBODIA = 855;
+const CountryId COUNTRY_LAOS = 856;
+const CountryId COUNTRY_BANGLADESH = 880;
+const CountryId COUNTRY_TAIWAN = 886;
+const CountryId COUNTRY_MALDIVES = 960;
+const CountryId COUNTRY_LEBANON = 961;
+const CountryId COUNTRY_JORDAN = 962;
+const CountryId COUNTRY_SYRIA = 963;
+const CountryId COUNTRY_IRAQ = 964;
+const CountryId COUNTRY_KUWAIT = 965;
+const CountryId COUNTRY_SAUDI_ARABIA = 966;
+const CountryId COUNTRY_YEMEN = 967;
+const CountryId COUNTRY_OMAN = 968;
+const CountryId COUNTRY_PALESTINE = 970;
+const CountryId COUNTRY_UAE = 971;
+const CountryId COUNTRY_ISRAEL = 972;
+const CountryId COUNTRY_BAHRAIN = 973;
+const CountryId COUNTRY_QATAR = 974;
+const CountryId COUNTRY_BHUTAN = 975;
+const CountryId COUNTRY_MONGOLIA = 976;
+const CountryId COUNTRY_NEPAL = 977;
+const CountryId COUNTRY_IRAN = 981;
+const CountryId COUNTRY_TAJIKISTAN = 992;
+const CountryId COUNTRY_TURKMENISTAN = 993;
+const CountryId COUNTRY_AZERBAIJAN = 994;
+const CountryId COUNTRY_GEORGIA = 995;
+const CountryId COUNTRY_KYRGYZSTAN = 996;
+const CountryId COUNTRY_UZBEKISTAN = 998;
+
+// Country ID <-> Language type conversion ====================================
+
+/** Converts a language type to a Windows country ID.
+
+ The function regards the sub type of the passed language, and tries to
+ return the appropriate country, i.e. COUNTRY_IRELAND for
+ LANGUAGE_ENGLISH_EIRE.
+
+ A few countries do not have an own associated country ID. Most of these
+ countries are mapped to another related country, i.e. Kazakhstan is
+ mapped to Russia.
+
+ If no country can be found, the value COUNTRY_DONTKNOW will be returned.
+
+ @param eLanguage
+ A language type, defined in tools/lang.hxx.
+
+ @return
+ The best Windows country ID for the passed language type, or
+ COUNTRY_DONTKNOW on error.
+ */
+MSFILTER_DLLPUBLIC CountryId ConvertLanguageToCountry( LanguageType eLanguage );
+
+/** Converts a Windows country ID to a language type.
+
+ The function returns the most used language for the passed country
+ (hopefully), i.e. LANGUAGE_ENGLISH_EIRE for COUNTRY_IRELAND.
+
+ If the passed country ID is not valid, the value LANGUAGE_DONTKNOW will be
+ returned.
+
+ @param eCountry
+ A Windows country ID, defined above.
+
+ @return
+ The most used language type in the passed country, or LANGUAGE_DONTKNOW
+ on error.
+ */
+MSFILTER_DLLPUBLIC LanguageType ConvertCountryToLanguage( CountryId eCountry );
+
+// ============================================================================
+
+} // namespace svx
+
+// ============================================================================
+
+#endif
+
diff --git a/filter/inc/filter/msfilter/escherex.hxx b/filter/inc/filter/msfilter/escherex.hxx
new file mode 100644
index 000000000000..b98f5dc85147
--- /dev/null
+++ b/filter/inc/filter/msfilter/escherex.hxx
@@ -0,0 +1,1612 @@
+/*************************************************************************
+ *
+ * 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 _SVX_ESCHEREX_HXX
+#define _SVX_ESCHEREX_HXX
+
+#include <memory>
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <tools/solar.h>
+#include <tools/gen.hxx>
+#include <tools/list.hxx>
+#include <tools/stream.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <svtools/grfmgr.hxx>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyState.hpp>
+#include <com/sun/star/drawing/BitmapMode.hpp>
+#include <com/sun/star/drawing/Hatch.hpp>
+#include <svx/msdffdef.hxx>
+#include "filter/msfilter/msfilterdllapi.h"
+
+ /*Record Name FBT-Value Instance Contents Wrd Exl PPt Ver*/
+// In der Mickysoft-Doku heissen die msofbt... statt ESCHER_...
+#define ESCHER_DggContainer 0xF000 /* per-document data X X X */
+#define ESCHER_Dgg 0xF006 /* an FDGG and several FIDCLs X X X 0 */
+#define ESCHER_CLSID 0xF016 /* the CLSID of the application that put the data on the clipboard C C C 0 */
+#define ESCHER_OPT 0xF00B /* count of properties the document-wide default shape properties X X X 3 */
+#define ESCHER_ColorMRU 0xF11A /* count of colors the colors in the MRU swatch X X X 0 */
+#define ESCHER_SplitMenuColors 0xF11E /* count of colors the colors in the top-level split menus X X X 0 */
+#define ESCHER_BstoreContainer 0xF001 /* count of BLIPs all images in the document (JPEGs, metafiles, etc.) X X X */
+#define ESCHER_BSE 0xF007 /* BLIP type an FBSE (one per BLIP) X X X 2 */
+#define ESCHER_BlipFirst 0xF018 /* range of fbts reserved for various kinds of BLIPs X X X */
+#define ESCHER_BlipLast 0xF117 /* range of fbts reserved for various kinds of BLIPs X X X */
+
+#define ESCHER_DgContainer 0xF002 /* per-sheet/page/slide data X X X */
+#define ESCHER_Dg 0xF008 /* drawing ID an FDG X X X 0 */
+#define ESCHER_RegroupItems 0xF118 /* count of regroup entries several FRITs X X X 0 */
+#define ESCHER_ColorScheme 0xF120 /* count of colors the colors of the source host's color scheme C C 0 */
+#define ESCHER_SpgrContainer 0xF003 /* several SpContainers, the first of which is the group shape itself X X X */
+#define ESCHER_SpContainer 0xF004 /* a shape X X X */
+#define ESCHER_Spgr 0xF009 /* an FSPGR; only present if the shape is a group shape X X X 1 */
+#define ESCHER_Sp 0xF00A /* shape type an FSP X X X 2 */
+//#define ESCHER_OPT 0xF00B /* count of properties a shape property table X X X 3 */
+#define ESCHER_Textbox 0xF00C /* RTF text C C C 0 */
+#define ESCHER_ClientTextbox 0xF00D /* host-defined the text in the textbox, in host-defined format X X X */
+#define ESCHER_Anchor 0xF00E /* a RECT, in 100000ths of an inch C C C 0 */
+#define ESCHER_ChildAnchor 0xF00F /* a RECT, in units relative to the parent group X X X 0 */
+#define ESCHER_ClientAnchor 0xF010 /* host-defined the location of the shape, in a host-defined format X X X */
+#define ESCHER_ClientData 0xF011 /* host-defined host-specific data X X X */
+#define ESCHER_OleObject 0xF11F /* a serialized IStorage for an OLE object C C C 0 */
+#define ESCHER_DeletedPspl 0xF11D /* an FPSPL; only present in top-level deleted shapes X 0 */
+#define ESCHER_SolverContainer 0xF005 /* count of rules the rules governing shapes X X X */
+#define ESCHER_ConnectorRule 0xF012 /* an FConnectorRule X X 1 */
+#define ESCHER_AlignRule 0xF013 /* an FAlignRule X X X 0 */
+#define ESCHER_ArcRule 0xF014 /* an FARCRU X X X 0 */
+#define ESCHER_ClientRule 0xF015 /* host-defined host-defined */
+#define ESCHER_CalloutRule 0xF017 /* an FCORU X X X 0 */
+#define ESCHER_Selection 0xF119 /* an FDGSL followed by the SPIDs of the shapes in the selection X 0 */
+#define ESCHER_UDefProp 0xF122
+
+#define SHAPEFLAG_GROUP 0x001 // This shape is a group shape
+#define SHAPEFLAG_CHILD 0x002 // Not a top-level shape
+#define SHAPEFLAG_PATRIARCH 0x004 // This is the topmost group shape. Exactly one of these per drawing.
+#define SHAPEFLAG_DELETED 0x008 // The shape has been deleted
+#define SHAPEFLAG_OLESHAPE 0x010 // The shape is an OLE object
+#define SHAPEFLAG_HAVEMASTER 0x020 // Shape has a hspMaster property
+#define SHAPEFLAG_FLIPH 0x040 // Shape is flipped horizontally
+#define SHAPEFLAG_FLIPV 0x080 // Shape is flipped vertically
+#define SHAPEFLAG_CONNECTOR 0x100 // Connector type of shape
+#define SHAPEFLAG_HAVEANCHOR 0x200 // Shape has an anchor of some kind
+#define SHAPEFLAG_BACKGROUND 0x400 // Background shape
+#define SHAPEFLAG_HAVESPT 0x800 // Shape has a shape type property
+
+#define ESCHER_ShpInst_Min 0
+#define ESCHER_ShpInst_NotPrimitive ESCHER_ShpInst_Min
+#define ESCHER_ShpInst_Rectangle 1
+#define ESCHER_ShpInst_RoundRectangle 2
+#define ESCHER_ShpInst_Ellipse 3
+#define ESCHER_ShpInst_Diamond 4
+#define ESCHER_ShpInst_IsocelesTriangle 5
+#define ESCHER_ShpInst_RightTriangle 6
+#define ESCHER_ShpInst_Parallelogram 7
+#define ESCHER_ShpInst_Trapezoid 8
+#define ESCHER_ShpInst_Hexagon 9
+#define ESCHER_ShpInst_Octagon 10
+#define ESCHER_ShpInst_Plus 11
+#define ESCHER_ShpInst_Star 12
+#define ESCHER_ShpInst_Arrow 13
+#define ESCHER_ShpInst_ThickArrow 14
+#define ESCHER_ShpInst_HomePlate 15
+#define ESCHER_ShpInst_Cube 16
+#define ESCHER_ShpInst_Balloon 17
+#define ESCHER_ShpInst_Seal 18
+#define ESCHER_ShpInst_Arc 19
+#define ESCHER_ShpInst_Line 20
+#define ESCHER_ShpInst_Plaque 21
+#define ESCHER_ShpInst_Can 22
+#define ESCHER_ShpInst_Donut 23
+#define ESCHER_ShpInst_TextSimple 24
+#define ESCHER_ShpInst_TextOctagon 25
+#define ESCHER_ShpInst_TextHexagon 26
+#define ESCHER_ShpInst_TextCurve 27
+#define ESCHER_ShpInst_TextWave 28
+#define ESCHER_ShpInst_TextRing 29
+#define ESCHER_ShpInst_TextOnCurve 30
+#define ESCHER_ShpInst_TextOnRing 31
+#define ESCHER_ShpInst_StraightConnector1 32
+#define ESCHER_ShpInst_BentConnector2 33
+#define ESCHER_ShpInst_BentConnector3 34
+#define ESCHER_ShpInst_BentConnector4 35
+#define ESCHER_ShpInst_BentConnector5 36
+#define ESCHER_ShpInst_CurvedConnector2 37
+#define ESCHER_ShpInst_CurvedConnector3 38
+#define ESCHER_ShpInst_CurvedConnector4 39
+#define ESCHER_ShpInst_CurvedConnector5 40
+#define ESCHER_ShpInst_Callout1 41
+#define ESCHER_ShpInst_Callout2 42
+#define ESCHER_ShpInst_Callout3 43
+#define ESCHER_ShpInst_AccentCallout1 44
+#define ESCHER_ShpInst_AccentCallout2 45
+#define ESCHER_ShpInst_AccentCallout3 46
+#define ESCHER_ShpInst_BorderCallout1 47
+#define ESCHER_ShpInst_BorderCallout2 48
+#define ESCHER_ShpInst_BorderCallout3 49
+#define ESCHER_ShpInst_AccentBorderCallout1 50
+#define ESCHER_ShpInst_AccentBorderCallout2 51
+#define ESCHER_ShpInst_AccentBorderCallout3 52
+#define ESCHER_ShpInst_Ribbon 53
+#define ESCHER_ShpInst_Ribbon2 54
+#define ESCHER_ShpInst_Chevron 55
+#define ESCHER_ShpInst_Pentagon 56
+#define ESCHER_ShpInst_NoSmoking 57
+#define ESCHER_ShpInst_Seal8 58
+#define ESCHER_ShpInst_Seal16 59
+#define ESCHER_ShpInst_Seal32 60
+#define ESCHER_ShpInst_WedgeRectCallout 61
+#define ESCHER_ShpInst_WedgeRRectCallout 62
+#define ESCHER_ShpInst_WedgeEllipseCallout 63
+#define ESCHER_ShpInst_Wave 64
+#define ESCHER_ShpInst_FoldedCorner 65
+#define ESCHER_ShpInst_LeftArrow 66
+#define ESCHER_ShpInst_DownArrow 67
+#define ESCHER_ShpInst_UpArrow 68
+#define ESCHER_ShpInst_LeftRightArrow 69
+#define ESCHER_ShpInst_UpDownArrow 70
+#define ESCHER_ShpInst_IrregularSeal1 71
+#define ESCHER_ShpInst_IrregularSeal2 72
+#define ESCHER_ShpInst_LightningBolt 73
+#define ESCHER_ShpInst_Heart 74
+#define ESCHER_ShpInst_PictureFrame 75
+#define ESCHER_ShpInst_QuadArrow 76
+#define ESCHER_ShpInst_LeftArrowCallout 77
+#define ESCHER_ShpInst_RightArrowCallout 78
+#define ESCHER_ShpInst_UpArrowCallout 79
+#define ESCHER_ShpInst_DownArrowCallout 80
+#define ESCHER_ShpInst_LeftRightArrowCallout 81
+#define ESCHER_ShpInst_UpDownArrowCallout 82
+#define ESCHER_ShpInst_QuadArrowCallout 83
+#define ESCHER_ShpInst_Bevel 84
+#define ESCHER_ShpInst_LeftBracket 85
+#define ESCHER_ShpInst_RightBracket 86
+#define ESCHER_ShpInst_LeftBrace 87
+#define ESCHER_ShpInst_RightBrace 88
+#define ESCHER_ShpInst_LeftUpArrow 89
+#define ESCHER_ShpInst_BentUpArrow 90
+#define ESCHER_ShpInst_BentArrow 91
+#define ESCHER_ShpInst_Seal24 92
+#define ESCHER_ShpInst_StripedRightArrow 93
+#define ESCHER_ShpInst_NotchedRightArrow 94
+#define ESCHER_ShpInst_BlockArc 95
+#define ESCHER_ShpInst_SmileyFace 96
+#define ESCHER_ShpInst_VerticalScroll 97
+#define ESCHER_ShpInst_HorizontalScroll 98
+#define ESCHER_ShpInst_CircularArrow 99
+#define ESCHER_ShpInst_NotchedCircularArrow 100
+#define ESCHER_ShpInst_UturnArrow 101
+#define ESCHER_ShpInst_CurvedRightArrow 102
+#define ESCHER_ShpInst_CurvedLeftArrow 103
+#define ESCHER_ShpInst_CurvedUpArrow 104
+#define ESCHER_ShpInst_CurvedDownArrow 105
+#define ESCHER_ShpInst_CloudCallout 106
+#define ESCHER_ShpInst_EllipseRibbon 107
+#define ESCHER_ShpInst_EllipseRibbon2 108
+#define ESCHER_ShpInst_FlowChartProcess 109
+#define ESCHER_ShpInst_FlowChartDecision 110
+#define ESCHER_ShpInst_FlowChartInputOutput 111
+#define ESCHER_ShpInst_FlowChartPredefinedProcess 112
+#define ESCHER_ShpInst_FlowChartInternalStorage 113
+#define ESCHER_ShpInst_FlowChartDocument 114
+#define ESCHER_ShpInst_FlowChartMultidocument 115
+#define ESCHER_ShpInst_FlowChartTerminator 116
+#define ESCHER_ShpInst_FlowChartPreparation 117
+#define ESCHER_ShpInst_FlowChartManualInput 118
+#define ESCHER_ShpInst_FlowChartManualOperation 119
+#define ESCHER_ShpInst_FlowChartConnector 120
+#define ESCHER_ShpInst_FlowChartPunchedCard 121
+#define ESCHER_ShpInst_FlowChartPunchedTape 122
+#define ESCHER_ShpInst_FlowChartSummingJunction 123
+#define ESCHER_ShpInst_FlowChartOr 124
+#define ESCHER_ShpInst_FlowChartCollate 125
+#define ESCHER_ShpInst_FlowChartSort 126
+#define ESCHER_ShpInst_FlowChartExtract 127
+#define ESCHER_ShpInst_FlowChartMerge 128
+#define ESCHER_ShpInst_FlowChartOfflineStorage 129
+#define ESCHER_ShpInst_FlowChartOnlineStorage 130
+#define ESCHER_ShpInst_FlowChartMagneticTape 131
+#define ESCHER_ShpInst_FlowChartMagneticDisk 132
+#define ESCHER_ShpInst_FlowChartMagneticDrum 133
+#define ESCHER_ShpInst_FlowChartDisplay 134
+#define ESCHER_ShpInst_FlowChartDelay 135
+#define ESCHER_ShpInst_TextPlainText 136
+#define ESCHER_ShpInst_TextStop 137
+#define ESCHER_ShpInst_TextTriangle 138
+#define ESCHER_ShpInst_TextTriangleInverted 139
+#define ESCHER_ShpInst_TextChevron 140
+#define ESCHER_ShpInst_TextChevronInverted 141
+#define ESCHER_ShpInst_TextRingInside 142
+#define ESCHER_ShpInst_TextRingOutside 143
+#define ESCHER_ShpInst_TextArchUpCurve 144
+#define ESCHER_ShpInst_TextArchDownCurve 145
+#define ESCHER_ShpInst_TextCircleCurve 146
+#define ESCHER_ShpInst_TextButtonCurve 147
+#define ESCHER_ShpInst_TextArchUpPour 148
+#define ESCHER_ShpInst_TextArchDownPour 149
+#define ESCHER_ShpInst_TextCirclePour 150
+#define ESCHER_ShpInst_TextButtonPour 151
+#define ESCHER_ShpInst_TextCurveUp 152
+#define ESCHER_ShpInst_TextCurveDown 153
+#define ESCHER_ShpInst_TextCascadeUp 154
+#define ESCHER_ShpInst_TextCascadeDown 155
+#define ESCHER_ShpInst_TextWave1 156
+#define ESCHER_ShpInst_TextWave2 157
+#define ESCHER_ShpInst_TextWave3 158
+#define ESCHER_ShpInst_TextWave4 159
+#define ESCHER_ShpInst_TextInflate 160
+#define ESCHER_ShpInst_TextDeflate 161
+#define ESCHER_ShpInst_TextInflateBottom 162
+#define ESCHER_ShpInst_TextDeflateBottom 163
+#define ESCHER_ShpInst_TextInflateTop 164
+#define ESCHER_ShpInst_TextDeflateTop 165
+#define ESCHER_ShpInst_TextDeflateInflate 166
+#define ESCHER_ShpInst_TextDeflateInflateDeflate 167
+#define ESCHER_ShpInst_TextFadeRight 168
+#define ESCHER_ShpInst_TextFadeLeft 169
+#define ESCHER_ShpInst_TextFadeUp 170
+#define ESCHER_ShpInst_TextFadeDown 171
+#define ESCHER_ShpInst_TextSlantUp 172
+#define ESCHER_ShpInst_TextSlantDown 173
+#define ESCHER_ShpInst_TextCanUp 174
+#define ESCHER_ShpInst_TextCanDown 175
+#define ESCHER_ShpInst_FlowChartAlternateProcess 176
+#define ESCHER_ShpInst_FlowChartOffpageConnector 177
+#define ESCHER_ShpInst_Callout90 178
+#define ESCHER_ShpInst_AccentCallout90 179
+#define ESCHER_ShpInst_BorderCallout90 180
+#define ESCHER_ShpInst_AccentBorderCallout90 181
+#define ESCHER_ShpInst_LeftRightUpArrow 182
+#define ESCHER_ShpInst_Sun 183
+#define ESCHER_ShpInst_Moon 184
+#define ESCHER_ShpInst_BracketPair 185
+#define ESCHER_ShpInst_BracePair 186
+#define ESCHER_ShpInst_Seal4 187
+#define ESCHER_ShpInst_DoubleWave 188
+#define ESCHER_ShpInst_ActionButtonBlank 189
+#define ESCHER_ShpInst_ActionButtonHome 190
+#define ESCHER_ShpInst_ActionButtonHelp 191
+#define ESCHER_ShpInst_ActionButtonInformation 192
+#define ESCHER_ShpInst_ActionButtonForwardNext 193
+#define ESCHER_ShpInst_ActionButtonBackPrevious 194
+#define ESCHER_ShpInst_ActionButtonEnd 195
+#define ESCHER_ShpInst_ActionButtonBeginning 196
+#define ESCHER_ShpInst_ActionButtonReturn 197
+#define ESCHER_ShpInst_ActionButtonDocument 198
+#define ESCHER_ShpInst_ActionButtonSound 199
+#define ESCHER_ShpInst_ActionButtonMovie 200
+#define ESCHER_ShpInst_HostControl 201
+#define ESCHER_ShpInst_TextBox 202
+
+#define ESCHER_ShpInst_COUNT 203
+#define ESCHER_ShpInst_Max 0x0FFF
+#define ESCHER_ShpInst_Nil ESCHER_ShpInst_Max
+
+enum ESCHER_BlibType
+{ // GEL provided types...
+ ERROR = 0, // An error occured during loading
+ UNKNOWN, // An unknown blip type
+ EMF, // Windows Enhanced Metafile
+ WMF, // Windows Metafile
+ PICT, // Macintosh PICT
+ PEG, // JFIF
+ PNG, // PNG
+ DIB, // Windows DIB
+ FirstClient = 32, // First client defined blip type
+ LastClient = 255 // Last client defined blip type
+};
+
+enum ESCHER_FillStyle
+{
+ ESCHER_FillSolid, // Fill with a solid color
+ ESCHER_FillPattern, // Fill with a pattern (bitmap)
+ ESCHER_FillTexture, // A texture (pattern with its own color map)
+ ESCHER_FillPicture, // Center a picture in the shape
+ ESCHER_FillShade, // Shade from start to end points
+ ESCHER_FillShadeCenter, // Shade from bounding rectangle to end point
+ ESCHER_FillShadeShape, // Shade from shape outline to end point
+ ESCHER_FillShadeScale,
+ ESCHER_FillShadeTitle,
+ ESCHER_FillBackground
+};
+
+enum ESCHER_wMode
+{
+ ESCHER_wColor, // only used for predefined shades
+ ESCHER_wAutomatic, // depends on object type
+ ESCHER_wGrayScale, // shades of gray only
+ ESCHER_wLightGrayScale, // shades of light gray only
+ ESCHER_wInverseGray, // dark gray mapped to light gray, etc.
+ ESCHER_wGrayOutline, // pure gray and white
+ ESCHER_wBlackTextLine, // black text and lines, all else grayscale
+ ESCHER_wHighContrast, // pure black and white mode (no grays)
+ ESCHER_wBlack, // solid black msobwWhite, // solid white
+ ESCHER_wDontShow, // object not drawn
+ ESCHER_wNumModes // number of Black and white modes
+};
+
+
+//
+enum ESCHER_ShapePath
+{
+ ESCHER_ShapeLines, // A line of straight segments
+ ESCHER_ShapeLinesClosed, // A closed polygonal object
+ ESCHER_ShapeCurves, // A line of Bezier curve segments
+ ESCHER_ShapeCurvesClosed, // A closed shape with curved edges
+ ESCHER_ShapeComplex // pSegmentInfo must be non-empty
+};
+
+
+enum ESCHER_WrapMode
+{
+ ESCHER_WrapSquare,
+ ESCHER_WrapByPoints,
+ ESCHER_WrapNone,
+ ESCHER_WrapTopBottom,
+ ESCHER_WrapThrough
+};
+
+//
+enum ESCHER_bwMode
+{
+ ESCHER_bwColor, // only used for predefined shades
+ ESCHER_bwAutomatic, // depends on object type
+ ESCHER_bwGrayScale, // shades of gray only
+ ESCHER_bwLightGrayScale, // shades of light gray only
+ ESCHER_bwInverseGray, // dark gray mapped to light gray, etc.
+ ESCHER_bwGrayOutline, // pure gray and white
+ ESCHER_bwBlackTextLine, // black text and lines, all else grayscale
+ ESCHER_bwHighContrast, // pure black and white mode (no grays)
+ ESCHER_bwBlack, // solid black
+ ESCHER_bwWhite, // solid white
+ ESCHER_bwDontShow, // object not drawn
+ ESCHER_bwNumModes // number of Black and white modes
+};
+
+
+enum ESCHER_AnchorText
+{
+ ESCHER_AnchorTop,
+ ESCHER_AnchorMiddle,
+ ESCHER_AnchorBottom,
+ ESCHER_AnchorTopCentered,
+ ESCHER_AnchorMiddleCentered,
+ ESCHER_AnchorBottomCentered,
+ ESCHER_AnchorTopBaseline,
+ ESCHER_AnchorBottomBaseline,
+ ESCHER_AnchorTopCenteredBaseline,
+ ESCHER_AnchorBottomCenteredBaseline
+};
+
+enum ESCHER_cDir
+{
+ ESCHER_cDir0, // Right
+ ESCHER_cDir90, // Down
+ ESCHER_cDir180, // Left
+ ESCHER_cDir270 // Up
+};
+
+// connector style
+enum ESCHER_cxSTYLE
+{
+ ESCHER_cxstyleStraight = 0,
+ ESCHER_cxstyleBent,
+ ESCHER_cxstyleCurved,
+ ESCHER_cxstyleNone
+};
+
+// text flow
+enum ESCHER_txfl
+{
+ ESCHER_txflHorzN, // Horizontal non-@
+ ESCHER_txflTtoBA, // Top to Bottom @-font
+ ESCHER_txflBtoT, // Bottom to Top non-@
+ ESCHER_txflTtoBN, // Top to Bottom non-@
+ ESCHER_txflHorzA, // Horizontal @-font
+ ESCHER_txflVertN // Vertical, non-@
+};
+
+// text direction (needed for Bi-Di support)
+enum ESCHER_txDir
+{
+ ESCHER_txdirLTR, // left-to-right text direction
+ ESCHER_txdirRTL, // right-to-left text direction
+ ESCHER_txdirContext // context text direction
+};
+
+// Callout Type
+enum ESCHER_spcot
+{
+ ESCHER_spcotRightAngle = 1,
+ ESCHER_spcotOneSegment = 2,
+ ESCHER_spcotTwoSegment = 3,
+ ESCHER_spcotThreeSegment = 4
+};
+
+// Callout Angle
+enum ESCHER_spcoa
+{
+ ESCHER_spcoaAny,
+ ESCHER_spcoa30,
+ ESCHER_spcoa45,
+ ESCHER_spcoa60,
+ ESCHER_spcoa90,
+ ESCHER_spcoa0
+};
+
+// Callout Drop
+enum ESCHER_spcod
+{
+ ESCHER_spcodTop,
+ ESCHER_spcodCenter,
+ ESCHER_spcodBottom,
+ ESCHER_spcodSpecified
+};
+
+// FontWork alignment
+enum ESCHER_GeoTextAlign
+{
+ ESCHER_AlignTextStretch, /* Stretch each line of text to fit width. */
+ ESCHER_AlignTextCenter, /* Center text on width. */
+ ESCHER_AlignTextLeft, /* Left justify. */
+ ESCHER_AlignTextRight, /* Right justify. */
+ ESCHER_AlignTextLetterJust, /* Spread letters out to fit width. */
+ ESCHER_AlignTextWordJust, /* Spread words out to fit width. */
+ ESCHER_AlignTextInvalid /* Invalid */
+};
+
+// flags for pictures
+enum ESCHER_BlipFlags
+{
+ ESCHER_BlipFlagDefault = 0,
+ ESCHER_BlipFlagComment = 0, // Blip name is a comment
+ ESCHER_BlipFlagFile, // Blip name is a file name
+ ESCHER_BlipFlagURL, // Blip name is a full URL
+ ESCHER_BlipFlagType = 3, // Mask to extract type
+ /* Or the following flags with any of the above. */
+ ESCHER_BlipFlagDontSave = 4, // A "dont" is the depression in the metal
+ // body work of an automobile caused when a
+ // cyclist violently thrusts his or her nose
+ // at it, thus a DontSave is another name for
+ // a cycle lane.
+ ESCHER_BlipFlagDoNotSave = 4, // For those who prefer English
+ ESCHER_BlipFlagLinkToFile = 8
+};
+
+//
+enum ESCHER_3DRenderMode
+{
+ ESCHER_FullRender, // Generate a full rendering
+ ESCHER_Wireframe, // Generate a wireframe
+ ESCHER_BoundingCube // Generate a bounding cube
+};
+
+//
+enum ESCHER_xFormType
+{
+ ESCHER_xFormAbsolute, // Apply transform in absolute space centered on shape
+ ESCHER_xFormShape, // Apply transform to shape geometry
+ ESCHER_xFormDrawing // Apply transform in drawing space
+};
+
+//
+enum ESCHER_ShadowType
+{
+ ESCHER_ShadowOffset, // N pixel offset shadow
+ ESCHER_ShadowDouble, // Use second offset too
+ ESCHER_ShadowRich, // Rich perspective shadow (cast relative to shape)
+ ESCHER_ShadowShape, // Rich perspective shadow (cast in shape space)
+ ESCHER_ShadowDrawing, // Perspective shadow cast in drawing space
+ ESCHER_ShadowEmbossOrEngrave
+};
+
+// - the type of a (length) measurement
+enum ESCHER_dzType
+ {
+ ESCHER_dzTypeMin = 0,
+ ESCHER_dzTypeDefault = 0, // Default size, ignore the values
+ ESCHER_dzTypeA = 1, // Values are in EMUs
+ ESCHER_dzTypeV = 2, // Values are in pixels
+ ESCHER_dzTypeShape = 3, // Values are 16.16 fractions of shape size
+ ESCHER_dzTypeFixedAspect = 4, // Aspect ratio is fixed
+ ESCHER_dzTypeAFixed = 5, // EMUs, fixed aspect ratio
+ ESCHER_dzTypeVFixed = 6, // Pixels, fixed aspect ratio
+ ESCHER_dzTypeShapeFixed = 7, // Proportion of shape, fixed aspect ratio
+ ESCHER_dzTypeFixedAspectEnlarge= 8, // Aspect ratio is fixed, favor larger size
+ ESCHER_dzTypeAFixedBig = 9, // EMUs, fixed aspect ratio
+ ESCHER_dzTypeVFixedBig = 10, // Pixels, fixed aspect ratio
+ ESCHER_dzTypeShapeFixedBig= 11, // Proportion of shape, fixed aspect ratio
+ ESCHER_dzTypeMax = 11
+};
+
+// how to interpret the colors in a shaded fill.
+enum ESCHER_ShadeType
+{
+ ESCHER_ShadeNone = 0, // Interpolate without correction between RGBs
+ ESCHER_ShadeGamma = 1, // Apply gamma correction to colors
+ ESCHER_ShadeSigma = 2, // Apply a sigma transfer function to position
+ ESCHER_ShadeBand = 4, // Add a flat band at the start of the shade
+ ESCHER_ShadeOneColor = 8, // This is a one color shade
+
+ /* A parameter for the band or sigma function can be stored in the top
+ 16 bits of the value - this is a proportion of *each* band of the
+ shade to make flat (or the approximate equal value for a sigma
+ function). NOTE: the parameter is not used for the sigma function,
+ instead a built in value is used. This value should not be changed
+ from the default! */
+ ESCHER_ShadeParameterShift = 16,
+ ESCHER_ShadeParameterMask = 0xffff0000,
+
+ ESCHER_ShadeDefault = (ESCHER_ShadeGamma|ESCHER_ShadeSigma|
+ (16384<<ESCHER_ShadeParameterShift))
+};
+
+// compound line style
+enum ESCHER_LineStyle
+{
+ ESCHER_LineSimple, // Single line (of width lineWidth)
+ ESCHER_LineDouble, // Double lines of equal width
+ ESCHER_LineThickThin, // Double lines, one thick, one thin
+ ESCHER_LineThinThick, // Double lines, reverse order
+ ESCHER_LineTriple // Three lines, thin, thick, thin
+};
+
+// how to "fill" the line contour
+enum ESCHER_LineType
+{
+ ESCHER_lineSolidType, // Fill with a solid color
+ ESCHER_linePattern, // Fill with a pattern (bitmap)
+ ESCHER_lineTexture, // A texture (pattern with its own color map)
+ ESCHER_linePicture // Center a picture in the shape
+};
+
+// dashed line style
+enum ESCHER_LineDashing
+{
+ ESCHER_LineSolid, // Solid (continuous) pen
+ ESCHER_LineDashSys, // PS_DASH system dash style
+ ESCHER_LineDotSys, // PS_DOT system dash style
+ ESCHER_LineDashDotSys, // PS_DASHDOT system dash style
+ ESCHER_LineDashDotDotSys, // PS_DASHDOTDOT system dash style
+ ESCHER_LineDotGEL, // square dot style
+ ESCHER_LineDashGEL, // dash style
+ ESCHER_LineLongDashGEL, // long dash style
+ ESCHER_LineDashDotGEL, // dash short dash
+ ESCHER_LineLongDashDotGEL, // long dash short dash
+ ESCHER_LineLongDashDotDotGEL // long dash short dash short dash
+};
+
+// line end effect
+enum ESCHER_LineEnd
+{
+ ESCHER_LineNoEnd,
+ ESCHER_LineArrowEnd,
+ ESCHER_LineArrowStealthEnd,
+ ESCHER_LineArrowDiamondEnd,
+ ESCHER_LineArrowOvalEnd,
+ ESCHER_LineArrowOpenEnd
+};
+
+// size of arrowhead
+enum ESCHER_LineWidth
+{
+ ESCHER_LineNarrowArrow,
+ ESCHER_LineMediumWidthArrow,
+ ESCHER_LineWideArrow
+};
+
+// size of arrowhead
+enum ESCHER_LineEndLenght
+{
+ ESCHER_LineShortArrow,
+ ESCHER_LineMediumLenArrow,
+ ESCHER_LineLongArrow
+};
+
+// line join style.
+enum ESCHER_LineJoin
+{
+ ESCHER_LineJoinBevel, // Join edges by a straight line
+ ESCHER_LineJoinMiter, // Extend edges until they join
+ ESCHER_LineJoinRound // Draw an arc between the two edges
+};
+
+// line cap style (applies to ends of dash segments too).
+enum ESCHER_LineCap
+{
+ ESCHER_LineEndCapRound, // Rounded ends - the default
+ ESCHER_LineEndCapSquare, // Square protrudes by half line width
+ ESCHER_LineEndCapFlat // Line ends at end point
+};
+// Shape Properties
+// 1pt = 12700 EMU (English Metric Units)
+// 1pt = 20 Twip = 20/1440" = 1/72"
+// 1twip=635 EMU
+// 1" = 12700*72 = 914400 EMU
+// 1" = 25.4mm
+// 1mm = 36000 EMU
+// Transform
+#define ESCHER_Prop_Rotation 4 /* Fixed Point 16.16 degrees */
+// Protection
+#define ESCHER_Prop_LockRotation 119 /* BOOL No rotation */
+#define ESCHER_Prop_LockAspectRatio 120 /* BOOL Don't allow changes in aspect ratio */
+#define ESCHER_Prop_LockPosition 121 /* BOOL Don't allow the shape to be moved */
+#define ESCHER_Prop_LockAgainstSelect 122 /* BOOL Shape may not be selected */
+#define ESCHER_Prop_LockCropping 123 /* BOOL No cropping this shape */
+#define ESCHER_Prop_LockVertices 124 /* BOOL Edit Points not allowed */
+#define ESCHER_Prop_LockText 125 /* BOOL Do not edit text */
+#define ESCHER_Prop_LockAdjustHandles 126 /* BOOL Do not adjust */
+#define ESCHER_Prop_LockAgainstGrouping 127 /* BOOL Do not group this shape */
+// Text
+#define ESCHER_Prop_lTxid 128 /* LONG id for the text, value determined by the host */
+#define ESCHER_Prop_dxTextLeft 129 /* LONG margins relative to shape's inscribed */
+#define ESCHER_Prop_dyTextTop 130 /* LONG text rectangle (in EMUs) */
+#define ESCHER_Prop_dxTextRight 131 /* LONG */
+#define ESCHER_Prop_dyTextBottom 132 /* LONG */
+#define ESCHER_Prop_WrapText 133 /* MSOWRAPMODE Wrap text at shape margins */
+#define ESCHER_Prop_scaleText 134 /* LONG Text zoom/scale (used if fFitTextToShape) */
+#define ESCHER_Prop_AnchorText 135 /* ESCHER_AnchorText How to anchor the text */
+#define ESCHER_Prop_txflTextFlow 136 /* MSOTXFL Text flow */
+#define ESCHER_Prop_cdirFont 137 /* MSOCDIR Font rotation */
+#define ESCHER_Prop_hspNext 138 /* MSOHSP ID of the next shape (used by Word for linked textboxes) */
+#define ESCHER_Prop_txdir 139 /* MSOTXDIR Bi-Di Text direction */
+#define ESCHER_Prop_SelectText 187 /* BOOL TRUE if single click selects text, FALSE if two clicks */
+#define ESCHER_Prop_AutoTextMargin 188 /* BOOL use host's margin calculations */
+#define ESCHER_Prop_RotateText 189 /* BOOL Rotate text with shape */
+#define ESCHER_Prop_FitShapeToText 190 /* BOOL Size shape to fit text size */
+#define ESCHER_Prop_FitTextToShape 191 /* BOOL Size text to fit shape size */
+// GeoText
+#define ESCHER_Prop_gtextUNICODE 192 /* WCHAR* UNICODE text string */
+#define ESCHER_Prop_gtextRTF 193 /* char* RTF text string */
+#define ESCHER_Prop_gtextAlign 194 /* MSOGEOTEXTALIGN alignment on curve */
+#define ESCHER_Prop_gtextSize 195 /* LONG default point size */
+#define ESCHER_Prop_gtextSpacing 196 /* LONG fixed point 16.16 */
+#define ESCHER_Prop_gtextFont 197 /* WCHAR* font family name */
+#define ESCHER_Prop_gtextFReverseRows 240 /* BOOL Reverse row order */
+#define ESCHER_Prop_fGtext 241 /* BOOL Has text effect */
+#define ESCHER_Prop_gtextFVertical 242 /* BOOL Rotate characters */
+#define ESCHER_Prop_gtextFKern 243 /* BOOL Kern characters */
+#define ESCHER_Prop_gtextFTight 244 /* BOOL Tightening or tracking */
+#define ESCHER_Prop_gtextFStretch 245 /* BOOL Stretch to fit shape */
+#define ESCHER_Prop_gtextFShrinkFit 246 /* BOOL Char bounding box */
+#define ESCHER_Prop_gtextFBestFit 247 /* BOOL Scale text-on-path */
+#define ESCHER_Prop_gtextFNormalize 248 /* BOOL Stretch char height */
+#define ESCHER_Prop_gtextFDxMeasure 249 /* BOOL Do not measure along path */
+#define ESCHER_Prop_gtextFBold 250 /* BOOL Bold font */
+#define ESCHER_Prop_gtextFItalic 251 /* BOOL Italic font */
+#define ESCHER_Prop_gtextFUnderline 252 /* BOOL Underline font */
+#define ESCHER_Prop_gtextFShadow 253 /* BOOL Shadow font */
+#define ESCHER_Prop_gtextFSmallcaps 254 /* BOOL Small caps font */
+#define ESCHER_Prop_gtextFStrikethrough 255 /* BOOL Strike through font */
+// Blip
+#define ESCHER_Prop_cropFromTop 256 /* LONG 16.16 fraction times total */
+#define ESCHER_Prop_cropFromBottom 257 /* LONG image width or height, */
+#define ESCHER_Prop_cropFromLeft 258 /* LONG as appropriate. */
+#define ESCHER_Prop_cropFromRight 259 /* LONG */
+#define ESCHER_Prop_pib 260 /* IMsoBlip* Blip to display */
+#define ESCHER_Prop_pibName 261 /* WCHAR* Blip file name */
+#define ESCHER_Prop_pibFlags 262 /* MSOBLIPFLAGS Blip flags */
+#define ESCHER_Prop_pictureTransparent 263 /* LONG transparent color (none if ~0UL) */
+#define ESCHER_Prop_pictureContrast 264 /* LONG contrast setting */
+#define ESCHER_Prop_pictureBrightness 265 /* LONG brightness setting */
+#define ESCHER_Prop_pictureGamma 266 /* LONG 16.16 gamma */
+#define ESCHER_Prop_pictureId 267 /* LONG Host-defined ID for OLE objects (usually a pointer) */
+#define ESCHER_Prop_pictureDblCrMod 268 /* MSOCLR Modification used if shape has double shadow */
+#define ESCHER_Prop_pictureFillCrMod 269 /* MSOCLR */
+#define ESCHER_Prop_pictureLineCrMod 270 /* MSOCLR */
+#define ESCHER_Prop_pibPrint 271 /* IMsoBlip* Blip to display when printing */
+#define ESCHER_Prop_pibPrintName 272 /* WCHAR* Blip file name */
+#define ESCHER_Prop_pibPrintFlags 273 /* MSOBLIPFLAGS Blip flags */
+#define ESCHER_Prop_fNoHitTestPicture 316 /* BOOL Do not hit test the picture */
+#define ESCHER_Prop_pictureGray 317 /* BOOL grayscale display */
+#define ESCHER_Prop_pictureBiLevel 318 /* BOOL bi-level display */
+#define ESCHER_Prop_pictureActive 319 /* BOOL Server is active (OLE objects only) */
+// Geometry
+#define ESCHER_Prop_geoLeft 320 /* LONG Defines the G (geometry) coordinate space. */
+#define ESCHER_Prop_geoTop 321 /* LONG */
+#define ESCHER_Prop_geoRight 322 /* LONG */
+#define ESCHER_Prop_geoBottom 323 /* LONG */
+#define ESCHER_Prop_shapePath 324 /* MSOSHAPEPATH */
+#define ESCHER_Prop_pVertices 325 /* IMsoArray An array of points, in G units. */
+#define ESCHER_Prop_pSegmentInfo 326 /* IMsoArray */
+#define ESCHER_Prop_adjustValue 327 /* LONG Adjustment values corresponding to */
+#define ESCHER_Prop_adjust2Value 328 /* LONG the positions of the adjust handles */
+#define ESCHER_Prop_adjust3Value 329 /* LONG of the shape. The number of values */
+#define ESCHER_Prop_adjust4Value 330 /* LONG used and their allowable ranges vary */
+#define ESCHER_Prop_adjust5Value 331 /* LONG from shape type to shape type. */
+#define ESCHER_Prop_adjust6Value 332 /* LONG */
+#define ESCHER_Prop_adjust7Value 333 /* LONG */
+#define ESCHER_Prop_adjust8Value 334 /* LONG */
+#define ESCHER_Prop_adjust9Value 335 /* LONG */
+#define ESCHER_Prop_adjust10Value 336 /* LONG */
+#define ESCHER_Prop_fShadowOK 378 /* BOOL Shadow may be set */
+#define ESCHER_Prop_f3DOK 379 /* BOOL 3D may be set */
+#define ESCHER_Prop_fLineOK 380 /* BOOL Line style may be set */
+#define ESCHER_Prop_fGtextOK 381 /* BOOL Text effect (FontWork) supported */
+#define ESCHER_Prop_fFillShadeShapeOK 382 /* BOOL */
+#define ESCHER_Prop_fFillOK 383 /* BOOL OK to fill the shape through the UI or VBA? */
+// FillStyle
+#define ESCHER_Prop_fillType 384 /* ESCHER_FillStyle Type of fill */
+#define ESCHER_Prop_fillColor 385 /* MSOCLR Foreground color */
+#define ESCHER_Prop_fillOpacity 386 /* LONG Fixed 16.16 */
+#define ESCHER_Prop_fillBackColor 387 /* MSOCLR Background color */
+#define ESCHER_Prop_fillBackOpacity 388 /* LONG Shades only */
+#define ESCHER_Prop_fillCrMod 389 /* MSOCLR Modification for BW views */
+#define ESCHER_Prop_fillBlip 390 /* IMsoBlip* Pattern/texture */
+#define ESCHER_Prop_fillBlipName 391 /* WCHAR* Blip file name */
+#define ESCHER_Prop_fillBlipFlags 392 /* MSOBLIPFLAGS Blip flags */
+#define ESCHER_Prop_fillWidth 393 /* LONG How big (A units) to make a metafile texture. */
+#define ESCHER_Prop_fillHeight 394 /* LONG */
+#define ESCHER_Prop_fillAngle 395 /* LONG Fade angle - degrees in 16.16 */
+#define ESCHER_Prop_fillFocus 396 /* LONG Linear shaded fill focus percent */
+#define ESCHER_Prop_fillToLeft 397 /* LONG Fraction 16.16 */
+#define ESCHER_Prop_fillToTop 398 /* LONG Fraction 16.16 */
+#define ESCHER_Prop_fillToRight 399 /* LONG Fraction 16.16 */
+#define ESCHER_Prop_fillToBottom 400 /* LONG Fraction 16.16 */
+#define ESCHER_Prop_fillRectLeft 401 /* LONG For shaded fills, use the specified rectangle */
+#define ESCHER_Prop_fillRectTop 402 /* LONG instead of the shape's bounding rect to */
+#define ESCHER_Prop_fillRectRight 403 /* LONG define how large the fade is going to be. */
+#define ESCHER_Prop_fillRectBottom 404 /* LONG */
+#define ESCHER_Prop_fillDztype 405 /* MSODZTYPE */
+#define ESCHER_Prop_fillShadePreset 406 /* LONG Special shades */
+#define ESCHER_Prop_fillShadeColors 407 /* IMsoArray a preset array of colors */
+#define ESCHER_Prop_fillOriginX 408 /* LONG */
+#define ESCHER_Prop_fillOriginY 409 /* LONG */
+#define ESCHER_Prop_fillShapeOriginX 410 /* LONG */
+#define ESCHER_Prop_fillShapeOriginY 411 /* LONG */
+#define ESCHER_Prop_fillShadeType 412 /* MSOSHADETYPE Type of shading, if a shaded (gradient) fill. */
+#define ESCHER_Prop_fFilled 443 /* BOOL Is shape filled? */
+#define ESCHER_Prop_fHitTestFill 444 /* BOOL Should we hit test fill? */
+#define ESCHER_Prop_fillShape 445 /* BOOL Register pattern on shape */
+#define ESCHER_Prop_fillUseRect 446 /* BOOL Use the large rect? */
+#define ESCHER_Prop_fNoFillHitTest 447 /* BOOL Hit test a shape as though filled */
+// LineStyle
+#define ESCHER_Prop_lineColor 448 /* MSOCLR Color of line */
+#define ESCHER_Prop_lineOpacity 449 /* LONG Not implemented */
+#define ESCHER_Prop_lineBackColor 450 /* MSOCLR Background color */
+#define ESCHER_Prop_lineCrMod 451 /* MSOCLR Modification for BW views */
+#define ESCHER_Prop_lineType 452 /* MSOLINETYPE Type of line */
+#define ESCHER_Prop_lineFillBlip 453 /* IMsoBlip* Pattern/texture */
+#define ESCHER_Prop_lineFillBlipName 454 /* WCHAR* Blip file name */
+#define ESCHER_Prop_lineFillBlipFlags 455 /* MSOBLIPFLAGS Blip flags */
+#define ESCHER_Prop_lineFillWidth 456 /* LONG How big (A units) to make */
+#define ESCHER_Prop_lineFillHeight 457 /* LONG a metafile texture. */
+#define ESCHER_Prop_lineFillDztype 458 /* MSODZTYPE How to interpret fillWidth/Height numbers. */
+#define ESCHER_Prop_lineWidth 459 /* LONG A units; 1pt == 12700 EMUs */
+#define ESCHER_Prop_lineMiterLimit 460 /* LONG ratio (16.16) of width */
+#define ESCHER_Prop_lineStyle 461 /* MSOLINESTYLE Draw parallel lines? */
+#define ESCHER_Prop_lineDashing 462 /* MSOLINEDASHING Can be overridden by: */
+#define ESCHER_Prop_lineDashStyle 463 /* IMsoArray As Win32 ExtCreatePen */
+#define ESCHER_Prop_lineStartArrowhead 464 /* MSOLINEEND Arrow at start */
+#define ESCHER_Prop_lineEndArrowhead 465 /* MSOLINEEND Arrow at end */
+#define ESCHER_Prop_lineStartArrowWidth 466 /* MSOLINEENDWIDTH Arrow at start */
+#define ESCHER_Prop_lineStartArrowLength 467 /* MSOLINEENDLENGTH Arrow at end */
+#define ESCHER_Prop_lineEndArrowWidth 468 /* MSOLINEENDWIDTH Arrow at start */
+#define ESCHER_Prop_lineEndArrowLength 469 /* MSOLINEENDLENGTH Arrow at end */
+#define ESCHER_Prop_lineJoinStyle 470 /* MSOLINEJOIN How to join lines */
+#define ESCHER_Prop_lineEndCapStyle 471 /* MSOLINECAP How to end lines */
+#define ESCHER_Prop_fArrowheadsOK 507 /* BOOL Allow arrowheads if prop. is set */
+#define ESCHER_Prop_fLine 508 /* BOOL Any line? */
+#define ESCHER_Prop_fHitTestLine 509 /* BOOL Should we hit test lines? */
+#define ESCHER_Prop_lineFillShape 510 /* BOOL Register pattern on shape */
+#define ESCHER_Prop_fNoLineDrawDash 511 /* BOOL Draw a dashed line if no line */
+// ShadowStyle
+#define ESCHER_Prop_shadowType 512 /* MSOSHADOWTYPE Type of effect */
+#define ESCHER_Prop_shadowColor 513 /* MSOCLR Foreground color */
+#define ESCHER_Prop_shadowHighlight 514 /* MSOCLR Embossed color */
+#define ESCHER_Prop_shadowCrMod 515 /* MSOCLR Modification for BW views */
+#define ESCHER_Prop_shadowOpacity 516 /* LONG Fixed 16.16 */
+#define ESCHER_Prop_shadowOffsetX 517 /* LONG Offset shadow */
+#define ESCHER_Prop_shadowOffsetY 518 /* LONG Offset shadow */
+#define ESCHER_Prop_shadowSecondOffsetX 519 /* LONG Double offset shadow */
+#define ESCHER_Prop_shadowSecondOffsetY 520 /* LONG Double offset shadow */
+#define ESCHER_Prop_shadowScaleXToX 521 /* LONG 16.16 */
+#define ESCHER_Prop_shadowScaleYToX 522 /* LONG 16.16 */
+#define ESCHER_Prop_shadowScaleXToY 523 /* LONG 16.16 */
+#define ESCHER_Prop_shadowScaleYToY 524 /* LONG 16.16 */
+#define ESCHER_Prop_shadowPerspectiveX 525 /* LONG 16.16 / weight */
+#define ESCHER_Prop_shadowPerspectiveY 526 /* LONG 16.16 / weight */
+#define ESCHER_Prop_shadowWeight 527 /* LONG scaling factor */
+#define ESCHER_Prop_shadowOriginX 528 /* LONG */
+#define ESCHER_Prop_shadowOriginY 529 /* LONG */
+#define ESCHER_Prop_fShadow 574 /* BOOL Any shadow? */
+#define ESCHER_Prop_fshadowObscured 575 /* BOOL Excel5-style shadow */
+// PerspectiveStyle
+#define ESCHER_Prop_perspectiveType 576 /* MSOXFORMTYPE Where transform applies */
+#define ESCHER_Prop_perspectiveOffsetX 577 /* LONG The LONG values define a */
+#define ESCHER_Prop_perspectiveOffsetY 578 /* LONG transformation matrix, */
+#define ESCHER_Prop_perspectiveScaleXToX 579 /* LONG effectively, each value */
+#define ESCHER_Prop_perspectiveScaleYToX 580 /* LONG is scaled by the */
+#define ESCHER_Prop_perspectiveScaleXToY 581 /* LONG perspectiveWeight parameter. */
+#define ESCHER_Prop_perspectiveScaleYToY 582 /* LONG */
+#define ESCHER_Prop_perspectivePerspectiveX 583 /* LONG */
+#define ESCHER_Prop_perspectivePerspectiveY 584 /* LONG */
+#define ESCHER_Prop_perspectiveWeight 585 /* LONG Scaling factor */
+#define ESCHER_Prop_perspectiveOriginX 586 /* LONG */
+#define ESCHER_Prop_perspectiveOriginY 587 /* LONG */
+#define ESCHER_Prop_fPerspective 639 /* BOOL On/off */
+// 3D Object
+#define ESCHER_Prop_c3DSpecularAmt 640 /* LONG Fixed-point 16.16 */
+#define ESCHER_Prop_c3DDiffuseAmt 641 /* LONG Fixed-point 16.16 */
+#define ESCHER_Prop_c3DShininess 642 /* LONG Default gives OK results */
+#define ESCHER_Prop_c3DEdgeThickness 643 /* LONG Specular edge thickness */
+#define ESCHER_Prop_c3DExtrudeForward 644 /* LONG Distance of extrusion in EMUs */
+#define ESCHER_Prop_c3DExtrudeBackward 645 /* LONG */
+#define ESCHER_Prop_c3DExtrudePlane 646 /* LONG Extrusion direction */
+#define ESCHER_Prop_c3DExtrusionColor 647 /* MSOCLR Basic color of extruded part of shape; the lighting model used will determine the exact shades used when rendering. */
+#define ESCHER_Prop_c3DCrMod 648 /* MSOCLR Modification for BW views */
+#define ESCHER_Prop_f3D 700 /* BOOL Does this shape have a 3D effect? */
+#define ESCHER_Prop_fc3DMetallic 701 /* BOOL Use metallic specularity? */
+#define ESCHER_Prop_fc3DUseExtrusionColor 702 /* BOOL */
+#define ESCHER_Prop_fc3DLightFace 703 /* BOOL */
+// 3D Style
+#define ESCHER_Prop_c3DYRotationAngle 704 /* LONG degrees (16.16) about y axis */
+#define ESCHER_Prop_c3DXRotationAngle 705 /* LONG degrees (16.16) about x axis */
+#define ESCHER_Prop_c3DRotationAxisX 706 /* LONG These specify the rotation axis; */
+#define ESCHER_Prop_c3DRotationAxisY 707 /* LONG only their relative magnitudes */
+#define ESCHER_Prop_c3DRotationAxisZ 708 /* LONG matter. */
+#define ESCHER_Prop_c3DRotationAngle 709 /* LONG degrees (16.16) about axis */
+#define ESCHER_Prop_c3DRotationCenterX 710 /* LONG rotation center x (16.16 or g-units) */
+#define ESCHER_Prop_c3DRotationCenterY 711 /* LONG rotation center y (16.16 or g-units) */
+#define ESCHER_Prop_c3DRotationCenterZ 712 /* LONG rotation center z (absolute (emus)) */
+#define ESCHER_Prop_c3DRenderMode 713 /* MSO3DRENDERMODE Full,wireframe, or bcube */
+#define ESCHER_Prop_c3DTolerance 714 /* LONG pixels (16.16) */
+#define ESCHER_Prop_c3DXViewpoint 715 /* LONG X view point (emus) */
+#define ESCHER_Prop_c3DYViewpoint 716 /* LONG Y view point (emus) */
+#define ESCHER_Prop_c3DZViewpoint 717 /* LONG Z view distance (emus) */
+#define ESCHER_Prop_c3DOriginX 718 /* LONG */
+#define ESCHER_Prop_c3DOriginY 719 /* LONG */
+#define ESCHER_Prop_c3DSkewAngle 720 /* LONG degree (16.16) skew angle */
+#define ESCHER_Prop_c3DSkewAmount 721 /* LONG Percentage skew amount */
+#define ESCHER_Prop_c3DAmbientIntensity 722 /* LONG Fixed point intensity */
+#define ESCHER_Prop_c3DKeyX 723 /* LONG Key light source direc- */
+#define ESCHER_Prop_c3DKeyY 724 /* LONG tion; only their relative */
+#define ESCHER_Prop_c3DKeyZ 725 /* LONG magnitudes matter */
+#define ESCHER_Prop_c3DKeyIntensity 726 /* LONG Fixed point intensity */
+#define ESCHER_Prop_c3DFillX 727 /* LONG Fill light source direc- */
+#define ESCHER_Prop_c3DFillY 728 /* LONG tion; only their relative */
+#define ESCHER_Prop_c3DFillZ 729 /* LONG magnitudes matter */
+#define ESCHER_Prop_c3DFillIntensity 730 /* LONG Fixed point intensity */
+#define ESCHER_Prop_fc3DConstrainRotation 763 /* BOOL */
+#define ESCHER_Prop_fc3DRotationCenterAuto 764 /* BOOL */
+#define ESCHER_Prop_fc3DParallel 765 /* BOOL Parallel projection? */
+#define ESCHER_Prop_fc3DKeyHarsh 766 /* BOOL Is key lighting harsh? */
+#define ESCHER_Prop_fc3DFillHarsh 767 /* BOOL Is fill lighting harsh? */
+// Shape
+#define ESCHER_Prop_hspMaster 769 /* MSOHSP master shape */
+#define ESCHER_Prop_cxstyle 771 /* MSOCXSTYLE Type of connector */
+#define ESCHER_Prop_bWMode 772 /* ESCHERwMode Settings for modifications to */
+#define ESCHER_Prop_bWModePureBW 773 /* ESCHERwMode be made when in different */
+#define ESCHER_Prop_bWModeBW 774 /* ESCHERwMode forms of black-and-white mode. */
+#define ESCHER_Prop_fOleIcon 826 /* BOOL For OLE objects, whether the object is in icon form */
+#define ESCHER_Prop_fPreferRelativeResize 827 /* BOOL For UI only. Prefer relative resizing. */
+#define ESCHER_Prop_fLockShapeType 828 /* BOOL Lock the shape type (don't allow Change Shape) */
+#define ESCHER_Prop_fDeleteAttachedObject 830 /* BOOL */
+#define ESCHER_Prop_fBackground 831 /* BOOL If TRUE, this is the background shape. */
+// Callout
+#define ESCHER_Prop_spcot 832 /* MSOSPCOT Callout type */
+#define ESCHER_Prop_dxyCalloutGap 833 /* LONG Distance from box to first point.(EMUs) */
+#define ESCHER_Prop_spcoa 834 /* MSOSPCOA Callout angle */
+#define ESCHER_Prop_spcod 835 /* MSOSPCOD Callout drop type */
+#define ESCHER_Prop_dxyCalloutDropSpecified 836 /* LONG if msospcodSpecified, the actual drop distance */
+#define ESCHER_Prop_dxyCalloutLengthSpecified 837 /* LONG if fCalloutLengthSpecified, the actual distance */
+#define ESCHER_Prop_fCallout 889 /* BOOL Is the shape a callout? */
+#define ESCHER_Prop_fCalloutAccentBar 890 /* BOOL does callout have accent bar */
+#define ESCHER_Prop_fCalloutTextBorder 891 /* BOOL does callout have a text border */
+#define ESCHER_Prop_fCalloutMinusX 892 /* BOOL */
+#define ESCHER_Prop_fCalloutMinusY 893 /* BOOL */
+#define ESCHER_Prop_fCalloutDropAuto 894 /* BOOL If true, then we occasionally invert the drop distance */
+#define ESCHER_Prop_fCalloutLengthSpecified 895 /* BOOL if true, we look at dxyCalloutLengthSpecified */
+// GroupShape
+#define ESCHER_Prop_wzName 896 /* WCHAR* Shape Name (present only if explicitly set) */
+#define ESCHER_Prop_wzDescription 897 /* WCHAR* alternate text */
+#define ESCHER_Prop_pihlShape 898 /* IHlink* The hyperlink in the shape. */
+#define ESCHER_Prop_pWrapPolygonVertices 899 /* IMsoArray The polygon that text will be wrapped around (Word) */
+#define ESCHER_Prop_dxWrapDistLeft 900 /* LONG Left wrapping distance from text (Word) */
+#define ESCHER_Prop_dyWrapDistTop 901 /* LONG Top wrapping distance from text (Word) */
+#define ESCHER_Prop_dxWrapDistRight 902 /* LONG Right wrapping distance from text (Word) */
+#define ESCHER_Prop_dyWrapDistBottom 903 /* LONG Bottom wrapping distance from text (Word) */
+#define ESCHER_Prop_lidRegroup 904 /* LONG Regroup ID */
+#define ESCHER_Prop_tableProperties 927
+#define ESCHER_Prop_tableRowProperties 928
+#define ESCHER_Prop_fEditedWrap 953 /* BOOL Has the wrap polygon been edited? */
+#define ESCHER_Prop_fBehindDocument 954 /* BOOL Word-only (shape is behind text) */
+#define ESCHER_Prop_fOnDblClickNotify 955 /* BOOL Notify client on a double click */
+#define ESCHER_Prop_fIsButton 956 /* BOOL A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros. */
+#define ESCHER_Prop_fOneD 957 /* BOOL 1D adjustment */
+#define ESCHER_Prop_fHidden 958 /* BOOL Do not display */
+#define ESCHER_Prop_fPrint 959 /* BOOL Print this shape */
+
+#define ESCHER_PERSISTENTRY_PREALLOCATE 64
+
+#define ESCHER_Persist_PrivateEntry 0x80000000
+#define ESCHER_Persist_Dgg 0x00010000
+#define ESCHER_Persist_Dg 0x00020000
+#define ESCHER_Persist_CurrentPosition 0x00040000
+#define ESCHER_Persist_Grouping_Snap 0x00050000
+#define ESCHER_Persist_Grouping_Logic 0x00060000
+
+const sal_uInt32 DFF_DGG_CLUSTER_SIZE = 0x00000400; /// Shape IDs per cluster in DGG atom.
+
+// ---------------------------------------------------------------------------------------------
+
+namespace com { namespace sun { namespace star {
+ namespace awt {
+ struct Gradient;
+ }
+ namespace drawing {
+ struct EnhancedCustomShapeAdjustmentValue;
+ class XShape;
+ class XShapes;
+ }
+}}}
+
+struct MSFILTER_DLLPUBLIC EscherConnectorListEntry
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnector;
+ ::com::sun::star::awt::Point maPointA;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnectToA;
+ ::com::sun::star::awt::Point maPointB;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXConnectToB;
+
+ sal_uInt32 GetConnectorRule( sal_Bool bFirst );
+
+ EscherConnectorListEntry( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rC,
+ const ::com::sun::star::awt::Point& rPA,
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSA ,
+ const ::com::sun::star::awt::Point& rPB,
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rSB ) :
+ mXConnector ( rC ),
+ maPointA ( rPA ),
+ mXConnectToA( rSA ),
+ maPointB ( rPB ),
+ mXConnectToB( rSB ) {}
+
+ sal_uInt32 GetClosestPoint( const Polygon& rPoly, const ::com::sun::star::awt::Point& rP );
+};
+
+struct MSFILTER_DLLPUBLIC EscherExContainer
+{
+ sal_uInt32 nContPos;
+ SvStream& rStrm;
+
+ EscherExContainer( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0 );
+ ~EscherExContainer();
+};
+struct MSFILTER_DLLPUBLIC EscherExAtom
+{
+ sal_uInt32 nContPos;
+ SvStream& rStrm;
+
+ EscherExAtom( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance = 0, const sal_uInt8 nVersion = 0 );
+ ~EscherExAtom();
+};
+
+struct EscherPropertyValueHelper
+{
+ static sal_Bool GetPropertyValue(
+ ::com::sun::star::uno::Any& rAny,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
+ const String& rPropertyName,
+ sal_Bool bTestPropertyAvailability = sal_False );
+
+ static ::com::sun::star::beans::PropertyState GetPropertyState(
+ const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &,
+ const String& rPropertyName );
+};
+
+// ---------------------------------------------------------------------------------------------
+
+struct EscherPersistEntry
+{
+ UINT32 mnID;
+ UINT32 mnOffset;
+ EscherPersistEntry( UINT32 nId, UINT32 nOffset ) { mnID = nId; mnOffset = nOffset; };
+
+};
+
+// ---------------------------------------------------------------------------------------------
+
+class EscherBlibEntry
+{
+
+ friend class EscherGraphicProvider;
+ friend class EscherEx;
+
+ protected:
+
+ UINT32 mnIdentifier[ 4 ];
+ UINT32 mnPictureOffset; // offset auf die grafik im PictureStreams
+ UINT32 mnSize; // size of real graphic
+
+ UINT32 mnRefCount; // !! reference count
+ UINT32 mnSizeExtra; // !! size of preceding header
+
+ ESCHER_BlibType meBlibType;
+
+ Size maPrefSize;
+ MapMode maPrefMapMode;
+
+ sal_Bool mbIsEmpty;
+ sal_Bool mbIsNativeGraphicPossible;
+
+ public:
+
+ EscherBlibEntry( sal_uInt32 nPictureOffset, const GraphicObject& rObj,
+ const ByteString& rId, const GraphicAttr* pAttr = NULL );
+
+ ~EscherBlibEntry();
+
+ void WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0 );
+ sal_Bool IsEmpty() const { return mbIsEmpty; };
+
+ BOOL operator==( const EscherBlibEntry& ) const;
+};
+
+// ---------------------------------------------------------------------------------------------
+
+#define _E_GRAPH_PROV_USE_INSTANCES 1
+#define _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES 2
+
+class MSFILTER_DLLPUBLIC EscherGraphicProvider
+{
+ sal_uInt32 mnFlags;
+
+ EscherBlibEntry** mpBlibEntrys;
+ sal_uInt32 mnBlibBufSize;
+ sal_uInt32 mnBlibEntrys;
+
+ protected :
+
+ UINT32 ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry );
+
+ public :
+
+ sal_uInt32 GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE = NULL ) const;
+ void WriteBlibStoreContainer( SvStream& rStrm, SvStream* pMergePicStreamBSE = NULL );
+ sal_Bool WriteBlibStoreEntry(SvStream& rStrm, sal_uInt32 nBlipId,
+ sal_Bool bWritePictureOffset, sal_uInt32 nResize = 0);
+ sal_uInt32 GetBlibID( SvStream& rPicOutStream, const ByteString& rGraphicId, const Rectangle& rBoundRect,
+ const com::sun::star::awt::Rectangle* pVisArea = NULL, const GraphicAttr* pGrafikAttr = NULL );
+ sal_Bool HasGraphics() const { return mnBlibEntrys != 0; };
+
+ void SetNewBlipStreamOffset( sal_Int32 nOffset );
+
+ sal_Bool GetPrefSize( const sal_uInt32 nBlibId, Size& rSize, MapMode& rMapMode );
+
+ EscherGraphicProvider( sal_uInt32 nFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES );
+ ~EscherGraphicProvider();
+
+};
+
+class MSFILTER_DLLPUBLIC EscherSolverContainer
+{
+ List maShapeList;
+ List maConnectorList;
+
+public:
+
+ sal_uInt32 GetShapeId( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape ) const;
+
+ void AddShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, sal_uInt32 nId );
+ void AddConnector( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &,
+ const ::com::sun::star::awt::Point& rA,
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &,
+ const ::com::sun::star::awt::Point& rB,
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB );
+
+ void WriteSolver( SvStream& );
+
+ EscherSolverContainer(){};
+ ~EscherSolverContainer();
+};
+
+// ---------------------------------------------------------------------------------------------
+
+#define ESCHER_CREATEPOLYGON_LINE 1
+#define ESCHER_CREATEPOLYGON_POLYLINE 2
+#define ESCHER_CREATEPOLYGON_POLYPOLYGON 4
+
+class GraphicAttr;
+class SdrObjCustomShape;
+
+struct EscherPropSortStruct
+{
+ sal_uInt8* pBuf;
+ sal_uInt32 nPropSize;
+ sal_uInt32 nPropValue;
+ sal_uInt16 nPropId;
+};
+
+typedef std::vector< EscherPropSortStruct > EscherProperties;
+
+class MSFILTER_DLLPUBLIC EscherPropertyContainer
+{
+ EscherGraphicProvider* pGraphicProvider;
+ SvStream* pPicOutStrm;
+ Rectangle* pShapeBoundRect;
+
+ EscherPropSortStruct* pSortStruct;
+
+ sal_uInt32 nSortCount;
+ sal_uInt32 nSortBufSize;
+ sal_uInt32 nCountCount;
+ sal_uInt32 nCountSize;
+
+ sal_Bool bHasComplexData;
+ sal_Bool bSuppressRotation;
+
+
+ sal_uInt32 ImplGetColor( const sal_uInt32 rColor, sal_Bool bSwap = sal_True );
+ void ImplCreateGraphicAttributes( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ sal_uInt32 nBlibId, sal_Bool bCreateCroppingAttributes );
+ sal_Bool ImplCreateEmbeddedBmp( const ByteString& rUniqueId );
+ void ImplInit();
+
+ public :
+
+ EscherPropertyContainer();
+ EscherPropertyContainer(
+ EscherGraphicProvider& rGraphicProvider, // the PropertyContainer needs to know
+ SvStream* pPicOutStrm, // the GraphicProvider to be able to write
+ Rectangle& rShapeBoundRect ); // FillBitmaps or GraphicObjects.
+ // under some cirumstances the ShapeBoundRect is adjusted
+ // this will happen when rotated GraphicObjects
+ // are saved to PowerPoint
+ ~EscherPropertyContainer();
+
+ void AddOpt( sal_uInt16 nPropertyID, const rtl::OUString& rString );
+
+ void AddOpt( sal_uInt16 nPropertyID, sal_uInt32 nPropValue,
+ sal_Bool bBlib = sal_False );
+
+ void AddOpt( sal_uInt16 nPropertyID, sal_Bool bBlib, sal_uInt32 nPropValue,
+ sal_uInt8* pProp, sal_uInt32 nPropSize );
+
+ sal_Bool GetOpt( sal_uInt16 nPropertyID, sal_uInt32& rPropValue ) const;
+
+ sal_Bool GetOpt( sal_uInt16 nPropertyID, EscherPropSortStruct& rPropValue ) const;
+
+ EscherProperties GetOpts() const;
+
+ void Commit( SvStream& rSt, sal_uInt16 nVersion = 3, sal_uInt16 nRecType = ESCHER_OPT );
+
+ sal_Bool CreateOLEGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXOleObject );
+
+ /** Creates a complex ESCHER_Prop_fillBlip containing the BLIP directly (for Excel charts). */
+ sal_Bool CreateEmbeddedBitmapProperties( const ::rtl::OUString& rBitmapUrl,
+ ::com::sun::star::drawing::BitmapMode eBitmapMode );
+ /** Creates a complex ESCHER_Prop_fillBlip containing a hatch style (for Excel charts). */
+ sal_Bool CreateEmbeddedHatchProperties( const ::com::sun::star::drawing::Hatch& rHatch,
+ const Color& rBackColor, bool bFillBackground );
+
+ // the GraphicProperties will only be created if a GraphicProvider and PicOutStrm is known
+ // DR: #99897# if no GraphicProvider is present, a complex ESCHER_Prop_fillBlip
+ // will be created, containing the BLIP directly (e.g. for Excel charts).
+ sal_Bool CreateGraphicProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ const String& rSource, const sal_Bool bCreateFillBitmap, const sal_Bool bCreateCroppingAttributes = sal_False,
+ const sal_Bool bFillBitmapModeAllowed = sal_True );
+
+ sal_Bool CreatePolygonProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ sal_uInt32 nFlags, sal_Bool bBezier, ::com::sun::star::awt::Rectangle& rGeoRect, Polygon* pPolygon = NULL );
+
+ static sal_uInt32 GetGradientColor( const ::com::sun::star::awt::Gradient* pGradient, sal_uInt32 nStartColor );
+
+ void CreateGradientProperties( const ::com::sun::star::awt::Gradient & rGradient );
+ void CreateGradientProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & );
+ void CreateLineProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge );
+ void CreateFillProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_Bool bEdge );
+ void CreateTextProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &, sal_uInt32 nText,
+ const sal_Bool bIsCustomShape = sal_False, const sal_Bool bIsTextFrame = sal_True );
+
+ sal_Bool CreateConnectorProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape,
+ EscherSolverContainer& rSolver, ::com::sun::star::awt::Rectangle& rGeoRect,
+ sal_uInt16& rShapeType, sal_uInt16& rShapeFlags );
+
+ // Because shadow properties depends to the line and fillstyle, the CreateShadowProperties method should be called at last.
+ // It activ only when at least a FillStyle or LineStyle is set.
+ sal_Bool CreateShadowProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & );
+
+ // creates all necessary CustomShape properties, this includes also Text-, Shadow-, Fill-, and LineProperties
+ void CreateCustomShapeProperties( const MSO_SPT eShapeType, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & );
+ sal_Bool IsFontWork() const;
+
+ // helper functions which are also used by the escher import
+ static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape );
+ static PolyPolygon GetPolyPolygon( const ::com::sun::star::uno::Any& rSource );
+ static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags );
+ static MSO_SPT GetCustomShapeType( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags, rtl::OUString& rShapeType );
+
+ // helper functions which are also used in ooxml export
+ static sal_Bool GetLineArrow( const sal_Bool bLineStart,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ ESCHER_LineEnd& reLineEnd, sal_Int32& rnArrowLength, sal_Int32& rnArrowWidth );
+ static sal_Bool IsDefaultObject( SdrObjCustomShape* pCustoShape );
+ static void LookForPolarHandles( const MSO_SPT eShapeType, sal_Int32& nAdjustmentsWhichNeedsToBeConverted );
+ static sal_Bool GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue );
+};
+
+// ---------------------------------------------------------------------------------------------
+
+class MSFILTER_DLLPUBLIC EscherPersistTable
+{
+
+ public:
+ List maPersistTable;
+
+ BOOL PtIsID( UINT32 nID );
+ void PtInsert( UINT32 nID, UINT32 nOfs );
+ UINT32 PtDelete( UINT32 nID );
+ UINT32 PtGetOffsetByID( UINT32 nID );
+ UINT32 PtReplace( UINT32 nID, UINT32 nOfs );
+ UINT32 PtReplaceOrInsert( UINT32 nID, UINT32 nOfs );
+ UINT32 PtGetCount() const { return maPersistTable.Count(); };
+
+ EscherPersistTable();
+ virtual ~EscherPersistTable();
+};
+
+// ---------------------------------------------------------------------------------------------
+
+class EscherEx;
+
+/// abstract base class for ESCHER_ClientTextbox, ESCHER_ClientData
+class MSFILTER_DLLPUBLIC EscherExClientRecord_Base
+{
+public:
+ EscherExClientRecord_Base() {}
+ virtual ~EscherExClientRecord_Base();
+
+ /// Application writes the record header
+ /// using rEx.AddAtom(...) followed by
+ /// record data written to rEx.GetStream()
+ virtual void WriteData( EscherEx& rEx ) const = 0;
+};
+
+
+/// abstract base class for ESCHER_ClientAnchor
+class MSFILTER_DLLPUBLIC EscherExClientAnchor_Base
+{
+public:
+ EscherExClientAnchor_Base() {}
+ virtual ~EscherExClientAnchor_Base();
+
+ /// Application writes the record header
+ /// using rEx.AddAtom(...) followed by
+ /// record data written to rEx.GetStream()
+ virtual void WriteData( EscherEx& rEx,
+ const Rectangle& rRect ) = 0;
+};
+
+
+class EscherExHostAppData
+{
+private:
+ EscherExClientAnchor_Base* pClientAnchor;
+ EscherExClientRecord_Base* pClientData;
+ EscherExClientRecord_Base* pClientTextbox;
+ // ignore single shape if entire pages are written
+ BOOL bDontWriteShape;
+
+public:
+ EscherExHostAppData() : pClientAnchor(0), pClientData(0),
+ pClientTextbox(0), bDontWriteShape(FALSE)
+ {}
+
+ void SetClientAnchor( EscherExClientAnchor_Base* p )
+ { pClientAnchor = p; }
+ void SetClientData( EscherExClientRecord_Base* p )
+ { pClientData = p; }
+ void SetClientTextbox( EscherExClientRecord_Base* p )
+ { pClientTextbox = p; }
+ void SetDontWriteShape( BOOL b )
+ { bDontWriteShape = b; }
+ EscherExClientAnchor_Base* GetClientAnchor() const
+ { return pClientAnchor; }
+ EscherExClientRecord_Base* GetClientData() const
+ { return pClientData; }
+ EscherExClientRecord_Base* GetClientTextbox() const
+ { return pClientTextbox; }
+
+ void WriteClientAnchor( EscherEx& rEx, const Rectangle& rRect )
+ { if( pClientAnchor ) pClientAnchor->WriteData( rEx, rRect ); }
+ void WriteClientData( EscherEx& rEx )
+ { if( pClientData ) pClientData->WriteData( rEx ); }
+ void WriteClientTextbox( EscherEx& rEx )
+ { if( pClientTextbox ) pClientTextbox->WriteData( rEx ); }
+
+ BOOL DontWriteShape() const { return bDontWriteShape; }
+};
+
+
+// ============================================================================
+
+/** Instance for global DFF data, shared through various instances of EscherEx. */
+class MSFILTER_DLLPUBLIC EscherExGlobal : public EscherGraphicProvider
+{
+public:
+ explicit EscherExGlobal( sal_uInt32 nGraphicProvFlags = _E_GRAPH_PROV_DO_NOT_ROTATE_METAFILES );
+ virtual ~EscherExGlobal();
+
+ /** Returns a new drawing ID for a new drawing container (DGCONTAINER). */
+ sal_uInt32 GenerateDrawingId();
+ /** Creates and returns a new shape identifier, updates the internal shape
+ counters and registers the identifier in the DGG cluster table.
+ @param nDrawingId Drawing identifier has to be passed to be able to
+ generate shape identifiers for multiple drawings simultaniously. */
+ sal_uInt32 GenerateShapeId( sal_uInt32 nDrawingId, bool bIsInSpgr );
+ /** Returns the number of shapes in the current drawing, based on number of
+ calls to the GenerateShapeId() function. */
+ sal_uInt32 GetDrawingShapeCount( sal_uInt32 nDrawingId ) const;
+ /** Returns the last shape identifier generated by the GenerateShapeId()
+ function. */
+ sal_uInt32 GetLastShapeId( sal_uInt32 nDrawingId ) const;
+
+ /** Sets the flag indicating that the DGGCONTAINER exists. */
+ inline void SetDggContainer() { mbHasDggCont = true; }
+ /** Sets the flag indicating that the DGGCONTAINER exists. */
+ inline bool HasDggContainer() const { return mbHasDggCont; }
+ /** Returns the total size of the DGG atom (including header). */
+ sal_uInt32 GetDggAtomSize() const;
+ /** Writes the complete DGG atom to the passed stream (overwrites existing data!). */
+ void WriteDggAtom( SvStream& rStrm ) const;
+
+ /** Called if a picture shall be written and no picture stream is set at
+ class ImplEscherExSdr.
+
+ On first invokation, this function calls the virtual member function
+ ImplQueryPictureStream(). The return value will be cached internally
+ for subsequent calls and for the GetPictureStream() function.
+ */
+ SvStream* QueryPictureStream();
+
+ /** Returns the picture stream if existing (queried), otherwise null. */
+ inline SvStream* GetPictureStream() { return mpPicStrm; }
+
+private:
+ /** Derived classes may implement to create a new stream used to store the
+ picture data.
+
+ The implementation has to take care about lifetime of the returned
+ stream (it will not be destructed automatically). This function is
+ called exactly once. The return value will be cached internally for
+ repeated calls of the public QueryPictureStream() function.
+ */
+ virtual SvStream* ImplQueryPictureStream();
+
+private:
+ struct ClusterEntry
+ {
+ sal_uInt32 mnDrawingId; /// Identifier of drawing this cluster belongs to (one-based index into maDrawingInfos).
+ sal_uInt32 mnNextShapeId; /// Next free shape identifier in this cluster.
+ inline explicit ClusterEntry( sal_uInt32 nDrawingId ) : mnDrawingId( nDrawingId ), mnNextShapeId( 0 ) {}
+ };
+ typedef ::std::vector< ClusterEntry > ClusterTable;
+
+ struct DrawingInfo
+ {
+ sal_uInt32 mnClusterId; /// Currently used cluster (one-based index into maClusterTable).
+ sal_uInt32 mnShapeCount; /// Current number of shapes in this drawing.
+ sal_uInt32 mnLastShapeId; /// Last shape identifier generated for this drawing.
+ inline explicit DrawingInfo( sal_uInt32 nClusterId ) : mnClusterId( nClusterId ), mnShapeCount( 0 ), mnLastShapeId( 0 ) {}
+ };
+ typedef ::std::vector< DrawingInfo > DrawingInfoVector;
+
+ ClusterTable maClusterTable; /// List with cluster IDs (used object IDs in drawings).
+ DrawingInfoVector maDrawingInfos; /// Data about all used drawings.
+ SvStream* mpPicStrm; /// Cached result of ImplQueryPictureStream().
+ bool mbHasDggCont; /// True = the DGGCONTAINER has been initialized.
+ bool mbPicStrmQueried; /// True = ImplQueryPictureStream() has been called.
+};
+
+typedef ::boost::shared_ptr< EscherExGlobal > EscherExGlobalRef;
+
+// ---------------------------------------------------------------------------------------------
+
+class SdrObject;
+class SdrPage;
+class ImplEscherExSdr;
+
+class MSFILTER_DLLPUBLIC EscherEx : public EscherPersistTable
+{
+ protected:
+ typedef ::std::auto_ptr< ImplEscherExSdr > ImplEscherExSdrPtr;
+
+ EscherExGlobalRef mxGlobal;
+ ImplEscherExSdrPtr mpImplEscherExSdr;
+ SvStream* mpOutStrm;
+ UINT32 mnStrmStartOfs;
+ std::vector< sal_uInt32 > mOffsets;
+ std::vector< sal_uInt16 > mRecTypes;
+
+ UINT32 mnCurrentDg;
+ UINT32 mnCountOfs;
+
+ UINT32 mnGroupLevel;
+ UINT16 mnHellLayerId;
+
+ BOOL mbEscherSpgr;
+ BOOL mbEscherDg;
+ BOOL mbOleEmf; // OLE is EMF instead of WMF
+
+
+ virtual BOOL DoSeek( UINT32 nKey );
+
+public:
+ explicit EscherEx( const EscherExGlobalRef& rxGlobal, SvStream& rOutStrm );
+ virtual ~EscherEx();
+
+ /** Creates and returns a new shape identifier, updates the internal shape
+ counters and registers the identifier in the DGG cluster table. */
+ inline sal_uInt32 GenerateShapeId() { return mxGlobal->GenerateShapeId( mnCurrentDg, mbEscherSpgr ); }
+
+ /** Returns the graphic provider from the global object that has been
+ passed to the constructor.
+ */
+ inline EscherGraphicProvider&
+ GetGraphicProvider() { return *mxGlobal; }
+
+ /** Called if a picture shall be written and no picture stream is set at
+ class ImplEscherExSdr.
+ */
+ inline SvStream* QueryPictureStream() { return mxGlobal->QueryPictureStream(); }
+
+ /// Fuegt in den EscherStream interne Daten ein, dieser Vorgang
+ /// darf und muss nur einmal ausgefuehrt werden.
+ /// Wenn pPicStreamMergeBSE angegeben ist, werden die BLIPs
+ /// aus diesem Stream in die MsofbtBSE Records des EscherStream
+ /// gemerged, wie es fuer Excel (und Word?) benoetigt wird.
+ virtual void Flush( SvStream* pPicStreamMergeBSE = NULL );
+
+ /** Inserts the passed number of bytes at the current position of the
+ output stream.
+
+ Inserts dummy bytes and moves all following stream data, and updates
+ all internal stream offsets stored in the PersistTable and the affected
+ container sizes, which makes this operation very expensive. (!)
+
+ @param nBytes The number of bytes to be inserted into the stream.
+
+ @param bExpandEndOfAtom If set to true, an atom that currently ends
+ exactly at the current stream position will be expanded to include
+ the inserted data. If set to false, an atom that currently ends
+ exactly at the current stream position will not be expanded to
+ include the inserted data (used to insert e.g. a new atom after an
+ existing atom). Note that containers that end exactly at the
+ current stream position are always expanded to include the inserted
+ data.
+ */
+ void InsertAtCurrentPos( sal_uInt32 nBytes, bool bExpandEndOfAtom );
+
+ void InsertPersistOffset( UINT32 nKey, UINT32 nOffset ); // Es wird nicht geprueft, ob sich jener schluessel schon in der PersistantTable befindet
+ void ReplacePersistOffset( UINT32 nKey, UINT32 nOffset );
+ UINT32 GetPersistOffset( UINT32 nKey );
+ BOOL SeekToPersistOffset( UINT32 nKey );
+ virtual BOOL InsertAtPersistOffset( UINT32 nKey, UINT32 nValue );// nValue wird im Stream an entrsprechender Stelle eingefuegt(overwrite modus), ohne dass sich die
+ // aktuelle StreamPosition aendert
+
+ SvStream& GetStream() const { return *mpOutStrm; }
+ ULONG GetStreamPos() const { return mpOutStrm->Tell(); }
+
+ virtual BOOL SeekBehindRecHeader( UINT16 nRecType ); // der stream muss vor einem gueltigen Record Header oder Atom stehen
+
+ // features beim erzeugen folgender Container:
+ //
+ // ESCHER_DggContainer: ein EscherDgg Atom wird automatisch erzeugt und verwaltet
+ // ESCHER_DgContainer: ein EscherDg Atom wird automatisch erzeugt und verwaltet
+ // ESCHER_SpgrContainer:
+ // ESCHER_SpContainer:
+
+ virtual void OpenContainer( UINT16 nEscherContainer, int nRecInstance = 0 );
+ virtual void CloseContainer();
+
+ virtual void BeginAtom();
+ virtual void EndAtom( UINT16 nRecType, int nRecVersion = 0, int nRecInstance = 0 );
+ virtual void AddAtom( UINT32 nAtomSitze, UINT16 nRecType, int nRecVersion = 0, int nRecInstance = 0 );
+ virtual void AddChildAnchor( const Rectangle& rRectangle );
+ virtual void AddClientAnchor( const Rectangle& rRectangle );
+
+ virtual UINT32 EnterGroup( const String& rShapeName, const Rectangle* pBoundRect = 0 );
+ UINT32 EnterGroup( const Rectangle* pBoundRect = NULL );
+ UINT32 GetGroupLevel() const { return mnGroupLevel; };
+ virtual BOOL SetGroupSnapRect( UINT32 nGroupLevel, const Rectangle& rRect );
+ virtual BOOL SetGroupLogicRect( UINT32 nGroupLevel, const Rectangle& rRect );
+ virtual void LeaveGroup();
+
+ // ein ESCHER_Sp wird geschrieben ( Ein ESCHER_DgContainer muss dazu geoeffnet sein !!)
+ virtual void AddShape( UINT32 nShpInstance, UINT32 nFlagIds, UINT32 nShapeID = 0 );
+
+ virtual void Commit( EscherPropertyContainer& rProps, const Rectangle& rRect );
+
+ UINT32 GetColor( const UINT32 nColor, BOOL bSwap = TRUE );
+ UINT32 GetColor( const Color& rColor, BOOL bSwap = TRUE );
+
+ // ...Sdr... implemented in eschesdo.cxx
+
+ void AddSdrPage( const SdrPage& rPage );
+ void AddUnoShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes );
+
+ /// returns the ShapeID
+ UINT32 AddSdrObject( const SdrObject& rObj );
+
+ /// If objects are written through AddSdrObject the
+ /// SolverContainer has to be written, and maybe some
+ /// maintenance to be done.
+ void EndSdrObjectPage();
+
+ /// Called before a shape is written, application supplies
+ /// ClientRecords. May set AppData::bDontWriteShape so the
+ /// shape is ignored.
+ virtual EscherExHostAppData* StartShape(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rShape,
+ const Rectangle* pChildAnchor );
+
+ /// Called after a shape is written to inform the application
+ /// of the resulted shape type and ID.
+ virtual void EndShape( UINT16 nShapeType, UINT32 nShapeID );
+
+ /// Called before an AdditionalText EnterGroup occurs.
+ /// The current shape will be written in three parts:
+ /// a group shape, the shape itself, and an extra textbox shape.
+ /// The complete flow is:
+ /// StartShape sets HostData1.
+ /// EnterAdditionalTextGroup sets HostData2, App may modify
+ /// HostData1 and keep track of the change.
+ /// The group shape is written with HostData2.
+ /// Another StartShape with the same (!) object sets HostData3.
+ /// The current shape is written with HostData3.
+ /// EndShape is called for the current shape.
+ /// Another StartShape with the same (!) object sets HostData4.
+ /// The textbox shape is written with HostData4.
+ /// EndShape is called for the textbox shape.
+ /// EndShape is called for the group shape, this provides
+ /// the same functionality as an ordinary recursive group.
+ virtual EscherExHostAppData* EnterAdditionalTextGroup();
+
+ /// Called if an ESCHER_Prop_lTxid shall be written
+ virtual UINT32 QueryTextID( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >&, UINT32 nShapeId );
+ // add an dummy rectangle shape into the escher stream
+ UINT32 AddDummyShape();
+
+ static const SdrObject* GetSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rXShape );
+
+ void SetHellLayerId( UINT16 nId ) { mnHellLayerId = nId; }
+ UINT16 GetHellLayerId() const { return mnHellLayerId; }
+
+private:
+ EscherEx( const EscherEx& );
+ EscherEx& operator=( const EscherEx& );
+
+ // prevent C-style cast to former base class EscherGraphicProvider
+ operator EscherGraphicProvider&();
+ operator EscherGraphicProvider const&();
+};
+
+
+#endif
diff --git a/filter/inc/filter/msfilter/mscodec.hxx b/filter/inc/filter/msfilter/mscodec.hxx
new file mode 100644
index 000000000000..7bad8af6b788
--- /dev/null
+++ b/filter/inc/filter/msfilter/mscodec.hxx
@@ -0,0 +1,340 @@
+/*************************************************************************
+ *
+ * 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 SVX_MSCODEC_HXX
+#define SVX_MSCODEC_HXX
+
+#include "rtl/cipher.h"
+#include "rtl/digest.h"
+#include "filter/msfilter/msfilterdllapi.h"
+
+namespace msfilter {
+
+// ============================================================================
+
+/** Encodes and decodes data from protected MSO 95- documents.
+ */
+class MSFILTER_DLLPUBLIC MSCodec_Xor95
+{
+public:
+ explicit MSCodec_Xor95(int nRotateDistance);
+ virtual ~MSCodec_Xor95();
+
+ /** Initializes the algorithm with the specified password.
+
+ @param pPassData
+ Character array containing the password. Must be zero terminated,
+ which results in a maximum length of 15 characters.
+ */
+ void InitKey( const sal_uInt8 pnPassData[ 16 ] );
+
+ /** Verifies the validity of the password using the passed key and hash.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param nKey
+ Password key value read from the file.
+ @param nHash
+ Password hash value read from the file.
+
+ @return
+ true = Test was successful.
+ */
+ bool VerifyKey( sal_uInt16 nKey, sal_uInt16 nHash ) const;
+
+ /** Reinitializes the codec to start a new memory block.
+
+ Resets the internal key offset to 0.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+ */
+ void InitCipher();
+
+ /** Decodes a block of memory inplace.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param pnData
+ Encrypted data block. Will contain the decrypted data afterwards.
+ @param nBytes
+ Size of the passed data block.
+ */
+ virtual void Decode( sal_uInt8* pnData, sal_Size nBytes )=0;
+
+ /** Lets the cipher skip a specific amount of bytes.
+
+ This function sets the cipher to the same state as if the specified
+ amount of data has been decoded with one or more calls of Decode().
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param nBytes
+ Number of bytes to be skipped (cipher "seeks" forward).
+ */
+ void Skip( sal_Size nBytes );
+
+ // static -----------------------------------------------------------------
+
+ /** Calculates the 16-bit hash value for the given password.
+
+ The password data may be longer than 16 bytes. The array does not need
+ to be terminated with a NULL byte (but it can without invalidating the
+ result).
+ */
+ static sal_uInt16 GetHash( const sal_uInt8* pnPassData, sal_Size nSize );
+
+protected:
+ sal_uInt8 mpnKey[ 16 ]; /// Encryption key.
+ sal_Size mnOffset; /// Key offset.
+
+private:
+ MSFILTER_DLLPRIVATE MSCodec_Xor95( const MSCodec_Xor95& );
+ MSFILTER_DLLPRIVATE MSCodec_Xor95& operator=( const MSCodec_Xor95& );
+
+ sal_uInt16 mnKey; /// Base key from password.
+ sal_uInt16 mnHash; /// Hash value from password.
+ int mnRotateDistance;
+};
+
+/** Encodes and decodes data from protected MSO XLS 95- documents.
+ */
+class MSFILTER_DLLPUBLIC MSCodec_XorXLS95 : public MSCodec_Xor95
+{
+public:
+ explicit MSCodec_XorXLS95() : MSCodec_Xor95(2) {}
+
+ /** Decodes a block of memory inplace.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param pnData
+ Encrypted data block. Will contain the decrypted data afterwards.
+ @param nBytes
+ Size of the passed data block.
+ */
+ virtual void Decode( sal_uInt8* pnData, sal_Size nBytes );
+};
+
+/** Encodes and decodes data from protected MSO Word 95- documents.
+ */
+class MSFILTER_DLLPUBLIC MSCodec_XorWord95 : public MSCodec_Xor95
+{
+public:
+ explicit MSCodec_XorWord95() : MSCodec_Xor95(7) {}
+
+ /** Decodes a block of memory inplace.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param pnData
+ Encrypted data block. Will contain the decrypted data afterwards.
+ @param nBytes
+ Size of the passed data block.
+ */
+ virtual void Decode( sal_uInt8* pnData, sal_Size nBytes );
+};
+
+
+// ============================================================================
+
+/** Encodes and decodes data from protected MSO 97+ documents.
+
+ This is a wrapper class around low level cryptographic functions from RTL.
+ Implementation is based on the wvDecrypt package by Caolan McNamara:
+ http://www.csn.ul.ie/~caolan/docs/wvDecrypt.html
+ */
+class MSFILTER_DLLPUBLIC MSCodec_Std97
+{
+public:
+ explicit MSCodec_Std97();
+ ~MSCodec_Std97();
+
+ /** Initializes the algorithm with the specified password and document ID.
+
+ @param pPassData
+ Wide character array containing the password. Must be zero
+ terminated, which results in a maximum length of 15 characters.
+ @param pUnique
+ Unique document identifier read from or written to the file.
+ */
+ void InitKey(
+ const sal_uInt16 pPassData[ 16 ],
+ const sal_uInt8 pUnique[ 16 ] );
+
+ /** Verifies the validity of the password using the passed salt data.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param pSaltData
+ Salt data block read from the file.
+ @param pSaltDigest
+ Salt digest read from the file.
+
+ @return
+ true = Test was successful.
+ */
+ bool VerifyKey(
+ const sal_uInt8 pSaltData[ 16 ],
+ const sal_uInt8 pSaltDigest[ 16 ] );
+
+ /** Rekeys the codec using the specified counter.
+
+ After reading a specific amount of data the cipher algorithm needs to
+ be rekeyed using a counter that counts the data blocks.
+
+ The block size is for example 512 Bytes for Word files and 1024 Bytes
+ for Excel files.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param nCounter
+ Block counter used to rekey the cipher.
+ */
+ bool InitCipher( sal_uInt32 nCounter );
+
+ /** Creates an MD5 digest of salt digest. */
+ bool CreateSaltDigest(
+ const sal_uInt8 nSaltData[16], sal_uInt8 nSaltDigest[16] );
+
+ /** Encodes a block of memory.
+
+ @see rtl_cipher_encode()
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used. The destination buffer must be able to take all
+ unencoded data from the source buffer (usually this means it must be
+ as long as or longer than the source buffer).
+
+ @param pData
+ Unencrypted source data block.
+ @param nDatLen
+ Size of the passed source data block.
+ @param pBuffer
+ Destination buffer for the encrypted data.
+ @param nBufLen
+ Size of the destination buffer.
+
+ @return
+ true = Encoding was successful (no error occured).
+ */
+ bool Encode(
+ const void* pData, sal_Size nDatLen,
+ sal_uInt8* pBuffer, sal_Size nBufLen );
+
+ /** Decodes a block of memory.
+
+ @see rtl_cipher_decode()
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used. The destination buffer must be able to take all
+ encoded data from the source buffer (usually this means it must be
+ as long as or longer than the source buffer).
+
+ @param pData
+ Encrypted source data block.
+ @param nDatLen
+ Size of the passed source data block.
+ @param pBuffer
+ Destination buffer for the decrypted data.
+ @param nBufLen
+ Size of the destination buffer.
+
+ @return
+ true = Decoding was successful (no error occured).
+ */
+ bool Decode(
+ const void* pData, sal_Size nDatLen,
+ sal_uInt8* pBuffer, sal_Size nBufLen );
+
+ /** Lets the cipher skip a specific amount of bytes.
+
+ This function sets the cipher to the same state as if the specified
+ amount of data has been decoded with one or more calls of Decode().
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param nDatLen
+ Number of bytes to be skipped (cipher "seeks" forward).
+ */
+ bool Skip( sal_Size nDatLen );
+
+ /** Gets salt data and salt digest.
+
+ @precond
+ The codec must be initialized with InitKey() before this function
+ can be used.
+
+ @param pSalt
+ Salt, a random number.
+ @param pSaltData
+ Salt data block generated from the salt.
+ @param pSaltDigest
+ Salt digest generated from the salt.
+ */
+ void GetEncryptKey (
+ const sal_uInt8 pSalt[16],
+ sal_uInt8 pSaltData[16],
+ sal_uInt8 pSaltDigest[16]);
+
+private:
+ void GetDigestFromSalt( const sal_uInt8 pSaltData[16], sal_uInt8 pDigest[16] );
+
+private:
+ MSFILTER_DLLPRIVATE MSCodec_Std97( const MSCodec_Std97& );
+ MSFILTER_DLLPRIVATE MSCodec_Std97& operator=( const MSCodec_Std97& );
+
+ rtlCipher m_hCipher;
+ rtlDigest m_hDigest;
+ sal_uInt8 m_pDigestValue[ RTL_DIGEST_LENGTH_MD5 ];
+};
+
+// ============================================================================
+
+} // namespace msfilter
+
+#endif
+
diff --git a/filter/inc/filter/msfilter/msdffimp.hxx b/filter/inc/filter/msfilter/msdffimp.hxx
new file mode 100644
index 000000000000..4f11a4c2fab9
--- /dev/null
+++ b/filter/inc/filter/msfilter/msdffimp.hxx
@@ -0,0 +1,861 @@
+/*************************************************************************
+ *
+ * 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 _MSDFFIMP_HXX
+#define _MSDFFIMP_HXX
+
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/embed/XEmbeddedObject.hpp>
+#include <tools/solar.h> // UINTXX
+#include <svl/svarray.hxx>
+#include <tools/color.hxx>
+#include <tools/gen.hxx>
+#include <tools/table.hxx>
+#include <svx/msdffdef.hxx>
+#include <filter/msfilter/msfiltertracer.hxx>
+#include <vcl/graph.hxx>
+#include <string.h>
+#include <map>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <filter/msfilter/msfilterdllapi.h>
+#include <sot/storage.hxx>
+
+class Graphic;
+class SvStream;
+class SdrObject;
+class SdrOle2Obj;
+class SotStorageRef;
+class Polygon;
+class PolyPolygon;
+class FmFormModel;
+class SdrModel;
+class DffRecordHeader;
+
+class SwFlyFrmFmt;
+
+struct SvxMSDffBLIPInfo;
+struct SvxMSDffShapeInfo;
+struct SvxMSDffShapeOrder;
+
+class MSFILTER_DLLPUBLIC DffRecordHeader
+{
+
+public:
+ BYTE nRecVer; // may be DFF_PSFLAG_CONTAINER
+ UINT16 nRecInstance;
+ UINT16 nImpVerInst;
+ UINT16 nRecType;
+ UINT32 nRecLen;
+ ULONG nFilePos;
+public:
+ DffRecordHeader() : nRecVer(0), nRecInstance(0), nImpVerInst(0), nRecType(0), nRecLen(0), nFilePos(0) {}
+ FASTBOOL IsContainer() const { return nRecVer == DFF_PSFLAG_CONTAINER; }
+ ULONG GetRecBegFilePos() const { return nFilePos; }
+ ULONG GetRecEndFilePos() const { return nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen; }
+ void SeekToEndOfRecord(SvStream& rIn) const { rIn.Seek(nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen ); }
+ void SeekToContent( SvStream& rIn) const { rIn.Seek(nFilePos + DFF_COMMON_RECORD_HEADER_SIZE ); }
+ void SeekToBegOfRecord(SvStream& rIn) const { rIn.Seek( nFilePos ); }
+
+ MSFILTER_DLLPUBLIC friend SvStream& operator>>(SvStream& rIn, DffRecordHeader& rRec);
+
+};
+
+struct DffPropFlags
+{
+ BYTE bSet : 1;
+ BYTE bComplex : 1;
+ BYTE bBlip : 1;
+ BYTE bSoftAttr : 1;
+};
+
+class SvxMSDffManager;
+
+class MSFILTER_DLLPUBLIC DffPropSet : public Table
+{
+ protected :
+
+ UINT32 mpContents[ 1024 ];
+ DffPropFlags mpFlags[ 1024 ];
+
+ public :
+
+ DffPropSet( BOOL bInitialize = FALSE ){ if ( bInitialize )
+ memset( mpFlags, 0, 0x400 * sizeof( DffPropFlags ) ); };
+
+ inline BOOL IsProperty( UINT32 nRecType ) const { return ( mpFlags[ nRecType & 0x3ff ].bSet ); };
+ BOOL IsHardAttribute( UINT32 nId ) const;
+ UINT32 GetPropertyValue( UINT32 nId, UINT32 nDefault = 0 ) const;
+ /** Returns a boolean property by its real identifier. */
+ bool GetPropertyBool( UINT32 nId, bool bDefault = false ) const;
+ /** Returns a string property. */
+ ::rtl::OUString GetPropertyString( UINT32 nId, SvStream& rStrm ) const;
+ void SetPropertyValue( UINT32 nId, UINT32 nValue ) const;
+ BOOL SeekToContent( UINT32 nRecType, SvStream& rSt ) const;
+ void Merge( DffPropSet& rMasterPropSet ) const;
+ void InitializePropSet() const;
+ friend SvStream& operator>>( SvStream& rIn, DffPropSet& rPropSet );
+};
+
+class SfxItemSet;
+class SdrObject;
+struct DffObjData;
+
+class MSFILTER_DLLPUBLIC DffPropertyReader : public DffPropSet
+{
+ const SvxMSDffManager& rManager;
+ DffPropSet* pDefaultPropSet;
+
+ void ApplyCustomShapeTextAttributes( SfxItemSet& rSet ) const;
+ void ApplyCustomShapeAdjustmentAttributes( SfxItemSet& rSet ) const;
+ void ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
+ void ApplyLineAttributes( SfxItemSet& rSet, const MSO_SPT eShapeType ) const; // #i28269#
+ void ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
+
+public:
+
+ INT32 mnFix16Angle;
+
+ DffPropertyReader( const SvxMSDffManager& rManager );
+ ~DffPropertyReader();
+ INT32 Fix16ToAngle( INT32 nAngle ) const;
+
+#ifdef DBG_CUSTOMSHAPE
+ void ReadPropSet( SvStream& rIn, void* pClientData, UINT32 nShapeType = 0 ) const;
+#else
+ void ReadPropSet( SvStream& rIn, void* pClientData ) const;
+#endif
+
+ void SetDefaultPropSet( SvStream& rIn, UINT32 nOffDgg ) const;
+ void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet ) const;
+ void ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const;
+};
+
+
+#define COL_DEFAULT RGB_COLORDATA( 0xFA, 0xFB, 0xFC )
+
+typedef SvxMSDffBLIPInfo* SvxMSDffBLIPInfo_Ptr;
+
+typedef SvxMSDffShapeInfo* SvxMSDffShapeInfo_Ptr;
+
+typedef SvxMSDffShapeOrder* SvxMSDffShapeOrder_Ptr;
+
+typedef ::std::map< sal_Int32, SdrObject* > SvxMSDffShapeIdContainer;
+
+#define SVEXT_PERSIST_STREAM "\002OlePres000"
+
+// nach der Reihenfolge des Auftretens sortiert werden:
+//
+SV_DECL_PTRARR_DEL(SvxMSDffBLIPInfos, SvxMSDffBLIPInfo_Ptr, 16,16)
+
+SV_DECL_PTRARR_DEL(SvxMSDffShapeOrders, SvxMSDffShapeOrder_Ptr, 16,16)
+
+// explizit sortiert werden:
+//
+SV_DECL_PTRARR_SORT_DEL_VISIBILITY(SvxMSDffShapeInfos, SvxMSDffShapeInfo_Ptr, 16,16, MSFILTER_DLLPUBLIC)
+
+SV_DECL_PTRARR_SORT_VISIBILITY(SvxMSDffShapeTxBxSort, SvxMSDffShapeOrder_Ptr, 16,16, MSFILTER_DLLPUBLIC)
+
+#define SVXMSDFF_SETTINGS_CROP_BITMAPS 1
+#define SVXMSDFF_SETTINGS_IMPORT_PPT 2
+#define SVXMSDFF_SETTINGS_IMPORT_EXCEL 4
+
+#define SP_FGROUP 0x001 // This shape is a group shape
+#define SP_FCHILD 0x002 // Not a top-level shape
+#define SP_FPATRIARCH 0x004 // This is the topmost group shape.
+ // Exactly one of these per drawing.
+#define SP_FDELETED 0x008 // The shape has been deleted
+#define SP_FOLESHAPE 0x010 // The shape is an OLE object
+#define SP_FHAVEMASTER 0x020 // Shape has a hspMaster property
+#define SP_FFLIPH 0x040 // Shape is flipped horizontally
+#define SP_FFLIPV 0x080 // Shape is flipped vertically
+#define SP_FCONNECTOR 0x100 // Connector type of shape
+#define SP_FHAVEANCHOR 0x200 // Shape has an anchor of some kind
+#define SP_FBACKGROUND 0x400 // Background shape
+#define SP_FHAVESPT 0x800 // Shape has a shape type property
+
+// for the CreateSdrOLEFromStorage we need the information, how we handle
+// convert able OLE-Objects - this ist stored in
+#define OLE_MATHTYPE_2_STARMATH 0x0001
+#define OLE_WINWORD_2_STARWRITER 0x0002
+#define OLE_EXCEL_2_STARCALC 0x0004
+#define OLE_POWERPOINT_2_STARIMPRESS 0x0008
+
+struct SvxMSDffConnectorRule
+{
+ sal_uInt32 nRuleId;
+ sal_uInt32 nShapeA; // SPID of shape A
+
+ sal_uInt32 nShapeB; // SPID of shape B
+ sal_uInt32 nShapeC; // SPID of connector shape
+ sal_uInt32 ncptiA; // Connection site Index of shape A
+ sal_uInt32 ncptiB; // Connection site Index of shape B
+ sal_uInt32 nSpFlagsA; // SpFlags of shape A ( the original mirror flags must be known when solving the Solver Container )
+ sal_uInt32 nSpFlagsB; // SpFlags of shape A
+
+ SdrObject* pAObj; // pPtr of object ( corresponding to shape A )
+ SdrObject* pBObj; // "
+ SdrObject* pCObj; // " of connector object
+
+ SvxMSDffConnectorRule() : nSpFlagsA( 0 ), nSpFlagsB( 0 ), pAObj( NULL ), pBObj( NULL ), pCObj( NULL ) {};
+
+ friend SvStream& operator>>( SvStream& rIn, SvxMSDffConnectorRule& rAtom );
+};
+struct MSFILTER_DLLPUBLIC SvxMSDffSolverContainer
+{
+ List aCList;
+
+ SvxMSDffSolverContainer();
+ ~SvxMSDffSolverContainer();
+
+ MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, SvxMSDffSolverContainer& rAtom );
+};
+
+struct FIDCL
+{
+ UINT32 dgid; // DG owning the SPIDs in this cluster
+ UINT32 cspidCur; // number of SPIDs used so far
+};
+
+//---------------------------------------------------------------------------
+// von SvxMSDffManager fuer jedes in der Gruppe enthaltene Shape geliefert
+//---------------------------------------------------------------------------
+struct MSDffTxId
+{
+ USHORT nTxBxS;
+ USHORT nSequence;
+ MSDffTxId(USHORT nTxBxS_, USHORT nSequence_ )
+ : nTxBxS( nTxBxS_ ),
+ nSequence( nSequence_ ){}
+ MSDffTxId(const MSDffTxId& rCopy)
+ : nTxBxS( rCopy.nTxBxS ),
+ nSequence( rCopy.nSequence ){}
+};
+
+struct MSFILTER_DLLPUBLIC SvxMSDffImportRec
+{
+ SdrObject* pObj;
+ Polygon* pWrapPolygon;
+ char* pClientAnchorBuffer;
+ UINT32 nClientAnchorLen;
+ char* pClientDataBuffer;
+ UINT32 nClientDataLen;
+ UINT32 nXAlign;
+ UINT32 nXRelTo;
+ UINT32 nYAlign;
+ UINT32 nYRelTo;
+ UINT32 nLayoutInTableCell;
+ UINT32 nFlags;
+ long nTextRotationAngle;
+ long nDxTextLeft; // Abstand der Textbox vom umgebenden Shape
+ long nDyTextTop;
+ long nDxTextRight;
+ long nDyTextBottom;
+ long nDxWrapDistLeft;
+ long nDyWrapDistTop;
+ long nDxWrapDistRight;
+ long nDyWrapDistBottom;
+ long nCropFromTop;
+ long nCropFromBottom;
+ long nCropFromLeft;
+ long nCropFromRight;
+ MSDffTxId aTextId; // Kennungen fuer Textboxen
+ ULONG nNextShapeId; // fuer verlinkte Textboxen
+ ULONG nShapeId;
+ MSO_SPT eShapeType;
+ MSO_LineStyle eLineStyle; // Umrandungs-Arten
+ BOOL bDrawHell :1;
+ BOOL bHidden :1;
+ BOOL bReplaceByFly :1;
+ BOOL bLastBoxInChain :1;
+ BOOL bHasUDefProp :1;
+ BOOL bVFlip :1;
+ BOOL bHFlip :1;
+ BOOL bAutoWidth :1;
+
+ SvxMSDffImportRec();
+ SvxMSDffImportRec(const SvxMSDffImportRec& rCopy);
+ ~SvxMSDffImportRec();
+ BOOL operator==( const SvxMSDffImportRec& rEntry ) const
+ { return nShapeId == rEntry.nShapeId; }
+ BOOL operator<( const SvxMSDffImportRec& rEntry ) const
+ { return nShapeId < rEntry.nShapeId; }
+};
+typedef SvxMSDffImportRec* MSDffImportRec_Ptr;
+
+// Liste aller SvxMSDffImportRec fuer eine Gruppe
+SV_DECL_PTRARR_SORT_DEL_VISIBILITY(MSDffImportRecords, MSDffImportRec_Ptr, 16,16, MSFILTER_DLLPUBLIC)
+
+//---------------------------------------------------------------------------
+// Import-/Export-Parameterblock fuer 1 x ImportObjAtCurrentStreamPos()
+//---------------------------------------------------------------------------
+struct SvxMSDffImportData
+{
+ MSDffImportRecords aRecords; // Shape-Pointer, -Ids und private Daten
+ Rectangle aParentRect;// Rectangle der umgebenden Gruppe
+ // bzw. von aussen reingegebenes Rect
+ Rectangle aNewRect; // mit diesem Shape definiertes Rectangle
+
+ SvxMSDffImportData()
+ {}
+ SvxMSDffImportData(const Rectangle& rParentRect)
+ :aParentRect( rParentRect )
+ {}
+ void SetNewRect(INT32 l, INT32 o,
+ INT32 r, INT32 u ){ aNewRect = Rectangle(l,o, r,u); }
+ BOOL HasParRect() const { return aParentRect.IsEmpty(); }
+ BOOL HasNewRect() const { return aNewRect.IsEmpty() ; }
+ BOOL HasRecords() const { return 0 != aRecords.Count(); }
+ USHORT GetRecCount() const { return aRecords.Count(); }
+ SvxMSDffImportRec* GetRecord(USHORT iRecord) const
+ { return aRecords.GetObject( iRecord ); }
+};
+
+struct DffObjData
+{
+ const DffRecordHeader& rSpHd;
+
+ Rectangle aBoundRect;
+ Rectangle aChildAnchor;
+
+ UINT32 nShapeId;
+ UINT32 nSpFlags;
+ MSO_SPT eShapeType;
+
+ BOOL bShapeType : 1;
+ BOOL bClientAnchor : 1;
+ BOOL bClientData : 1;
+ BOOL bChildAnchor : 1;
+ BOOL bOpt : 1;
+ BOOL bIsAutoText : 1;
+
+ int nCalledByGroup;
+
+ DffObjData( const DffRecordHeader& rObjHd,
+ const Rectangle& rBoundRect,
+ int nClByGroup ) :
+ rSpHd( rObjHd ),
+ aBoundRect( rBoundRect ),
+ nShapeId( 0 ),
+ nSpFlags( 0 ),
+ eShapeType( mso_sptNil ),
+ bShapeType( FALSE ),
+ bClientAnchor( FALSE ),
+ bClientData( FALSE ),
+ bChildAnchor( FALSE ),
+ bOpt( FALSE ),
+ bIsAutoText( FALSE ),
+ nCalledByGroup( nClByGroup ){}
+};
+
+#define DFF_RECORD_MANAGER_BUF_SIZE 64
+
+struct DffRecordList
+{
+ UINT32 nCount;
+ UINT32 nCurrent;
+ DffRecordList* pPrev;
+ DffRecordList* pNext;
+
+ DffRecordHeader mHd[ DFF_RECORD_MANAGER_BUF_SIZE ];
+
+ DffRecordList( DffRecordList* pList );
+ ~DffRecordList();
+};
+
+enum DffSeekToContentMode
+{
+ SEEK_FROM_BEGINNING,
+ SEEK_FROM_CURRENT,
+ SEEK_FROM_CURRENT_AND_RESTART
+};
+
+class MSFILTER_DLLPUBLIC DffRecordManager : public DffRecordList
+{
+ public :
+
+ DffRecordList* pCList;
+
+ void Clear();
+ void Consume( SvStream& rIn, BOOL bAppend = FALSE, UINT32 nStOfs = 0 );
+
+ BOOL SeekToContent( SvStream& rIn, UINT16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING );
+ DffRecordHeader* GetRecordHeader( UINT16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING );
+
+ DffRecordManager();
+ DffRecordManager( SvStream& rIn );
+ ~DffRecordManager();
+
+ DffRecordHeader* Current();
+ DffRecordHeader* First();
+ DffRecordHeader* Next();
+ DffRecordHeader* Prev();
+ DffRecordHeader* Last();
+};
+
+/*
+ SvxMSDffManager - abstrakte Basis-Klasse fuer Escher-Import
+ ===============
+ Zweck: Zugriff auf Objekte im Drawing File Format
+ Stand: Zugriff nur auf BLIPs (wird spaeter erweitert)
+
+ Beachte: in der zwecks PowerPoint-, ODER Word- ODER Excel-Import
+ ======== abgeleiteten Klasse
+ MUSS jeweils die Methode ProcessUserDefinedRecord()
+ implementiert werden!
+*/
+class MSFILTER_DLLPUBLIC SvxMSDffManager : public DffPropertyReader
+{
+ FmFormModel* pFormModel;
+ SvxMSDffBLIPInfos* pBLIPInfos;
+ SvxMSDffShapeInfos* pShapeInfos;
+ SvxMSDffShapeOrders* pShapeOrders;
+ ULONG nDefaultFontHeight;
+ long nOffsDgg;
+ USHORT nBLIPCount;
+ USHORT nShapeCount;
+ sal_uInt32 nGroupShapeFlags;
+
+ void CheckTxBxStoryChain();
+ void GetFidclData( long nOffsDgg );
+
+protected :
+
+ String maBaseURL;
+ UINT32 mnCurMaxShapeId; // we need this information to
+ UINT32 mnDrawingsSaved; // access the right drawing
+ UINT32 mnIdClusters; // while only knowing the shapeid
+ FIDCL* mpFidcls;
+ Table maDgOffsetTable; // array of fileoffsets
+
+ friend class DffPropertyReader;
+
+ SvStream& rStCtrl;
+ SvStream* pStData;
+ SvStream* pStData2;
+ SdrModel* pSdrModel;
+
+ long nMapMul;
+ long nMapDiv;
+ long nMapXOfs;
+ long nMapYOfs;
+ long nEmuMul;
+ long nEmuDiv;
+ long nPntMul;
+ long nPntDiv;
+ FASTBOOL bNeedMap;
+ UINT32 nSvxMSDffSettings;
+ UINT32 nSvxMSDffOLEConvFlags;
+
+ /** stores a reference to an imported SdrObject with its shape id if
+ it has one
+ */
+ SvxMSDffShapeIdContainer maShapeIdContainer;
+
+ void GetCtrlData( long nOffsDgg );
+ void GetDrawingGroupContainerData( SvStream& rSt,
+ ULONG nLenDgg );
+ // --> OD 2008-08-01 #156763#
+ // Add internal drawing container id as parameter to the sub methods of
+ // reading the control information about the drawing objects.
+ // The drawing container id is used to distinguish the text ids of drawing
+ // objects in different drawing containers.
+ void GetDrawingContainerData( SvStream& rSt,
+ ULONG nLenDg,
+ const unsigned long nDrawingContainerId );
+ BOOL GetShapeGroupContainerData( SvStream& rSt,
+ ULONG nLenShapeGroupCont,
+ BOOL bPatriarch,
+ const unsigned long nDrawingContainerId );
+ BOOL GetShapeContainerData( SvStream& rSt,
+ ULONG nLenShapeCont,
+ ULONG nPosGroup,
+ const unsigned long nDrawingContainerId );
+ // <--
+
+ FASTBOOL ReadGraphic( SvStream& rSt, ULONG nIndex, Graphic& rGraphic ) const;
+ SdrObject* ImportFontWork( SvStream&, SfxItemSet&, Rectangle& rBoundRect ) const;
+ SdrObject* ImportGraphic( SvStream&, SfxItemSet&, const DffObjData& ) const;
+ // --> OD 2004-12-14 #i32596# - pass <nCalledByGroup> to method
+ // Needed in the Writer Microsoft Word import to avoid import of OLE objects
+ // inside groups. Instead a graphic object is created.
+ virtual SdrObject* ImportOLE( long nOLEId,
+ const Graphic& rGraf,
+ const Rectangle& rBoundRect,
+ const Rectangle& rVisArea,
+ const int _nCalledByGroup,
+ sal_Int64 nAspect ) const;
+ // <--
+ SdrObject* GetAutoForm( MSO_SPT eTyp ) const;
+ static const GDIMetaFile* lcl_GetMetaFileFromGrf_Impl( const Graphic& rGrf, GDIMetaFile& rMtf );
+#ifndef SVX_LIGHT
+ static com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > CheckForConvertToSOObj(
+ UINT32 nConvertFlags, SotStorage& rSrcStg,
+ const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg,
+ const Graphic& rGrf,
+ const Rectangle& rVisArea );
+#endif
+
+/*
+ folgende Methoden sind zum Excel-Import zu ueberschreiben:
+*/
+ virtual BOOL ProcessClientAnchor(SvStream& rStData, ULONG nDatLen, char*& rpBuff, UINT32& rBuffLen ) const;
+ virtual void ProcessClientAnchor2( SvStream& rStData, DffRecordHeader& rHd, void* pData, DffObjData& );
+ virtual BOOL ProcessClientData( SvStream& rStData, ULONG nDatLen, char*& rpBuff, UINT32& rBuffLen ) const;
+ virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj = NULL);
+ virtual ULONG Calc_nBLIPPos( ULONG nOrgVal, ULONG nStreamPos ) const;
+ virtual FASTBOOL GetColorFromPalette(USHORT nNum, Color& rColor) const;
+
+ // -----------------------------------------------------------------------
+
+ FASTBOOL ReadDffString(SvStream& rSt, String& rTxt) const;
+ FASTBOOL ReadObjText(SvStream& rSt, SdrObject* pObj) const;
+
+ // SJ: New implementation of ReadObjText is used by Fontwork objects, because
+ // the old one does not properly import multiple paragraphs
+ void ReadObjText( const String& rText, SdrObject* pObj ) const;
+ // -----------------------------------------------------------------------
+
+ /*
+ folgende Methode ist von allen zu ueberschreiben, die OLE-Objecte
+ importieren moechten:
+ */
+ virtual BOOL GetOLEStorageName( long nOLEId, String& rStorageName,
+ SotStorageRef& rSrcStorage,
+ com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg
+ ) const;
+
+ /*
+ folgende Methode ist von allen zu ueberschreiben, die verhindern
+ moechten, dass (abgerundete) Rechtecke mit umgebrochenem Text
+ immer in SdrRectObj( OBJ_TEXT ) umgewandelt werden:
+ TRUE bedeutet umwandeln.
+ */
+ virtual BOOL ShapeHasText(ULONG nShapeId, ULONG nFilePos) const;
+
+public:
+
+ void* pSvxMSDffDummy1;
+ void* pSvxMSDffDummy2;
+ void* pSvxMSDffDummy3;
+ List* pEscherBlipCache;
+
+ DffRecordManager maShapeRecords;
+ ColorData mnDefaultColor;
+
+ MSFilterTracer* mpTracer;
+ sal_Bool mbTracing;
+
+ Color MSO_TEXT_CLR_ToColor( sal_uInt32 nColorCode ) const;
+ Color MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nContextProperty = DFF_Prop_lineColor ) const;
+ virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const;
+ FASTBOOL SeekToRec( SvStream& rSt, USHORT nRecId, ULONG nMaxFilePos, DffRecordHeader* pRecHd = NULL, ULONG nSkipCount = 0 ) const;
+ FASTBOOL SeekToRec2( USHORT nRecId1, USHORT nRecId2, ULONG nMaxFilePos, DffRecordHeader* pRecHd = NULL, ULONG nSkipCount = 0 ) const;
+
+ // -----------------------------------------------------------------------
+ static void MSDFFReadZString( SvStream& rIn, String& rStr, ULONG nMaxLen, FASTBOOL bUniCode = FALSE );
+
+ static BOOL ReadCommonRecordHeader( DffRecordHeader& rRec, SvStream& rIn );
+ static BOOL ReadCommonRecordHeader( SvStream& rSt,
+ BYTE& rVer,
+ USHORT& rInst,
+ USHORT& rFbt,
+ UINT32& rLength );
+/*
+ Konstruktor
+ ===========
+ Input: rStCtrl - Verwaltungsstream mit Containern,
+ FBSE Objekten und Shapes
+ ( muss immer uebergeben werden;
+ Stream muss bereits offen sein )
+
+ nOffsDgg - Offset im rStCtrl: Beginn des Drawing Group Containers
+
+ pStData - Datenstream, in dem die BLIPs gespeichert sind
+ ( falls Null, wird angenommen, dass die
+ BLIPs ebenfalls im rStCtrl gespeichert sind;
+ dieser Stream muss ebenfalls bereits offen sein )
+ pSdrModel_ kann beim Ctor-Aufruf leer bleiben, muss dann aber
+ spaeter ueber SetModel() gesetzt werden!
+
+ setzt nBLIPCount
+*/
+ SvxMSDffManager( SvStream& rStCtrl,
+ const String& rBaseURL,
+ long nOffsDgg,
+ SvStream* pStData,
+ SdrModel* pSdrModel_ = 0,
+ long nApplicationScale = 0,
+ ColorData mnDefaultColor_ = COL_DEFAULT,
+ ULONG nDefaultFontHeight_ = 24,
+ SvStream* pStData2_ = 0,
+ MSFilterTracer* pTracer = NULL );
+
+ // in PPT werden die Parameter DGGContainerOffset und PicStream
+ // mit Hilfe einer Init Routine Uebergeben.
+ SvxMSDffManager( SvStream& rStCtrl, const String& rBaseURL, MSFilterTracer* pTracer );
+ void InitSvxMSDffManager( long nOffsDgg_, SvStream* pStData_, sal_uInt32 nSvxMSDffOLEConvFlags );
+ void SetDgContainer( SvStream& rSt );
+
+ virtual ~SvxMSDffManager();
+
+ UINT32 GetSvxMSDffSettings() const { return nSvxMSDffSettings; };
+ void SetSvxMSDffSettings( UINT32 nSettings ) { nSvxMSDffSettings = nSettings; };
+
+ static BOOL MakeContentStream( SotStorage * pStor, const GDIMetaFile & );
+ static BOOL ConvertToOle2( SvStream& rStm, UINT32 nLen, const GDIMetaFile*,
+ const SotStorageRef & rDest );
+
+ void SetModel(SdrModel* pModel, long nApplicationScale);
+ SdrModel* GetModel() const { return pSdrModel; }
+ void Scale(sal_Int32& rVal) const;
+ void Scale(Point& rPos) const;
+ void Scale(Size& rSiz) const;
+ void Scale(Rectangle& rRect) const;
+ void Scale(Polygon& rPoly) const;
+ void Scale(PolyPolygon& rPoly) const;
+ void ScaleEmu(sal_Int32& rVal) const;
+ UINT32 ScalePt( UINT32 nPt ) const;
+ INT32 ScalePoint( INT32 nVal ) const;
+
+/*
+ GetBLIP() - Anforderung eines bestimmten BLIP
+ =========
+ Input: nIdx - Nummer des angeforderten BLIP
+ ( muss immer uebergeben werden )
+
+ Output: rData - bereits fertig konvertierte Daten
+ ( direkt als Grafik in unsere Dokumente einzusetzen )
+
+ Rueckgabewert: TRUE, im Erfolgsfalls, FALSE bei Fehler
+*/
+ BOOL GetBLIP( ULONG nIdx, Graphic& rData, Rectangle* pVisArea = NULL ) const;
+
+/*
+ GetBLIPDirect() -Einlesen eines BLIP aus schon positioniertem Stream
+ ===============
+ Input: rBLIPStream -bereits korrekt positionierter Stream
+ ( muss immer uebergeben werden )
+
+ Output: rData -bereits fertig konvertierte Daten
+ ( direkt als Grafik in unsere Dokumente einzusetzen )
+
+ Rueckgabewert: TRUE, im Erfolgsfalls, FALSE bei Fehler
+*/
+ BOOL GetBLIPDirect(SvStream& rBLIPStream, Graphic& rData, Rectangle* pVisArea = NULL ) const;
+
+ BOOL GetShape(ULONG nId,
+ SdrObject*& rpData, SvxMSDffImportData& rData);
+
+/*
+ GetBLIPCount() - Abfrage der verwalteten BLIP Anzahl
+ ==============
+ Input: ./.
+ Output: ./.
+ Rueckgabewert: nBLIPCount - Anzahl der im pStData (bzw. rStCtrl) enthaltenen BLIPs
+ ( sprich: Anzahl der FBSEs im Drawing Group Container )
+
+ Werte: 0 - Struktur Ok, jedoch keine BLIPs vorhanden
+ 1.. - Anzahl der BLIPs
+ USHRT_MAX - Fehler: kein korrektes Drawing File Format
+*/
+ USHORT GetBLIPCount() const{ return nBLIPCount; }
+
+/*
+ ZCodecDecompressed() - Dekomprimierung eines komp. WMF oder Enhanced WMF
+ ====================
+ Input: rIn -bereits korrekt positionierter Stream,
+ der das komprimierte Bild enthaelt
+ rOut -bereits korrekt positionierter Ausgabe-Stream,
+
+ bLookForEnd -Flag, ob das komp. Bild bis zum Stream-Ende reicht.
+ Falls TRUE, wird jeweils geprueft, ob das gelesene noch
+ zum Bild gehoert.
+ Falls FALSE, wird bis zum Stream-Ende gelesen.
+
+ Output: rIn -Der Stream steht hinter dem Ende des komp. Bildes.
+ (es kann aber noch eine Ende-Kennung und CRC-Sum folgen)
+ rOut -Der Stream enthaelt das dekomprimierte Bild.
+ Der Stream wird auf den Anfang des Bildes positioniert.
+ (also dorthin, wo der Stream vor der Verarbeitung stand)
+
+ Rueckgabewert: TRUE, im Erfolgsfall
+ FALSE bei Fehler oder Null Bytes geschrieben
+*/
+// static BOOL ZCodecDecompressed( SvStream& rIn,
+// SvStream& rOut,
+// BOOL bLookForEnd );
+//
+ SdrObject* ImportObj(SvStream& rSt, void* pData,
+ Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL);
+
+ SdrObject* ImportGroup( const DffRecordHeader& rHd, SvStream& rSt, void* pData,
+ Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL );
+
+ SdrObject* ImportShape( const DffRecordHeader& rHd, SvStream& rSt, void* pData,
+ Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL);
+
+ Rectangle GetGlobalChildAnchor( const DffRecordHeader& rHd, SvStream& rSt, Rectangle& aClientRect );
+ void GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt,
+ Rectangle& rGroupClientAnchor, Rectangle& rGroupChildAnchor,
+ const Rectangle& rClientRect, const Rectangle& rGlobalChildRect );
+
+ inline const SvxMSDffShapeInfos* GetShapeInfos( void ) const
+ {
+ return pShapeInfos;
+ }
+
+ inline const SvxMSDffShapeOrders* GetShapeOrders( void ) const
+ {
+ return pShapeOrders;
+ }
+
+ void StoreShapeOrder(ULONG nId,
+ ULONG nTxBx,
+ SdrObject* pObject,
+ SwFlyFrmFmt* pFly = 0,
+ short nHdFtSection = 0) const;
+
+ void ExchangeInShapeOrder(SdrObject* pOldObject,
+ ULONG nTxBx,
+ SwFlyFrmFmt* pFly,
+ SdrObject* pObject) const;
+
+ void RemoveFromShapeOrder( SdrObject* pObject ) const;
+
+ UINT32 GetConvertFlags() const { return nSvxMSDffOLEConvFlags; }
+
+ static SdrOle2Obj* CreateSdrOLEFromStorage( const String& rStorageName,
+ SotStorageRef& rSrcStorage,
+ const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg,
+ const Graphic& rGraf,
+ const Rectangle& rBoundRect,
+ const Rectangle& rVisArea,
+ SvStream* pDataStrrm,
+ ErrCode& rError,
+ UINT32 nConvertFlags,
+ sal_Int64 nAspect );
+
+ /* the method SolveSolver will create connections between shapes, it should be called after a page is imported.
+ The SvxMSDffSolverContainer is containing necessary data data that is collected during the import of each shape
+ */
+ void SolveSolver( const SvxMSDffSolverContainer& rSolver );
+
+ static sal_Bool SetPropValue(
+ const ::com::sun::star::uno::Any& rAny,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ const String& rPropertyName,
+ sal_Bool bTestPropertyAvailability = sal_False );
+
+ void insertShapeId( sal_Int32 nShapeId, SdrObject* pShape );
+ void removeShapeId( SdrObject* pShape );
+ SdrObject* getShapeForId( sal_Int32 nShapeId );
+};
+
+struct SvxMSDffBLIPInfo
+{
+ USHORT nBLIPType; // Art des BLIP: z.B. 6 fuer PNG
+ ULONG nFilePos; // Offset des BLIP im Daten-Stream
+ ULONG nBLIPSize; // Anzahl Bytes, die der BLIP im Stream einnimmt
+ SvxMSDffBLIPInfo(USHORT nBType, ULONG nFPos, ULONG nBSize):
+ nBLIPType( nBType ), nFilePos( nFPos ), nBLIPSize( nBSize ){}
+};
+
+struct SvxMSDffShapeInfo
+{
+ sal_uInt32 nShapeId; // Shape Id, verwendet im PLCF SPA und im mso_fbtSp (FSP)
+ ULONG nFilePos; // Offset des Shape im Kontroll-Stream fuer eventuelle
+ // erneute Zugriffe auf dieses Shape
+ sal_uInt32 nTxBxComp;
+
+ BOOL bReplaceByFly :1; // Shape darf im Writer durch Rahmen ersetzt werden.
+ BOOL bSortByShapeId :1;
+ BOOL bLastBoxInChain:1;
+
+ SvxMSDffShapeInfo(ULONG nFPos, sal_uInt32 nId=0, // ULONG nBIdx=0,
+ USHORT nSeqId=0, USHORT nBoxId=0):
+ nShapeId( nId ),
+ nFilePos( nFPos ),
+ nTxBxComp( (nSeqId << 16) + nBoxId )
+ {
+ bReplaceByFly = FALSE;
+ bSortByShapeId = FALSE;
+ bLastBoxInChain = TRUE;
+ }
+ SvxMSDffShapeInfo(SvxMSDffShapeInfo& rInfo):
+ nShapeId( rInfo.nShapeId ),
+ nFilePos( rInfo.nFilePos ),
+ nTxBxComp( rInfo.nTxBxComp )
+ {
+ bReplaceByFly = rInfo.bReplaceByFly;
+ bSortByShapeId = rInfo.bSortByShapeId;
+ bLastBoxInChain = rInfo.bLastBoxInChain;
+ }
+ BOOL operator==( const SvxMSDffShapeInfo& rEntry ) const
+ {
+ return bSortByShapeId ? (nShapeId == rEntry.nShapeId)
+ : (nTxBxComp == rEntry.nTxBxComp && this == &rEntry);
+ }
+ BOOL operator<( const SvxMSDffShapeInfo& rEntry ) const
+ {
+ return bSortByShapeId ? (nShapeId < rEntry.nShapeId)
+ : (nTxBxComp < rEntry.nTxBxComp);
+ }
+};
+
+struct SvxMSDffShapeOrder
+{
+ ULONG nShapeId; // Shape Id, verwendet im PLCF SPA und im mso_fbtSp (FSP)
+
+ ULONG nTxBxComp; // Ketten- und Boxnummer in der Text-Box-Story (bzw. Null)
+
+ SwFlyFrmFmt* pFly; // Frame-Format eines statt des Sdr-Text-Objektes im
+ // Writer eingefuegten Rahmens: zur Verkettung benoetigt!
+
+ short nHdFtSection; // used by Writer to find out if linked frames are in the
+ // same header or footer of the same section
+
+ SdrObject* pObj; // Zeiger auf das Draw-Objekt (bzw. Null, falls nicht verwendet)
+
+ // Vorgehensweise: im Ctor des SvxMSDffManager werden im der Shape-Order-Array
+ // nur die Shape-Ids vermerkt,
+ // Text-Box-Nummer und der Objekt-Pointer werden nur dann
+ // gespeichert, wenn das Shape tatsaechlich importiert wird!
+ SvxMSDffShapeOrder( ULONG nId ):
+ nShapeId( nId ), nTxBxComp( 0 ), pFly( 0 ), nHdFtSection( 0 ), pObj( 0 ){}
+
+ BOOL operator==( const SvxMSDffShapeOrder& rEntry ) const
+ {
+ return (nTxBxComp == rEntry.nTxBxComp);
+ }
+ BOOL operator<( const SvxMSDffShapeOrder& rEntry ) const
+ {
+ return (nTxBxComp < rEntry.nTxBxComp);
+ }
+};
+
+#endif
+
diff --git a/filter/inc/filter/msfilter/msfilterdllapi.h b/filter/inc/filter/msfilter/msfilterdllapi.h
new file mode 100644
index 000000000000..28985f0c500f
--- /dev/null
+++ b/filter/inc/filter/msfilter/msfilterdllapi.h
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * 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 INCLUDED_MSFILTER_DLLAPI_H
+#define INCLUDED_MSFILTER_DLLAPI_H
+
+#include "sal/types.h"
+
+#if defined MSFILTER_DLLIMPLEMENTATION
+#define MSFILTER_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
+#else
+#define MSFILTER_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
+#endif
+
+#define MSFILTER_DLLPRIVATE SAL_DLLPRIVATE
+
+#endif
diff --git a/filter/inc/filter/msfilter/msfiltertracer.hxx b/filter/inc/filter/msfilter/msfiltertracer.hxx
new file mode 100644
index 000000000000..3b103e5be422
--- /dev/null
+++ b/filter/inc/filter/msfilter/msfiltertracer.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * 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 _MS_FILTERTRACER_HXX
+#define _MS_FILTERTRACER_HXX
+
+#include <rtl/ustring.hxx>
+#include <tools/stream.hxx>
+#include <xmloff/attrlist.hxx>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/util/XTextSearch.hpp>
+#include <com/sun/star/util/SearchResult.hpp>
+#include <com/sun/star/util/logging/XLogger.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/xml/sax/XAttributeList.hpp>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include "filter/msfilter/msfilterdllapi.h"
+
+class FilterConfigItem;
+class MSFILTER_DLLPUBLIC MSFilterTracer
+{
+ FilterConfigItem* mpCfgItem;
+ SvXMLAttributeList* mpAttributeList;
+ SvStream* mpStream;
+ sal_Bool mbEnabled;
+
+ ::com::sun::star::util::SearchOptions maSearchOptions;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxFilterTracer;
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XTextSearch > mxTextSearch;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::logging::XLogger > mxLogger;
+ ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > mxHandler;
+
+ public :
+
+ /* The first parameter is expecting the path of the configuration file.
+ The second parameter can be used to override properties of the configuration
+ file. A "DocumentURL" property can be set in the property
+ sequence to provide the current url of the document.
+ If the "Path" property is not set in the configuration file, then the path
+ of the "DocumentURL" property is used instead. If both are not set, the
+ application path is used instead.
+ If the "Name" property is not set in the configuration file, then the name
+ of the "DocumentURL" property is used instead. If both are not set, the
+ name "tracer* is used.
+ The file extension will always be "log" */
+
+ MSFilterTracer( const ::rtl::OUString& rConfigurationPath,
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >* pConfigData = NULL );
+ ~MSFilterTracer();
+
+ void StartTracing();
+ void EndTracing();
+
+ inline sal_Bool IsEnabled() const { return mbEnabled; }
+
+ void StartElement( const ::rtl::OUString& rName, ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > xAttribs );
+ void EndElement( const ::rtl::OUString& rName );
+
+ void Trace( const ::rtl::OUString& rElementID, const ::rtl::OUString& rMessage );
+ void AddAttribute( const ::rtl::OUString &sName , const ::rtl::OUString &sValue );
+ void RemoveAttribute( const ::rtl::OUString& sName );
+ void ClearAttributes();
+
+ /* initially all properties of the configuration file and the
+ properties which are given to the c'tor can be retrieved */
+ ::com::sun::star::uno::Any GetProperty( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Any* pDefault = NULL ) const;
+ void SetProperty( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Any& rProperty );
+};
+
+#endif
diff --git a/filter/inc/filter/msfilter/msocximex.hxx b/filter/inc/filter/msfilter/msocximex.hxx
new file mode 100644
index 000000000000..173835495b12
--- /dev/null
+++ b/filter/inc/filter/msfilter/msocximex.hxx
@@ -0,0 +1,1420 @@
+/*************************************************************************
+ *
+ * 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 _MSOCXIMEX_HXX
+#define _MSOCXIMEX_HXX
+
+#include <sot/storage.hxx>
+#include <tools/debug.hxx>
+
+//!! no such defines in global namespaces - it will break other existing code that uses the same define!!
+//#ifndef C2U
+//#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+//#endif
+#include "filter/msfilter/msfilterdllapi.h"
+#include <vector>
+#include <hash_map>
+
+namespace com{namespace sun{namespace star{
+ namespace drawing{
+ class XDrawPage;
+ class XShape;
+ class XShapes;
+ }
+ namespace form{
+ class XFormComponent;
+ }
+ namespace lang{
+ class XMultiServiceFactory;
+ }
+ namespace container{
+ class XIndexContainer;
+ class XNameContainer;
+ }
+ namespace beans{
+ class XPropertySet;
+ }
+ namespace text{
+ class XText;
+ }
+ namespace awt{
+ struct Size;
+ class XControlModel;
+ }
+ namespace uno{
+ class XComponentContext;
+ }
+
+}}}
+
+class OCX_Control;
+class SfxObjectShell;
+class SwPaM;
+
+class TypeName
+{
+public:
+ String msName;
+ sal_uInt16 mnType;
+ sal_Int32 mnLeft;
+ sal_Int32 mnTop;
+ sal_Int32 mnStoreId;
+ TypeName(sal_Char *pName, sal_uInt32 nStoreId, sal_uInt32 nLen, sal_uInt16 nType,
+ sal_Int32 nLeft, sal_Int32 nTop);
+};
+
+
+class MSFILTER_DLLPUBLIC SvxMSConvertOCXControls
+{
+public:
+ SvxMSConvertOCXControls( SfxObjectShell *pDSh,SwPaM *pP );
+ virtual ~SvxMSConvertOCXControls();
+
+ //Reads a control from the given storage, constructed shape in pShapeRef
+ sal_Bool ReadOCXStream( SotStorageRef& rSrc1,
+ com::sun::star::uno::Reference<
+ com::sun::star::drawing::XShape > *pShapeRef=0,
+ BOOL bFloatingCtrl=FALSE );
+
+
+ //Excel has a nasty kludged mechanism for this, read
+ //the comments in the source to follow it
+ sal_Bool ReadOCXExcelKludgeStream(SotStorageStreamRef& rSrc1,
+ com::sun::star::uno::Reference <
+ com::sun::star::drawing::XShape > *pShapeRef,BOOL bFloatingCtrl);
+
+
+ //Writes the given Uno Control into the given storage
+
+ static sal_Bool WriteOCXStream(SotStorageRef &rSrc1,
+ const com::sun::star::uno::Reference<
+ com::sun::star::awt::XControlModel > &rControlModel,
+ const com::sun::star::awt::Size& rSize,String &rName);
+
+ //Excel has a nasty kludged mechanism for this, read
+ //the comments in the source to follow it
+ static sal_Bool WriteOCXExcelKludgeStream(SotStorageStreamRef& rContents,
+ const com::sun::star::uno::Reference<
+ com::sun::star::awt::XControlModel > &rControlModel,
+ const com::sun::star::awt::Size &rSize, String &rName);
+
+ //Generate an OCX converter based on the OLE2 name
+ static OCX_Control *OCX_Factory(const String &rId);
+
+ //Generate an OCX converter based on the StarOffice UNO id
+ static OCX_Control *OCX_Factory( const com::sun::star::uno::Reference<
+ com::sun::star::awt::XControlModel > &rControlModel,
+ String &rId,String &rName);
+
+ virtual sal_Bool InsertControl(
+ const com::sun::star::uno::Reference<
+ com::sun::star::form::XFormComponent >& /*rFComp*/,
+ const com::sun::star::awt::Size& /*rSize*/,
+ com::sun::star::uno::Reference<
+ com::sun::star::drawing::XShape >* /*pShape*/,
+ BOOL /*bFloatingCtrl*/ ) {return sal_False;}
+
+ /*begin: Backwards compatability with office 95 import, modify later*/
+ const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory > & GetServiceFactory();
+
+ sal_uInt16 GetEditNum() { return ++nEdit; }
+ sal_uInt16 GetCheckboxNum() { return ++nCheckbox; }
+ /*end: Backwards compatability*/
+protected:
+ const com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > &
+ GetShapes();
+
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XIndexContainer > & GetFormComps();
+
+ SfxObjectShell *pDocSh;
+ SwPaM *pPaM;
+
+ // gecachte Interfaces
+ com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage >
+ xDrawPage;
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >
+ xShapes;
+ com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > xServiceFactory;
+
+ // das einzige Formular
+ com::sun::star::uno::Reference< com::sun::star::container::XIndexContainer >
+ xFormComps;
+
+ sal_uInt16 nEdit;
+ sal_uInt16 nCheckbox;
+
+ virtual const com::sun::star::uno::Reference<
+ com::sun::star::drawing::XDrawPage > & GetDrawPage();
+};
+
+class OCX_FontData
+{
+public:
+ OCX_FontData() : nFontNameLen(0), fBold(0), fItalic(0), fUnderline(0),
+ fStrike(0), nFontSize(12), nJustification(1), pFontName(0),
+ bHasAlign(FALSE), bHasFont(TRUE) {}
+ ~OCX_FontData() {
+ if (pFontName)
+ delete [] pFontName;
+ }
+ sal_Bool Read(SotStorageStream *pS);
+ void Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet > &rPropSet);
+
+ sal_Bool Export(SotStorageStreamRef &rContent,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+ sal_uInt32 nFontNameLen;
+
+ sal_uInt8 fBold:1;
+ sal_uInt8 fItalic:1;
+ sal_uInt8 fUnderline:1;
+ sal_uInt8 fStrike:1;
+ sal_uInt8 fUnknown1:4;
+
+ sal_uInt8 nUnknown2;
+ sal_uInt8 nUnknown3;
+ sal_uInt8 nUnknown4;
+
+ sal_uInt32 nFontSize;
+ sal_uInt16 nLanguageID;
+ sal_uInt8 nJustification;
+ sal_uInt16 nFontWeight;
+
+ char *pFontName;
+ void SetHasAlign(sal_Bool bIn) {bHasAlign=bIn;}
+ void SetHasFont(sal_Bool bIn) {bHasFont=bIn;}
+protected:
+ static sal_uInt16 nStandardId;
+ sal_uInt8 ExportAlign(sal_Int16 nAlign) const;
+ sal_Int16 ImportAlign(sal_uInt8 nJustification) const;
+private:
+ sal_Bool bHasAlign;
+ sal_Bool bHasFont;
+};
+
+class MSFILTER_DLLPUBLIC OCX_Control
+{
+public:
+ OCX_Control(UniString sN, OCX_Control* parent = NULL ) : nWidth( 0 ), nHeight( 0 ), mnLeft(0), mnTop(0),
+ mnStep(0), mnBackColor(0x8000000FL), mnForeColor(0), mnTabPos(0), mbVisible(true), sName(sN), pDocSh(0),
+ bSetInDialog(FALSE), mpParent( parent ) {}
+ sal_Bool FullRead(SotStorageStream *pS)
+ {
+ return Read(pS) && ReadFontData(pS);
+ };
+ virtual sal_Bool Read(SotStorageStream *pS);
+ virtual sal_Bool ReadFontData(SotStorageStream *pS);
+ virtual sal_Bool Import(const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory > &rServiceFactory,
+ com::sun::star::uno::Reference<
+ com::sun::star::form::XFormComponent > &rFComp,
+ com::sun::star::awt::Size &rSz);
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer>
+ &rDialog);
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& /*rPropSet*/)
+ {return sal_False;}
+ //Export exports a control as an OLE style storage stream tree
+ virtual sal_Bool Export(SotStorageRef& /*rObj*/,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& /*rPropSet*/,
+ const com::sun::star::awt::Size& /*rSize*/) {return sal_False;}
+
+ //WriteContents writes the contents of a contents stream, for
+ //the Excel export you cannot use Export, only WriteContents instead
+ virtual sal_Bool WriteContents(SotStorageStreamRef& /*rObj*/,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& /*rPropSet*/,
+ const com::sun::star::awt::Size& /*rSize*/) {return sal_False;}
+ void SetInDialog(bool bState) { bSetInDialog = bState; }
+ bool GetInDialog() { return bSetInDialog; }
+
+ sal_Bool ReadAndImport(SotStorageStream *pS,
+ com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory > &rSF,
+ com::sun::star::uno::Reference<
+ com::sun::star::form::XFormComponent > &rFComp,
+ com::sun::star::awt::Size &rSz)
+ {
+ if (Read(pS))
+ return Import(rSF,rFComp,rSz);
+ return sal_False;
+ }
+ virtual ~OCX_Control() {}
+
+ static void FillSystemColors();
+
+ sal_uInt32 nWidth;
+ sal_uInt32 nHeight;
+ sal_Int32 mnLeft;
+ sal_Int32 mnTop;
+ sal_Int32 mnStep;
+ sal_Int32 mnBackColor;
+ sal_Int32 mnForeColor;
+ sal_uInt16 mnTabPos;
+ bool mbVisible;
+ UniString sName;
+ UniString msToolTip;
+ OCX_FontData aFontData;
+ SfxObjectShell *pDocSh;
+protected:
+
+ sal_uInt32 ImportColor(sal_uInt32 nColorCode) const;
+ sal_uInt32 ExportColor(sal_uInt32 nColorCode) const;
+ sal_uInt32 SwapColor(sal_uInt32 nColorCode) const;
+ sal_Int16 ImportBorder(sal_uInt16 nSpecialEffect,sal_uInt16 nBorderStyle)
+ const;
+ sal_uInt8 ExportBorder(sal_uInt16 nBorder,sal_uInt8 &rBorderStyle) const;
+ bool bSetInDialog;
+ sal_Int16 ImportSpecEffect( sal_uInt8 nSpecialEffect ) const;
+ sal_uInt8 ExportSpecEffect( sal_Int16 nApiEffect ) const;
+ static sal_uInt16 nStandardId;
+ static sal_uInt8 __READONLY_DATA aObjInfo[4];
+ rtl::OUString msFormType;
+ rtl::OUString msDialogType;
+ OCX_Control* mpParent;
+private:
+ static sal_uInt32 pColor[25];
+};
+
+class OCX_ModernControl : public OCX_Control
+{
+public:
+ OCX_ModernControl(UniString sN) : OCX_Control(sN),
+ fEnabled(1), fLocked(0), fBackStyle(1), fColumnHeads(0), fIntegralHeight(1),
+ fMatchRequired(0), fAlignment(1), fDragBehaviour(0), fEnterKeyBehaviour(0),
+ fEnterFieldBehaviour(0), fTabKeyBehaviour(0), fWordWrap(1),
+ fSelectionMargin(1), fAutoWordSelect(1), fAutoSize(0), fHideSelection(1),
+ fAutoTab(0), fMultiLine(1), nMaxLength(0), nBorderStyle(0), nScrollBars(0),
+ nStyle(0), nMousePointer(0), nPasswordChar(0), nListWidth(0),
+ nBoundColumn(1), nTextColumn(-1), nColumnCount(1), nListRows(8),
+ nMatchEntry(2), nListStyle(0), nShowDropButtonWhen(0), nDropButtonStyle(1),
+ nMultiState(0), nValueLen(0), nCaptionLen(0), nVertPos(1), nHorzPos(7),
+ nSpecialEffect(2), nIcon(0), nPicture(0), nAccelerator(0), nGroupNameLen(0),
+ pValue(0), pCaption(0), pGroupName(0), nIconLen(0), pIcon(0),
+ nPictureLen(0), pPicture(0) {}
+
+ ~OCX_ModernControl() {
+ if (pValue) delete[] pValue;
+ if (pCaption) delete[] pCaption;
+ if (pGroupName) delete[] pGroupName;
+ if (pIcon) delete[] pIcon;
+ if (pPicture) delete[] pPicture;
+ }
+ sal_Bool Read(SotStorageStream *pS);
+
+
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[8];
+
+ sal_uInt8 fUnknown1:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown2:4;
+
+ sal_uInt8 fUnknown3:2;
+ sal_uInt8 fColumnHeads:1;
+ sal_uInt8 fIntegralHeight:1;
+ sal_uInt8 fMatchRequired:1;
+ sal_uInt8 fAlignment:1;
+ sal_uInt8 fUnknown4:2;
+
+ sal_uInt8 fUnknown5:3;
+ sal_uInt8 fDragBehaviour:1;
+ sal_uInt8 fEnterKeyBehaviour:1;
+ sal_uInt8 fEnterFieldBehaviour:1;
+ sal_uInt8 fTabKeyBehaviour:1;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown6:2;
+ sal_uInt8 fSelectionMargin:1;
+ sal_uInt8 fAutoWordSelect:1;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fHideSelection:1;
+ sal_uInt8 fAutoTab:1;
+ sal_uInt8 fMultiLine:1;
+
+ sal_uInt32 nMaxLength;
+ sal_uInt8 nBorderStyle;
+ sal_uInt8 nScrollBars;
+ sal_uInt8 nStyle;
+ sal_uInt8 nMousePointer;
+ sal_uInt8 nUnknown7;
+ sal_uInt8 nPasswordChar;
+ sal_uInt32 nListWidth;
+ sal_uInt16 nBoundColumn;
+ sal_Int16 nTextColumn;
+ sal_uInt16 nColumnCount;
+ sal_uInt16 nListRows;
+ sal_uInt16 nUnknown8;
+ sal_uInt8 nMatchEntry;
+ sal_uInt8 nListStyle;
+ sal_uInt8 nShowDropButtonWhen;
+ sal_uInt8 nDropButtonStyle;
+ sal_uInt8 nMultiState;
+ sal_uInt32 nValueLen;
+ sal_uInt32 nCaptionLen;
+
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+
+ sal_uInt32 nBorderColor;
+ sal_uInt8 nSpecialEffect;
+ sal_uInt16 nIcon;
+ sal_uInt16 nPicture;
+ sal_uInt8 nAccelerator;
+ sal_uInt8 nUnknown9;
+ sal_uInt32 nGroupNameLen;
+ sal_uInt32 nUnknown10;
+
+ char *pValue;
+ char *pCaption;
+ char *pGroupName;
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+
+};
+
+class OCX_TabStrip : public OCX_Control
+{
+public:
+ OCX_TabStrip() : OCX_Control( rtl::OUString::createFromAscii("TabStrip")) {}
+ virtual sal_Bool ReadFontData(SotStorageStream *pS);
+ virtual sal_Bool Read(SotStorageStream *pS);
+
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+ sal_uInt16 nNumTabs;
+};
+
+class OCX_Image : public OCX_Control
+{
+public:
+ OCX_Image() : OCX_Control(rtl::OUString::createFromAscii("Image")), fEnabled(1), fBackStyle(0), bPictureTiling(false), bAutoSize(false) {
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.DatabaseImageControl");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlImageControlModel");
+ }
+
+ ~OCX_Image() { }
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+ sal_uInt32 nBorderColor;
+ sal_uInt8 nBorderStyle;
+ sal_uInt8 nMousePointer;
+ sal_uInt8 nPictureSizeMode;
+
+
+ sal_uInt8 fUnknown1:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fUnknown2:2;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown3:3;
+
+ sal_uInt8 nPictureAlignment;
+ bool bPictureTiling;
+ sal_uInt8 nSpecialEffect;
+
+ bool bAutoSize;
+ ::rtl::OUString sImageUrl;
+ sal_Bool Read(SotStorageStream *pS);
+
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& rPropSet);
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ // No Font record
+ virtual sal_Bool ReadFontData(SvStorageStream* /*pS*/) { return sal_True; }
+
+ static OCX_Control *Create() { return new OCX_Image;}
+};
+struct ContainerRecord
+{
+ ContainerRecord():nTop(0), nLeft(0), nSubStorageId(0), nSubStreamLen(0), nTabPos(0), nTypeIdent(0), bVisible( true ) {}
+
+ ::rtl::OUString cName;
+ ::rtl::OUString controlTip;
+
+ sal_uInt32 nTop;
+ sal_uInt32 nLeft;
+ sal_uInt32 nSubStorageId;
+ sal_uInt32 nSubStreamLen;
+ sal_uInt16 nTabPos;
+ sal_uInt16 nTypeIdent;
+ bool bVisible;
+};
+
+typedef std::vector<OCX_Control*>::iterator CtrlIterator;
+typedef std::vector<OCX_Control*>::const_iterator CtrlIteratorConst;
+typedef std::vector<OCX_Control*> CtrlList;
+
+
+
+class RBGroup
+{
+ public:
+ RBGroup():mRBGroupPos(0){}
+ RBGroup(sal_uInt16& groupPos ):mRBGroupPos(groupPos){}
+ sal_Int16 tabPos() const { return mRBGroupPos; }
+ std::vector<OCX_Control*>::size_type numControls()
+ { return mpControls.size(); }
+ std::vector<OCX_Control*>& controls() { return mpControls; }
+
+ void add(OCX_Control* pRB);
+ private:
+ sal_uInt16 mRBGroupPos;
+ std::vector<OCX_Control*> mpControls;
+};
+
+typedef ::std::hash_map < ::rtl::OUString, RBGroup*, ::rtl::OUStringHash,
+ ::std::equal_to< ::rtl::OUString > > RBGroupHash;
+typedef std::vector<RBGroup*>::iterator GroupIterator;
+
+class OCX_OptionButton;
+
+class RBGroupManager
+{
+public:
+ RBGroupManager( String& defaultName );
+ ~RBGroupManager();
+
+ CtrlList insertGroupsIntoControlList( const CtrlList& sourceList );
+ void addRadioButton( OCX_OptionButton* pRButton );
+private:
+
+ void addSeperator( std::vector< OCX_Control* >& dest );
+ void copyList( std::vector< OCX_Control* >& src,
+ std::vector< OCX_Control* >& dest,
+ bool addGroupSeperator );
+
+ RBGroupHash rbGroups;
+ String mSDefaultName;
+ std::vector< RBGroup* > groupList;
+ sal_uInt16 numRadioButtons;
+};
+
+
+
+
+class OCX_ContainerControl : public OCX_Control
+{
+public:
+ virtual ~OCX_ContainerControl();
+ // sub class will process the control specific information
+ // e.g frame or userform ( maybe tab, mulipage in the future )
+ // Base (this) class will process the container specific information
+ // e.g. the controls contained by this container
+ // will
+ // a) create the controls
+ // b) read the controls
+ // c) store these controls in a list for post processing
+ // e.g. import
+ //
+ virtual sal_Bool Read(SvStorageStream *pS);
+ // No Font record
+ virtual sal_Bool ReadFontData(SvStorageStream* /*pS*/) { return sal_True; }
+
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+
+ SotStorageStreamRef getContainerStream() { return mContainerStream; }
+
+ virtual void ProcessControl( OCX_Control* pControl, SvStorageStream* pS, ContainerRecord& rec );
+ bool createFromContainerRecord( const ContainerRecord& record,
+ OCX_Control*& );
+protected:
+ // This class not meant to be instantiated
+ // needs to be subclassed
+ OCX_ContainerControl( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer > &rParent,
+ OCX_Control* pParent = NULL );
+ rtl::OUString createSubStreamName( const sal_uInt32& subStorageID );
+
+ RBGroupManager rbGroupMgr;
+ com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer > mxParent;
+ std::vector<OCX_Control*> mpControls;
+ SotStorageRef mContainerStorage;
+ SotStorageStreamRef mContainerStream;
+ SotStorageStreamRef mContainedControlsStream;
+ sal_uInt32 nNoRecords;
+ sal_uInt32 nTotalLen;
+ sal_uInt32 containerType;
+
+private:
+ OCX_ContainerControl(); // not implemented
+ OCX_ContainerControl(const OCX_ContainerControl&); // not implemented
+};
+
+
+class OCX_MultiPage : public OCX_ContainerControl
+{
+public:
+ OCX_MultiPage( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer > &rDialog, OCX_Control* pParent = NULL);
+ virtual ~OCX_MultiPage()
+ {
+ delete[] pCaption;
+ delete[] pIcon;
+ delete[] pPicture;
+ }
+ virtual sal_Bool Read(SvStorageStream *pS);
+
+ using OCX_ContainerControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer>
+ &rDialog);
+ virtual void ProcessControl( OCX_Control* pControl, SvStorageStream* pS, ContainerRecord& rec );
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+ sal_uInt32 fUnknown1;
+
+ sal_uInt8 fUnknown2:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown3:4;
+
+ sal_uInt8 fUnknown4:8;
+
+ sal_uInt8 fUnknown5:7;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown6:4;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fUnknown7:3;
+
+ sal_uInt32 nCaptionLen;
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+ sal_uInt8 nMousePointer;
+ sal_uInt32 nBorderColor;
+ sal_uInt32 fUnknown8;
+ sal_uInt32 fUnknown9;
+ sal_uInt8 nKeepScrollBarsVisible;
+ sal_uInt8 nCycle;
+ sal_uInt16 nBorderStyle;
+ sal_uInt16 nSpecialEffect;
+ sal_uInt16 nPicture;
+ sal_uInt8 nPictureAlignment;
+ sal_uInt8 nPictureSizeMode;
+ bool bPictureTiling;
+ sal_uInt16 nAccelerator;
+ sal_uInt16 nIcon;
+
+ char *pCaption;
+
+ sal_uInt32 nScrollWidth;
+ sal_uInt32 nScrollHeight;
+
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+private:
+ sal_Int32 mnCurrentPageStep;
+};
+
+
+
+class OCX_Page : public OCX_ContainerControl
+{
+public:
+ OCX_Page( SotStorageRef& parentStorage,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer > &rDialog, OCX_Control* parent = NULL);
+ virtual ~OCX_Page()
+ {
+ delete[] pCaption;
+ delete[] pIcon;
+ delete[] pPicture;
+ }
+ virtual sal_Bool Read(SvStorageStream *pS);
+
+ using OCX_ContainerControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer>
+ &rDialog);
+/* virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+*/
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+ sal_uInt32 fUnknown1;
+
+ sal_uInt8 fUnknown2:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown3:4;
+
+ sal_uInt8 fUnknown4:8;
+
+ sal_uInt8 fUnknown5:7;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown6:4;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fUnknown7:3;
+
+ sal_uInt32 nCaptionLen;
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+ sal_uInt8 nMousePointer;
+ sal_uInt32 nBorderColor;
+ sal_uInt32 fUnknown8;
+ sal_uInt32 fUnknown9;
+ sal_uInt8 nKeepScrollBarsVisible;
+ sal_uInt8 nCycle;
+ sal_uInt16 nBorderStyle;
+ sal_uInt16 nSpecialEffect;
+ sal_uInt16 nPicture;
+ sal_uInt8 nPictureAlignment;
+ sal_uInt8 nPictureSizeMode;
+ bool bPictureTiling;
+ sal_uInt16 nAccelerator;
+ sal_uInt16 nIcon;
+
+ char *pCaption;
+
+ sal_uInt32 nScrollWidth;
+ sal_uInt32 nScrollHeight;
+
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+private:
+};
+
+
+class OCX_Frame : public OCX_ContainerControl
+{
+public:
+ OCX_Frame( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer > &rDialog, OCX_Control* pParent = NULL);
+ virtual ~OCX_Frame()
+ {
+ delete[] pCaption;
+ delete[] pIcon;
+ delete[] pPicture;
+ }
+ virtual sal_Bool Read(SvStorageStream *pS);
+
+ using OCX_ContainerControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+ sal_uInt32 fUnknown1;
+
+ sal_uInt8 fUnknown2:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown3:4;
+
+ sal_uInt8 fUnknown4:8;
+
+ sal_uInt8 fUnknown5:7;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown6:4;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fUnknown7:3;
+
+ sal_uInt32 nCaptionLen;
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+ sal_uInt8 nMousePointer;
+ sal_uInt32 nBorderColor;
+ sal_uInt32 fUnknown8;
+ sal_uInt32 fUnknown9;
+ sal_uInt8 nKeepScrollBarsVisible;
+ sal_uInt8 nCycle;
+ sal_uInt16 nBorderStyle;
+ sal_uInt16 nSpecialEffect;
+ sal_uInt16 nPicture;
+ sal_uInt8 nPictureAlignment;
+ sal_uInt8 nPictureSizeMode;
+ bool bPictureTiling;
+ sal_uInt16 nAccelerator;
+ sal_uInt16 nIcon;
+
+ char *pCaption;
+
+ sal_uInt32 nScrollWidth;
+ sal_uInt32 nScrollHeight;
+ sal_uInt32 nScrollLeft;
+ sal_uInt32 nScrollTop;
+
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+private:
+};
+
+class OCX_UserForm : public OCX_ContainerControl
+{
+public:
+ OCX_UserForm( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer > &rDialog,
+ const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory >& rMsf);
+ ~OCX_UserForm()
+ {
+ delete[] pCaption;
+ delete[] pIcon;
+ delete[] pPicture;
+ }
+
+ virtual sal_Bool Read(SvStorageStream *pS);
+
+ using OCX_ContainerControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import( com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer>
+ &rDialog);
+
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+ sal_uInt32 nChildrenA;
+
+ sal_uInt8 fUnknown1:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown2:4;
+
+ sal_uInt8 fUnknown3:8;
+
+ sal_uInt8 fUnknown4:7;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown5:4;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fUnknown6:3;
+
+ sal_uInt32 nCaptionLen;
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+ sal_uInt8 nMousePointer;
+ sal_uInt32 nBorderColor;
+ sal_uInt32 nDrawBuffer;
+ sal_uInt32 nChildrenB;
+ sal_uInt8 nKeepScrollBarsVisible;
+ sal_uInt8 nCycle;
+ sal_uInt16 nBorderStyle;
+ sal_uInt8 nSpecialEffect;
+ sal_uInt16 nPicture;
+ sal_uInt8 nPictureAlignment;
+ sal_uInt8 nPictureSizeMode;
+ bool bPictureTiling;
+ sal_uInt16 nAccelerator;
+ sal_uInt16 nIcon;
+ sal_uInt16 fUnknown7;
+
+ char *pCaption;
+
+ sal_uInt32 nScrollWidth;
+ sal_uInt32 nScrollHeight;
+ sal_uInt32 nScrollLeft;
+ sal_uInt32 nScrollTop;
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+private:
+ com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext> mxCtx;
+};
+
+
+
+class OCX_CheckBox : public OCX_ModernControl
+{
+public:
+ OCX_CheckBox() : OCX_ModernControl(rtl::OUString::createFromAscii("CheckBox")){
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.CheckBox");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlCheckBoxModel");
+ mnBackColor = 0x80000005L;
+ mnForeColor = 0x80000008L;
+ aFontData.SetHasAlign(TRUE);
+ }
+
+ using OCX_ModernControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ static OCX_Control *Create() { return new OCX_CheckBox;}
+};
+
+class OCX_OptionButton : public OCX_ModernControl
+{
+public:
+ OCX_OptionButton() : OCX_ModernControl(rtl::OUString::createFromAscii("OptionButton"))
+ {
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.RadioButton");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlRadioButtonModel");
+ mnBackColor = 0x80000005L;
+ mnForeColor = 0x80000008L;
+ aFontData.SetHasAlign(TRUE);
+ }
+
+ using OCX_ModernControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+
+
+ static OCX_Control *Create() { return new OCX_OptionButton;}
+};
+
+class OCX_TextBox : public OCX_ModernControl
+{
+public:
+ OCX_TextBox() : OCX_ModernControl(rtl::OUString::createFromAscii("TextBox")) {
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.TextField");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlEditModel");
+ mnBackColor = 0x80000005L;
+ mnForeColor = 0x80000008L;
+ nBorderColor = 0x80000006L;
+ aFontData.SetHasAlign(TRUE);
+ }
+
+ using OCX_ModernControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ static OCX_Control *Create() { return new OCX_TextBox;}
+};
+
+class OCX_FieldControl: public OCX_ModernControl
+{
+public:
+ OCX_FieldControl() : OCX_ModernControl(rtl::OUString::createFromAscii("TextBox")) {
+ mnBackColor = 0x80000005L;
+ mnForeColor = 0x80000008L;
+ nBorderColor = 0x80000006L;
+ }
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ static OCX_Control *Create() { return new OCX_FieldControl;}
+};
+
+
+class OCX_ToggleButton : public OCX_ModernControl
+{
+public:
+ OCX_ToggleButton() : OCX_ModernControl(rtl::OUString::createFromAscii("ToggleButton")) {
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.CommandButton");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlButtonModel");
+
+ mnBackColor = 0x8000000F;
+ mnForeColor = 0x80000012;
+ aFontData.SetHasAlign(TRUE);
+ aFontData.nJustification = 3; // centered by default
+ }
+ static OCX_Control *Create() { return new OCX_ToggleButton;}
+
+ using OCX_ModernControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ sal_Bool Export(SvStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SvStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+};
+
+class OCX_ComboBox : public OCX_ModernControl
+{
+public:
+ OCX_ComboBox() : OCX_ModernControl(rtl::OUString::createFromAscii("ComboBox")){
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.ComboBox");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlComboBoxModel");
+ mnBackColor = 0x80000005;
+ mnForeColor = 0x80000008;
+ nBorderColor = 0x80000006;
+ aFontData.SetHasAlign(TRUE);
+ }
+ static OCX_Control *Create() { return new OCX_ComboBox;}
+ using OCX_ModernControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+};
+
+class OCX_ListBox : public OCX_ModernControl
+{
+public:
+ OCX_ListBox() : OCX_ModernControl(rtl::OUString::createFromAscii("ListBox")){
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.ListBox");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlListBoxModel");
+ mnBackColor = 0x80000005;
+ mnForeColor = 0x80000008;
+ nBorderColor = 0x80000006;
+ aFontData.SetHasAlign(TRUE);
+ }
+ static OCX_Control *Create() { return new OCX_ListBox;}
+ using OCX_ModernControl::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+
+};
+
+class OCX_CommandButton : public OCX_Control
+{
+public:
+ OCX_CommandButton() : OCX_Control(String::CreateFromAscii("CommandButton")),
+ fEnabled(1), fLocked(0), fBackStyle(1), fWordWrap(0), fAutoSize(0),
+ nCaptionLen(0), nVertPos(1), nHorzPos(7), nMousePointer(0), nPicture(0),
+ nAccelerator(0), nIcon(0), pCaption(0), nIconLen(0), pIcon(0), nPictureLen(0),
+ pPicture(0), mbTakeFocus( true )
+ {
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.CommandButton");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlButtonModel");
+ mnForeColor = 0x80000012L;
+ mnBackColor = 0x8000000FL;
+ }
+
+ ~OCX_CommandButton() {
+ if (pCaption) delete[] pCaption;
+ if (pIcon) delete[] pIcon;
+ if (pPicture) delete[] pPicture;
+ }
+ sal_Bool Read(SotStorageStream *pS);
+
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+
+ sal_uInt8 fUnknown1:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown2:4;
+
+ sal_uInt8 fUnknown3:8;
+
+ sal_uInt8 fUnknown4:7;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown5:4;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fUnknown6:3;
+
+ sal_uInt32 nCaptionLen;
+
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+
+ sal_uInt16 nMousePointer;
+ sal_uInt16 nPicture;
+ sal_uInt16 nAccelerator;
+ sal_uInt16 nIcon;
+
+ char *pCaption;
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+
+ bool mbTakeFocus;
+
+ static OCX_Control *Create() { return new OCX_CommandButton;}
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+
+};
+
+class OCX_ImageButton: public OCX_CommandButton
+{
+public:
+ OCX_ImageButton() {
+ aFontData.SetHasAlign(FALSE);
+ aFontData.SetHasFont(FALSE);
+ }
+ static OCX_Control *Create() { return new OCX_ImageButton;}
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+
+};
+
+class OCX_GroupBox: public OCX_Control
+{
+public:
+ OCX_GroupBox() : OCX_Control(String::CreateFromAscii("GroupBox")) {}
+ static OCX_Control *Create() { return new OCX_GroupBox;}
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+
+};
+
+class OCX_Label : public OCX_Control
+{
+public:
+ OCX_Label(OCX_Control* pParent = NULL ) : OCX_Control(rtl::OUString::createFromAscii("Label"), pParent ), fEnabled(1),
+ fLocked(0),fBackStyle(1),fWordWrap(1),
+ fAutoSize(0),nCaptionLen(0),nVertPos(1),nHorzPos(7),nMousePointer(0),
+ nBorderColor(0x80000006),nBorderStyle(0),nSpecialEffect(0),
+ nPicture(0),nAccelerator(0),nIcon(0),pCaption(0),nIconLen(0),pIcon(0),
+ nPictureLen(0),pPicture(0)
+ {
+ msFormType = rtl::OUString::createFromAscii("com.sun.star.form.component.FixedText");
+ msDialogType = rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedTextModel");
+ mnForeColor = 0x80000008;
+ mnBackColor = 0x80000005;
+ aFontData.SetHasAlign(TRUE);
+ }
+
+ ~OCX_Label() {
+ if (pCaption) delete[] pCaption;
+ if (pIcon) delete[] pIcon;
+ if (pPicture) delete[] pPicture;
+ }
+ sal_Bool Read(SotStorageStream *pS);
+
+ /*sal_uInt8 for sal_uInt8 Word Struct*/
+ sal_uInt16 nIdentifier;
+ sal_uInt16 nFixedAreaLen;
+ sal_uInt8 pBlockFlags[4];
+
+
+ sal_uInt8 fUnknown1:1;
+ sal_uInt8 fEnabled:1;
+ sal_uInt8 fLocked:1;
+ sal_uInt8 fBackStyle:1;
+ sal_uInt8 fUnknown2:4;
+
+ sal_uInt8 fUnknown3:8;
+
+ sal_uInt8 fUnknown4:7;
+ sal_uInt8 fWordWrap:1;
+
+ sal_uInt8 fUnknown5:4;
+ sal_uInt8 fAutoSize:1;
+ sal_uInt8 fUnknown6:3;
+
+ sal_uInt32 nCaptionLen;
+ sal_uInt16 nVertPos;
+ sal_uInt16 nHorzPos;
+ sal_uInt8 nMousePointer;
+ sal_uInt32 nBorderColor;
+ sal_uInt16 nBorderStyle;
+ sal_uInt16 nSpecialEffect;
+ sal_uInt16 nPicture;
+ sal_uInt16 nAccelerator;
+ sal_uInt16 nIcon;
+
+ char *pCaption;
+
+ sal_uInt8 pIconHeader[20];
+ sal_uInt32 nIconLen;
+ sal_uInt8 *pIcon;
+
+ sal_uInt8 pPictureHeader[20];
+ sal_uInt32 nPictureLen;
+ sal_uInt8 *pPicture;
+
+ static OCX_Control *Create() { return new OCX_Label;}
+
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+
+ sal_Bool Export(SotStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+ sal_Bool WriteContents(SotStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize);
+
+};
+
+
+class OCX_ProgressBar : public OCX_Control
+{
+public:
+ explicit OCX_ProgressBar();
+
+ static OCX_Control* Create();
+
+ virtual sal_Bool Read( SvStorageStream *pS );
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ // No Font record
+ virtual sal_Bool ReadFontData(SvStorageStream* /*pS*/) { return sal_True; }
+private:
+ sal_Int32 nMin;
+ sal_Int32 nMax;
+ bool bFixedSingle;
+ bool bEnabled;
+ bool b3d;
+};
+
+class OCX_SpinButton : public OCX_Control
+{
+public:
+ explicit OCX_SpinButton();
+
+ static OCX_Control* Create();
+
+ virtual sal_Bool Read( SvStorageStream *pS );
+
+ virtual sal_Bool ReadFontData( SvStorageStream *pS );
+
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+ //Export exports a control as an OLE style storage stream tree
+ virtual sal_Bool Export( SvStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize );
+
+ //WriteContents writes the contents of a contents stream, for
+ //the Excel export you cannot use Export, only WriteContents instead
+ virtual sal_Bool WriteContents( SvStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize );
+
+protected:
+ void UpdateInt32Property(
+ sal_Int32& rnCoreValue, sal_Int32 nNewValue,
+ sal_Int32 nBlockFlag );
+
+ void GetInt32Property(
+ sal_Int32& rnCoreValue,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet >& rxPropSet,
+ const rtl::OUString& rPropName,
+ sal_Int32 nBlockFlag );
+
+ void UpdateBoolProperty(
+ bool& rbCoreValue, bool bNewValue,
+ sal_Int32 nBlockFlag );
+
+ void GetBoolProperty(
+ bool& rbCoreValue,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet >& rxPropSet,
+ const rtl::OUString& rPropName,
+ sal_Int32 nBlockFlag );
+
+ /** Writes the data from own members to stream. */
+ sal_Bool WriteData( SvStream& rStrm ) const;
+
+ sal_Int32 mnBlockFlags;
+ sal_Int32 mnValue;
+ sal_Int32 mnMin;
+ sal_Int32 mnMax;
+ sal_Int32 mnSmallStep;
+ sal_Int32 mnPageStep;
+ sal_Int32 mnOrient;
+ sal_Int32 mnDelay;
+ bool mbEnabled;
+ bool mbLocked;
+ bool mbPropThumb;
+};
+
+class OCX_ScrollBar : public OCX_SpinButton
+{
+public:
+ explicit OCX_ScrollBar();
+
+ static OCX_Control* Create();
+
+ using OCX_Control::Import; // to not hide the other two import methods
+ virtual sal_Bool Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet);
+
+ //Export exports a control as an OLE style storage stream tree
+ virtual sal_Bool Export( SvStorageRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize );
+
+ //WriteContents writes the contents of a contents stream, for
+ //the Excel export you cannot use Export, only WriteContents instead
+ virtual sal_Bool WriteContents( SvStorageStreamRef &rObj,
+ const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet,
+ const com::sun::star::awt::Size& rSize );
+};
+
+#endif
diff --git a/filter/inc/filter/msfilter/msoleexp.hxx b/filter/inc/filter/msfilter/msoleexp.hxx
new file mode 100644
index 000000000000..3cdbab6a9235
--- /dev/null
+++ b/filter/inc/filter/msfilter/msoleexp.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * 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 _MSOLEEXP_HXX
+#define _MSOLEEXP_HXX
+
+#include <com/sun/star/uno/Reference.h>
+#include "filter/msfilter/msfilterdllapi.h"
+
+// for the CreateSdrOLEFromStorage we need the information, how we handle
+// convert able OLE-Objects - this ist stored in
+#define OLE_STARMATH_2_MATHTYPE 0x0001
+#define OLE_STARWRITER_2_WINWORD 0x0002
+#define OLE_STARCALC_2_EXCEL 0x0004
+#define OLE_STARIMPRESS_2_POWERPOINT 0x0008
+
+class SotStorage;
+
+#include <svtools/embedhlp.hxx>
+
+class MSFILTER_DLLPUBLIC SvxMSExportOLEObjects
+{
+ UINT32 nConvertFlags;
+public:
+ SvxMSExportOLEObjects( UINT32 nCnvrtFlgs ) : nConvertFlags(nCnvrtFlgs) {}
+
+ void SetFlags( UINT32 n ) { nConvertFlags = n; }
+ UINT32 GetFlags() const { return nConvertFlags; }
+
+ void ExportOLEObject( svt::EmbeddedObjectRef& rObj, SotStorage& rDestStg );
+ void ExportOLEObject( const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject>& rObj, SotStorage& rDestStg );
+};
+
+
+
+#endif
+
diff --git a/filter/inc/filter/msfilter/svdfppt.hxx b/filter/inc/filter/msfilter/svdfppt.hxx
new file mode 100644
index 000000000000..796ecc18cd3a
--- /dev/null
+++ b/filter/inc/filter/msfilter/svdfppt.hxx
@@ -0,0 +1,1440 @@
+/*************************************************************************
+ *
+ * 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 _SVDFPPT_HXX
+#define _SVDFPPT_HXX
+
+#ifndef SVX_LIGHT
+
+#include <tools/solar.h>
+#include <svl/svarray.hxx>
+#include <tools/string.hxx>
+#include <tools/gen.hxx>
+#include <tools/color.hxx>
+#include <svx/svdobj.hxx>
+#include <editeng/numitem.hxx>
+#include <editeng/editdata.hxx>
+#include <filter/msfilter/msdffimp.hxx> // Escher-Grafikimport
+#include <filter/msfilter/msocximex.hxx>
+#include <filter/msfilter/msfiltertracer.hxx>
+#include <editeng/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <editeng/flditem.hxx>
+#undef ITEMID_FIELD
+#include "filter/msfilter/msfilterdllapi.h"
+#include <vcl/font.hxx>
+#include <vector>
+#include <boost/optional.hpp>
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SdrModel;
+class SdPage;
+class SdrPage;
+class SdrObject;
+class SvStream;
+class Polygon;
+class PolyPolygon;
+class SfxItemSet;
+class Outliner;
+class Graphic;
+class SvxMSDffManager;
+class PptTextMetaCharList;
+class PPTTextObj;
+class DffRecordHeader;
+struct PptCharAttrSet;
+class SvxBulletItem;
+
+#define PPT_IMPORTFLAGS_NO_TEXT_ASSERT 1
+
+struct MSFILTER_DLLPUBLIC PptCurrentUserAtom
+{
+ sal_uInt32 nMagic;
+ sal_uInt32 nCurrentUserEdit;
+ sal_uInt16 nDocFileVersion;
+ sal_uInt8 nMajorVersion;
+ sal_uInt8 nMinorVersion;
+ String aCurrentUser;
+
+public:
+
+ PptCurrentUserAtom() : nMagic ( 0 ),
+ nCurrentUserEdit ( 0 ),
+ nDocFileVersion ( 0 ),
+ nMajorVersion ( 0 ),
+ nMinorVersion ( 0 ) {}
+
+ MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptCurrentUserAtom& rAtom );
+};
+
+struct MSFILTER_DLLPUBLIC PowerPointImportParam
+{
+ SvStream& rDocStream;
+ sal_uInt32 nImportFlags;
+ MSFilterTracer* pTracer;
+ PptCurrentUserAtom aCurrentUserAtom;
+
+ PowerPointImportParam( SvStream& rDocStream, sal_uInt32 nImportFlags, MSFilterTracer* pTracer );
+};
+
+struct SdHyperlinkEntry
+{
+ sal_uInt32 nIndex;
+ sal_Int32 nPrivate1;
+ sal_Int32 nPrivate2;
+ sal_Int32 nPrivate3;
+ sal_Int32 nInfo;
+ String aTarget;
+ String aSubAdress;
+
+ sal_Int32 nStartPos;
+ sal_Int32 nEndPos;
+
+ String aConvSubString;
+ ESelection aESelection;
+ sal_Bool bSelection;
+};
+
+// Hilfsklasse zum Einlesen der PPT InteractiveInfoAtom
+struct MSFILTER_DLLPUBLIC PptInteractiveInfoAtom
+{
+ UINT32 nSoundRef;
+ UINT32 nExHyperlinkId;
+ UINT8 nAction;
+ UINT8 nOleVerb;
+ UINT8 nJump;
+ UINT8 nFlags;
+ UINT8 nHyperlinkType;
+
+ // unknown, da Gesamtgroesse 16 ist
+ UINT8 nUnknown1;
+ UINT8 nUnknown2;
+ UINT8 nUnknown3;
+
+public:
+
+ MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptInteractiveInfoAtom& rAtom );
+};
+
+enum PptPageKind { PPT_MASTERPAGE, PPT_SLIDEPAGE, PPT_NOTEPAGE };
+
+enum PptPageFormat
+{ PPTPF_SCREEN, //
+ PPTPF_USLETTER, // 8.5x11"
+ PPTPF_A4, // 210x297mm
+ PPTPF_35MMDIA, // DIA
+ PPTPF_OVERHEAD, //
+ PPTPF_CUSTOM
+};
+
+// Werte fuer den ULONG im PPT_PST_TextHeaderAtom
+enum PPT_TextHeader
+{
+ PPTTH_TITLE,
+ PPTTH_BODY,
+ PPTTH_NOTES,
+ PPTTH_NOTUSED,
+ PPTTH_OTHER, // Text in a Shape
+ PPTTH_CENTERBODY, // Subtitle in Title-Slide
+ PPTTH_CENTERTITLE, // Title in Title-Slide
+ PPTTH_HALFBODY, // Body in two-column slide
+ PPTTH_QUARTERBODY // Body in four-body slide
+};
+
+#define TSS_TYPE_PAGETITLE (0)
+#define TSS_TYPE_BODY (1)
+#define TSS_TYPE_NOTES (2)
+#define TSS_TYPE_UNUSED (3)
+#define TSS_TYPE_TEXT_IN_SHAPE (4)
+#define TSS_TYPE_SUBTITLE (5)
+#define TSS_TYPE_TITLE (6)
+#define TSS_TYPE_HALFBODY (7)
+#define TSS_TYPE_QUARTERBODY (8)
+
+// Inventor-Id fuer PPT UserData
+const UINT32 PPTInventor =UINT32('P')*0x00000001+
+ UINT32('P')*0x00000100+
+ UINT32('T')*0x00010000+
+ UINT32('0')*0x01000000;
+
+// Object-Ids fuer StarDraw UserData
+#define PPT_OBJECTINFO_ID (1)
+
+struct MSFILTER_DLLPUBLIC PptDocumentAtom
+{
+ Size aSlidesPageSize; // Seitengroesse der Slides in 576DPI
+ Size aNotesPageSize; // Seitengroesse der Notes in 576DPI
+ // RatioAtom erstmal weggelassen
+ UINT32 nNotesMasterPersist; // 0=nicht vorhanden
+ UINT32 nHandoutMasterPersist; // 0=nicht vorhanden
+ UINT16 n1stPageNumber; // Seitennummer des ersten Slides
+ PptPageFormat eSlidesPageFormat; // Seitenformat der Slides
+ sal_Bool bEmbeddedTrueType : 1; // TrueType direkt im File?
+ sal_Bool bTitlePlaceholdersOmitted : 1;
+ sal_Bool bRightToLeft : 1;
+ sal_Bool bShowComments : 1;
+
+public:
+
+ Size GetPageSize( const Size& rSiz ) const;
+ Size GetSlidesPageSize() const { return GetPageSize( aSlidesPageSize ); }
+ Size GetNotesPageSize() const { return GetPageSize( aNotesPageSize ); }
+
+ friend SvStream& operator>>( SvStream& rIn, PptDocumentAtom& rAtom );
+};
+
+struct PptSlideLayoutAtom
+{
+ INT32 eLayout; // 0..18
+ BYTE aPlaceholderId[ 8 ];
+ ULONG aPlacementId[ 8 ];
+
+public:
+
+ PptSlideLayoutAtom() { Clear(); }
+ void Clear();
+
+ // Das SlideLayoutAtom wird ohne Header eingelesen!
+ friend SvStream& operator>>( SvStream& rIn, PptSlideLayoutAtom& rAtom );
+};
+
+struct PptSlideAtom
+{
+ PptSlideLayoutAtom aLayout;
+ UINT32 nMasterId;
+ UINT32 nNotesId;
+ UINT16 nFlags;
+
+public:
+
+ PptSlideAtom() { Clear(); }
+ void Clear();
+
+ friend SvStream& operator>>(SvStream& rIn, PptSlideAtom& rAtom);
+};
+
+struct PptSlidePersistAtom
+{
+ UINT32 nPsrReference;
+ UINT32 nFlags;
+ UINT32 nNumberTexts;
+ UINT32 nSlideId;
+ UINT32 nReserved; // we will use nReserved temporarly to set the offset to SSSlideInfoAtom ( if possible )
+
+public:
+
+ PptSlidePersistAtom() { Clear(); }
+ void Clear();
+
+ friend SvStream& operator>>(SvStream& rIn, PptSlidePersistAtom& rAtom);
+};
+
+struct PptNotesAtom
+{
+ UINT32 nSlideId;
+ UINT16 nFlags;
+
+public:
+
+ PptNotesAtom() { Clear(); }
+ void Clear();
+
+ friend SvStream& operator>>(SvStream& rIn, PptNotesAtom& rAtom);
+};
+
+struct PptColorSchemeAtom
+{
+ BYTE aData[32];
+
+public:
+ PptColorSchemeAtom () { Clear(); }
+ void Clear();
+ Color GetColor( USHORT nNum ) const;
+
+ friend SvStream& operator>>(SvStream& rIn, PptColorSchemeAtom& rAtom);
+};
+
+struct PptFontEntityAtom
+{
+ String aName;
+ double fScaling;
+ sal_uInt8 lfClipPrecision;
+ sal_uInt8 lfQuality;
+
+ sal_uInt32 nUniqueFontId; // not used anymore
+ CharSet eCharSet;
+ FontFamily eFamily;
+ FontPitch ePitch;
+ sal_Bool bAvailable;
+
+ friend SvStream& operator>>(SvStream& rIn, PptFontEntityAtom& rAtom);
+};
+
+class PptFontCollection;
+struct PptUserEditAtom
+{
+ DffRecordHeader aHd;
+ INT32 nLastSlideID; // ID of last visible slide
+ UINT32 nVersion; // This is major/minor/build which did the edit
+ UINT32 nOffsetLastEdit; // File offset of prev PptUserEditAtom
+ UINT32 nOffsetPersistDirectory; // Offset to PersistPtrs for this file version.
+ UINT32 nDocumentRef;
+ UINT32 nMaxPersistWritten; // Gesamtanzahl der Persisteintraege bis hierher.
+ INT16 eLastViewType; // enum view type
+
+public:
+
+ PptUserEditAtom() : nOffsetPersistDirectory( 0 ) {}
+
+ friend SvStream& operator>>( SvStream& rIn, PptUserEditAtom& rAtom );
+};
+
+struct PptOEPlaceholderAtom
+{
+ UINT32 nPlacementId;
+ BYTE nPlaceholderId;
+ BYTE nPlaceholderSize; // 0=Full size, 1=Half size, 2=Quarter of Slide
+
+public:
+
+ PptOEPlaceholderAtom() { Clear(); }
+ void Clear();
+
+ friend SvStream& operator>>( SvStream& rIn, PptOEPlaceholderAtom& rAtom );
+};
+
+struct ProcessData;
+struct PPTStyleSheet;
+struct HeaderFooterEntry;
+struct PptSlidePersistEntry
+{
+ PptSlidePersistAtom aPersistAtom;
+ PptSlideAtom aSlideAtom;
+ PptNotesAtom aNotesAtom;
+ PptColorSchemeAtom aColorScheme; // each slide includes this colorscheme atom
+ PPTStyleSheet* pStyleSheet; // stylesheet of this page ( only in masterpages ), since XP supports more than one masterpage
+
+ sal_uInt32 HeaderFooterOfs[ 4 ]; // containing the ofs to the placeholder (only masterpage)
+ HeaderFooterEntry* pHeaderFooterEntry;
+ SvxMSDffSolverContainer* pSolverContainer;
+ sal_uInt32 nSlidePersistStartOffset;// is an array to the end of the SlidePersistAtom of this page, TextHeaderAtom is following
+ sal_uInt32 nSlidePersistEndOffset;
+ sal_uInt32 nBackgroundOffset; // fileoffset
+ sal_uInt32 nDrawingDgId; // valid, if not -1
+ sal_uInt32* pPresentationObjects; // if valid, this is a pointer to an array that includes the offsets to the presentation objects
+ // on this masterpage for each instance ( 0 - 8 );
+ SdrObject* pBObj;
+ sal_Bool bBObjIsTemporary;
+
+ void* pDummy2;
+ PptPageKind ePageKind; //
+
+ sal_Bool bNotesMaster : 1; // fuer NotesMaster
+ sal_Bool bHandoutMaster : 1; // fuer HandoutMaster
+ sal_Bool bStarDrawFiller : 1; // speziell fuer StarDraw
+public:
+ PptSlidePersistEntry();
+ ~PptSlidePersistEntry();
+ UINT32 GetSlideId() const { return aPersistAtom.nSlideId; }
+};
+
+SV_DECL_PTRARR_DEL(_PptSlidePersistList,PptSlidePersistEntry*,16,16)
+
+#define PPTSLIDEPERSIST_ENTRY_NOTFOUND 0xFFFF
+
+class MSFILTER_DLLPUBLIC PptSlidePersistList: public _PptSlidePersistList
+{
+
+ public:
+
+ USHORT FindPage( UINT32 nId ) const;
+};
+
+class SfxObjectShell;
+struct PPTOleEntry
+{
+ sal_uInt32 nId; // OleId
+ sal_uInt32 nPersistPtr; // PersistPtr
+ sal_uInt32 nRecHdOfs; // points to the record header: ExObjListHd
+ SfxObjectShell* pShell;
+ sal_uInt16 nType; // maybe PPT_PST_ExEmbed or PPT_PST_ExControl
+ sal_uInt32 nAspect; // the aspect of the OLE object
+
+ PPTOleEntry( sal_uInt32 nid, sal_uInt32 nOfs, SfxObjectShell* pSh, sal_uInt16 nT, sal_uInt32 nAsp ) :
+ nId ( nid ),
+ nRecHdOfs ( nOfs ),
+ pShell ( pSh ),
+ nType ( nT ),
+ nAspect ( nAsp ) {}
+};
+
+struct PptExOleObjAtom
+{
+ UINT32 nAspect;
+ UINT32 nDummy1;
+ UINT32 nId;
+ UINT32 nDummy2;
+ UINT32 nPersistPtr;
+ UINT32 nDummy4;
+
+public:
+
+ friend SvStream& operator>>( SvStream& rIn, PptExOleObjAtom& rAtom );
+};
+
+class PPTExtParaProv;
+class MSFILTER_DLLPUBLIC SdrEscherImport : public SvxMSDffManager
+{
+
+protected:
+
+ friend class PPTTextObj;
+ friend class PPTPortionObj;
+ friend struct PPTStyleTextPropReader;
+ friend class ImplSdPPTImport;
+
+ PptDocumentAtom aDocAtom;
+ DffRecordManager aDocRecManager; // contains all first level container and atoms of the document container
+
+ List aHFMasterList;
+ List aOleObjectList; // contains PPTOleEntrys
+
+ PptFontCollection* pFonts;
+
+ sal_uInt32 nStreamLen;
+ sal_uInt16 nTextStylesIndex;
+
+ CharSet eCharSetSystem;
+
+ sal_Bool bWingdingsChecked : 1;
+ sal_Bool bWingdingsAvailable : 1;
+ sal_Bool bMonotypeSortsChecked : 1;
+ sal_Bool bMonotypeSortsAvailable : 1;
+ sal_Bool bTimesNewRomanChecked : 1;
+ sal_Bool bTimesNewRomanAvailable : 1;
+
+ sal_Bool ReadString( String& rStr ) const;
+ // nur fuer PowerPoint-Filter:
+ virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const;
+ void CheckWingdings() const;
+ void CheckMonotypeSorts() const;
+ void CheckTimesNewRoman() const;
+
+public:
+
+ PowerPointImportParam& rImportParam;
+
+ void* pSdrEscherDummy1;
+ void* pSdrEscherDummy2;
+ void* pSdrEscherDummy3;
+ void* pSdrEscherDummy4;
+
+ SdrEscherImport( PowerPointImportParam&, const String& rBaseURL );
+ virtual ~SdrEscherImport();
+ virtual FASTBOOL GetColorFromPalette( USHORT nNum, Color& rColor ) const;
+ virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const;
+ PptFontEntityAtom* GetFontEnityAtom( UINT32 nNum ) const;
+ CharSet GetCharSet( UINT32 nNum ) const;
+ BOOL IsFontAvailable( UINT32 nNum ) const;
+ void RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic& rGraph );
+ using SvxMSDffManager::ReadObjText;
+ virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const;
+ virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj );
+ virtual void ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* pData, DffObjData& rObj );
+ void ImportHeaderFooterContainer( DffRecordHeader& rHeader, HeaderFooterEntry& rEntry );
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define SD_HEADERFOOTER_DATE 1
+#define SD_HEADERFOOTER_TODAYDATE 2
+#define SD_HEADERFOOTER_USERDATE 4
+#define SD_HEADERFOOTER_SLIDENUMBER 8
+#define SD_HEADERFOOTER_HEADER 16
+#define SD_HEADERFOOTER_FOOTER 32
+
+class SvxFieldItem;
+struct MSFILTER_DLLPUBLIC PPTFieldEntry
+{
+ UINT16 nPos;
+ UINT16 nTextRangeEnd;
+ SvxFieldItem* pField1;
+ SvxFieldItem* pField2;
+ String* pString;
+
+ PPTFieldEntry() : nPos( 0 ), nTextRangeEnd( 0 ), pField1( NULL ), pField2( NULL ), pString( NULL ) {};
+ ~PPTFieldEntry();
+
+ void SetDateTime( UINT32 nType );
+
+ // converting PPT date time format:
+ static void GetDateTime( const sal_uInt32 nVal, SvxDateFormat& eDateFormat, SvxTimeFormat& eTimeFormat );
+};
+
+struct MSFILTER_DLLPUBLIC HeaderFooterEntry
+{
+ const PptSlidePersistEntry* pMasterPersist;
+ String pPlaceholder[ 4 ];
+ sal_uInt32 nAtom;
+
+ sal_uInt32 GetMaskForInstance( UINT32 nInstance );
+ sal_uInt32 IsToDisplay( UINT32 nInstance );
+ sal_uInt32 NeedToImportInstance( const sal_uInt32 nInstance, const PptSlidePersistEntry& rSlidePersist );
+
+ HeaderFooterEntry( const PptSlidePersistEntry* pMaster = NULL );
+ ~HeaderFooterEntry();
+};
+
+struct ProcessData
+{
+ PptSlidePersistEntry& rPersistEntry;
+ SdPage* pPage;
+ List* pBackgroundColoredObjects;
+ sal_uInt32* pTableRowProperties;
+
+ ProcessData( PptSlidePersistEntry& rP, SdPage* pP ) :
+ rPersistEntry ( rP ),
+ pPage ( pP ),
+ pBackgroundColoredObjects ( NULL ),
+ pTableRowProperties ( NULL ) {};
+ ~ProcessData() { delete pBackgroundColoredObjects; delete[] pTableRowProperties; };
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SdrTextObj;
+class SfxObjectShell;
+class MSFILTER_DLLPUBLIC SdrPowerPointImport : public SdrEscherImport
+{
+
+protected:
+
+ friend class PPTTextObj;
+ friend class PPTExtParaProv;
+ friend struct PPTStyleSheet;
+ friend class PPTNumberFormatCreator;
+
+ BOOL bOk;
+ PptUserEditAtom aUserEditAtom;
+ PptColorSchemeAtom aPageColors;
+ List aHyperList;
+ UINT32* pPersistPtr;
+ ULONG nPersistPtrAnz;
+
+ const PPTStyleSheet* pPPTStyleSheet; // this is the current stylesheet;
+ const PPTStyleSheet* pDefaultSheet; // this is a sheet we are using if no masterpage can be found, but that should
+ // never happen just preventing a crash
+ PptSlidePersistList* pMasterPages;
+ PptSlidePersistList* pSlidePages;
+ PptSlidePersistList* pNotePages;
+ USHORT nAktPageNum;
+ ULONG nDocStreamPos;
+ USHORT nPageColorsNum;
+ PptPageKind ePageColorsKind;
+ PptPageKind eAktPageKind;
+
+protected:
+
+ sal_Bool SeekToAktPage(DffRecordHeader* pRecHd=NULL) const;
+ sal_Bool SeekToDocument(DffRecordHeader* pRecHd=NULL) const;
+ sal_Bool SeekToContentOfProgTag( sal_Int32 nVersion, SvStream& rSt, const DffRecordHeader& rProgTagBinaryDataHd,
+ DffRecordHeader& rContentHd );
+ virtual SdrObject* ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pText, SdPage* pPage, SfxStyleSheet*, SfxStyleSheet** ) const;
+ using SdrEscherImport::ReadObjText;
+ virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const;
+ // --> OD 2004-12-14 #i32596# - new parameter <_nCalledByGroup>, which
+ // indicates, if the OLE object is imported inside a group object.
+ virtual SdrObject* ImportOLE( long nOLEId,
+ const Graphic& rGraf,
+ const Rectangle& rBoundRect,
+ const Rectangle& rVisArea,
+ const int _nCalledByGroup,
+ sal_Int64 nAspect ) const;
+ // <--
+ SvMemoryStream* ImportExOleObjStg( UINT32 nPersistPtr, UINT32& nOleId ) const;
+ SdrPage* MakeBlancPage(sal_Bool bMaster) const;
+ sal_Bool ReadFontCollection();
+ sal_Bool ForceFontCollection() const { return pFonts!=NULL?TRUE:((SdrPowerPointImport*)this)->ReadFontCollection(); }
+ PptSlidePersistList* GetPageList(PptPageKind ePageKind) const;
+ UINT32 GetAktPageId();
+ UINT32 GetMasterPageId(USHORT nPageNum, PptPageKind ePageKind) const;
+ UINT32 GetNotesPageId(USHORT nPageNum ) const;
+ SdrOutliner* GetDrawOutliner( SdrTextObj* pSdrText ) const;
+ void SeekOle( SfxObjectShell* pShell, sal_uInt32 nFilterOptions );
+
+public:
+ SdrPowerPointImport( PowerPointImportParam&, const String& rBaseURL );
+ virtual ~SdrPowerPointImport();
+ USHORT GetPageCount( PptPageKind eKind = PPT_SLIDEPAGE ) const;
+ void SetPageNum( USHORT nPageNum, PptPageKind = PPT_SLIDEPAGE );
+ USHORT GetPageNum() const { return nAktPageNum; }
+ PptPageKind GetPageKind() const { return eAktPageKind; }
+ Size GetPageSize() const;
+ SdrObject* ImportPageBackgroundObject( const SdrPage& rPage, sal_uInt32& nBgFileOffset, sal_Bool bForce );
+ sal_Bool IsNoteOrHandout( USHORT nPageNum, PptPageKind ePageKind ) const;
+ sal_Bool HasMasterPage( USHORT nPageNum, PptPageKind ePageKind = PPT_SLIDEPAGE ) const;
+ USHORT GetMasterPageIndex( USHORT nPageNum, PptPageKind ePageKind = PPT_SLIDEPAGE ) const;
+
+ void ImportPage( SdrPage* pPage, const PptSlidePersistEntry* pMasterPersist = NULL );
+ virtual FASTBOOL GetColorFromPalette(USHORT nNum, Color& rColor) const;
+ virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const;
+ sal_Unicode PPTSubstitute( UINT16 nFont, sal_Unicode nChar,
+ UINT32& nMappedFontId, Font& rFont, char nDefault ) const;
+ const PptDocumentAtom& GetDocumentAtom() const { return aDocAtom; }
+ virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const;
+ SdrObject* CreateTable( SdrObject* pGroupObject, sal_uInt32* pTableArry, SvxMSDffSolverContainer* );
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+struct PPTTextCharacterStyleAtomInterpreter
+{
+ sal_uInt16 nFlags1;
+ sal_uInt16 nFlags2;
+ sal_uInt16 nFlags3;
+ sal_Int32 n1;
+ sal_uInt16 nFontHeight;
+ sal_Int32 nFontColor;
+
+ PPTTextCharacterStyleAtomInterpreter();
+ ~PPTTextCharacterStyleAtomInterpreter();
+
+ sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd );
+
+ sal_uInt32 GetColor( sal_uInt32 nDefault );
+};
+
+struct PPTTextParagraphStyleAtomInterpreter
+{
+ sal_Bool bValid;
+ sal_Bool bForbiddenRules;
+ sal_Bool bHangingPunctuation;
+ sal_Bool bLatinTextWrap;
+
+ PPTTextParagraphStyleAtomInterpreter();
+ ~PPTTextParagraphStyleAtomInterpreter();
+
+ sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd );
+};
+
+struct PPTTextSpecInfo
+{
+ sal_uInt32 nCharIdx;
+ sal_uInt16 nLanguage[ 3 ];
+ sal_uInt16 nDontKnow;
+
+ PPTTextSpecInfo( sal_uInt32 nCharIdx );
+ ~PPTTextSpecInfo();
+};
+
+struct PPTTextSpecInfoAtomInterpreter
+{
+ sal_Bool bValid;
+ List aList;
+
+ PPTTextSpecInfoAtomInterpreter();
+ ~PPTTextSpecInfoAtomInterpreter();
+
+ sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd,
+ sal_uInt16 nRecordType, const PPTTextSpecInfo* pTextSpecDefault = NULL );
+
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define PPT_STYLESHEETENTRYS 9
+
+struct PPTExtParaLevel
+{
+ sal_uInt32 mnExtParagraphMask;
+ sal_uInt16 mnBuBlip;
+ sal_uInt16 mnHasAnm;
+ sal_uInt32 mnAnmScheme;
+ sal_uInt32 mpfPP10Ext;
+ sal_uInt32 mnExtCharacterMask;
+ sal_uInt32 mcfPP10Ext;
+ sal_Bool mbSet;
+
+ PPTExtParaLevel();
+ friend SvStream& operator>>( SvStream& rIn, PPTExtParaLevel& rL );
+};
+
+struct PPTExtParaSheet
+{
+ PPTExtParaLevel aExtParaLevel[ 5 ];
+};
+
+struct PPTBuGraEntry
+{
+ UINT32 nInstance;
+ Graphic aBuGra;
+
+ PPTBuGraEntry( Graphic& rGraphic, UINT32 nInstance );
+};
+
+class PPTExtParaProv
+{
+ List aBuGraList;
+
+ public :
+ BOOL bStyles;
+ BOOL bGraphics;
+ DffRecordManager aExtendedPresRules;
+
+ PPTExtParaSheet aExtParaSheet[ PPT_STYLESHEETENTRYS ];
+
+ BOOL GetGraphic( UINT32 nInstance, Graphic& rGraphic ) const;
+
+ PPTExtParaProv( SdrPowerPointImport& rManager, SvStream& rSt,
+ const DffRecordHeader* pMainMasterHd );
+ ~PPTExtParaProv();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+struct PPTCharLevel
+{
+ Color mnFontColorInStyleSheet;
+ sal_uInt32 mnFontColor;
+ sal_uInt16 mnFlags;
+ sal_uInt16 mnFont;
+ sal_uInt16 mnAsianOrComplexFont;
+ sal_uInt16 mnFontHeight;
+ sal_uInt16 mnEscapement;
+};
+
+struct PPTCharSheet
+{
+ PPTCharLevel maCharLevel[ 5 ];
+
+ PPTCharSheet( sal_uInt32 nInstance );
+ PPTCharSheet( const PPTCharSheet& rCharSheet );
+
+ void Read( SvStream& rIn, sal_Bool bMasterStyle, sal_uInt32 nLevel, sal_Bool bFirst );
+};
+
+struct PPTParaLevel
+{
+ sal_uInt16 mnBuFlags;
+ sal_uInt16 mnBulletChar;
+ sal_uInt16 mnBulletFont;
+ sal_uInt16 mnBulletHeight;
+ sal_uInt32 mnBulletColor;
+
+ sal_uInt16 mnAdjust;
+ sal_uInt16 mnLineFeed;
+ sal_uInt16 mnUpperDist;
+ sal_uInt16 mnLowerDist;
+ sal_uInt16 mnTextOfs;
+ sal_uInt16 mnBulletOfs;
+ sal_uInt16 mnDefaultTab;
+ sal_uInt16 mnAsianLineBreak; // bit0: use asian rules for first and last character
+ // 1: do not wrap latin text in the middle of the word
+ // 2: allow hanging punctuation
+ sal_uInt16 mnBiDi;
+};
+
+struct PPTParaSheet
+{
+ public:
+
+ PPTParaLevel maParaLevel[ 5 ];
+
+ PPTParaSheet( sal_uInt32 nInstance );
+ PPTParaSheet( const PPTParaSheet& rParaSheet );
+
+ void Read( SdrPowerPointImport& rMan, SvStream& rIn, sal_Bool bMasterStyle,
+ sal_uInt32 nLevel, sal_Bool bFirst );
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class PPTParagraphObj;
+class PPTNumberFormatCreator
+{
+ UINT32 nIsBullet;
+ UINT32 nBulletChar;
+ UINT32 nBulletFont;
+ UINT32 nBulletHeight;
+ UINT32 nBulletColor;
+ UINT32 nTextOfs;
+ UINT32 nBulletOfs;
+
+ void ImplGetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, UINT32 nLevel );
+ BOOL ImplGetExtNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, UINT32 nLevel,
+ UINT32 nInstance, UINT32 nInstanceInSheet, boost::optional< sal_Int16 >& rStartNumbering,
+ UINT32 nFontHeight, PPTParagraphObj* pPara );
+
+ protected :
+
+ PPTNumberFormatCreator( PPTExtParaProv* );
+ ~PPTNumberFormatCreator();
+
+ public :
+
+ PPTExtParaProv* pExtParaProv;
+
+ void GetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, UINT32 nLevel,
+ const PPTParaLevel& rParaLevel, const PPTCharLevel& rCharLevel, UINT32 nInstance );
+
+ BOOL GetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat,
+ PPTParagraphObj* pPara, UINT32 nInstanceInSheet, boost::optional< sal_Int16 >& rStartNumbering );
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SvxNumBulletItem;
+struct PPTStyleSheet : public PPTNumberFormatCreator
+{
+ PPTTextSpecInfo maTxSI;
+ PPTCharSheet* mpCharSheet[ PPT_STYLESHEETENTRYS ];
+ PPTParaSheet* mpParaSheet[ PPT_STYLESHEETENTRYS ];
+ SvxNumBulletItem* mpNumBulletItem[ PPT_STYLESHEETENTRYS ];
+ void* mpDummy;
+
+ PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rSt, SdrPowerPointImport&,
+ const PPTTextCharacterStyleAtomInterpreter&, const PPTTextParagraphStyleAtomInterpreter&, const PPTTextSpecInfo& );
+ ~PPTStyleSheet();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+struct ImplPPTParaPropSet
+{
+ sal_uInt32 mnRefCount;
+
+ sal_uInt16 mnDepth;
+ sal_uInt32 mnAttrSet;
+ sal_uInt32 mnBulletColor;
+ sal_uInt16 mpArry[ 22 ];
+
+ sal_uInt32 mnExtParagraphMask;
+ sal_uInt32 mnAnmScheme;
+ sal_uInt16 mnHasAnm;
+ sal_uInt16 mnBuBlip;
+
+ sal_uInt32 nDontKnow1;
+ sal_uInt32 nDontKnow2;
+ sal_uInt16 nDontKnow2bit06;
+
+ ImplPPTParaPropSet(){ mnRefCount = 1; mnAttrSet = 0; mnExtParagraphMask = 0; mnDepth = 0; };
+};
+
+struct PPTParaPropSet
+{
+ sal_uInt32 mnOriginalTextPos;
+ ImplPPTParaPropSet* pParaSet;
+
+ PPTParaPropSet();
+ PPTParaPropSet( PPTParaPropSet& rParaPropSet );
+ ~PPTParaPropSet();
+
+ PPTParaPropSet& operator=( PPTParaPropSet& rParaPropSet );
+};
+
+struct ImplPPTCharPropSet
+{
+ sal_uInt32 mnRefCount;
+
+ sal_uInt32 mnAttrSet;
+ sal_uInt16 mnFlags;
+ sal_uInt32 mnColor;
+ sal_uInt16 mnFont;
+ sal_uInt16 mnAsianOrComplexFont;
+ sal_uInt16 mnANSITypeface;
+ sal_uInt16 mnFontHeight;
+ sal_uInt16 mnEscapement;
+ sal_uInt16 mnSymbolFont;
+
+ ImplPPTCharPropSet(){ mnRefCount = 1; mnAttrSet = 0; };
+};
+
+struct PPTCharPropSet
+{
+
+ sal_uInt32 mnOriginalTextPos;
+ sal_uInt32 mnParagraph;
+ String maString;
+ SvxFieldItem* mpFieldItem;
+ sal_uInt16 mnLanguage[ 3 ];
+
+ ImplPPTCharPropSet* pCharSet;
+
+ void SetFont( UINT16 nFont );
+ void SetColor( sal_uInt32 nColor );
+
+ PPTCharPropSet( sal_uInt32 nParagraph );
+ PPTCharPropSet( PPTCharPropSet& rCharPropSet );
+ PPTCharPropSet( PPTCharPropSet& rCharPropSet, sal_uInt32 nParagraph );
+ ~PPTCharPropSet();
+
+ PPTCharPropSet& operator=( PPTCharPropSet& rCharPropSet );
+
+ private :
+
+ void ImplMakeUnique();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+struct PPTTabEntry
+{
+ sal_uInt16 nOffset;
+ sal_uInt16 nStyle;
+};
+
+struct PPTRuler
+{
+ UINT32 nRefCount;
+
+ INT32 nFlags;
+ UINT16 nDefaultTab;
+ UINT16 nTextOfs[ 5 ];
+ UINT16 nBulletOfs[ 5 ];
+ PPTTabEntry* pTab;
+ UINT16 nTabCount;
+
+ PPTRuler();
+ ~PPTRuler();
+};
+
+struct PPTTextRulerInterpreter
+{
+ PPTRuler *mpImplRuler;
+
+ PPTTextRulerInterpreter();
+ PPTTextRulerInterpreter( PPTTextRulerInterpreter& rRuler );
+ PPTTextRulerInterpreter( UINT32 nFileOfs, SdrPowerPointImport&, DffRecordHeader& rHd, SvStream& rIn );
+ ~PPTTextRulerInterpreter();
+
+ sal_uInt16 GetTabOffsetByIndex( sal_uInt16 nIndex ) const { return mpImplRuler->pTab[ nIndex ].nOffset; };
+ sal_uInt16 GetTabStyleByIndex( sal_uInt16 nIndex ) const { return mpImplRuler->pTab[ nIndex ].nStyle; };
+ UINT16 GetTabCount() const { return mpImplRuler->nTabCount; };
+ BOOL GetDefaultTab( UINT32 nLevel, UINT16& nValue ) const;
+ BOOL GetTextOfs( UINT32 nLevel, UINT16& nValue ) const;
+ BOOL GetBulletOfs( UINT32 nLevel, UINT16& nValue ) const;
+
+ PPTTextRulerInterpreter& operator=( PPTTextRulerInterpreter& rRuler );
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define PPT_SPEC_NEWLINE 0x10000
+#define PPT_SPEC_SYMBOL 0x20000
+#define PPT_SPEC_USE_STARBATS 0x40000
+
+struct StyleTextProp9
+{
+ sal_uInt32 mnExtParagraphMask;
+ sal_uInt16 mnBuBlip;
+ sal_uInt16 mnHasAnm;
+ sal_uInt32 mnAnmScheme;
+ sal_uInt32 mpfPP10Ext;
+ sal_uInt32 mnExtCharacterMask;
+ sal_uInt32 mncfPP10Ext;
+ sal_uInt32 mnSpecialInfoMask;
+ sal_uInt32 mnPP10Ext;
+ sal_uInt16 mfBidi;
+
+ StyleTextProp9()
+ : mnExtParagraphMask( 0 )
+ , mnBuBlip( 0 )
+ , mnHasAnm( 0 )
+ , mnAnmScheme( 0 )
+ , mpfPP10Ext( 0 )
+ , mnExtCharacterMask( 0 )
+ , mncfPP10Ext( 0 )
+ , mnSpecialInfoMask( 0 )
+ , mnPP10Ext( 0 )
+ , mfBidi( 0 )
+ {
+ }
+ void Read( SvStream& rSt );
+};
+
+struct PPTStyleTextPropReader
+{
+ List aSpecMarkerList; // hiword -> Flags, loword -> Position
+ List aParaPropList;
+ List aCharPropList;
+
+ PPTStyleTextPropReader( SvStream& rIn, SdrPowerPointImport&, const DffRecordHeader& rClientTextBoxHd,
+ PPTTextRulerInterpreter& rInterpreter, const DffRecordHeader& rExtParaHd, sal_uInt32 nTextInstance );
+
+ void Init( SvStream& rIn, SdrPowerPointImport&, const DffRecordHeader& rClientTextBoxHd,
+ PPTTextRulerInterpreter& rInterpreter, const DffRecordHeader& rExtParaHd, sal_uInt32 nTextInstance );
+ void ReadParaProps( SvStream& rIn, SdrPowerPointImport& rMan, const DffRecordHeader& rTextHeader,
+ const String& aString, PPTTextRulerInterpreter& rRuler,
+ sal_uInt32& nCharCount, sal_Bool& bTextPropAtom );
+ void ReadCharProps( SvStream& rIn, PPTCharPropSet& aCharPropSet, const String& aString,
+ sal_uInt32& nCharCount, sal_uInt32 nCharAnzRead,
+ sal_Bool& bTextPropAtom, sal_uInt32 nExtParaPos,
+ const std::vector< StyleTextProp9 >& aStyleTextProp9,
+ sal_uInt32& nExtParaFlags, sal_uInt16& nBuBlip,
+ sal_uInt16& nHasAnm, sal_uInt32& nAnmScheme );
+
+ ~PPTStyleTextPropReader();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SvxFieldItem;
+class MSFILTER_DLLPUBLIC PPTPortionObj : public PPTCharPropSet
+{
+
+ friend class PPTParagraphObj;
+
+ const PPTStyleSheet& mrStyleSheet;
+ UINT32 mnInstance;
+ UINT32 mnDepth;
+
+ public :
+
+ BOOL GetAttrib( UINT32 nAttr, UINT32& nVal, UINT32 nInstanceInSheet );
+ SvxFieldItem* GetTextField();
+
+ PPTPortionObj( const PPTStyleSheet&, UINT32 nInstance, UINT32 nDepth );
+ PPTPortionObj( PPTCharPropSet&, const PPTStyleSheet&, UINT32 nInstance, UINT32 nDepth );
+ PPTPortionObj( PPTPortionObj& );
+ ~PPTPortionObj();
+
+ // the following function should be removed during next full update
+ void ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, UINT32 nInstanceInSheet );
+ void ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, UINT32 nInstanceInSheet, const PPTTextObj* pTextObj );
+ UINT32 Count() const { return ( mpFieldItem ) ? 1 : maString.Len(); };
+ BOOL HasTabulator();
+};
+
+class MSFILTER_DLLPUBLIC PPTParagraphObj : public PPTParaPropSet, public PPTNumberFormatCreator, public PPTTextRulerInterpreter
+{
+ friend class PPTTextObj;
+ friend class PPTNumberFormatCreator;
+
+ const PPTStyleSheet& mrStyleSheet;
+ UINT32 mnInstance;
+
+ protected :
+
+ void ImplClear();
+
+ public :
+
+ BOOL mbTab; // if true, this paragraph has tabulators in text
+
+ UINT32 mnCurrentObject;
+ UINT32 mnPortionCount;
+ PPTPortionObj** mpPortionList;
+
+ void UpdateBulletRelSize( sal_uInt32& nBulletRelSize ) const;
+ BOOL GetAttrib( UINT32 nAttr, UINT32& nVal, UINT32 nInstanceInSheet );
+
+ PPTParagraphObj( const PPTStyleSheet&, UINT32 nInstance, UINT16 nDepth );
+ PPTParagraphObj( PPTStyleTextPropReader&, const PPTStyleSheet&, UINT32 nInstance, PPTTextRulerInterpreter& rRuler );
+ ~PPTParagraphObj();
+
+ UINT32 GetTextSize();
+ PPTPortionObj* First();
+ PPTPortionObj* Next();
+
+ void AppendPortion( PPTPortionObj& rPortion );
+ void ApplyTo( SfxItemSet& rSet, boost::optional< sal_Int16 >& rStartNumbering, SdrPowerPointImport& rManager, UINT32 nInstanceInSheet, const PPTParagraphObj* pPrev );
+};
+
+#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT 1
+#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER 2
+#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT 4
+#define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK 8
+#define PPT_TEXTOBJ_FLAGS_VERTICAL 16
+
+struct ImplPPTTextObj
+{
+ UINT32 mnRefCount;
+ UINT32 mnShapeId;
+ UINT32 mnShapeMaster;
+ PptOEPlaceholderAtom* mpPlaceHolderAtom;
+ UINT16 mnInstance;
+ UINT16 mnDestinationInstance;
+ MSO_SPT meShapeType;
+
+ UINT32 mnCurrentObject;
+ UINT32 mnParagraphCount;
+ PPTParagraphObj** mpParagraphList;
+ PptSlidePersistEntry& mrPersistEntry;
+
+ sal_uInt32 mnTextFlags;
+
+ ImplPPTTextObj( PptSlidePersistEntry& rPersistEntry ) : mrPersistEntry ( rPersistEntry ) {};
+};
+
+class PPTTextObj
+{
+ ImplPPTTextObj* mpImplTextObj;
+ void ImplClear();
+
+ PPTTextObj(){};
+ public :
+ PPTTextObj( SvStream& rSt, SdrPowerPointImport&, PptSlidePersistEntry&, DffObjData* );
+ PPTTextObj( PPTTextObj& rTextObj );
+ ~PPTTextObj();
+
+ UINT32 GetCurrentIndex() const { return mpImplTextObj->mnCurrentObject; };
+ UINT32 Count() const { return mpImplTextObj->mnParagraphCount; };
+ PPTParagraphObj* First();
+ PPTParagraphObj* Next();
+ MSO_SPT GetShapeType() const { return mpImplTextObj->meShapeType; };
+ UINT32 GetInstance() const { return mpImplTextObj->mnInstance; };
+ void SetInstance( UINT16 nInstance ) { mpImplTextObj->mnInstance = nInstance; };
+ UINT32 GetDestinationInstance() const { return mpImplTextObj->mnDestinationInstance; };
+ void SetDestinationInstance( UINT16 nInstance ) { mpImplTextObj->mnDestinationInstance = nInstance; };
+ PptOEPlaceholderAtom* GetOEPlaceHolderAtom() const { return mpImplTextObj->mpPlaceHolderAtom; };
+ sal_uInt32 GetTextFlags() const { return mpImplTextObj->mnTextFlags; };
+ void SetVertical( sal_Bool bVertical )
+ {
+ if ( bVertical )
+ mpImplTextObj->mnTextFlags |= PPT_TEXTOBJ_FLAGS_VERTICAL;
+ else
+ mpImplTextObj->mnTextFlags &= ~PPT_TEXTOBJ_FLAGS_VERTICAL;
+ }
+ sal_Bool GetVertical() const { return ( mpImplTextObj->mnTextFlags & PPT_TEXTOBJ_FLAGS_VERTICAL ) != 0; };
+ const SfxItemSet* GetBackground() const;
+
+ PPTTextObj& operator=( PPTTextObj& rTextObj );
+};
+
+class PPTConvertOCXControls : public SvxMSConvertOCXControls
+{
+ virtual const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > & GetDrawPage();
+ PptPageKind ePageKind;
+ public :
+
+ PPTConvertOCXControls( SfxObjectShell* pDSh, PptPageKind ePKind ) :
+ SvxMSConvertOCXControls ( pDSh, NULL ),
+ ePageKind ( ePKind ){};
+
+ virtual sal_Bool InsertControl(
+ const com::sun::star::uno::Reference<
+ com::sun::star::form::XFormComponent > &rFComp,
+ const com::sun::star::awt::Size& rSize,
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShape > *pShape,
+ BOOL bFloatingCtrl );
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Powerpoint Recordtypen
+#define PPT_PST_Unknown 0
+#define PPT_PST_SubContainerCompleted 1
+#define PPT_PST_IRRAtom 2
+#define PPT_PST_PSS 3
+#define PPT_PST_SubContainerException 4
+#define PPT_PST_ClientSignal1 6
+#define PPT_PST_ClientSignal2 7
+#define PPT_PST_PowerPointStateInfoAtom 10
+#define PPT_PST_Document 1000
+#define PPT_PST_DocumentAtom 1001
+#define PPT_PST_EndDocument 1002
+#define PPT_PST_SlidePersist 1003
+#define PPT_PST_SlideBase 1004
+#define PPT_PST_SlideBaseAtom 1005
+#define PPT_PST_Slide 1006
+#define PPT_PST_SlideAtom 1007
+#define PPT_PST_Notes 1008
+#define PPT_PST_NotesAtom 1009
+#define PPT_PST_Environment 1010
+#define PPT_PST_SlidePersistAtom 1011
+#define PPT_PST_Scheme 1012
+#define PPT_PST_SchemeAtom 1013
+#define PPT_PST_DocViewInfo 1014
+#define PPT_PST_SslideLayoutAtom 1015
+#define PPT_PST_MainMaster 1016
+#define PPT_PST_SSSlideInfoAtom 1017
+#define PPT_PST_SlideViewInfo 1018
+#define PPT_PST_GuideAtom 1019
+#define PPT_PST_ViewInfo 1020
+#define PPT_PST_ViewInfoAtom 1021
+#define PPT_PST_SlideViewInfoAtom 1022
+#define PPT_PST_VBAInfo 1023
+#define PPT_PST_VBAInfoAtom 1024
+#define PPT_PST_SSDocInfoAtom 1025
+#define PPT_PST_Summary 1026
+#define PPT_PST_Texture 1027
+#define PPT_PST_VBASlideInfo 1028
+#define PPT_PST_VBASlideInfoAtom 1029
+#define PPT_PST_DocRoutingSlip 1030
+#define PPT_PST_OutlineViewInfo 1031
+#define PPT_PST_SorterViewInfo 1032
+#define PPT_PST_ExObjList 1033
+#define PPT_PST_ExObjListAtom 1034
+#define PPT_PST_PPDrawingGroup 1035
+#define PPT_PST_PPDrawing 1036
+#define PPT_PST_NewlyAddedAtomByXP1037 1037
+#define PPT_PST_NamedShows 1040
+#define PPT_PST_NamedShow 1041
+#define PPT_PST_NamedShowSlides 1042
+#define PPT_PST_List 2000
+#define PPT_PST_FontCollection 2005
+#define PPT_PST_ListPlaceholder 2017
+#define PPT_PST_BookmarkCollection 2019
+#define PPT_PST_SoundCollection 2020
+#define PPT_PST_SoundCollAtom 2021
+#define PPT_PST_Sound 2022
+#define PPT_PST_SoundData 2023
+#define PPT_PST_BookmarkSeedAtom 2025
+#define PPT_PST_GuideList 2026
+#define PPT_PST_RunArray 2028
+#define PPT_PST_RunArrayAtom 2029
+#define PPT_PST_ArrayElementAtom 2030
+#define PPT_PST_Int4ArrayAtom 2031
+#define PPT_PST_ColorSchemeAtom 2032
+
+// these atoms first was seen in ppt2000 in a private Tag atom
+#define PPT_PST_ExtendedBuGraContainer 2040 // consist of 4041
+#define PPT_PST_ExtendedBuGraAtom 2041 // the instance of this atom indices the current graphic
+
+#define PPT_PST_OEShape 3008
+#define PPT_PST_ExObjRefAtom 3009
+#define PPT_PST_OEPlaceholderAtom 3011
+#define PPT_PST_GrColor 3020
+#define PPT_PST_GrectAtom 3025
+#define PPT_PST_GratioAtom 3031
+#define PPT_PST_Gscaling 3032
+#define PPT_PST_GpointAtom 3034
+#define PPT_PST_OEShapeAtom 3035
+#define PPT_PST_OutlineTextRefAtom 3998
+#define PPT_PST_TextHeaderAtom 3999
+#define PPT_PST_TextCharsAtom 4000
+#define PPT_PST_StyleTextPropAtom 4001
+#define PPT_PST_BaseTextPropAtom 4002
+#define PPT_PST_TxMasterStyleAtom 4003
+#define PPT_PST_TxCFStyleAtom 4004
+#define PPT_PST_TxPFStyleAtom 4005
+#define PPT_PST_TextRulerAtom 4006
+#define PPT_PST_TextBookmarkAtom 4007
+#define PPT_PST_TextBytesAtom 4008
+#define PPT_PST_TxSIStyleAtom 4009
+#define PPT_PST_TextSpecInfoAtom 4010
+#define PPT_PST_DefaultRulerAtom 4011
+
+// these atoms first was seen in ppt2000 in a private Tag atom
+#define PPT_PST_ExtendedParagraphAtom 4012
+#define PPT_PST_ExtendedParagraphMasterAtom 4013
+#define PPT_PST_ExtendedPresRuleContainer 4014 // consist of 4012, 4015,
+#define PPT_PST_ExtendedParagraphHeaderAtom 4015 // the instance of this atom indices the current presobj
+ // the first UINT32 in this atom indices the current slideId
+#define PPT_PST_NewlyAddedAtom4016 4016
+
+#define PPT_PST_FontEntityAtom 4023
+#define PPT_PST_FontEmbedData 4024
+#define PPT_PST_TypeFace 4025
+#define PPT_PST_CString 4026
+#define PPT_PST_ExternalObject 4027
+#define PPT_PST_MetaFile 4033
+#define PPT_PST_ExOleObj 4034
+#define PPT_PST_ExOleObjAtom 4035
+#define PPT_PST_ExPlainLinkAtom 4036
+#define PPT_PST_CorePict 4037
+#define PPT_PST_CorePictAtom 4038
+#define PPT_PST_ExPlainAtom 4039
+#define PPT_PST_SrKinsoku 4040
+#define PPT_PST_Handout 4041
+#define PPT_PST_ExEmbed 4044
+#define PPT_PST_ExEmbedAtom 4045
+#define PPT_PST_ExLink 4046
+#define PPT_PST_ExLinkAtom_old 4047
+#define PPT_PST_BookmarkEntityAtom 4048
+#define PPT_PST_ExLinkAtom 4049
+#define PPT_PST_SrKinsokuAtom 4050
+#define PPT_PST_ExHyperlinkAtom 4051
+#define PPT_PST_ExPlain 4053
+#define PPT_PST_ExPlainLink 4054
+#define PPT_PST_ExHyperlink 4055
+#define PPT_PST_SlideNumberMCAtom 4056
+#define PPT_PST_HeadersFooters 4057
+#define PPT_PST_HeadersFootersAtom 4058
+#define PPT_PST_RecolorEntryAtom 4062
+#define PPT_PST_TxInteractiveInfoAtom 4063
+#define PPT_PST_EmFormatAtom 4065
+#define PPT_PST_CharFormatAtom 4066
+#define PPT_PST_ParaFormatAtom 4067
+#define PPT_PST_MasterText 4068
+#define PPT_PST_RecolorInfoAtom 4071
+#define PPT_PST_ExQuickTime 4073
+#define PPT_PST_ExQuickTimeMovie 4074
+#define PPT_PST_ExQuickTimeMovieData 4075
+#define PPT_PST_ExSubscription 4076
+#define PPT_PST_ExSubscriptionSection 4077
+#define PPT_PST_ExControl 4078
+#define PPT_PST_ExControlAtom 4091
+#define PPT_PST_SlideListWithText 4080
+#define PPT_PST_AnimationInfoAtom 4081
+#define PPT_PST_InteractiveInfo 4082
+#define PPT_PST_InteractiveInfoAtom 4083
+#define PPT_PST_SlideList 4084
+#define PPT_PST_UserEditAtom 4085
+#define PPT_PST_CurrentUserAtom 4086
+#define PPT_PST_DateTimeMCAtom 4087
+#define PPT_PST_GenericDateMCAtom 4088
+#define PPT_PST_HeaderMCAtom 4089
+#define PPT_PST_FooterMCAtom 4090
+#define PPT_PST_ExMediaAtom 4100
+#define PPT_PST_ExVideo 4101
+#define PPT_PST_ExAviMovie 4102
+#define PPT_PST_ExMCIMovie 4103
+#define PPT_PST_ExMIDIAudio 4109
+#define PPT_PST_ExCDAudio 4110
+#define PPT_PST_ExWAVAudioEmbedded 4111
+#define PPT_PST_ExWAVAudioLink 4112
+#define PPT_PST_ExOleObjStg 4113
+#define PPT_PST_ExCDAudioAtom 4114
+#define PPT_PST_ExWAVAudioEmbeddedAtom 4115
+#define PPT_PST_AnimationInfo 4116
+#define PPT_PST_RTFDateTimeMCAtom 4117
+#define PPT_PST_ProgTags 5000
+#define PPT_PST_ProgStringTag 5001
+#define PPT_PST_ProgBinaryTag 5002
+#define PPT_PST_BinaryTagData 5003
+#define PPT_PST_PrintOptions 6000
+#define PPT_PST_PersistPtrFullBlock 6001
+#define PPT_PST_PersistPtrIncrementalBlock 6002
+
+// these atoms first was seen in ppt2000 in a private Tag atom
+#define PPT_PST_NewlyAddedAtomByPPT2000_6010 6010
+#define PPT_PST_NewlyAddedAtomByPPT2000_6011 6011
+
+#define PPT_PST_RulerIndentAtom 10000
+#define PPT_PST_GscalingAtom 10001
+#define PPT_PST_GrColorAtom 10002
+#define PPT_PST_GLPointAtom 10003
+#define PPT_PST_GlineAtom 10004
+
+#define PPT_PST_NewlyAddedAtomByXP11008 11008
+#define PPT_PST_NewlyAddedAtomByXP11010 11010
+#define PPT_PST_Comment10 12000
+#define PPT_PST_CommentAtom10 12001
+#define PPT_PST_NewlyAddedAtomByXP12004 12004
+#define PPT_PST_NewlyAddedAtomByXP12010 12010
+#define PPT_PST_NewlyAddedAtomByXP12011 12011
+#define PPT_PST_NewlyAddedAtomByXP14001 14001
+
+// Attribute fuer PptTextStyleSheet
+#define PPT_ParaAttr_BulletOn 0 //00000001
+#define PPT_ParaAttr_BuHardFont 1 //00000002
+#define PPT_ParaAttr_BuHardColor 2 //00000004
+#define PPT_ParaAttr_BuHardHeight 3 //00000008
+#define PPT_ParaAttr_BulletFont 4 //00000010
+#define PPT_ParaAttr_BulletColor 5 //00000020
+#define PPT_ParaAttr_BulletHeight 6 //00000040
+#define PPT_ParaAttr_BulletChar 7 //00000080
+
+#define PPT_ParaAttr_DontKnow1 8 //00000100
+#define PPT_ParaAttr_DontKnow2 9 //00000200
+#define PPT_ParaAttr_DontKnow3 10 //00000400
+#define PPT_ParaAttr_Adjust 11 //00000800 0000=Left, 0001=Center, 0002=Right, 0003=Block
+
+#define PPT_ParaAttr_LineFeed 12 //00001000
+#define PPT_ParaAttr_UpperDist 13 //00002000 ist bei Textframes default immer auf 0032 gesetzt
+#define PPT_ParaAttr_LowerDist 14 //00004000
+#define PPT_ParaAttr_TextOfs 15 //00008000
+
+#define PPT_ParaAttr_BulletOfs 16 //00010000
+#define PPT_ParaAttr_DefaultTab 17 //00020000
+#define PPT_ParaAttr_AsianLB_1 18
+#define PPT_ParaAttr_AsianLB_2 19
+#define PPT_ParaAttr_AsianLB_3 20
+#define PPT_ParaAttr_BiDi 21 //00200000
+
+#define PPT_CharAttr_Bold 0 //00000001
+#define PPT_CharAttr_Italic 1 //00000002
+#define PPT_CharAttr_Underline 2 //00000004
+#define PPT_CharAttr_Shadow 4 //00000010
+#define PPT_CharAttr_Strikeout 8 //00000100
+#define PPT_CharAttr_Embossed 9 //00000200
+#define PPT_CharAttr_ResetNumbering 10 //00000400
+#define PPT_CharAttr_EnableNumbering1 11 //00000800
+#define PPT_CharAttr_EnableNumbering2 12 //00001000
+#define PPT_CharAttr_Font 16 //00010000
+#define PPT_CharAttr_AsianOrComplexFont 21 //00200000
+#define PPT_CharAttr_ANSITypeface 22 //00400000
+#define PPT_CharAttr_Symbol 23 //00800000
+#define PPT_CharAttr_FontHeight 17 //00020000
+#define PPT_CharAttr_FontColor 18 //00040000
+#define PPT_CharAttr_Escapement 19 //00080000
+
+// Werte fuer PptSlideLayoutAtom.eLayout
+#define PPT_LAYOUT_TITLESLIDE 0 // The slide is a title slide
+#define PPT_LAYOUT_TITLEANDBODYSLIDE 1 // Title and body slide
+#define PPT_LAYOUT_TITLEMASTERSLIDE 2 // Title master slide
+#define PPT_LAYOUT_MASTERSLIDE 3 // Master slide layout
+#define PPT_LAYOUT_MASTERNOTES 4 // Master notes layout
+#define PPT_LAYOUT_NOTESTITLEBODY 5 // Notes title/body layout
+#define PPT_LAYOUT_HANDOUTLAYOUT 6 // Handout layout, therefore it doesn't have placeholders except header, footer, and date
+#define PPT_LAYOUT_ONLYTITLE 7 // Only title placeholder
+#define PPT_LAYOUT_2COLUMNSANDTITLE 8 // Body of the slide has 2 columns and a title
+#define PPT_LAYOUT_2ROWSANDTITLE 9 // Slide's body has 2 rows and a title
+#define PPT_LAYOUT_RIGHTCOLUMN2ROWS 10 // Body contains 2 columns, right column has 2 rows
+#define PPT_LAYOUT_LEFTCOLUMN2ROWS 11 // Body contains 2 columns, left column has 2 rows
+#define PPT_LAYOUT_BOTTOMROW2COLUMNS 12 // Body contains 2 rows, bottom row has 2 columns
+#define PPT_LAYOUT_TOPROW2COLUMN 13 // Body contains 2 rows, top row has 2 columns
+#define PPT_LAYOUT_4OBJECTS 14 // 4 objects
+#define PPT_LAYOUT_BIGOBJECT 15 // Big object
+#define PPT_LAYOUT_BLANCSLIDE 16 // Blank slide
+#define PPT_LAYOUT_TITLERIGHTBODYLEFT 17 // Vertical title on the right, body on the left
+#define PPT_LAYOUT_TITLERIGHT2BODIESLEFT 18 // Vertical title on the right, body on the left split into 2 rows
+
+// the following table describes the placeholder id's (values from reality followed by values taken from the documentation)
+#define PPT_PLACEHOLDER_NONE 0 // 0 None
+#define PPT_PLACEHOLDER_MASTERTITLE 1 // 1 Master title
+#define PPT_PLACEHOLDER_MASTERBODY 2 // 2 Master body
+#define PPT_PLACEHOLDER_MASTERCENTEREDTITLE 3 // 3 Master centered title
+#define PPT_PLACEHOLDER_MASTERSUBTITLE 4 // 10 Master subtitle
+#define PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE 5 // 4 Master notes slide image
+#define PPT_PLACEHOLDER_MASTERNOTESBODYIMAGE 6 // 5 Master notes body image
+#define PPT_PLACEHOLDER_MASTERDATE 7 // 6 Master date
+#define PPT_PLACEHOLDER_MASTERSLIDENUMBER 8 // 7 Master slide number
+#define PPT_PLACEHOLDER_MASTERFOOTER 9 // 8 Master footer
+#define PPT_PLACEHOLDER_MASTERHEADER 10 // 9 Master header
+#define PPT_PLACEHOLDER_GENERICTEXTOBJECT // 11 Generic text object
+#define PPT_PLACEHOLDER_TITLE 13 // 12 Title
+#define PPT_PLACEHOLDER_BODY 14 // 13 Body
+#define PPT_PLACEHOLDER_NOTESBODY 12 // 14 Notes body
+#define PPT_PLACEHOLDER_CENTEREDTITLE 15 // 15 Centered title
+#define PPT_PLACEHOLDER_SUBTITLE 16 // 16 Subtitle
+#define PPT_PLACEHOLDER_VERTICALTEXTTITLE 17 // 17 Vertical text title
+#define PPT_PLACEHOLDER_VERTICALTEXTBODY 18 // 18 Vertical text body
+#define PPT_PLACEHOLDER_NOTESSLIDEIMAGE 11 // 19 Notes slide image
+#define PPT_PLACEHOLDER_OBJECT 19 // 20 Object (no matter the size)
+#define PPT_PLACEHOLDER_GRAPH 20 // 21 Graph
+#define PPT_PLACEHOLDER_TABLE 21 // 22 Table
+#define PPT_PLACEHOLDER_CLIPART 22 // 23 Clip Art
+#define PPT_PLACEHOLDER_ORGANISZATIONCHART 23 // 24 Organization Chart
+#define PPT_PLACEHOLDER_MEDIACLIP 24 // 25 Media Clip
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif // SVX_LIGHT
+
+#endif //_SVDFPPT_HXX
+
diff --git a/filter/inc/filter/msfilter/svxmsbas.hxx b/filter/inc/filter/msfilter/svxmsbas.hxx
new file mode 100644
index 000000000000..f488017e4804
--- /dev/null
+++ b/filter/inc/filter/msfilter/svxmsbas.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * 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 _SVXMSBAS_HXX
+#define _SVXMSBAS_HXX
+
+#include <tools/solar.h>
+#include "filter/msfilter/msfilterdllapi.h"
+
+#include <sot/storage.hxx>
+
+class SfxObjectShell;
+
+/* Construct with the root storage of the MS document, with bImportCode
+ * set the visual basic code will be imported into the stardocument when Import
+ * is called, with bCopyStorage set, the visual basic storage tree will be
+ * copied completely into staroffice, so that any future export to a msoffice
+ * format will retain the vba code, allowing a lossless roundtrip from
+ * msoffice to staroffice and back.
+ *
+ * Setting bAsComment to true in Import will import the visual basic as a
+ * starbasic comment. Which is currently necessary, as vb is not valid sb.
+ *
+ * Setting bStripped will remove the "Attribute" lines from the vb, msoffice
+ * does this itself when it shows the vb code in the vbeditor, so this is
+ * probably what the user expects to see when viewing the code
+ */
+
+class MSFILTER_DLLPUBLIC SvxImportMSVBasic
+{
+public:
+ SvxImportMSVBasic( SfxObjectShell &rDocS, SotStorage &rRoot,
+ BOOL bImportCode = TRUE, BOOL bCopyStorage = TRUE )
+ : xRoot(&rRoot), rDocSh(rDocS),
+ bImport(bImportCode), bCopy(bCopyStorage)
+ {}
+ // returns the status of import:
+ // 0 - nothing has done
+ // bit 0 = 1 -> any code is imported to the SO-Basic
+ // bit 1 = 1 -> the VBA - storage is copy to the ObjectShell storage
+ int Import( const String& rStorageName, const String &rSubStorageName,
+ BOOL bAsComment=TRUE, BOOL bStripped=TRUE );
+
+ // only for the export - copy or delete the saved VBA-macro-storage
+ // form the ObjectShell
+ // - returns a warning code if a modified basic exist, in all other
+ // cases return ERRCODE_NONE.
+ ULONG SaveOrDelMSVBAStorage( BOOL bSaveInto, const String& rStorageName );
+
+ // check if the MS-VBA-Storage exist in the RootStorage of the DocShell.
+ // If it exist, then return the WarningId for loosing the information.
+ static ULONG GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocS );
+
+ static String GetMSBasicStorageName();
+private:
+ SotStorageRef xRoot;
+ SfxObjectShell &rDocSh;
+ BOOL bImport;
+ BOOL bCopy;
+
+ MSFILTER_DLLPRIVATE BOOL ImportCode_Impl( const String& rStorageName,
+ const String &rSubStorageName,
+ BOOL bAsComment, BOOL bStripped);
+ MSFILTER_DLLPRIVATE bool ImportForms_Impl(const String& rStorageName,
+ const String &rSubStorageName);
+ MSFILTER_DLLPRIVATE BOOL CopyStorage_Impl( const String& rStorageName,
+ const String &rSubStorageName);
+};
+
+#endif
diff --git a/filter/inc/makefile.mk b/filter/inc/makefile.mk
index ccb616d8e94c..ae44f91ba667 100644
--- a/filter/inc/makefile.mk
+++ b/filter/inc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/inc/pch/precompiled_filter.cxx b/filter/inc/pch/precompiled_filter.cxx
index a118d543d0bb..c2c7f32127b9 100644
--- a/filter/inc/pch/precompiled_filter.cxx
+++ b/filter/inc/pch/precompiled_filter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompiled_filter.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/inc/pch/precompiled_filter.hxx b/filter/inc/pch/precompiled_filter.hxx
index c68e8c3a32e5..3220aa3f6e4c 100644
--- a/filter/inc/pch/precompiled_filter.hxx
+++ b/filter/inc/pch/precompiled_filter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompiled_filter.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/prj/build.lst b/filter/prj/build.lst
index 63b7e25c646b..b4be1c83e63e 100644
--- a/filter/prj/build.lst
+++ b/filter/prj/build.lst
@@ -1,9 +1,10 @@
-fl filter : l10n svtools unotools goodies xmloff cppu tools cppuhelper sal svx javaunohelper XPDF:xpdf jvmaccess canvas SAXON:saxon LIBXSLT:libxslt NULL
+fl filter : vbahelper l10n svtools unotools xmloff cppu tools cppuhelper sal svx javaunohelper XPDF:xpdf jvmaccess canvas SAXON:saxon LIBXSLT:libxslt NULL
fl filter usr1 - all fl_mkout NULL
fl filter\prj get - all fl_prj NULL
fl filter\inc nmake - all fl_inc NULL
fl filter\source\xmlfilteradaptor nmake - all fl_xmlfilteradaptor fl_inc NULL
fl filter\source\xmlfilterdetect nmake - all fl_xmlfilterdetect fl_inc NULL
+fl filter\source\msfilter nmake - all fl_msfilter fl_inc NULL
fl filter\source\msfilter\powerpoint nmake - all fl_powerpoint fl_inc NULL
fl filter\source\pdf nmake - all fl_pdf fl_svg fl_inc NULL
fl filter\source\svg nmake - all fl_svg fl_inc NULL
@@ -15,6 +16,28 @@ fl filter\source\xsltvalidate nmake - all fl_xsltvalidate fl_xsltfilter fl_in
fl filter\source\xsltdialog nmake - all fl_xsltdialog fl_flash fl_inc NULL
fl filter\source\docbook nmake - all fl_docbook fl_inc NULL
fl filter\source\t602 nmake - all fl_t602 fl_inc NULL
+fl filter\source\graphicfilter\eos2met nmake - all g_vfeom fl_inc NULL
+fl filter\source\graphicfilter\ios2met nmake - all g_vfiom fl_inc NULL
+fl filter\source\graphicfilter\epict nmake - all g_vfept fl_inc NULL
+fl filter\source\graphicfilter\egif nmake - all g_vfegf fl_inc NULL
+fl filter\source\graphicfilter\ipcd nmake - all g_vfipc fl_inc NULL
+fl filter\source\graphicfilter\ipcx nmake - all g_vfipx fl_inc NULL
+fl filter\source\graphicfilter\ipict nmake - all g_vfipt fl_inc NULL
+fl filter\source\graphicfilter\idxf nmake - all g_vfidx fl_inc NULL
+fl filter\source\graphicfilter\itiff nmake - all g_vfitf fl_inc NULL
+fl filter\source\graphicfilter\ipbm nmake - all g_vfpbm fl_inc NULL
+fl filter\source\graphicfilter\epbm nmake - all g_epbm fl_inc NULL
+fl filter\source\graphicfilter\epgm nmake - all g_epgm fl_inc NULL
+fl filter\source\graphicfilter\eppm nmake - all g_eppm fl_inc NULL
+fl filter\source\graphicfilter\iras nmake - all g_iras fl_inc NULL
+fl filter\source\graphicfilter\expm nmake - all g_expm fl_inc NULL
+fl filter\source\graphicfilter\eras nmake - all g_eras fl_inc NULL
+fl filter\source\graphicfilter\etiff nmake - all g_etiff fl_inc NULL
+fl filter\source\graphicfilter\eps nmake - all g_eps fl_inc NULL
+fl filter\source\graphicfilter\itga nmake - all g_itga fl_inc NULL
+fl filter\source\graphicfilter\ipsd nmake - all g_ipsd fl_inc NULL
+fl filter\source\graphicfilter\ieps nmake - all g_ieps fl_inc NULL
+fl filter\source\graphicfilter\icgm nmake - all g_icgm fl_inc NULL
fl filter\source\config\cache nmake - all fl_config fl_inc NULL
fl filter\source\config\fragments\types nmake - all fl_fcfg_fragments_types fl_inc NULL
fl filter\source\config\fragments\filters nmake - all fl_fcfg_fragments_filters fl_inc NULL
diff --git a/filter/prj/d.lst b/filter/prj/d.lst
index 3291c7c1bc4e..e8fdae8a1c58 100644
--- a/filter/prj/d.lst
+++ b/filter/prj/d.lst
@@ -3,6 +3,7 @@ mkdir: %COMMON_DEST%\bin%_EXT%\hid
..\%__SRC%\bin\*.dll %_DEST%\bin%_EXT%\*.dll
..\%__SRC%\lib\lib*.so %_DEST%\lib%_EXT%
..\%__SRC%\lib\lib*.dylib %_DEST%\lib%_EXT%
+..\%__SRC%\lib\imsfilter.lib %_DEST%\lib%_EXT%\imsfilter.lib
..\%__SRC%\class\*.jar %_DEST%\bin%_EXT%\*.jar
..\%__SRC%\class\XSLTFilter\*.jar %_DEST%\bin%_EXT%\*.jar
..\%__SRC%\class\XSLTValidate\*.jar %_DEST%\bin%_EXT%\*.jar
@@ -48,3 +49,9 @@ mkdir: %_DEST%\bin%_EXT%\pdfimport
..\%__SRC%\bin\pdfunzip.* %_DEST%\bin%_EXT%\pdfunzip.*
..\%__SRC%\misc\filters\modulepacks\fcfg_*.xcu %_DEST%\xml%_EXT%\registry\spool\fcfg_*.xcu
..\%COMMON_OUTDIR%\bin\fcfg_langpack_*.zip %_DEST%\pck%_EXT%\fcfg_langpack_*.zip
+
+mkdir: %_DEST%\inc%_EXT%\filter
+mkdir: %_DEST%\inc%_EXT%\filter\msfilter
+..\inc\filter\msfilter\*.hxx %_DEST%\inc%_EXT%\filter\msfilter\*.hxx
+..\inc\filter\msfilter\*.h %_DEST%\inc%_EXT%\filter\msfilter\*.h
+
diff --git a/filter/qa/complex/filter/detection/typeDetection/Helper.java b/filter/qa/complex/filter/detection/typeDetection/Helper.java
index 713d0befe98c..4c282f55182e 100644
--- a/filter/qa/complex/filter/detection/typeDetection/Helper.java
+++ b/filter/qa/complex/filter/detection/typeDetection/Helper.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Helper.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/qa/complex/filter/detection/typeDetection/TypeDetection.java b/filter/qa/complex/filter/detection/typeDetection/TypeDetection.java
index 423d6fe166d1..f706c4136118 100644
--- a/filter/qa/complex/filter/detection/typeDetection/TypeDetection.java
+++ b/filter/qa/complex/filter/detection/typeDetection/TypeDetection.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TypeDetection.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/qa/complex/filter/detection/typeDetection/makefile.mk b/filter/qa/complex/filter/detection/typeDetection/makefile.mk
index dea5044fb60c..bbc25efa3c29 100644
--- a/filter/qa/complex/filter/detection/typeDetection/makefile.mk
+++ b/filter/qa/complex/filter/detection/typeDetection/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.9.102.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/qa/complex/filter/misc/FinalizedMandatoryTest.java b/filter/qa/complex/filter/misc/FinalizedMandatoryTest.java
index 9c2384887a80..e32b81caa85b 100644
--- a/filter/qa/complex/filter/misc/FinalizedMandatoryTest.java
+++ b/filter/qa/complex/filter/misc/FinalizedMandatoryTest.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FinalizedMandatoryTest.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/qa/complex/filter/misc/makefile.mk b/filter/qa/complex/filter/misc/makefile.mk
index 0dd1c433b28c..2792b2438b6e 100755
--- a/filter/qa/complex/filter/misc/makefile.mk
+++ b/filter/qa/complex/filter/misc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7.102.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/basecontainer.cxx b/filter/source/config/cache/basecontainer.cxx
index c1f61eb6948b..800876ce1abd 100644
--- a/filter/source/config/cache/basecontainer.cxx
+++ b/filter/source/config/cache/basecontainer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: basecontainer.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/basecontainer.hxx b/filter/source/config/cache/basecontainer.hxx
index 66d2ba4873ff..e3730ce662e4 100644
--- a/filter/source/config/cache/basecontainer.hxx
+++ b/filter/source/config/cache/basecontainer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: basecontainer.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/cacheitem.cxx b/filter/source/config/cache/cacheitem.cxx
index c06bb3c53cc1..c752516df10f 100644
--- a/filter/source/config/cache/cacheitem.cxx
+++ b/filter/source/config/cache/cacheitem.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheitem.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/cacheitem.hxx b/filter/source/config/cache/cacheitem.hxx
index 3a24fcfa02ce..793a5f370cf9 100644
--- a/filter/source/config/cache/cacheitem.hxx
+++ b/filter/source/config/cache/cacheitem.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheitem.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/cacheupdatelistener.cxx b/filter/source/config/cache/cacheupdatelistener.cxx
index fe262661912c..90bd89c9d864 100644
--- a/filter/source/config/cache/cacheupdatelistener.cxx
+++ b/filter/source/config/cache/cacheupdatelistener.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheupdatelistener.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/cacheupdatelistener.hxx b/filter/source/config/cache/cacheupdatelistener.hxx
index 8cec199718e9..8e75e4304bf2 100644
--- a/filter/source/config/cache/cacheupdatelistener.hxx
+++ b/filter/source/config/cache/cacheupdatelistener.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheupdatelistener.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/configflush.cxx b/filter/source/config/cache/configflush.cxx
index 6efc0912386f..e97df2a7f40d 100644
--- a/filter/source/config/cache/configflush.cxx
+++ b/filter/source/config/cache/configflush.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: configflush.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/configflush.hxx b/filter/source/config/cache/configflush.hxx
index b8cc0f7ae07c..477d7017ca35 100644
--- a/filter/source/config/cache/configflush.hxx
+++ b/filter/source/config/cache/configflush.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: configflush.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/constant.hxx b/filter/source/config/cache/constant.hxx
index 719cc620a579..827682e09cd9 100644
--- a/filter/source/config/cache/constant.hxx
+++ b/filter/source/config/cache/constant.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: constant.hxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/contenthandlerfactory.cxx b/filter/source/config/cache/contenthandlerfactory.cxx
index 32152a5d311d..3863658d9abb 100644
--- a/filter/source/config/cache/contenthandlerfactory.cxx
+++ b/filter/source/config/cache/contenthandlerfactory.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contenthandlerfactory.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/contenthandlerfactory.hxx b/filter/source/config/cache/contenthandlerfactory.hxx
index 8b91f9892bf8..a50f91c0b61e 100644
--- a/filter/source/config/cache/contenthandlerfactory.hxx
+++ b/filter/source/config/cache/contenthandlerfactory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contenthandlerfactory.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/filtercache.cxx b/filter/source/config/cache/filtercache.cxx
index 61790685a14b..43886258abcd 100644
--- a/filter/source/config/cache/filtercache.cxx
+++ b/filter/source/config/cache/filtercache.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtercache.cxx,v $
- * $Revision: 1.26 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -2456,6 +2453,7 @@ OUStringList FilterCache::impl_tokenizeString(const ::rtl::OUString& sData ,
return lData;
}
+#if OSL_DEBUG_LEVEL > 0
/*-----------------------------------------------*/
::rtl::OUString FilterCache::impl_searchFrameLoaderForType(const ::rtl::OUString& sType) const
{
@@ -2493,6 +2491,7 @@ OUStringList FilterCache::impl_tokenizeString(const ::rtl::OUString& sData ,
return ::rtl::OUString();
}
+#endif
/*-----------------------------------------------*/
sal_Bool FilterCache::impl_isModuleInstalled(const ::rtl::OUString& sModule)
diff --git a/filter/source/config/cache/filtercache.hxx b/filter/source/config/cache/filtercache.hxx
index 90973c13a31b..0c0e34b2783b 100644
--- a/filter/source/config/cache/filtercache.hxx
+++ b/filter/source/config/cache/filtercache.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtercache.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1022,9 +1019,11 @@ class FilterCache : public BaseLock
//---------------------------------------
+#if OSL_DEBUG_LEVEL > 0
/** TODO */
::rtl::OUString impl_searchFrameLoaderForType(const ::rtl::OUString& sType) const;
::rtl::OUString impl_searchContentHandlerForType(const ::rtl::OUString& sType) const;
+#endif
//---------------------------------------
/** @short check if the specified OOo module is installed.
diff --git a/filter/source/config/cache/filterfactory.cxx b/filter/source/config/cache/filterfactory.cxx
index 9d98a8078b04..dc7869be27ca 100644
--- a/filter/source/config/cache/filterfactory.cxx
+++ b/filter/source/config/cache/filterfactory.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterfactory.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/filterfactory.hxx b/filter/source/config/cache/filterfactory.hxx
index 5f553f8b40d7..2f0ba31f942b 100644
--- a/filter/source/config/cache/filterfactory.hxx
+++ b/filter/source/config/cache/filterfactory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterfactory.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/frameloaderfactory.cxx b/filter/source/config/cache/frameloaderfactory.cxx
index f178264da65b..3c9163899a97 100644
--- a/filter/source/config/cache/frameloaderfactory.cxx
+++ b/filter/source/config/cache/frameloaderfactory.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: frameloaderfactory.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/frameloaderfactory.hxx b/filter/source/config/cache/frameloaderfactory.hxx
index e5ef80bfceaa..7741f0011f38 100644
--- a/filter/source/config/cache/frameloaderfactory.hxx
+++ b/filter/source/config/cache/frameloaderfactory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: frameloaderfactory.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/lateinitlistener.cxx b/filter/source/config/cache/lateinitlistener.cxx
index c1999cb4a72e..feaf7f645efc 100644
--- a/filter/source/config/cache/lateinitlistener.cxx
+++ b/filter/source/config/cache/lateinitlistener.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: lateinitlistener.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/lateinitlistener.hxx b/filter/source/config/cache/lateinitlistener.hxx
index 889f6146ca6a..0ed1abf1e679 100644
--- a/filter/source/config/cache/lateinitlistener.hxx
+++ b/filter/source/config/cache/lateinitlistener.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: lateinitlistener.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/lateinitthread.cxx b/filter/source/config/cache/lateinitthread.cxx
index e7bee1882487..13432c30ad0f 100644
--- a/filter/source/config/cache/lateinitthread.cxx
+++ b/filter/source/config/cache/lateinitthread.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: lateinitthread.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/lateinitthread.hxx b/filter/source/config/cache/lateinitthread.hxx
index 43f4f18d5c9f..c330394d434d 100644
--- a/filter/source/config/cache/lateinitthread.hxx
+++ b/filter/source/config/cache/lateinitthread.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: lateinitthread.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/macros.hxx b/filter/source/config/cache/macros.hxx
index d78969b0fbde..485029ead5a8 100644
--- a/filter/source/config/cache/macros.hxx
+++ b/filter/source/config/cache/macros.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: macros.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/makefile.mk b/filter/source/config/cache/makefile.mk
index 50ef0c73a03a..62eb4353fcf3 100644
--- a/filter/source/config/cache/makefile.mk
+++ b/filter/source/config/cache/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/querytokenizer.cxx b/filter/source/config/cache/querytokenizer.cxx
index dfbad37ba3a0..a07a95e37d23 100644
--- a/filter/source/config/cache/querytokenizer.cxx
+++ b/filter/source/config/cache/querytokenizer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: querytokenizer.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/querytokenizer.hxx b/filter/source/config/cache/querytokenizer.hxx
index 01c8d9a2657d..0823e49f5616 100644
--- a/filter/source/config/cache/querytokenizer.hxx
+++ b/filter/source/config/cache/querytokenizer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: querytokenizer.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/registration.cxx b/filter/source/config/cache/registration.cxx
index 31aa67abfc4a..a65f5c42fea8 100644
--- a/filter/source/config/cache/registration.cxx
+++ b/filter/source/config/cache/registration.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: registration.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/registration.hxx b/filter/source/config/cache/registration.hxx
index 9a925727fa5d..38e5980c967a 100644
--- a/filter/source/config/cache/registration.hxx
+++ b/filter/source/config/cache/registration.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: registration.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/typedetection.cxx b/filter/source/config/cache/typedetection.cxx
index 0f094634766c..4fe9a1df64e6 100644
--- a/filter/source/config/cache/typedetection.cxx
+++ b/filter/source/config/cache/typedetection.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typedetection.cxx,v $
- * $Revision: 1.24 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/typedetection.hxx b/filter/source/config/cache/typedetection.hxx
index 381f3cf4802a..4dbf6f07d33e 100644
--- a/filter/source/config/cache/typedetection.hxx
+++ b/filter/source/config/cache/typedetection.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typedetection.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/cache/versions.hxx b/filter/source/config/cache/versions.hxx
index fcf6fd079ed0..fbd92604170f 100644
--- a/filter/source/config/cache/versions.hxx
+++ b/filter/source/config/cache/versions.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: versions.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/fragments/filters/makefile.mk b/filter/source/config/fragments/filters/makefile.mk
index e3696c0d9d24..2c557906df29 100644
--- a/filter/source/config/fragments/filters/makefile.mk
+++ b/filter/source/config/fragments/filters/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.9 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/fragments/makefile.mk b/filter/source/config/fragments/makefile.mk
index d398e03e5a7d..71bd6ca2b6e6 100644
--- a/filter/source/config/fragments/makefile.mk
+++ b/filter/source/config/fragments/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.22 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -185,8 +181,12 @@ $(ALL_FLAGS) : $(INCLUDE_FRAGMENTS)
.IF "$(SOLAR_JAVA)"==""
#cmc, hack to workaround the java build requirement
+.IF "$(SYSTEM_PYTHON)" == "YES"
MERGE:=python ../tools/merge/pyAltFCFGMerge
.ELSE
+MERGE:=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/python ../tools/merge/pyAltFCFGMerge
+.ENDIF
+.ELSE
MERGE := $(JAVAI) -jar $(SOLARBINDIR)$/FCFGMerge.jar
.ENDIF
diff --git a/filter/source/config/fragments/packagedef.mk b/filter/source/config/fragments/packagedef.mk
index 75600489d4da..fda7b4a6cc60 100644
--- a/filter/source/config/fragments/packagedef.mk
+++ b/filter/source/config/fragments/packagedef.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: packagedef.mk,v $
-#
-# $Revision: 1.9 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/fragments/types/makefile.mk b/filter/source/config/fragments/types/makefile.mk
index 371a777537b8..67ad14b038a2 100644
--- a/filter/source/config/fragments/types/makefile.mk
+++ b/filter/source/config/fragments/types/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/tools/merge/pyAltFCFGMerge b/filter/source/config/tools/merge/pyAltFCFGMerge
index b143caabcd6b..17fe16fb3445 100755
--- a/filter/source/config/tools/merge/pyAltFCFGMerge
+++ b/filter/source/config/tools/merge/pyAltFCFGMerge
@@ -11,7 +11,7 @@
import sys, string, os.path
-CFGFILE = "../tools/merge/FCFGMerge.cfg"
+CFGFILE = "../../../../transex3/source/filter/merge/FCFGMerge.cfg"
PROP_XMLVERSION = "xmlversion" # // <= global cfg file
PROP_XMLENCODING = "xmlencoding" # // <= global cfg file
diff --git a/filter/source/config/tools/split/FCFGSplit.java b/filter/source/config/tools/split/FCFGSplit.java
index 464abf09a92c..4693db4cdf83 100644
--- a/filter/source/config/tools/split/FCFGSplit.java
+++ b/filter/source/config/tools/split/FCFGSplit.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FCFGSplit.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/tools/split/Splitter.java b/filter/source/config/tools/split/Splitter.java
index 36cf826fc3e1..d9c171382596 100644
--- a/filter/source/config/tools/split/Splitter.java
+++ b/filter/source/config/tools/split/Splitter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Splitter.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/tools/split/SplitterData.java b/filter/source/config/tools/split/SplitterData.java
index 4d899d2477a4..daa09797da68 100644
--- a/filter/source/config/tools/split/SplitterData.java
+++ b/filter/source/config/tools/split/SplitterData.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SplitterData.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/config/tools/split/makefile.mk b/filter/source/config/tools/split/makefile.mk
index 7666515e91e0..a6942bfa6d5f 100644
--- a/filter/source/config/tools/split/makefile.mk
+++ b/filter/source/config/tools/split/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7.102.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/docbook/docbooktosoffheadings.xsl b/filter/source/docbook/docbooktosoffheadings.xsl
index d8d7feb4768c..0b583a9d1452 100644
--- a/filter/source/docbook/docbooktosoffheadings.xsl
+++ b/filter/source/docbook/docbooktosoffheadings.xsl
@@ -2,14 +2,10 @@
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: docbooktosoffheadings.xsl,v $
-
- $Revision: 1.10 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:office="http://openoffice.org/2000/office" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:config="http://openoffice.org/2001/config" office:class="text" office:version="1.0">
<xsl:decimal-format name="staff" digit="D"/>
diff --git a/filter/source/docbook/makefile.mk b/filter/source/docbook/makefile.mk
index 319a6d97d951..b3b43d5cbd02 100644
--- a/filter/source/docbook/makefile.mk
+++ b/filter/source/docbook/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/docbook/sofftodocbookheadings.xsl b/filter/source/docbook/sofftodocbookheadings.xsl
index b91a7d3e3011..bc9b67a9a340 100644
--- a/filter/source/docbook/sofftodocbookheadings.xsl
+++ b/filter/source/docbook/sofftodocbookheadings.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: sofftodocbookheadings.xsl,v $
-
- $Revision: 1.11 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:office="http://openoffice.org/2000/office" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:config="http://openoffice.org/2001/config" office:class="text" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="office meta table number dc fo xlink chart math script xsl draw svg dr3d form config text style">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" version="1.0" encoding="UTF-8" doctype-public="-//OASIS//DTD DocBook XML V4.1.2//EN" doctype-system="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
diff --git a/filter/source/filtertracer/filtertracer.cxx b/filter/source/filtertracer/filtertracer.cxx
index b8f7de0b3096..328917c24036 100644
--- a/filter/source/filtertracer/filtertracer.cxx
+++ b/filter/source/filtertracer/filtertracer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtertracer.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/filtertracer/filtertracer.hxx b/filter/source/filtertracer/filtertracer.hxx
index 3ba5b4dbfda5..65e5677f2478 100644
--- a/filter/source/filtertracer/filtertracer.hxx
+++ b/filter/source/filtertracer/filtertracer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtertracer.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/filtertracer/filtertraceruno.cxx b/filter/source/filtertracer/filtertraceruno.cxx
index 1a4f51216004..f2254c8256f9 100644
--- a/filter/source/filtertracer/filtertraceruno.cxx
+++ b/filter/source/filtertracer/filtertraceruno.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtertraceruno.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/filtertracer/makefile.mk b/filter/source/filtertracer/makefile.mk
index 6643171b5722..4a4c143c4a4a 100644
--- a/filter/source/filtertracer/makefile.mk
+++ b/filter/source/filtertracer/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/impswfdialog.cxx b/filter/source/flash/impswfdialog.cxx
index 196b866f427e..0efde8182448 100644
--- a/filter/source/flash/impswfdialog.cxx
+++ b/filter/source/flash/impswfdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impswfdialog.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/impswfdialog.hrc b/filter/source/flash/impswfdialog.hrc
index 1fc0dff0a6f9..7683af33a4c4 100644
--- a/filter/source/flash/impswfdialog.hrc
+++ b/filter/source/flash/impswfdialog.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impswfdialog.hrc,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/impswfdialog.hxx b/filter/source/flash/impswfdialog.hxx
index bb857c18b906..2b32bb935863 100644
--- a/filter/source/flash/impswfdialog.hxx
+++ b/filter/source/flash/impswfdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impswfdialog.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/impswfdialog.src b/filter/source/flash/impswfdialog.src
index 0be7fb594bae..3e38dde68441 100644
--- a/filter/source/flash/impswfdialog.src
+++ b/filter/source/flash/impswfdialog.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impswfdialog.src,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/makefile.mk b/filter/source/flash/makefile.mk
index d544921f40cd..171f7901cbaa 100644
--- a/filter/source/flash/makefile.mk
+++ b/filter/source/flash/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.16 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/swfdialog.cxx b/filter/source/flash/swfdialog.cxx
index 5770d64ad4ee..20a541564445 100644
--- a/filter/source/flash/swfdialog.cxx
+++ b/filter/source/flash/swfdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfdialog.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -35,7 +32,7 @@
#include "impswfdialog.hxx"
#include <vcl/svapp.hxx>
#include <vcl/dialog.hxx>
-#include <svtools/solar.hrc>
+#include <svl/solar.hrc>
#include <com/sun/star/view/XRenderable.hpp>
#include <com/sun/star/frame/XController.hpp>
#include <com/sun/star/view/XSelectionSupplier.hpp>
diff --git a/filter/source/flash/swfdialog.hxx b/filter/source/flash/swfdialog.hxx
index 88136001b94e..fd0ead0a58c2 100644
--- a/filter/source/flash/swfdialog.hxx
+++ b/filter/source/flash/swfdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfdialog.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/swfexporter.cxx b/filter/source/flash/swfexporter.cxx
index e597f4a2fdf8..7157a9c85c06 100644
--- a/filter/source/flash/swfexporter.cxx
+++ b/filter/source/flash/swfexporter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfexporter.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -94,13 +91,14 @@ PageInfo::~PageInfo()
}
}
+#ifdef THEFUTURE
// -----------------------------------------------------------------------------
void PageInfo::addShape( ShapeInfo* pShapeInfo )
{
maShapesVector.push_back( pShapeInfo );
}
-
+#endif
// -----------------------------------------------------------------------------
diff --git a/filter/source/flash/swfexporter.hxx b/filter/source/flash/swfexporter.hxx
index f2be52a3133b..356eaa1954e1 100644
--- a/filter/source/flash/swfexporter.hxx
+++ b/filter/source/flash/swfexporter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfexporter.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -147,7 +144,9 @@ struct PageInfo
PageInfo();
~PageInfo();
+#ifdef THEFUTURE
void addShape( ShapeInfo* pShapeInfo );
+#endif
};
diff --git a/filter/source/flash/swffilter.cxx b/filter/source/flash/swffilter.cxx
index c13aef97a560..03d9d003c30d 100644
--- a/filter/source/flash/swffilter.cxx
+++ b/filter/source/flash/swffilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swffilter.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/swfuno.cxx b/filter/source/flash/swfuno.cxx
index 9771c7daeb3c..d4a11ebb921b 100644
--- a/filter/source/flash/swfuno.cxx
+++ b/filter/source/flash/swfuno.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfuno.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/flash/swfwriter.cxx b/filter/source/flash/swfwriter.cxx
index 0ec6e6d3cb4a..dcb6ff76721d 100644
--- a/filter/source/flash/swfwriter.cxx
+++ b/filter/source/flash/swfwriter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfwriter.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,6 +30,7 @@
#include "swfwriter.hxx"
#include <vcl/virdev.hxx>
#include <vcl/gdimtf.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
using namespace ::swf;
using namespace ::std;
@@ -248,8 +246,10 @@ void Writer::placeShape( sal_uInt16 nID, sal_uInt16 nDepth, sal_Int32 x, sal_Int
mpTag->addUI16( nDepth ); // depth
mpTag->addUI16( nID ); // character Id
- ::basegfx::B2DHomMatrix aMatrix; // #i73264#
- aMatrix.translate( _Int16(static_cast<long>(map100thmm(x)*mnDocXScale)), _Int16(static_cast<long>(map100thmm(y)*mnDocYScale)));
+ // #i73264#
+ const basegfx::B2DHomMatrix aMatrix(basegfx::tools::createTranslateB2DHomMatrix(
+ _Int16(static_cast<long>(map100thmm(x)*mnDocXScale)),
+ _Int16(static_cast<long>(map100thmm(y)*mnDocYScale))));
mpTag->addMatrix( aMatrix ); // transformation matrix
if( pName )
@@ -261,6 +261,7 @@ void Writer::placeShape( sal_uInt16 nID, sal_uInt16 nDepth, sal_Int32 x, sal_Int
endTag();
}
+#ifdef THEFUTURE
// -----------------------------------------------------------------------------
void Writer::moveShape( sal_uInt16 nDepth, sal_Int32 x, sal_Int32 y )
@@ -280,12 +281,15 @@ void Writer::moveShape( sal_uInt16 nDepth, sal_Int32 x, sal_Int32 y )
mpTag->addBits( aBits );
mpTag->addUI16( nDepth ); // depth
- ::basegfx::B2DHomMatrix aMatrix; // #i73264#
- aMatrix.translate( _Int16(static_cast<long>(map100thmm(x)*mnDocXScale)), _Int16(static_cast<long>(map100thmm(y)*mnDocYScale)));
+ // #i73264#
+ const basegfx::B2DHomMatrix aMatrix(basegfx::tools::createTranslateB2DHomMatrix(
+ _Int16(static_cast<long>(map100thmm(x)*mnDocXScale)),
+ _Int16(static_cast<long>(map100thmm(y)*mnDocYScale))));
mpTag->addMatrix( aMatrix ); // transformation matrix
endTag();
}
+#endif
// -----------------------------------------------------------------------------
diff --git a/filter/source/flash/swfwriter.hxx b/filter/source/flash/swfwriter.hxx
index d91410c36b98..b3a5621b54e2 100644
--- a/filter/source/flash/swfwriter.hxx
+++ b/filter/source/flash/swfwriter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfwriter.hxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -63,6 +60,8 @@ class PolyPolygon;
class Gradient;
class SvtGraphicFill;
class SvtGraphicStroke;
+class LineInfo;
+namespace basegfx { class B2DPolygon; }
inline sal_uInt16 _uInt16( sal_Int32 nValue )
{
@@ -319,8 +318,10 @@ public:
/** inserts a place shape tag into the movie stream or the current sprite */
void placeShape( sal_uInt16 nID, sal_uInt16 nDepth, sal_Int32 x, sal_Int32 y, sal_uInt16 nClipDepth = 0, const char* pName = NULL );
+#ifdef THEFUTURE
/** inserts a move shape tag into the movie stream or the current sprite */
void moveShape( sal_uInt16 nDepth, sal_Int32 x, sal_Int32 y );
+#endif
/** inserts a remove shape tag into the movie stream or the current sprite */
void removeShape( sal_uInt16 nDepth );
@@ -363,6 +364,7 @@ private:
void Impl_writeBmp( sal_uInt16 nBitmapId, sal_uInt32 width, sal_uInt32 height, sal_uInt8 *pCompressed, sal_uInt32 compressed_size );
void Impl_writeImage( const BitmapEx& rBmpEx, const Point& rPt, const Size& rSz, const Point& rSrcPt, const Size& rSrcSz, const Rectangle& rClipRect, bool bMap );
void Impl_writeJPEG(sal_uInt16 nBitmapId, const sal_uInt8* pJpgData, sal_uInt32 nJpgDataLength, sal_uInt8 *pCompressed, sal_uInt32 compressed_size );
+ void Impl_handleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon);
void Impl_writeActions( const GDIMetaFile& rMtf );
void Impl_writePolygon( const Polygon& rPoly, sal_Bool bFilled );
void Impl_writePolygon( const Polygon& rPoly, sal_Bool bFilled, const Color& rFillColor, const Color& rLineColor );
diff --git a/filter/source/flash/swfwriter1.cxx b/filter/source/flash/swfwriter1.cxx
index 6718cc4be8be..cce0314436f8 100644
--- a/filter/source/flash/swfwriter1.cxx
+++ b/filter/source/flash/swfwriter1.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfwriter1.cxx,v $
- * $Revision: 1.28 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,7 +30,6 @@
#include <com/sun/star/i18n/ScriptType.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-
#include <comphelper/processfactory.hxx>
#include "swfwriter.hxx"
#include <vcl/metaact.hxx>
@@ -41,8 +37,7 @@
#include <vcl/bmpacc.hxx>
#include <vcl/virdev.hxx>
#include <vcl/metric.hxx>
-
-
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <svtools/filter.hxx>
#include <vcl/graphictools.hxx>
@@ -53,7 +48,10 @@
#include <external/zlib/zlib.h>
#endif
#endif
+
#include <vcl/salbtype.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
using namespace ::swf;
using namespace ::std;
@@ -640,9 +638,6 @@ void Writer::Impl_writeText( const Point& rPos, const String& rText, const sal_I
// CL: This is still a hack until we figure out how to calculate a correct bound rect
// for rotatet text
Rectangle textBounds( 0, 0, static_cast<long>(mnDocWidth*mnDocXScale), static_cast<long>(mnDocHeight*mnDocYScale) );
-
- ::basegfx::B2DHomMatrix m; // #i73264#
-
double scale = 1.0;
// scale width if we have a stretched text
@@ -660,7 +655,7 @@ void Writer::Impl_writeText( const Point& rPos, const String& rText, const sal_I
scale = (double)n1 / (double)n2;
}
- m.rotate( static_cast<double>(nOrientation) * F_PI1800 );
+ basegfx::B2DHomMatrix m(basegfx::tools::createRotateB2DHomMatrix(static_cast<double>(nOrientation) * F_PI1800));
m.translate( double(aPt.X() / scale), double(aPt.Y()) );
m.scale( scale, scale );
@@ -1240,6 +1235,12 @@ bool Writer::Impl_writeStroke( SvtGraphicStroke& rStroke )
Rectangle aNewRect( aPolyPolygon.GetBoundRect() );
+ // as log as not LINESTYLE2 and DefineShape4 is used (which
+ // added support for LineJoin), only round LineJoins are
+ // supported. Fallback to META_POLYLINE_ACTION and META_LINE_ACTION
+ if(SvtGraphicStroke::joinRound != rStroke.getJoinType())
+ return false;
+
PolyPolygon aStartArrow;
rStroke.getStartArrow( aStartArrow );
if( 0 != aStartArrow.Count() )
@@ -1395,6 +1396,46 @@ bool Writer::Impl_writePageField( Rectangle& rTextBounds )
// -----------------------------------------------------------------------------
+void Writer::Impl_handleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon)
+{
+ if(rLinePolygon.count())
+ {
+ basegfx::B2DPolyPolygon aLinePolyPolygon(rLinePolygon);
+ basegfx::B2DPolyPolygon aFillPolyPolygon;
+
+ rInfo.applyToB2DPolyPolygon(aLinePolyPolygon, aFillPolyPolygon);
+
+ if(aLinePolyPolygon.count())
+ {
+ for(sal_uInt32 a(0); a < aLinePolyPolygon.count(); a++)
+ {
+ const basegfx::B2DPolygon aCandidate(aLinePolyPolygon.getB2DPolygon(a));
+ Impl_writePolygon(Polygon(aCandidate), sal_False );
+ }
+ }
+
+ if(aFillPolyPolygon.count())
+ {
+ const Color aOldLineColor(mpVDev->GetLineColor());
+ const Color aOldFillColor(mpVDev->GetFillColor());
+
+ mpVDev->SetLineColor();
+ mpVDev->SetFillColor(aOldLineColor);
+
+ for(sal_uInt32 a(0); a < aFillPolyPolygon.count(); a++)
+ {
+ const Polygon aPolygon(aFillPolyPolygon.getB2DPolygon(a));
+ Impl_writePolyPolygon(PolyPolygon(Polygon(aPolygon)), sal_True );
+ }
+
+ mpVDev->SetLineColor(aOldLineColor);
+ mpVDev->SetFillColor(aOldFillColor);
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
void Writer::Impl_writeActions( const GDIMetaFile& rMtf )
{
Rectangle clipRect;
@@ -1426,7 +1467,18 @@ void Writer::Impl_writeActions( const GDIMetaFile& rMtf )
{
const MetaLineAction* pA = (const MetaLineAction*) pAction;
- Impl_writeLine( pA->GetStartPoint(), pA->GetEndPoint() );
+ if(pA->GetLineInfo().IsDefault())
+ {
+ Impl_writeLine( pA->GetStartPoint(), pA->GetEndPoint() );
+ }
+ else
+ {
+ // LineInfo used; handle Dash/Dot and fat lines
+ basegfx::B2DPolygon aPolygon;
+ aPolygon.append(basegfx::B2DPoint(pA->GetStartPoint().X(), pA->GetStartPoint().Y()));
+ aPolygon.append(basegfx::B2DPoint(pA->GetEndPoint().X(), pA->GetEndPoint().Y()));
+ Impl_handleLineInfoPolyPolygons(pA->GetLineInfo(), aPolygon);
+ }
}
break;
@@ -1501,7 +1553,17 @@ void Writer::Impl_writeActions( const GDIMetaFile& rMtf )
const Polygon& rPoly = pA->GetPolygon();
if( rPoly.GetSize() )
- Impl_writePolygon( rPoly, sal_False );
+ {
+ if(pA->GetLineInfo().IsDefault())
+ {
+ Impl_writePolygon( rPoly, sal_False );
+ }
+ else
+ {
+ // LineInfo used; handle Dash/Dot and fat lines
+ Impl_handleLineInfoPolyPolygons(pA->GetLineInfo(), rPoly.getB2DPolygon());
+ }
+ }
}
break;
diff --git a/filter/source/flash/swfwriter2.cxx b/filter/source/flash/swfwriter2.cxx
index bbc5746cf2cd..a2638b13e629 100644
--- a/filter/source/flash/swfwriter2.cxx
+++ b/filter/source/flash/swfwriter2.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: swfwriter2.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -32,6 +29,7 @@
#include "precompiled_filter.hxx"
#include "swfwriter.hxx"
#include <vcl/virdev.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <math.h>
@@ -608,10 +606,7 @@ struct GradRecord
void FillStyle::Impl_addGradient( Tag* pTag ) const
{
vector< struct GradRecord > aGradientRecords;
-
- ::basegfx::B2DHomMatrix m; // #i73264#
-
- m.rotate( (maGradient.GetAngle() - 900) * F_PI1800 );
+ basegfx::B2DHomMatrix m(basegfx::tools::createRotateB2DHomMatrix((maGradient.GetAngle() - 900) * F_PI1800));
switch( maGradient.GetStyle() )
{
diff --git a/filter/source/graphicfilter/egif/dlgegif.cxx b/filter/source/graphicfilter/egif/dlgegif.cxx
new file mode 100644
index 000000000000..a9f1e60708b2
--- /dev/null
+++ b/filter/source/graphicfilter/egif/dlgegif.cxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+#include <tools/ref.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include <vcl/msgbox.hxx>
+#include "dlgegif.hxx"
+#include "dlgegif.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEGIF::DlgExportEGIF( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_GIF, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aCbxInterlaced ( this, ResId( CBX_INTERLACED, *rPara.pResMgr ) ),
+ aCbxTranslucent ( this, ResId( CBX_TRANSLUCENT, *rPara.pResMgr ) ),
+ aGrpMode ( this, ResId( GRP_MODE, *rPara.pResMgr ) ),
+ aGrpDraw ( this, ResId( GRP_DRAW, *rPara.pResMgr ) ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/GIF" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+
+ String aInterlaceStr( ResId( KEY_INTER, *pMgr ) );
+ String aTranslucentStr( ResId( KEY_TRANS, *pMgr ) );
+ // Config-Parameter lesen
+ sal_Bool bInterlaced = pConfigItem->ReadInt32( aInterlaceStr, 1 ) != 0;
+ sal_Bool bTranslucent = pConfigItem->ReadInt32( aTranslucentStr, 1 ) != 0;
+
+ aCbxInterlaced.Check( bInterlaced );
+ aCbxTranslucent.Check( bTranslucent );
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEGIF, OK ) );
+}
+
+DlgExportEGIF::~DlgExportEGIF()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEGIF, OK, void *, EMPTYARG )
+{
+
+ // Config-Parameter schreiben
+ String aInterlaceStr( ResId( KEY_INTER, *pMgr ) );
+ String aTranslucentStr( ResId( KEY_TRANS, *pMgr ) );
+
+ sal_Int32 nValue = 0;
+ if ( aCbxInterlaced.IsChecked() )
+ nValue++;
+ pConfigItem->WriteInt32( aInterlaceStr, nValue );
+
+ nValue = 0;
+ if ( aCbxTranslucent.IsChecked() )
+ nValue++;
+ pConfigItem->WriteInt32( aTranslucentStr, nValue );
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
+
+
+
diff --git a/filter/source/graphicfilter/egif/dlgegif.hrc b/filter/source/graphicfilter/egif/dlgegif.hrc
new file mode 100644
index 000000000000..a2f9f4feb488
--- /dev/null
+++ b/filter/source/graphicfilter/egif/dlgegif.hrc
@@ -0,0 +1,36 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "filter.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define FI_DESCR 1
+#define GRP_MODE 1
+#define GRP_DRAW 2
+#define CBX_INTERLACED 1
+#define CBX_TRANSLUCENT 2
diff --git a/filter/source/graphicfilter/egif/dlgegif.hxx b/filter/source/graphicfilter/egif/dlgegif.hxx
new file mode 100644
index 000000000000..0dbe48a065a3
--- /dev/null
+++ b/filter/source/graphicfilter/egif/dlgegif.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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 _DLGEGIF_HXX_
+#define _DLGEGIF_HXX_
+
+#include <svtools/fltcall.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen
+|*
+\************************************************************************/
+
+class FilterConfigItem;
+class ResMgr;
+
+class DlgExportEGIF : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ CheckBox aCbxInterlaced;
+ CheckBox aCbxTranslucent;
+ FixedLine aGrpMode;
+ FixedLine aGrpDraw;
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void * );
+
+public:
+ DlgExportEGIF( FltCallDialogParameter& rPara );
+ ~DlgExportEGIF();
+};
+
+#endif // _DLGEGIF_HXX_
+
diff --git a/filter/source/graphicfilter/egif/dlgegif.src b/filter/source/graphicfilter/egif/dlgegif.src
new file mode 100644
index 000000000000..39f96bb7ac7a
--- /dev/null
+++ b/filter/source/graphicfilter/egif/dlgegif.src
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgegif.hrc"
+ModalDialog DLG_EXPORT_GIF
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 169 , 70 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "GIF Options" ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 113 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 113 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 113 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedLine GRP_MODE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 100 , 8 ) ;
+ Text [ en-US ] = "Mode" ;
+ };
+ CheckBox CBX_INTERLACED
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 86 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Interlaced" ;
+ };
+ FixedLine GRP_DRAW
+ {
+ Pos = MAP_APPFONT ( 6 , 32 ) ;
+ Size = MAP_APPFONT ( 100 , 8 ) ;
+ Text [ en-US ] = "Drawing objects" ;
+ };
+ CheckBox CBX_TRANSLUCENT
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 86 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Save ~transparency" ;
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/egif/egif.cxx b/filter/source/graphicfilter/egif/egif.cxx
new file mode 100644
index 000000000000..93f9f5ec0b15
--- /dev/null
+++ b/filter/source/graphicfilter/egif/egif.cxx
@@ -0,0 +1,629 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/window.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include "giflzwc.hxx"
+#include "strings.hrc"
+#include "dlgegif.hrc"
+#include "dlgegif.hxx"
+
+// -------------
+// - GIFWriter -
+// -------------
+
+class GIFWriter
+{
+ Bitmap aAccBmp;
+ BitmapReadAccess* pAcc;
+ SvStream* pGIF;
+ ULONG nMinPercent;
+ ULONG nMaxPercent;
+ ULONG nLastPercent;
+ long nActX;
+ long nActY;
+ sal_Int32 nInterlaced;
+ BOOL bStatus;
+ BOOL bTransparent;
+
+ void MayCallback( ULONG nPercent );
+ void WriteSignature( BOOL bGIF89a );
+ void WriteGlobalHeader( const Size& rSize );
+ void WriteLoopExtension( const Animation& rAnimation );
+ void WriteLogSizeExtension( const Size& rSize100 );
+ void WriteImageExtension( long nTimer, Disposal eDisposal );
+ void WriteLocalHeader();
+ void WritePalette();
+ void WriteAccess();
+ void WriteTerminator();
+
+ BOOL CreateAccess( const BitmapEx& rBmpEx );
+ void DestroyAccess();
+
+ void WriteAnimation( const Animation& rAnimation );
+ void WriteBitmapEx( const BitmapEx& rBmpEx, const Point& rPoint, BOOL bExtended,
+ long nTimer = 0, Disposal eDisposal = DISPOSE_NOT );
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+public:
+
+ GIFWriter() {}
+ ~GIFWriter() {}
+
+ BOOL WriteGIF( const Graphic& rGraphic, SvStream& rGIF,
+ FilterConfigItem* pConfigItem );
+};
+
+// ------------------------------------------------------------------------
+
+BOOL GIFWriter::WriteGIF( const Graphic& rGraphic, SvStream& rGIF,
+ FilterConfigItem* pFilterConfigItem )
+{
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ Size aSize100;
+ const MapMode aMap( rGraphic.GetPrefMapMode() );
+ BOOL bLogSize = ( aMap.GetMapUnit() != MAP_PIXEL );
+
+ if( bLogSize )
+ aSize100 = Application::GetDefaultDevice()->LogicToLogic( rGraphic.GetPrefSize(), aMap, MAP_100TH_MM );
+
+ pGIF = &rGIF;
+ bStatus = TRUE;
+ nLastPercent = 0;
+ nInterlaced = 0;
+ pAcc = NULL;
+
+ if ( pFilterConfigItem )
+ nInterlaced = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "Interlaced" ) ), 0 );
+
+ pGIF->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ if( rGraphic.IsAnimated() )
+ {
+ const Animation& rAnimation = rGraphic.GetAnimation();
+
+ WriteSignature( TRUE );
+
+ if ( bStatus )
+ {
+ WriteGlobalHeader( rAnimation.GetDisplaySizePixel() );
+
+ if( bStatus )
+ {
+ WriteLoopExtension( rAnimation );
+
+ if( bStatus )
+ WriteAnimation( rAnimation );
+ }
+ }
+ }
+ else
+ {
+ const BOOL bGrafTrans = rGraphic.IsTransparent();
+
+ BitmapEx aBmpEx;
+
+ if( bGrafTrans )
+ aBmpEx = rGraphic.GetBitmapEx();
+ else
+ aBmpEx = BitmapEx( rGraphic.GetBitmap() );
+
+ nMinPercent = 0;
+ nMaxPercent = 100;
+
+ WriteSignature( bGrafTrans || bLogSize );
+
+ if( bStatus )
+ {
+ WriteGlobalHeader( aBmpEx.GetSizePixel() );
+
+ if( bStatus )
+ WriteBitmapEx( aBmpEx, Point(), bGrafTrans );
+ }
+ }
+
+ if( bStatus )
+ {
+ if( bLogSize )
+ WriteLogSizeExtension( aSize100 );
+
+ WriteTerminator();
+ }
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return bStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteBitmapEx( const BitmapEx& rBmpEx, const Point& rPoint,
+ BOOL bExtended, long nTimer, Disposal eDisposal )
+{
+ if( CreateAccess( rBmpEx ) )
+ {
+ nActX = rPoint.X();
+ nActY = rPoint.Y();
+
+ if( bExtended )
+ WriteImageExtension( nTimer, eDisposal );
+
+ if( bStatus )
+ {
+ WriteLocalHeader();
+
+ if( bStatus )
+ {
+ WritePalette();
+
+ if( bStatus )
+ WriteAccess();
+ }
+ }
+
+ DestroyAccess();
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteAnimation( const Animation& rAnimation )
+{
+ const USHORT nCount = rAnimation.Count();
+
+ if( nCount )
+ {
+ const double fStep = 100. / nCount;
+
+ nMinPercent = 0L;
+ nMaxPercent = (ULONG) fStep;
+
+ for( USHORT i = 0; i < nCount; i++ )
+ {
+ const AnimationBitmap& rAnimBmp = rAnimation.Get( i );
+
+ WriteBitmapEx( rAnimBmp.aBmpEx, rAnimBmp.aPosPix, TRUE,
+ rAnimBmp.nWait, rAnimBmp.eDisposal );
+ nMinPercent = nMaxPercent;
+ nMaxPercent = (ULONG) ( nMaxPercent + fStep );
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::MayCallback( ULONG nPercent )
+{
+ if ( xStatusIndicator.is() )
+ {
+ if( nPercent >= nLastPercent + 3 )
+ {
+ nLastPercent = nPercent;
+ if ( nPercent <= 100 )
+ xStatusIndicator->setValue( nPercent );
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+BOOL GIFWriter::CreateAccess( const BitmapEx& rBmpEx )
+{
+ if( bStatus )
+ {
+ Bitmap aMask( rBmpEx.GetMask() );
+
+ aAccBmp = rBmpEx.GetBitmap();
+ bTransparent = FALSE;
+
+ if( !!aMask )
+ {
+ if( aAccBmp.Convert( BMP_CONVERSION_8BIT_TRANS ) )
+ {
+ aMask.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
+ aAccBmp.Replace( aMask, BMP_COL_TRANS );
+ bTransparent = TRUE;
+ }
+ else
+ aAccBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
+ }
+ else
+ aAccBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
+
+ pAcc = aAccBmp.AcquireReadAccess();
+
+ if( !pAcc )
+ bStatus = FALSE;
+ }
+
+ return bStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::DestroyAccess()
+{
+ aAccBmp.ReleaseAccess( pAcc );
+ pAcc = NULL;
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteSignature( BOOL bGIF89a )
+{
+ if( bStatus )
+ {
+ pGIF->Write( bGIF89a ? "GIF89a" : "GIF87a" , 6 );
+
+ if( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteGlobalHeader( const Size& rSize )
+{
+ if( bStatus )
+ {
+ // 256 Farben
+ const UINT16 nWidth = (UINT16) rSize.Width();
+ const UINT16 nHeight = (UINT16) rSize.Height();
+ const BYTE cFlags = 128 | ( 7 << 4 );
+
+ // Werte rausschreiben
+ *pGIF << nWidth;
+ *pGIF << nHeight;
+ *pGIF << cFlags;
+ *pGIF << (BYTE) 0x00;
+ *pGIF << (BYTE) 0x00;
+
+ // Dummy-Palette mit zwei Eintraegen (Schwarz/Weiss) schreiben;
+ // dieses nur wegen Photoshop-Bug, da die keine Bilder ohne
+ // globale Farbpalette lesen koennen
+ *pGIF << (UINT16) 0;
+ *pGIF << (UINT16) 255;
+ *pGIF << (UINT16) 65535;
+
+ if( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteLoopExtension( const Animation& rAnimation )
+{
+ DBG_ASSERT( rAnimation.Count() > 0, "Animation has no bitmaps!" );
+
+ USHORT nLoopCount = (USHORT) rAnimation.GetLoopCount();
+
+ // falls nur ein Durchlauf stattfinden soll,
+ // wird keine LoopExtension geschrieben;
+ // Default ist dann immer ein Durchlauf
+ if( nLoopCount != 1 )
+ {
+ // Netscape interpretiert den LoopCount
+ // als reine Anzahl der _Wiederholungen_
+ if( nLoopCount )
+ nLoopCount--;
+
+ const BYTE cLoByte = (const BYTE) nLoopCount;
+ const BYTE cHiByte = (const BYTE) ( nLoopCount >> 8 );
+
+ *pGIF << (BYTE) 0x21;
+ *pGIF << (BYTE) 0xff;
+ *pGIF << (BYTE) 0x0b;
+ pGIF->Write( "NETSCAPE2.0", 11 );
+ *pGIF << (BYTE) 0x03;
+ *pGIF << (BYTE) 0x01;
+ *pGIF << cLoByte;
+ *pGIF << cHiByte;
+ *pGIF << (BYTE) 0x00;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteLogSizeExtension( const Size& rSize100 )
+{
+ // PrefSize in 100th-mm als ApplicationExtension schreiben
+ if( rSize100.Width() && rSize100.Height() )
+ {
+ *pGIF << (BYTE) 0x21;
+ *pGIF << (BYTE) 0xff;
+ *pGIF << (BYTE) 0x0b;
+ pGIF->Write( "STARDIV 5.0", 11 );
+ *pGIF << (BYTE) 0x09;
+ *pGIF << (BYTE) 0x01;
+ *pGIF << (UINT32) rSize100.Width();
+ *pGIF << (UINT32) rSize100.Height();
+ *pGIF << (BYTE) 0x00;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteImageExtension( long nTimer, Disposal eDisposal )
+{
+ if( bStatus )
+ {
+ const UINT16 nDelay = (UINT16) nTimer;
+ BYTE cFlags = 0;
+
+ // Transparent-Flag setzen
+ if( bTransparent )
+ cFlags |= 1;
+
+ // Disposal-Wert setzen
+ if( eDisposal == DISPOSE_BACK )
+ cFlags |= ( 2 << 2 );
+ else if( eDisposal == DISPOSE_PREVIOUS )
+ cFlags |= ( 3 << 2 );
+
+ *pGIF << (BYTE) 0x21;
+ *pGIF << (BYTE) 0xf9;
+ *pGIF << (BYTE) 0x04;
+ *pGIF << cFlags;
+ *pGIF << nDelay;
+ *pGIF << (BYTE) pAcc->GetBestPaletteIndex( BMP_COL_TRANS );
+ *pGIF << (BYTE) 0x00;
+
+ if( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteLocalHeader()
+{
+ if( bStatus )
+ {
+ const UINT16 nPosX = (UINT16) nActX;
+ const UINT16 nPosY = (UINT16) nActY;
+ const UINT16 nWidth = (UINT16) pAcc->Width();
+ const UINT16 nHeight = (UINT16) pAcc->Height();
+ BYTE cFlags = (BYTE) ( pAcc->GetBitCount() - 1 );
+
+ // Interlaced-Flag setzen
+ if( nInterlaced )
+ cFlags |= 0x40;
+
+ // Flag fuer lokale Farbpalette setzen
+ cFlags |= 0x80;
+
+ // alles rausschreiben
+ *pGIF << (BYTE) 0x2c;
+ *pGIF << nPosX;
+ *pGIF << nPosY;
+ *pGIF << nWidth;
+ *pGIF << nHeight;
+ *pGIF << cFlags;
+
+ if( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WritePalette()
+{
+ if( bStatus && pAcc->HasPalette() )
+ {
+ const USHORT nCount = pAcc->GetPaletteEntryCount();
+ const USHORT nMaxCount = ( 1 << pAcc->GetBitCount() );
+
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ const BitmapColor& rColor = pAcc->GetPaletteColor( i );
+
+ *pGIF << rColor.GetRed();
+ *pGIF << rColor.GetGreen();
+ *pGIF << rColor.GetBlue();
+ }
+
+ // Rest mit 0 auffuellen
+ if( nCount < nMaxCount )
+ pGIF->SeekRel( ( nMaxCount - nCount ) * 3 );
+
+ if( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteAccess()
+{
+ GIFLZWCompressor aCompressor;
+ const long nWidth = pAcc->Width();
+ const long nHeight = pAcc->Height();
+ BYTE* pBuffer = NULL;
+ const ULONG nFormat = pAcc->GetScanlineFormat();
+ long nY;
+ long nT;
+ long i;
+ BOOL bNative = ( BMP_FORMAT_8BIT_PAL == nFormat );
+
+ if( !bNative )
+ pBuffer = new BYTE[ nWidth ];
+
+ if( bStatus && ( 8 == pAcc->GetBitCount() ) && pAcc->HasPalette() )
+ {
+ aCompressor.StartCompression( *pGIF, pAcc->GetBitCount() );
+
+ for( i = 0; i < nHeight; i++ )
+ {
+ if( nInterlaced )
+ {
+ nY = i << 3;
+
+ if( nY >= nHeight )
+ {
+ nT = i - ( ( nHeight + 7 ) >> 3 );
+ nY= ( nT << 3 ) + 4;
+
+ if( nY >= nHeight )
+ {
+ nT -= ( nHeight + 3 ) >> 3;
+ nY = ( nT << 2 ) + 2;
+
+ if ( nY >= nHeight )
+ {
+ nT -= ( ( nHeight + 1 ) >> 2 );
+ nY = ( nT << 1 ) + 1;
+ }
+ }
+ }
+ }
+ else
+ nY = i;
+
+ if( bNative )
+ aCompressor.Compress( pAcc->GetScanline( nY ), nWidth );
+ else
+ {
+ for( long nX = 0L; nX < nWidth; nX++ )
+ pBuffer[ nX ] = (BYTE) pAcc->GetPixel( nY, nX );
+
+ aCompressor.Compress( pBuffer, nWidth );
+ }
+
+ if ( pGIF->GetError() )
+ bStatus = FALSE;
+
+ MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * i / nHeight );
+
+ if( !bStatus )
+ break;
+ }
+
+ aCompressor.EndCompression();
+
+ if ( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+
+ delete[] pBuffer;
+}
+
+// ------------------------------------------------------------------------
+
+void GIFWriter::WriteTerminator()
+{
+ if( bStatus )
+ {
+ *pGIF << (BYTE) 0x3b;
+
+ if( pGIF->GetError() )
+ bStatus = FALSE;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic,
+ FilterConfigItem* pConfigItem, BOOL )
+{
+ return GIFWriter().WriteGIF( rGraphic, rStream, pConfigItem );
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "egi" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEGIF( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+// ------------------------------------------------------------------------
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/egif/egifstr.src b/filter/source/graphicfilter/egif/egifstr.src
new file mode 100644
index 000000000000..ea258019d543
--- /dev/null
+++ b/filter/source/graphicfilter/egif/egifstr.src
@@ -0,0 +1,39 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "strings.hrc"
+
+// Key fuer den Dialog
+String KEY_INTER
+{
+ Text = "Interlaced";
+};
+String KEY_TRANS
+{
+ Text = "Translucent";
+};
diff --git a/filter/source/graphicfilter/egif/exports.map b/filter/source/graphicfilter/egif/exports.map
new file mode 100644
index 000000000000..10820132c0ce
--- /dev/null
+++ b/filter/source/graphicfilter/egif/exports.map
@@ -0,0 +1,8 @@
+GIFEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/egif/giflzwc.cxx b/filter/source/graphicfilter/egif/giflzwc.cxx
new file mode 100644
index 000000000000..5438aa46017b
--- /dev/null
+++ b/filter/source/graphicfilter/egif/giflzwc.cxx
@@ -0,0 +1,256 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <tools/stream.hxx>
+#include "giflzwc.hxx"
+
+// ----------------------------
+// - GIFImageDataOutputStream -
+// ----------------------------
+
+class GIFImageDataOutputStream
+{
+private:
+
+ void FlushBlockBuf();
+ inline void FlushBitsBufsFullBytes();
+
+ SvStream& rStream;
+ BYTE* pBlockBuf;
+ BYTE nBlockBufSize;
+ ULONG nBitsBuf;
+ USHORT nBitsBufSize;
+
+public:
+
+ GIFImageDataOutputStream( SvStream & rGIF, BYTE nLZWDataSize );
+ ~GIFImageDataOutputStream();
+
+ inline void WriteBits( USHORT nCode, USHORT nCodeLen );
+};
+
+// ------------------------------------------------------------------------
+
+inline void GIFImageDataOutputStream::FlushBitsBufsFullBytes()
+{
+ while (nBitsBufSize>=8)
+ {
+ if( nBlockBufSize==255 )
+ FlushBlockBuf();
+
+ pBlockBuf[nBlockBufSize++] = (BYTE) nBitsBuf;
+ nBitsBuf >>= 8;
+ nBitsBufSize -= 8;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+inline void GIFImageDataOutputStream::WriteBits( USHORT nCode, USHORT nCodeLen )
+{
+ if( nBitsBufSize+nCodeLen>32 )
+ FlushBitsBufsFullBytes();
+
+ nBitsBuf |= (ULONG) nCode << nBitsBufSize;
+ nBitsBufSize = nBitsBufSize + nCodeLen;
+}
+
+// ------------------------------------------------------------------------
+
+GIFImageDataOutputStream::GIFImageDataOutputStream( SvStream & rGIF, BYTE nLZWDataSize ) :
+ rStream(rGIF)
+{
+ pBlockBuf = new BYTE[ 255 ];
+ nBlockBufSize = 0;
+ nBitsBufSize = 0;
+ nBitsBuf = 0;
+ rStream << nLZWDataSize;
+}
+
+// ------------------------------------------------------------------------
+
+
+GIFImageDataOutputStream::~GIFImageDataOutputStream()
+{
+ WriteBits(0,7);
+ FlushBitsBufsFullBytes();
+ FlushBlockBuf();
+ rStream << (BYTE)0;
+ delete[] pBlockBuf;
+}
+
+// ------------------------------------------------------------------------
+
+void GIFImageDataOutputStream::FlushBlockBuf()
+{
+ if( nBlockBufSize )
+ {
+ rStream << (BYTE) nBlockBufSize;
+ rStream.Write( pBlockBuf,nBlockBufSize );
+ nBlockBufSize = 0;
+ }
+}
+
+// -------------------
+// - GIFLZWCTreeNode -
+// -------------------
+
+struct GIFLZWCTreeNode
+{
+
+ GIFLZWCTreeNode* pBrother; // naechster Knoten, der den selben Vater hat
+ GIFLZWCTreeNode* pFirstChild; // erster Sohn
+ USHORT nCode; // Der Code fuer den String von Pixelwerten, der sich ergibt, wenn
+ USHORT nValue; // Der Pixelwert
+};
+
+// --------------------
+// - GIFLZWCompressor -
+// --------------------
+
+GIFLZWCompressor::GIFLZWCompressor()
+{
+ pIDOS=NULL;
+}
+
+// ------------------------------------------------------------------------
+
+GIFLZWCompressor::~GIFLZWCompressor()
+{
+ if (pIDOS!=NULL) EndCompression();
+}
+
+// ------------------------------------------------------------------------
+
+void GIFLZWCompressor::StartCompression( SvStream& rGIF, USHORT nPixelSize )
+{
+ if( !pIDOS )
+ {
+ USHORT i;
+
+ nDataSize = nPixelSize;
+
+ if( nDataSize < 2 )
+ nDataSize=2;
+
+ nClearCode=1<<nDataSize;
+ nEOICode=nClearCode+1;
+ nTableSize=nEOICode+1;
+ nCodeSize=nDataSize+1;
+
+ pIDOS=new GIFImageDataOutputStream(rGIF,(BYTE)nDataSize);
+ pTable=new GIFLZWCTreeNode[4096];
+
+ for (i=0; i<4096; i++)
+ {
+ pTable[i].pBrother = pTable[i].pFirstChild = NULL;
+ pTable[i].nValue = (BYTE) ( pTable[i].nCode = i );
+ }
+
+ pPrefix = NULL;
+ pIDOS->WriteBits( nClearCode,nCodeSize );
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFLZWCompressor::Compress( HPBYTE pSrc, ULONG nSize )
+{
+ if( pIDOS )
+ {
+ GIFLZWCTreeNode* p;
+ USHORT i;
+ BYTE nV;
+
+ if( !pPrefix && nSize )
+ {
+ pPrefix=pTable+(*pSrc++);
+ nSize--;
+ }
+
+ while( nSize )
+ {
+ nSize--;
+ nV=*pSrc++;
+ for( p=pPrefix->pFirstChild; p!=NULL; p=p->pBrother )
+ {
+ if (p->nValue==nV)
+ break;
+ }
+
+ if( p)
+ pPrefix=p;
+ else
+ {
+ pIDOS->WriteBits(pPrefix->nCode,nCodeSize);
+
+ if (nTableSize==4096)
+ {
+ pIDOS->WriteBits(nClearCode,nCodeSize);
+
+ for (i=0; i<nClearCode; i++)
+ pTable[i].pFirstChild=NULL;
+
+ nCodeSize=nDataSize+1;
+ nTableSize=nEOICode+1;
+ }
+ else
+ {
+ if(nTableSize==(USHORT)(1<<nCodeSize))
+ nCodeSize++;
+
+ p=pTable+(nTableSize++);
+ p->pBrother=pPrefix->pFirstChild;
+ pPrefix->pFirstChild=p;
+ p->nValue=nV;
+ p->pFirstChild=NULL;
+ }
+
+ pPrefix=pTable+nV;
+ }
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void GIFLZWCompressor::EndCompression()
+{
+ if( pIDOS )
+ {
+ if( pPrefix )
+ pIDOS->WriteBits(pPrefix->nCode,nCodeSize);
+
+ pIDOS->WriteBits( nEOICode,nCodeSize );
+ delete[] pTable;
+ delete pIDOS;
+ pIDOS=NULL;
+ }
+}
diff --git a/filter/source/graphicfilter/egif/giflzwc.hxx b/filter/source/graphicfilter/egif/giflzwc.hxx
new file mode 100644
index 000000000000..75048b0f8ff5
--- /dev/null
+++ b/filter/source/graphicfilter/egif/giflzwc.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * 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 _GIFLZWC_HXX
+#define _GIFLZWC_HXX
+
+#ifndef _BMPACC_HXX
+#include <vcl/bmpacc.hxx>
+#endif
+
+// --------------------
+// - GIFLZWCompressor -
+// --------------------
+
+class GIFImageDataOutputStream;
+struct GIFLZWCTreeNode;
+
+class GIFLZWCompressor
+{
+private:
+
+ GIFImageDataOutputStream* pIDOS;
+ GIFLZWCTreeNode* pTable;
+ GIFLZWCTreeNode* pPrefix;
+ USHORT nDataSize;
+ USHORT nClearCode;
+ USHORT nEOICode;
+ USHORT nTableSize;
+ USHORT nCodeSize;
+
+public:
+
+ GIFLZWCompressor();
+ ~GIFLZWCompressor();
+
+ void StartCompression( SvStream& rGIF, USHORT nPixelSize );
+ void Compress( HPBYTE pSrc, ULONG nSize );
+ void EndCompression();
+};
+
+#endif // _GIFLZWC_HXX
diff --git a/filter/source/graphicfilter/egif/makefile.mk b/filter/source/graphicfilter/egif/makefile.mk
new file mode 100644
index 000000000000..27dae4906046
--- /dev/null
+++ b/filter/source/graphicfilter/egif/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=egif
+TARGET2=egi
+DEPTARGET=vegif
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES = dlgegif.src \
+ egifstr.src
+.IF "$(L10N_framework)"==""
+SLOFILES= $(SLO)$/egif.obj \
+ $(SLO)$/dlgegif.obj \
+ $(SLO)$/giflzwc.obj
+.ENDIF
+
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET2)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+
+.IF "$(L10N_framework)"==""
+SHL1TARGET= egi$(DLLPOSTFIX)
+SHL1IMPLIB= egif
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/egif.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/egif.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/egif/strings.hrc b/filter/source/graphicfilter/egif/strings.hrc
new file mode 100644
index 000000000000..1566c0dfee81
--- /dev/null
+++ b/filter/source/graphicfilter/egif/strings.hrc
@@ -0,0 +1,28 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define KEY_INTER 256
+#define KEY_TRANS 257
diff --git a/filter/source/graphicfilter/eos2met/dlgeos2.cxx b/filter/source/graphicfilter/eos2met/dlgeos2.cxx
new file mode 100644
index 000000000000..4c5bf1b0a429
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/dlgeos2.cxx
@@ -0,0 +1,179 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+#include <com/sun/star/awt/Size.hpp>
+#include <vcl/msgbox.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include "dlgeos2.hxx"
+#include "dlgeos2.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEMET::DlgExportEMET( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EMET, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ aRbOriginal ( this, ResId( RB_ORIGINAL, *rPara.pResMgr ) ),
+ aRbSize ( this, ResId( RB_SIZE, *rPara.pResMgr ) ),
+ aGrpMode ( this, ResId( GRP_MODE, *rPara.pResMgr ) ),
+ aFtSizeX ( this, ResId( FT_SIZEX, *rPara.pResMgr ) ),
+ aMtfSizeX ( this, ResId( MTF_SIZEX, *rPara.pResMgr ) ),
+ aFtSizeY ( this, ResId( FT_SIZEY, *rPara.pResMgr ) ),
+ aMtfSizeY ( this, ResId( MTF_SIZEY, *rPara.pResMgr ) ),
+ aGrpSize ( this, ResId( GRP_SIZE, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/MET" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEMET, OK ) );
+ aRbOriginal.SetClickHdl( LINK( this, DlgExportEMET, ClickRbOriginal ) );
+ aRbSize.SetClickHdl( LINK( this, DlgExportEMET, ClickRbSize ) );
+
+ // Config-Parameter lesen
+ sal_Int32 nMode = pConfigItem->ReadInt32( String( ResId( KEY_MODE, *pMgr ) ), 0 );
+ ::com::sun::star::awt::Size aDefault( 10000, 10000 );
+ ::com::sun::star::awt::Size aSize;
+ aSize = pConfigItem->ReadSize( String( ResId( KEY_SIZE, *pMgr ) ), aDefault );
+
+ aMtfSizeX.SetDefaultUnit( FUNIT_MM );
+ aMtfSizeY.SetDefaultUnit( FUNIT_MM );
+
+ aMtfSizeX.SetValue( aSize.Width );
+ aMtfSizeY.SetValue( aSize.Height );
+
+ switch ( rPara.eFieldUnit )
+ {
+// case FUNIT_NONE :
+// case FUNIT_KM :
+// case FUNIT_PERCENT :
+// case FUNIT_CUSTOM :
+// case FUNIT_MILE :
+// case FUNIT_FOOT :
+// case FUNIT_M :
+ case FUNIT_MM :
+ case FUNIT_CM :
+ case FUNIT_TWIP :
+ case FUNIT_POINT :
+ case FUNIT_PICA :
+ case FUNIT_INCH :
+ case FUNIT_100TH_MM :
+ {
+ aMtfSizeX.SetUnit( rPara.eFieldUnit );
+ aMtfSizeY.SetUnit( rPara.eFieldUnit );
+ }
+ break;
+ default:
+ break; // multiple other value not handled -Wall
+ }
+ if ( nMode == 1 )
+ {
+ aRbSize.Check( TRUE );
+ ClickRbSize( NULL );
+ }
+ else
+ {
+ aRbOriginal.Check( TRUE );
+ ClickRbOriginal( NULL );
+ }
+}
+
+DlgExportEMET::~DlgExportEMET()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEMET, OK, void *, EMPTYARG )
+{
+ // Config-Parameter schreiben
+ ::com::sun::star::awt::Size aSize(
+ (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeX.GetValue(), 2, aMtfSizeX.GetUnit(), MAP_100TH_MM ),
+ (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeY.GetValue(), 2, aMtfSizeY.GetUnit(), MAP_100TH_MM ) );
+ sal_Int32 nStrMode = ( aRbSize.IsChecked() ) ? 1 : 0;
+
+ pConfigItem->WriteInt32( String( ResId( KEY_MODE, *pMgr ) ), nStrMode );
+ pConfigItem->WriteSize( String( ResId( KEY_SIZE, *pMgr ) ), aSize );
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
+
+/*************************************************************************
+|*
+|* Enabled/Disabled Controls
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEMET, ClickRbOriginal, void*, EMPTYARG )
+{
+ aGrpSize.Disable();
+ aFtSizeX.Disable();
+ aMtfSizeX.Disable();
+ aFtSizeY.Disable();
+ aMtfSizeY.Disable();
+
+ return 0;
+}
+
+
+/*************************************************************************
+|*
+|* Enabled/Disabled Controls
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEMET, ClickRbSize, void*, EMPTYARG )
+{
+ aGrpSize.Enable();
+ aFtSizeX.Enable();
+ aMtfSizeX.Enable();
+ aFtSizeY.Enable();
+ aMtfSizeY.Enable();
+
+ return 0;
+}
+
diff --git a/filter/source/graphicfilter/eos2met/dlgeos2.hrc b/filter/source/graphicfilter/eos2met/dlgeos2.hrc
new file mode 100644
index 000000000000..5e4ec5b160fc
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/dlgeos2.hrc
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "filter.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define CBX_SIZE 2
+#define MTF_SIZEX 1
+#define MTF_SIZEY 2
+#define FT_SIZEX 1
+#define FT_SIZEY 2
+#define GRP_SIZE 1
+#define GRP_MODE 2
+#define RB_ORIGINAL 1
+#define RB_SIZE 2
+
diff --git a/filter/source/graphicfilter/eos2met/dlgeos2.hxx b/filter/source/graphicfilter/eos2met/dlgeos2.hxx
new file mode 100644
index 000000000000..6387be453494
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/dlgeos2.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * 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 _DLGEOS2_HXX_
+#define _DLGEOS2_HXX_
+#include <svtools/fltcall.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen bei Vektorformaten
+|*
+\************************************************************************/
+
+class FilterConfigItem;
+class ResMgr;
+
+class DlgExportEMET : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ RadioButton aRbOriginal;
+ RadioButton aRbSize;
+ FixedLine aGrpMode;
+
+ FixedText aFtSizeX;
+ MetricField aMtfSizeX;
+ FixedText aFtSizeY;
+ MetricField aMtfSizeY;
+ FixedLine aGrpSize;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void* p );
+ DECL_LINK( ClickRbOriginal,void* p );
+ DECL_LINK( ClickRbSize,void* p );
+
+public:
+ DlgExportEMET( FltCallDialogParameter& rPara );
+ ~DlgExportEMET();
+};
+
+
+#endif // _DLGEMET_HXX_
+
diff --git a/filter/source/graphicfilter/eos2met/dlgeos2.src b/filter/source/graphicfilter/eos2met/dlgeos2.src
new file mode 100644
index 000000000000..6c9e474e25db
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/dlgeos2.src
@@ -0,0 +1,162 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "dlgeos2.hrc"
+
+ModalDialog DLG_EXPORT_EMET
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 178 , 89 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "MET Options" ;
+ MetricField MTF_SIZEX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 55 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 100 ;
+ Maximum = 99999 ;
+ StrictFormat = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_MM ;
+ First = 100 ;
+ Last = 99999 ;
+ SpinSize = 100 ;
+ };
+ MetricField MTF_SIZEY
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 71 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 100 ;
+ Maximum = 99999 ;
+ StrictFormat = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_MM ;
+ First = 100 ;
+ Last = 99999 ;
+ SpinSize = 100 ;
+ };
+ FixedLine GRP_SIZE
+ {
+ Pos = MAP_APPFONT ( 6 , 44 ) ;
+ Size = MAP_APPFONT ( 110 , 8 ) ;
+ Text [ en-US ] = "Size" ;
+ };
+ FixedText FT_SIZEX
+ {
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text [ en-US ] = "Width" ;
+ };
+ FixedText FT_SIZEY
+ {
+ Pos = MAP_APPFONT ( 12 , 72 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text [ en-US ] = "Height" ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 122 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 122 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 122 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton RB_ORIGINAL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 98 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Original" ;
+ };
+ RadioButton RB_SIZE
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 98 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Size" ;
+ };
+ FixedLine GRP_MODE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 110 , 8 ) ;
+ Text [ en-US ] = "Mode" ;
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/eos2met/eos2met.cxx b/filter/source/graphicfilter/eos2met/eos2met.cxx
new file mode 100644
index 000000000000..5ef86b9c1b98
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/eos2met.cxx
@@ -0,0 +1,2648 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <svtools/fltcall.hxx>
+
+#include <math.h>
+#include <tools/stream.hxx>
+#include <tools/bigint.hxx>
+#include <vcl/metaact.hxx>
+#include <vcl/salbtype.hxx>
+#include <tools/poly.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/hatch.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/font.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <svl/solar.hrc>
+#include "strings.hrc"
+#include "dlgeos2.hxx"
+
+// -----------------------------Feld-Typen-------------------------------
+
+#define BegDocumnMagic 0xA8A8 /* Begin Document */
+#define EndDocumnMagic 0xA8A9 /* End Document */
+
+#define BegResGrpMagic 0xC6A8 /* Begin Resource Group */
+#define EndResGrpMagic 0xC6A9 /* End Resource Group */
+
+#define BegColAtrMagic 0x77A8 /* Begin Color Attribute Table */
+#define EndColAtrMagic 0x77A9 /* End Color Attribute Table */
+#define BlkColAtrMagic 0x77B0 /* Color Attribute Table */
+#define MapColAtrMagic 0x77AB /* Map Color Attribute Table */
+
+#define BegImgObjMagic 0xFBA8 /* Begin Image Object */
+#define EndImgObjMagic 0xFBA9 /* End Image Object */
+#define DscImgObjMagic 0xFBA6 /* Image Data Descriptor */
+#define DatImgObjMagic 0xFBEE /* Image Picture Data */
+
+#define BegObjEnvMagic 0xC7A8 /* Begin Object Environment Group */
+#define EndObjEnvMagic 0xC7A9 /* End Object Environment Group */
+
+#define BegGrfObjMagic 0xBBA8 /* Begin Graphics Object */
+#define EndGrfObjMagic 0xBBA9 /* End Graphics Object */
+#define DscGrfObjMagic 0xBBA6 /* Graphics Data Descritor */
+#define DatGrfObjMagic 0xBBEE /* Graphics Data */
+
+#define MapCodFntMagic 0x8AAB /* Map Coded Font */
+#define MapDatResMagic 0xC3AB /* Map Data Resource */
+
+// Struktur des Metafiles
+// BegDocumn
+// BegResGrp
+// BegColAtr
+// BlkColAtr
+// EndColAtr
+// BegImgObj[0..n]
+// BegResGrp[]
+// BegColAtr[]
+// BlkColAtr
+// EndColAtr
+// EndResGrp
+// BegObjEnv[]
+// MapColAtr
+// EndObjEnv
+// DscImgObj
+// DatImgOb1
+// DatImgOb2[1..n]
+// EndImgObj
+// BegGrfObj
+// BegObjEnv[]
+// MapColAtr
+// MapCodFnt1
+// MapCodFnt2[0..n]
+// MapDatRes[0..n]
+// EndObjEnv
+// DscGrfObj
+// DatGrfObj[0..n]
+// EndGrfObj
+// EndResGrp
+// EndDocumn
+
+//============================== METWriter ===================================
+
+struct METChrSet
+{
+ struct METChrSet * pSucc;
+ BYTE nSet;
+ String aName;
+ FontWeight eWeight;
+};
+
+struct METGDIStackMember
+{
+ struct METGDIStackMember * pSucc;
+ Color aLineColor;
+ Color aFillColor;
+ RasterOp eRasterOp;
+ Font aFont;
+ MapMode aMapMode;
+ Rectangle aClipRect;
+};
+
+class METWriter
+{
+private:
+
+ BOOL bStatus;
+ ULONG nLastPercent; // Mit welcher Zahl pCallback zuletzt aufgerufen wurde.
+ SvStream* pMET;
+ Rectangle aPictureRect;
+ MapMode aPictureMapMode;
+ MapMode aTargetMapMode;
+ ULONG nActualFieldStartPos; // Anfangs-Position des aktuellen 'Field'
+ ULONG nNumberOfDataFields; // Anzahl der angefangenen 'Graphcis Data Fields'
+ Color aGDILineColor;
+ Color aGDIFillColor;
+ RasterOp eGDIRasterOp;
+ Font aGDIFont;
+ MapMode aGDIMapMode; // derzeit unbenutzt!
+ Rectangle aGDIClipRect; // derzeit unbenutzt!
+ METGDIStackMember* pGDIStack;
+ Color aMETColor;
+ Color aMETBackgroundColor;
+ Color aMETPatternSymbol;
+ RasterOp eMETMix ;
+ long nMETStrokeLineWidth;
+ Size aMETChrCellSize;
+ short nMETChrAngle;
+ BYTE nMETChrSet;
+ METChrSet* pChrSetList; // Liste der Character-Sets
+ BYTE nNextChrSetId; // die erste unbenutzte ChrSet-Id
+ ULONG nActBitmapId; // Field-Id der naechsten Bitmap
+ ULONG nNumberOfActions; // Anzahl der Actions im GDIMetafile
+ ULONG nNumberOfBitmaps; // Anzahl der Bitmaps
+ ULONG nWrittenActions; // Anzahl der bereits verarbeiteten Actions beim Schreiben der Orders
+ ULONG nWrittenBitmaps; // Anzahl der bereits geschriebenen Bitmaps
+ ULONG nActBitmapPercent; // Wieviel Prozent die naechste Bitmap schon geschrieben ist.
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+ void MayCallback();
+ // Berechnet anhand der obigen 5 Parameter eine Prozentzahl
+ // und macht dann ggf. einen Callback. Setzt bStatus auf FALSE wenn User abbrechen
+ // moechte.
+
+ void CountActionsAndBitmaps(const GDIMetaFile * pMTF);
+ // Zaehlt die Bitmaps und Actions (nNumberOfActions und nNumberOfBitmaps muessen
+ // zu Anfang auf 0 gesetzt werden, weil diese Methode rekursiv ist)
+
+ void WriteBigEndianShort(USHORT nWord);
+ void WriteBigEndianLong(ULONG nLong);
+
+ void WritePoint(Point aPt);
+ void WriteClipRect( const Rectangle& rRect );
+ void WriteFieldIntroducer(USHORT nFieldSize, USHORT nFieldType,
+ BYTE nFlags, USHORT nSegSeqNum);
+ void UpdateFieldSize();
+
+ void WriteFieldId(ULONG nId);
+
+ void CreateChrSets(const GDIMetaFile * pMTF);
+ void CreateChrSet(const Font & rFont);
+ void WriteChrSets();
+ BYTE FindChrSet(const Font & rFont);
+
+ void WriteColorAttributeTable(ULONG nFieldId=4, BitmapPalette* pPalette=NULL,
+ BYTE nBasePartFlags=0x40, BYTE nBasePartLCTID=0);
+
+ void WriteImageObject(const Bitmap & rBitmap);
+ void WriteImageObjects(const GDIMetaFile * pMTF);
+
+ void WriteDataDescriptor(const GDIMetaFile * pMTF);
+
+ void WillWriteOrder(ULONG nNextOrderMaximumLength);
+
+ void METSetAndPushLineInfo( const LineInfo& rLineInfo );
+ void METPopLineInfo( const LineInfo& rLineInfo );
+ void METBitBlt(Point aPt, Size aSize, const Bitmap & rBitmap);
+ void METBeginArea(BOOL bBoundaryLine);
+ void METEndArea();
+ void METBeginPath(sal_uInt32 nPathId);
+ void METEndPath();
+ void METFillPath(sal_uInt32 nPathId);
+ void METOutlinePath(sal_uInt32 nPathId);
+ void METCloseFigure();
+ void METMove(Point aPt);
+ void METLine(Point aPt1, Point aPt2);
+ void METLine(const Polygon & rPolygon);
+ void METLine(const PolyPolygon & rPolyPolygon);
+ void METLineAtCurPos(Point aPt);
+ void METBox(BOOL bFill, BOOL bBoundary,
+ Rectangle aRect, sal_uInt32 nHAxis, sal_uInt32 nVAxis);
+ void METFullArc(Point aCenter, double fMultiplier);
+ void METPartialArcAtCurPos(Point aCenter, double fMultiplier,
+ double fStartAngle, double fSweepAngle);
+ void METChrStr(Point aPt, String aStr);
+ void METSetArcParams(long nP, long nQ, long nR, long nS);
+ void METSetColor(Color aColor);
+ void METSetBackgroundColor(Color aColor);
+ void METSetMix(RasterOp eROP);
+ void METSetChrCellSize(Size aSize);
+ void METSetChrAngle(short nAngle);
+ void METSetChrSet(BYTE nSet);
+
+ void WriteOrders(const GDIMetaFile * pMTF);
+
+ void WriteObjectEnvironmentGroup(const GDIMetaFile * pMTF);
+
+ void WriteGraphicsObject(const GDIMetaFile * pMTF);
+
+ void WriteResourceGroup(const GDIMetaFile * pMTF);
+
+ void WriteDocument(const GDIMetaFile * pMTF);
+
+public:
+
+ METWriter() {}
+
+ BOOL WriteMET( const GDIMetaFile & rMTF, SvStream & rTargetStream,
+ FilterConfigItem* pConfigItem );
+};
+
+
+//========================== Methoden von METWriter ==========================
+
+void METWriter::MayCallback()
+{
+ if ( xStatusIndicator.is() )
+ {
+ ULONG nPercent;
+ nPercent=((nWrittenBitmaps<<14)+(nActBitmapPercent<<14)/100+nWrittenActions)
+ *100/((nNumberOfBitmaps<<14)+nNumberOfActions);
+
+ if (nPercent>=nLastPercent+3)
+ {
+ nLastPercent = nPercent;
+ if ( nPercent <= 100 )
+ xStatusIndicator->setValue( nPercent );
+ }
+ }
+}
+
+void METWriter::WriteClipRect( const Rectangle& rRect )
+{
+ aGDIClipRect = rRect;
+ sal_uInt32 nPathId = ( rRect.IsEmpty() ) ? 0 : 1;
+ if ( nPathId )
+ {
+ Polygon aPoly( rRect );
+ METBeginPath( nPathId );
+ METLine( aPoly );
+ METEndPath();
+ }
+ WillWriteOrder(8);
+ *pMET << (BYTE)0xb4 << (BYTE)6
+ << (BYTE)0x00 << (BYTE)0 << nPathId;
+}
+
+void METWriter::CountActionsAndBitmaps(const GDIMetaFile * pMTF)
+{
+ const MetaAction* pMA;
+
+ for( ULONG nAction = 0, nActionCount=pMTF->GetActionCount(); nAction < nActionCount; nAction++ )
+ {
+ pMA = pMTF->GetAction(nAction);
+
+ switch (pMA->GetType())
+ {
+ case META_EPS_ACTION :
+ {
+ const GDIMetaFile aGDIMetaFile( ((const MetaEPSAction*)pMA)->GetSubstitute() );
+ INT32 nCount = aGDIMetaFile.GetActionCount();
+ INT32 i;
+ for ( i = 0; i < nCount; i++ )
+ if ( ((const MetaAction*)aGDIMetaFile.GetAction( i ))->GetType() == META_BMPSCALE_ACTION )
+ break;
+ if ( i == nCount)
+ break;
+ }
+ case META_BMP_ACTION:
+ case META_BMPSCALE_ACTION:
+ case META_BMPSCALEPART_ACTION:
+ case META_BMPEX_ACTION:
+ case META_BMPEXSCALE_ACTION:
+ case META_BMPEXSCALEPART_ACTION:
+ nNumberOfBitmaps++;
+ break;
+ }
+ nNumberOfActions++;
+ }
+}
+
+
+void METWriter::WriteBigEndianShort(USHORT nWord)
+{
+ *pMET << ((BYTE)(nWord>>8)) << ((BYTE)(nWord&0x00ff));
+}
+
+
+void METWriter::WriteBigEndianLong(ULONG nLong)
+{
+ WriteBigEndianShort((USHORT)(nLong>>16));
+ WriteBigEndianShort((USHORT)(nLong&0x0000ffff));
+}
+
+
+void METWriter::WritePoint(Point aPt)
+{
+ Point aNewPt = OutputDevice::LogicToLogic( aPt, aPictureMapMode, aTargetMapMode );
+
+ *pMET << (long) ( aNewPt.X() - aPictureRect.Left() )
+ << (long) ( aPictureRect.Bottom() - aNewPt.Y() );
+}
+
+
+void METWriter::WriteFieldIntroducer(USHORT nFieldSize, USHORT nFieldType,
+ BYTE nFlags, USHORT nSegSeqNum)
+{
+ nActualFieldStartPos=pMET->Tell();
+ WriteBigEndianShort(nFieldSize);
+ *pMET << (BYTE)0xd3 << nFieldType << nFlags << nSegSeqNum;
+}
+
+
+void METWriter::UpdateFieldSize()
+{
+ ULONG nPos;
+
+ nPos=pMET->Tell();
+ pMET->Seek(nActualFieldStartPos);
+ WriteBigEndianShort((USHORT)(nPos-nActualFieldStartPos));
+ pMET->Seek(nPos);
+}
+
+
+void METWriter::WriteFieldId(ULONG nId)
+{
+ BYTE nbyte;
+ short i;
+
+ for (i=1; i<=8; i++) {
+ nbyte= '0' + (BYTE)((nId >> (32-i*4)) & 0x0f);
+ *pMET << nbyte;
+ }
+}
+
+
+void METWriter::CreateChrSets(const GDIMetaFile * pMTF)
+{
+ ULONG nAction, nActionCount;
+ const MetaAction * pMA;
+
+ if (bStatus==FALSE)
+ return;
+
+ nActionCount=pMTF->GetActionCount();
+
+ for (nAction=0; nAction<nActionCount; nAction++)
+ {
+ pMA = pMTF->GetAction(nAction);
+
+ switch (pMA->GetType())
+ {
+ case META_FONT_ACTION:
+ {
+ const MetaFontAction* pA = (const MetaFontAction*) pMA;
+ CreateChrSet( pA->GetFont() );
+ }
+ break;
+ }
+ }
+}
+
+
+void METWriter::CreateChrSet(const Font & rFont)
+{
+ METChrSet * pCS;
+
+ if ( FindChrSet( rFont ) == 0 )
+ {
+ pCS = new METChrSet;
+ pCS->pSucc = pChrSetList; pChrSetList=pCS;
+ pCS->nSet = nNextChrSetId++;
+ pCS->aName = rFont.GetName();
+ pCS->eWeight = rFont.GetWeight();
+ }
+}
+
+
+BYTE METWriter::FindChrSet(const Font & rFont)
+{
+ METChrSet* pCS;
+
+ for (pCS=pChrSetList; pCS!=NULL; pCS=pCS->pSucc)
+ {
+ if (pCS->aName==rFont.GetName() && pCS->eWeight==rFont.GetWeight() )
+ return pCS->nSet;
+ }
+
+ return 0;
+}
+
+
+void METWriter::WriteChrSets()
+{
+ USHORT i;
+ char c = 0;
+ METChrSet * pCS;
+ BYTE nbyte;
+
+ for (pCS=pChrSetList; pCS!=NULL; pCS=pCS->pSucc)
+ {
+
+ WriteFieldIntroducer(0x58,MapCodFntMagic,0,0);
+
+ WriteBigEndianShort(0x0050);
+
+ *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
+ *pMET << (BYTE)0xa4 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x01;
+ *pMET << (BYTE)0x01 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+
+ *pMET << (BYTE)0x04 << (BYTE)0x24 << (BYTE)0x05 << (BYTE)pCS->nSet;
+
+ *pMET << (BYTE)0x14 << (BYTE)0x1f;
+ switch (pCS->eWeight)
+ {
+ case WEIGHT_THIN: nbyte=1; break;
+ case WEIGHT_ULTRALIGHT: nbyte=2; break;
+ case WEIGHT_LIGHT: nbyte=3; break;
+ case WEIGHT_SEMILIGHT: nbyte=4; break;
+ case WEIGHT_NORMAL: nbyte=5; break;
+ case WEIGHT_SEMIBOLD: nbyte=6; break;
+ case WEIGHT_BOLD: nbyte=7; break;
+ case WEIGHT_ULTRABOLD: nbyte=8; break;
+ case WEIGHT_BLACK: nbyte=9; break;
+ default: nbyte=5;
+ }
+ *pMET << nbyte;
+ *pMET << (BYTE)0x05;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x0c;
+
+ *pMET << (BYTE)0x06 << (BYTE)0x20 << (BYTE)0x03 << (BYTE)0xd4;
+ *pMET << (BYTE)0x03 << (BYTE)0x52;
+
+ *pMET << (BYTE)0x24 << (BYTE)0x02 << (BYTE)0x08 << (BYTE)0x00;
+ ByteString n(pCS->aName, gsl_getSystemTextEncoding());
+ for (i=0; i<32; i++)
+ {
+ if ( i == 0 || c != 0 )
+ c = n.GetChar( i );
+ *pMET << c;
+ }
+ }
+}
+
+
+void METWriter::WriteColorAttributeTable(ULONG nFieldId, BitmapPalette* pPalette, BYTE nBasePartFlags, BYTE nBasePartLCTID)
+{
+ USHORT nIndex,nNumI,i;
+
+ if (bStatus==FALSE) return;
+
+ //--- Das Feld 'Begin Color Attribute Table':
+ WriteFieldIntroducer(16,BegColAtrMagic,0,0);
+ WriteFieldId(nFieldId);
+
+ //--- Das Feld 'Color Attribute Table':
+ WriteFieldIntroducer(0,BlkColAtrMagic,0,0);
+ *pMET << nBasePartFlags << (BYTE)0x00 << nBasePartLCTID; // 'Base Part'
+ if (pPalette!=NULL)
+ {
+ nIndex=0;
+ while (nIndex<pPalette->GetEntryCount())
+ {
+ nNumI=pPalette->GetEntryCount()-nIndex;
+ if (nNumI>81) nNumI=81;
+ *pMET << (BYTE)(11+nNumI*3); // Laenge des Parameters
+ *pMET << (BYTE)1 << (BYTE)0 << (BYTE)1; // typ: element list, Reserved, Format: RGB
+ *pMET << (BYTE)0; WriteBigEndianShort(nIndex); // Start-Index (3 Bytes)
+ *pMET << (BYTE)8 << (BYTE)8 << (BYTE)8; // Bits je Komponente R,G,B
+ *pMET << (BYTE)3; // Anzahl Bytes je Eintrag
+ for (i=0; i<nNumI; i++)
+ {
+ const BitmapColor& rCol = (*pPalette)[ nIndex ];
+
+ *pMET << (BYTE) rCol.GetRed();
+ *pMET << (BYTE) rCol.GetGreen();
+ *pMET << (BYTE) rCol.GetBlue();
+ nIndex++;
+ }
+ }
+ }
+ else
+ {
+ // 'Trible Generating'
+ *pMET << (BYTE)0x0a << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x01 << (BYTE)0x00;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x08 << (BYTE)0x08 << (BYTE)0x08;
+ }
+ UpdateFieldSize();
+
+ //--- Das Feld 'End Color Attribute Table':
+ WriteFieldIntroducer(16,EndColAtrMagic,0,0);
+ WriteFieldId(nFieldId);
+
+ if (pMET->GetError())
+ bStatus=FALSE;
+}
+
+
+void METWriter::WriteImageObject(const Bitmap & rBitmap)
+{
+ SvMemoryStream aTemp(0x00010000,0x00010000);
+ sal_uInt32 nWidth,nHeight,nResX,nResY;
+ ULONG nBytesPerLine,i,j,nNumColors,ny,nLines;
+ ULONG nActColMapId;
+ USHORT nBitsPerPixel;
+ BYTE nbyte, * pBuf;
+
+ if (bStatus==FALSE)
+ return;
+
+ nActColMapId=((nActBitmapId>>24)&0x000000ff) | ((nActBitmapId>> 8)&0x0000ff00) |
+ ((nActBitmapId<< 8)&0x00ff0000) | ((nActBitmapId<<24)&0xff000000);
+
+ //--- Das Feld 'Begin Image Object':
+ WriteFieldIntroducer(16,BegImgObjMagic,0,0);
+ WriteFieldId(nActBitmapId);
+
+ // Windows-BMP-Datei erzeugen:
+ aTemp << rBitmap;
+
+ // Header der Windows-BMP-Datei einlesen:
+ aTemp.SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+ aTemp.Seek(18);
+ aTemp >> nWidth >> nHeight;
+ aTemp.SeekRel(2);
+ aTemp >> nBitsPerPixel;
+ aTemp.SeekRel(8);
+ aTemp >> nResX >> nResY;
+ aTemp.SeekRel(8);
+
+ nNumColors=1<<nBitsPerPixel;
+ nBytesPerLine=((nWidth*nBitsPerPixel+0x0000001f) & 0xffffffe0 ) >> 3;
+
+ // ggf. Farbpalette einlesen und in die MET-Datei schreiben:
+ if (nBitsPerPixel<=8)
+ {
+ BitmapPalette aPal( (USHORT) nNumColors );
+ BYTE nr,ng,nb;
+
+ for (i=0; i<nNumColors; i++)
+ {
+ aTemp >> nb >> ng >> nr; aTemp.SeekRel(1);
+ aPal[ (USHORT) i ] = BitmapColor( nr, ng, nb );
+ }
+
+ //--- Das Feld 'Begin Resource Group':
+ WriteFieldIntroducer(16,BegResGrpMagic,0,0);
+ WriteFieldId(nActColMapId);
+
+ //--- Farbtabelle schreiben:
+ WriteColorAttributeTable(nActColMapId,&aPal,0,1);
+
+ //--- Das Feld 'End Resource Group':
+ WriteFieldIntroducer(16,EndResGrpMagic,0,0);
+ WriteFieldId(nActColMapId);
+
+ //--- Das Feld 'Begin Object Environment Group':
+ WriteFieldIntroducer(16,BegObjEnvMagic,0,0);
+ WriteFieldId(nActBitmapId);
+
+ //--- Das Feld 'Map Color Attribute Table':
+ WriteFieldIntroducer(26,MapColAtrMagic,0,0);
+ WriteBigEndianShort(0x0012);
+ *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
+ WriteFieldId(nActColMapId);
+ *pMET << (BYTE)0x04 << (BYTE)0x24 << (BYTE)0x07 << (BYTE)0x01;
+
+ //--- Das Feld 'End Object Environment Group':
+ WriteFieldIntroducer(16,EndObjEnvMagic,0,0);
+ WriteFieldId(nActBitmapId);
+ }
+
+ //--- Das Feld 'Image Data Descriptor':
+ WriteFieldIntroducer(17,DscImgObjMagic,0,0);
+ *pMET << (BYTE)0x01; // Unit of measure: tens of centimeters
+ WriteBigEndianShort((USHORT)nResX);
+ WriteBigEndianShort((USHORT)nResY);
+ WriteBigEndianShort((USHORT)nWidth);
+ WriteBigEndianShort((USHORT)nHeight);
+
+ //--- Das erste Feld 'Image Picture Data':
+ WriteFieldIntroducer(0,DatImgObjMagic,0,0);
+
+ // Begin Segment:
+ *pMET << (BYTE)0x70 << (BYTE)0x00;
+
+ // Begin Image Content:
+ *pMET << (BYTE)0x91 << (BYTE)0x01 << (BYTE)0xff;
+
+ // Image Size:
+ *pMET << (BYTE)0x94 << (BYTE)0x09 << (BYTE)0x02;
+ *pMET << (USHORT) 0 << (USHORT) 0;
+ WriteBigEndianShort((USHORT)nHeight);
+ WriteBigEndianShort((USHORT)nWidth);
+
+ // Image Encoding:
+ *pMET << (BYTE)0x95 << (BYTE)0x02 << (BYTE)0x03 << (BYTE)0x03;
+
+ // Image IDE-Size:
+ *pMET << (BYTE)0x96 << (BYTE)0x01 << (BYTE)nBitsPerPixel;
+
+ if (nBitsPerPixel<=8) {
+ // Image LUT-ID
+ *pMET << (BYTE)0x97 << (BYTE)0x01 << (BYTE)0x01;
+ }
+ else {
+ // IDE Structure
+ *pMET << (BYTE)0x9b << (BYTE)0x08 << (BYTE)0x00 << (BYTE)0x01;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x08;
+ *pMET << (BYTE)0x08 << (BYTE)0x08;
+ }
+
+ pBuf=new BYTE[nBytesPerLine];
+ ny=0;
+ while (ny<nHeight) {
+
+ // Abschliessen des vorherigen Feldes 'Image Picture Data':
+ UpdateFieldSize();
+
+ // Und ein neues Feld 'Image Picture Data' anfangen:
+ WriteFieldIntroducer(0,DatImgObjMagic,0,0);
+
+ // Einige Scanlines lesen und schreiben:
+ nLines=nHeight-ny;
+ if (nLines*nBytesPerLine>30000) nLines=30000/nBytesPerLine;
+ if (nLines<1) nLines=1;
+ WriteBigEndianShort(0xfe92);
+ WriteBigEndianShort((USHORT)(nLines*nBytesPerLine));
+ for (i=0; i<nLines; i++) {
+ aTemp.Read(pBuf,nBytesPerLine);
+ if (nBitsPerPixel==24) {
+ for (j=2; j<nBytesPerLine; j+=3) {
+ nbyte=pBuf[j]; pBuf[j]=pBuf[j-2]; pBuf[j-2]=nbyte;
+ }
+ }
+ pMET->Write(pBuf,nBytesPerLine);
+ ny++;
+ }
+ if (aTemp.GetError() || pMET->GetError()) bStatus=FALSE;
+ nActBitmapPercent=(ny+1)*100/nHeight;
+ MayCallback();
+ if (bStatus==FALSE) { delete[] pBuf; return; }
+ }
+ delete[] pBuf;
+
+ // End Image Content:
+ *pMET << (BYTE)0x93 << (BYTE)0x00;
+
+ // End Segment:
+ *pMET << (BYTE)0x71 << (BYTE)0x00;
+
+ // Abschliessen des letzten Feldes 'Image Picture Data':
+ UpdateFieldSize();
+
+ //--- Das Feld 'End Image Object':
+ WriteFieldIntroducer(16,EndImgObjMagic,0,0);
+ WriteFieldId(nActBitmapId);
+
+ // Ids erhoehen:
+ nActBitmapId++;
+
+ // Bitmaps zaehlen:
+ nWrittenBitmaps++;
+ nActBitmapPercent=0;
+
+ if (pMET->GetError()) bStatus=FALSE;
+}
+
+
+void METWriter::WriteImageObjects(const GDIMetaFile * pMTF)
+{
+ const MetaAction* pMA;
+
+ if (bStatus==FALSE)
+ return;
+
+ for ( ULONG nAction = 0, nActionCount = pMTF->GetActionCount(); nAction < nActionCount; nAction++)
+ {
+ pMA = pMTF->GetAction(nAction);
+
+ switch (pMA->GetType())
+ {
+ case META_BMP_ACTION:
+ {
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( ( (MetaBmpAction*) pMA )->GetBitmap() );
+ }
+ break;
+
+ case META_BMPSCALE_ACTION:
+ {
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( ( (MetaBmpScaleAction*) pMA )->GetBitmap() );
+ }
+ break;
+
+ case META_BMPSCALEPART_ACTION:
+ {
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( ( (MetaBmpScalePartAction*) pMA )->GetBitmap() );
+ }
+ break;
+
+ case META_BMPEX_ACTION:
+ {
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( Graphic( ( (MetaBmpExAction*) pMA )->GetBitmapEx() ).GetBitmap() );
+ }
+ break;
+
+ case META_BMPEXSCALE_ACTION:
+ {
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( Graphic( ( (MetaBmpExScaleAction*) pMA )->GetBitmapEx() ).GetBitmap() );
+ }
+ break;
+
+ case META_BMPEXSCALEPART_ACTION:
+ {
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( Graphic( ( (MetaBmpExScalePartAction*) pMA )->GetBitmapEx() ).GetBitmap() );
+ }
+ break;
+
+ case META_EPS_ACTION :
+ {
+ const MetaEPSAction* pA = (const MetaEPSAction*)pMA;
+ const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
+
+ INT32 nCount = aGDIMetaFile.GetActionCount();
+ for ( INT32 i = 0; i < nCount; i++ )
+ {
+ const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
+ if ( pMetaAct->GetType() == META_BMPSCALE_ACTION )
+ {
+ const MetaBmpScaleAction* pBmpScaleAction = (const MetaBmpScaleAction*)pMetaAct;
+ METSetMix( eGDIRasterOp );
+ WriteImageObject( pBmpScaleAction->GetBitmap() );
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ if (bStatus==FALSE)
+ break;
+ }
+
+ if (pMET->GetError())
+ bStatus=FALSE;
+}
+
+void METWriter::WriteDataDescriptor(const GDIMetaFile *)
+{
+ if (bStatus==FALSE)
+ return;
+
+ WriteFieldIntroducer(0,DscGrfObjMagic,0,0);
+
+ //------------------------------------------------------------------------------
+ // Im Folgenden die OS2-Orginal-Dokumentation und die Implementation dazu (uff)
+ //------------------------------------------------------------------------------
+
+ // Parameters (all required and in this order)
+
+ // 0 0xF7 Specify GVM Subset
+ // 1 Length of following data 0x07
+ // 2 0xB0 drawing order subset
+ // 3-4 0x0000
+ // 5 0x23 Level 3.2
+ // 6 0x01 Version 1
+ // 7 Length of following field 0x01
+ // 8 Coordinate types in data
+ // 0x04Intel16
+ // 0x05Intel32
+ *pMET << (BYTE)0xf7 << (BYTE)0x07 << (BYTE)0xb0 << (BYTE)0x00
+ << (BYTE)0x00 << (BYTE)0x23 << (BYTE)0x01 << (BYTE)0x01
+ << (BYTE)0x05;
+
+ // 0 0xF6 Set Picture Descriptor
+ // 1 Length of following data
+ // 2 Flags
+ // 0 B'0' Picture in 2D
+ // 1 Picture Dimensions
+ // B'0' Not absolute (PU_ARBITRARY PS)
+ // B'1' Absolute (example: PU_TWIPS PS)
+ // 2 Picture Elements
+ // B'0' Not pels
+ // B'1' Pels (PU_PELS PS)
+ // (Bit 1 must also be set)
+ // 3-7 B'00000'
+ // 3 0x00 Reserved
+ // 4 Picture frame size coordinate type
+ // 0x04 Intel16
+ // 0x05 Intel32
+ // 5 UnitsOfMeasure
+ // 0x00 Ten inches
+ // 0x01 Decimeter
+ // 6-11 or 6-17(2 or 4 bytes) Resolution.
+ // GPS Units / UOM on x axis
+ // GPS Units / UOM on y axis
+ // GPS Units / UOM on z axis
+ // 12-23 or 18-41(2 or 4 bytes) Window Size.
+ // GPS X left, X right
+ // GPS Y bottom, Y top
+ // GPS Z near, Z far
+ Size aUnitsPerDecimeter=OutputDevice::LogicToLogic(Size(10,10),MapMode(MAP_CM),aPictureMapMode);
+ *pMET << (BYTE)0xf6 << (BYTE)0x28 << (BYTE)0x40 << (BYTE)0x00
+ << (BYTE)0x05 << (BYTE)0x01
+ << (sal_uInt32)(aUnitsPerDecimeter.Width())
+ << (sal_uInt32)(aUnitsPerDecimeter.Height())
+ << (sal_uInt32)0
+ << (sal_uInt32)0 << (sal_uInt32)aPictureRect.GetWidth()
+ << (sal_uInt32)0 << (sal_uInt32)aPictureRect.GetHeight()
+ << (sal_uInt32)0 << (sal_uInt32)0;
+
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Parameter Format 0x08
+ // 3-4 Mask 0xE000
+ // 5 Names 0x8F
+ // 6 Coordinates
+ // 0x00 Picture in 2D
+ // 7 Transforms
+ // 0x04 Intel16
+ // 0x05 Intel32
+ // 8 Geometrics
+ // 0x04 Intel16
+ // 0x05 Intel32
+ *pMET << (BYTE)0x21 << (BYTE)0x07 << (BYTE)0x08 << (BYTE)0xe0
+ << (BYTE)0x00 << (BYTE)0x8f << (BYTE)0x00 << (BYTE)0x05
+ << (BYTE)0x05;
+
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set default viewing transform 0x07
+ // 3-4 Mask 0xCC0C
+ // 5 Names 0x8F
+ // 6-n M11, M12, M21, M22, M41, M42 Matrix elements
+ *pMET << (BYTE)0x21 << (BYTE)0x1c << (BYTE)0x07 << (BYTE)0xcc
+ << (BYTE)0x0c << (BYTE)0x8f
+ << (sal_uInt32)0x00010000 << (sal_uInt32)0x00000000 << (sal_uInt32)0x00000000
+ << (sal_uInt32)0x00010000 << (sal_uInt32)0x00000000 << (sal_uInt32)0x00000000;
+
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set default line attributes 0x01
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ // 0x8000 Line type
+ // 0x4000 Line width
+ // 0x2000 Line end
+ // 0x1000 Line join
+ // 0x0800 Stroke width
+ // 0x0008 Line color
+ // 0x0002 Line mix
+ // 5 Flags
+ //
+ // 0x0F Set indicated default attributes to initial values. (Data field is not present in this
+ // instance).
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in the following order if present.
+ // No space is reserved for attributes for which the corresponding mask flag was not
+ // set.
+ //
+ // (1 byte) - Line type
+ // (1 byte) - Line width
+ // (1 byte) - Line end
+ // (1 byte) - Line join
+ // (G bytes) - Stroke width
+ // (4 bytes) - Line color
+ // (1 byte) - Line mix (G=2 or 4 depending on the Geometrics parameter of Set Default
+ // Parameter Format)
+ // Nanu! witziger-weise fehlt obiger Abschnitt in den Metadateien. Also lassen wir ihn auch weg
+
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Character Attributes 0x02
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ //
+ // 0x8000 Character angle
+ // 0x4000 Character box
+ // 0x2000 Character direction
+ // 0x1000 Character precision
+ // 0x0800 Character set
+ // 0x0400 Character shear
+ // 0x0040 Character break extra
+ // 0x0020 Character extra
+ // 0x0008 Character color
+ // 0x0004 Character background color
+ // 0x0002 Character mix
+ // 0x0001 Character background mix
+ // 5 Flags
+ // 0x0FSet indicated default attributes to initial values. (Data field is not present in this
+ // case).
+ // 0x8FSet indicated default attributes to specified values.
+ // 6-n Data - data values as required, in the following order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was not
+ // set.
+ // (2*G bytes) - Character angle
+ // (2*G + 4 bytes)- Character box
+ // (1 byte) - Character direction
+ // (1 byte) - Character precision
+ // (1 byte) - Character set
+ // (2*G bytes) - Character shear
+ // (4 bytes) - Character break extra
+ // (4 bytes) - Character extra
+ // (4 bytes) - Character color
+ // (4 bytes) - Character background color
+ // (1 byte) - Character mix
+ // (1 byte) - Character background mix (G=2 or 4 depending on the Geometrics
+ // parameter of Set Default Parameter Format)
+ *pMET << (BYTE)0x21 << (BYTE)0x10 << (BYTE)0x02 << (BYTE)0x40
+ << (BYTE)0x00 << (BYTE)0x8f
+ << (BYTE)0xaa << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00
+ << (BYTE)0x44 << (BYTE)0x04 << (BYTE)0x00 << (BYTE)0x00
+ << (BYTE)0xa8 << (BYTE)0xaa << (BYTE)0x40 << (BYTE)0x44;
+
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Marker Attributes 0x03
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ // 0x4000 Marker box
+ // 0x1000 Marker precision
+ // 0x0800 Marker set
+ // 0x0100 Marker symbol
+ // 0x0008 Marker color
+ // 0x0004 Marker background color
+ // 0x0002 Marker mix
+ // 0x0001 Marker background mix
+ // 5 Flags
+ // 0x0F Set indicated default attributes to initial values.
+ // (Data field is not present in this instance)
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in this order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was not
+ // set.
+ // (2*G bytes) - Marker box
+ // (1 byte) - Marker precision
+ // (1 byte) - Marker set
+ // (1 byte) - Marker symbol
+ // (4 bytes) - Marker color
+ // (4 bytes) - Marker background color
+ // (1 byte) - Marker mix
+ // (1 byte) - Marker background mix (G=2 or 4 depending on the Geometrics
+ // parameter of Set Default Parameter Format)
+ *pMET << (BYTE)0x21 << (BYTE)0x0c << (BYTE)0x03 << (BYTE)0x40
+ << (BYTE)0x00 << (BYTE)0x8f
+ << (BYTE)0x66 << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00
+ << (BYTE)0x66 << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00;
+
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Pattern Attributes 0x04
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ // 0x0800 Pattern set
+ // 0x0100 Pattern symbol
+ // 0x0080 Pattern reference point
+ // 0x0008 Pattern color
+ // 0x0004 Pattern background color
+ // 0x0002 Pattern mix
+ // 0x0001 Pattern background mix
+ // 5 Flags
+ //
+ // 0x0F Set indicated default attributes to initial values.
+ // (Data field is not present in this instance)
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in this order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was
+ // not set.
+ //
+ // (1 byte) - Pattern set
+ // (1 byte) - Pattern symbol
+ // (2*G bytes) - Pattern reference point
+ // (4 bytes) - Pattern color
+ // (4 bytes) - Pattern background color
+ // (1 byte) - Pattern mix
+ // (1 byte) - Pattern background mix (G=2 or 4 depending on the Geometrics
+ // parameter of Set Default Parameter Format)
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Image Attributes 0x06
+ // 3-4 Mask - OR of as many of these bits as are required:
+ // 0x0008 Image color
+ // 0x0004 Image background color
+ // 0x0002 Image mix
+ // 0x0001 Image background mix
+ // 5 Flags
+ // 0x0F Set indicated default attributes to initial values. (Data field is not present in
+ // this instance)
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in this order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was
+ // not set.
+ // (4 bytes) - Image color
+ // (4 bytes) - Image background color
+ // (1 byte) - Image mix
+ // (1 byte) - Image background mix
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Viewing Window 0x05
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ // 0x8000 x left limit
+ // 0x4000 x right limit
+ // 0x2000 y bottom limit
+ // 0x1000 y top limit
+ // 5 Flags
+ // 0x0F Set indicated default attributes to initial values.
+ // (Data field is not present in this case).
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in the following order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was
+ // not set.
+ // (2*G bytes) - x left limit
+ // (2*G bytes) - x right limit
+ // (2*G bytes) - y bottom limit
+ // (2*G bytes) - y top limit (G=2 or 4 depending on the Geometrics parameter of Set
+ // Default Parameter Format)
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Arc Parameters 0x0B
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ // 0x8000 P value
+ // 0x4000 Q value
+ // 0x2000 R value
+ // 0x1000 S value
+ // 5 Flags
+ // 0x0F Set indicated default attributes to initial values.
+ // (Data field is not present in this case).
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in the following order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was
+ // not set.
+ // (G bytes) - P value
+ // (G bytes) - Q value
+ // (G bytes) - R value
+ // (G bytes) - S value (G=2 or 4 depending on the Geometrics parameter of Set
+ // Default Parameter Format)
+ // 0 0x21 Set Current Defaults
+ // 1 Length of following data
+ // 2 Set Default Pick Identifier 0x0C
+ // 3-4 Mask - OR of as many of the following bits as are required:
+ // 0x8000 Pick identifier
+ // 5 Flags
+ // 0x0F Set indicated default attributes to initial values.
+ // (Data field is not present in this case).
+ // 0x8F Set indicated default attributes to specified values.
+ // 6-n Data - data values as required, in the following order if present.
+ // No space is reserved for attributes for which the corresponding Mask flag was
+ // not set.
+ // (4 bytes) - Pick identifier
+
+ // 0 0xE7 Set Bit-map Identifier
+ // 1 Length of following data 0x07
+ // 2-3 Usage Flags 0x8000
+ // 4-7 Bit-map handle
+ // 8 Lcid
+ if (nNumberOfBitmaps>0) {
+ *pMET << (BYTE)0xe7 << (BYTE)0x07 << (BYTE)0x80 << (BYTE)0x00;
+ WriteBigEndianLong(nActBitmapId);
+ *pMET << (BYTE)0xfe;
+ }
+
+ UpdateFieldSize();
+
+ if (pMET->GetError()) bStatus=FALSE;
+}
+
+
+void METWriter::WillWriteOrder(ULONG nNextOrderMaximumLength)
+{
+ // Die Parameter eines 'Graphics Data Fields' duerfen (laut OS2-Doku)
+ // hoechstens 32759 Bytes umfassen. Gemeint ist die Laenge des Feldes minus
+ // dem 'Structured Field Introducer' (groesse: 8). Also darf die Groesse
+ // des ganzen Fields hoechstens 8+32759=32767=0x7fff sein.
+ // Zur Sicherheit nehmen wir lieber 30000 als Grenze.
+
+ if (pMET->Tell()-nActualFieldStartPos+nNextOrderMaximumLength>30000)
+ {
+ UpdateFieldSize();
+ WriteFieldIntroducer(0,DatGrfObjMagic,0,0);
+ nNumberOfDataFields++;
+ }
+}
+
+
+
+void METWriter::METBitBlt(Point aPt, Size aSize, const Bitmap & rBitmap)
+{
+ WillWriteOrder(46);
+ *pMET << (BYTE)0xd6 << (BYTE)44 << (USHORT)0 << (USHORT) 0x00cc;
+ WriteBigEndianLong(nActBitmapId++);
+ *pMET << (BYTE)0x02 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+ WritePoint(Point(aPt.X(),aPt.Y()+aSize.Height()));
+ WritePoint(Point(aPt.X()+aSize.Width(),aPt.Y()));
+ *pMET << (sal_uInt32)0 << (sal_uInt32)0
+ << (sal_uInt32)(rBitmap.GetSizePixel().Width())
+ << (sal_uInt32)(rBitmap.GetSizePixel().Height());
+}
+
+void METWriter::METSetAndPushLineInfo( const LineInfo& rLineInfo )
+{
+ INT32 nWidth = OutputDevice::LogicToLogic( Size( rLineInfo.GetWidth(),0 ), aPictureMapMode, aTargetMapMode ).Width();
+
+ WillWriteOrder( 8 ); // set stroke linewidth
+ *pMET << (BYTE)0x15
+ << (BYTE)6
+ << (BYTE)0 // Flags
+ << (BYTE)0
+ << nWidth;
+
+ if ( rLineInfo.GetStyle() != LINE_SOLID )
+ {
+ BYTE nStyle = 0; // LineDefault;
+
+ switch ( rLineInfo.GetStyle() )
+ {
+ case LINE_NONE :
+ nStyle = 8;
+ break;
+
+ case LINE_DASH :
+ {
+ if ( rLineInfo.GetDotCount() )
+ {
+ if ( !rLineInfo.GetDashCount() )
+ nStyle = 1; // LINE_DOT
+ else
+ nStyle = 3; // LINE_DASH_DOT
+ }
+ else
+ nStyle = 2; // LINE_DASH
+ }
+ break;
+ case LineStyle_SOLID:
+ case LineStyle_FORCE_EQUAL_SIZE:
+ break; // not handled -Wall
+ }
+ WillWriteOrder( 2 );
+ *pMET << (BYTE)0x18 << nStyle; // set LineType
+ }
+}
+
+void METWriter::METPopLineInfo( const LineInfo& rLineInfo )
+{
+ WillWriteOrder( 8 ); // set stroke linewidth
+ *pMET << (BYTE)0x15
+ << (BYTE)6
+ << (BYTE)0 // Flags
+ << (BYTE)0
+ << (UINT32)1;
+
+ if ( rLineInfo.GetStyle() != LINE_SOLID )
+ {
+ WillWriteOrder( 2 );
+ *pMET << (BYTE)0x18 << (BYTE)0; // set LineType
+ }
+}
+
+void METWriter::METBeginArea(BOOL bBoundaryLine)
+{
+ WillWriteOrder(2);
+ *pMET << (BYTE)0x68;
+ if (bBoundaryLine) *pMET << (BYTE)0xc0;
+ else *pMET << (BYTE)0x80;
+}
+
+
+void METWriter::METEndArea()
+{
+ WillWriteOrder(2);
+ *pMET << (BYTE)0x60 << (BYTE)0;
+}
+
+
+void METWriter::METBeginPath(sal_uInt32 nPathId)
+{
+ WillWriteOrder(8);
+ *pMET << (BYTE)0xd0 << (BYTE)6 << (USHORT) 0 << nPathId;
+}
+
+
+void METWriter::METEndPath()
+{
+ WillWriteOrder(2);
+ *pMET << (BYTE)0x7f << (BYTE)0;
+}
+
+
+void METWriter::METFillPath(sal_uInt32 nPathId)
+{
+ WillWriteOrder(8);
+ *pMET << (BYTE)0xd7 << (BYTE)6
+ << (BYTE)0x00 << (BYTE)0 << nPathId;
+}
+
+
+void METWriter::METOutlinePath(sal_uInt32 nPathId)
+{
+ WillWriteOrder(8);
+ *pMET << (BYTE)0xd4 << (BYTE)6
+ << (BYTE)0 << (BYTE)0 << nPathId;
+}
+
+
+void METWriter::METCloseFigure()
+{
+ WillWriteOrder(2);
+ *pMET << (BYTE)0x7d << (BYTE)0;
+}
+
+
+void METWriter::METMove(Point aPt)
+{
+ WillWriteOrder(10);
+ *pMET << (BYTE)0x21 << (BYTE)8;
+ WritePoint(aPt);
+}
+
+
+void METWriter::METLine(Point aPt1, Point aPt2)
+{
+ WillWriteOrder(18);
+ *pMET << (BYTE)0xc1 << (BYTE)16;
+ WritePoint(aPt1); WritePoint(aPt2);
+}
+
+
+void METWriter::METLine(const Polygon & rPolygon)
+{
+ USHORT nNumPoints,i,j,nOrderPoints;
+ BOOL bFirstOrder;
+
+ bFirstOrder=TRUE;
+ i=0; nNumPoints=rPolygon.GetSize();
+ while (i<nNumPoints) {
+ nOrderPoints=nNumPoints-i;
+ if (nOrderPoints>30) nOrderPoints=30;
+ WillWriteOrder(nOrderPoints*8+2);
+ if (bFirstOrder==TRUE) {
+ *pMET << (BYTE)0xc1; // Line at given pos
+ bFirstOrder=FALSE;
+ }
+ else {
+ *pMET << (BYTE)0x81; // Line at current pos
+ }
+ *pMET << (BYTE)(nOrderPoints*8);
+ for (j=0; j<nOrderPoints; j++) WritePoint(rPolygon.GetPoint(i++));
+ }
+}
+
+
+void METWriter::METLine(const PolyPolygon & rPolyPolygon)
+{
+ USHORT i,nCount;
+ nCount=rPolyPolygon.Count();
+ for (i=0; i<nCount; i++) {
+ METLine(rPolyPolygon.GetObject(i));
+ METCloseFigure();
+ }
+}
+
+
+void METWriter::METLineAtCurPos(Point aPt)
+{
+ WillWriteOrder(10);
+ *pMET << (BYTE)0x81 << (BYTE)8;
+ WritePoint(aPt);
+}
+
+
+void METWriter::METBox(BOOL bFill, BOOL bBoundary,
+ Rectangle aRect, sal_uInt32 nHAxis, sal_uInt32 nVAxis)
+{
+ BYTE nFlags=0;
+ if (bFill) nFlags|=0x40;
+ if (bBoundary) nFlags|=0x20;
+
+ WillWriteOrder(28);
+ *pMET << (BYTE)0xc0 << (BYTE)26 << nFlags << (BYTE)0;
+ WritePoint(aRect.BottomLeft());
+ WritePoint(aRect.TopRight());
+ *pMET << nHAxis << nVAxis;
+}
+
+
+void METWriter::METFullArc(Point aCenter, double fMultiplier)
+{
+ WillWriteOrder(14);
+ *pMET << (BYTE)0xc7 << (BYTE)12;
+ WritePoint(aCenter);
+ *pMET << (long)(fMultiplier*65536.0+0.5);
+}
+
+
+void METWriter::METPartialArcAtCurPos(Point aCenter, double fMultiplier,
+ double fStartAngle, double fSweepAngle)
+{
+ fStartAngle*=180.0/3.14159265359;
+ while (fStartAngle>360.0) fStartAngle-=360.0;
+ while (fStartAngle<0.0) fStartAngle+=360.0;
+ fSweepAngle*=180.0/3.14159265359;
+ while (fSweepAngle>360.0) fSweepAngle-=360.0;
+ while (fSweepAngle<.00) fSweepAngle+=360.0;
+ WillWriteOrder(22);
+ *pMET << (BYTE)0xa3 << (BYTE)20;
+ WritePoint(aCenter);
+ *pMET << (long)(fMultiplier*65536.0+0.5);
+ *pMET << (long)(fStartAngle*65536.0+0.5);
+ *pMET << (long)(fSweepAngle*65536.0+0.5);
+}
+
+
+void METWriter::METChrStr( Point aPt, String aUniStr )
+{
+ USHORT nLen,i;
+ ByteString aStr( aUniStr, gsl_getSystemTextEncoding() );
+ nLen = aStr.Len();
+ WillWriteOrder( 11 + nLen );
+ *pMET << (BYTE)0xc3 << (BYTE)( 9 + nLen );
+ WritePoint(aPt);
+ for ( i = 0; i < nLen; i++ )
+ *pMET << aStr.GetChar( i );
+ *pMET << (BYTE)0;
+}
+
+
+void METWriter::METSetArcParams(long nP, long nQ, long nR, long nS)
+{
+ WillWriteOrder(18);
+ *pMET << (BYTE)0x22 << (BYTE)16 << nP << nQ << nR << nS;
+}
+
+
+void METWriter::METSetColor(Color aColor)
+{
+ if (aColor==aMETColor) return;
+ aMETColor=aColor;
+
+ WillWriteOrder(6);
+ *pMET << (BYTE)0xa6 << (BYTE)4 << (BYTE)0
+ << (BYTE)(aColor.GetBlue())
+ << (BYTE)(aColor.GetGreen())
+ << (BYTE)(aColor.GetRed());
+}
+
+
+void METWriter::METSetBackgroundColor(Color aColor)
+{
+ if (aColor==aMETBackgroundColor) return;
+ aMETBackgroundColor=aColor;
+
+ WillWriteOrder(6);
+ *pMET << (BYTE)0xa7 << (BYTE)4 << (BYTE)0
+ << (BYTE)(aColor.GetBlue())
+ << (BYTE)(aColor.GetGreen())
+ << (BYTE)(aColor.GetRed());
+}
+
+void METWriter::METSetMix(RasterOp eROP)
+{
+ BYTE nMix;
+
+ if (eMETMix==eROP)
+ return;
+
+ eMETMix=eROP;
+
+ switch (eROP)
+ {
+ case ROP_INVERT: nMix=0x0c; break;
+ case ROP_XOR: nMix=0x04; break;
+ default: nMix=0x02;
+ }
+
+ WillWriteOrder(2);
+ *pMET << (BYTE)0x0c << nMix;
+}
+
+
+void METWriter::METSetChrCellSize(Size aSize)
+{
+ if (aMETChrCellSize==aSize)
+ return;
+
+ aMETChrCellSize=aSize;
+ WillWriteOrder(10);
+ if (aSize.Width()==0) aSize.Width()=aSize.Height();
+ *pMET << (BYTE)0x33 << (BYTE)8 << (long)aSize.Width() << (long)aSize.Height();
+}
+
+
+void METWriter::METSetChrAngle(short nAngle)
+{
+ double fa;
+ long nax,nay;
+
+ if (nMETChrAngle==nAngle) return;
+ nMETChrAngle=nAngle;
+
+ if (nAngle==0)
+ {
+ nax=256;
+ nay=0;
+ }
+ else
+ {
+ fa=((double)nAngle)/1800.0*3.14159265359;
+ nax=(long)(256.0*cos(fa)+0.5);
+ nay=(long)(256.0*sin(fa)+0.5);
+ }
+
+ WillWriteOrder(10);
+ *pMET << (BYTE)0x34 << (BYTE)8 << nax << nay;
+}
+
+
+void METWriter::METSetChrSet(BYTE nSet)
+{
+ if (nMETChrSet==nSet)
+ return;
+
+ nMETChrSet=nSet;
+ WillWriteOrder(2);
+ *pMET << (BYTE)0x38 << nSet;
+}
+
+
+void METWriter::WriteOrders( const GDIMetaFile* pMTF )
+{
+ if(bStatus==FALSE)
+ return;
+
+ for( ULONG nA = 0, nACount = pMTF->GetActionCount(); nA < nACount; nA++ )
+ {
+ const MetaAction* pMA = pMTF->GetAction( nA );
+
+ switch (pMA->GetType())
+ {
+ case META_PIXEL_ACTION:
+ {
+ const MetaPixelAction* pA = (const MetaPixelAction*) pMA;
+ METSetMix( eGDIRasterOp );
+ METSetColor( pA->GetColor() );
+ METLine( pA->GetPoint(),pA->GetPoint() );
+ }
+ break;
+
+ case META_POINT_ACTION:
+ {
+ const MetaPointAction* pA = (const MetaPointAction*) pMA;
+
+ METSetArcParams(1,1,0,0);
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDILineColor);
+ METBeginArea(FALSE);
+ METFullArc(pA->GetPoint(),0.5);
+ METEndArea();
+ }
+ break;
+
+ case META_LINE_ACTION:
+ {
+ const MetaLineAction* pA = (const MetaLineAction*) pMA;
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ LineInfo aLineInfo( pA->GetLineInfo() );
+ if ( ! ( aLineInfo.IsDefault() ) )
+ METSetAndPushLineInfo( aLineInfo );
+
+ METSetMix( eGDIRasterOp );
+ METSetColor(aGDILineColor);
+ METBeginPath( 1 );
+ METLine( pA->GetStartPoint(), pA->GetEndPoint() );
+ METEndPath();
+ METOutlinePath( 1 );
+
+ if ( ! ( aLineInfo.IsDefault() ) )
+ METPopLineInfo( aLineInfo );
+ }
+ }
+ break;
+
+ case META_RECT_ACTION:
+ {
+ const MetaRectAction* pA = (const MetaRectAction*) pMA;
+
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDIFillColor );
+ METSetBackgroundColor( aGDIFillColor );
+ METBox( TRUE, FALSE, pA->GetRect(), 0, 0 );
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDILineColor );
+ METBox( FALSE, TRUE, pA->GetRect(), 0, 0 );
+ }
+ }
+ break;
+
+ case META_ROUNDRECT_ACTION:
+ {
+ const MetaRoundRectAction* pA = (const MetaRoundRectAction*) pMA;
+
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDIFillColor );
+ METSetBackgroundColor( aGDIFillColor );
+ METBox( TRUE, FALSE, pA->GetRect(), pA->GetHorzRound(), pA->GetVertRound() );
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDILineColor );
+ METBox( FALSE, TRUE, pA->GetRect(), pA->GetHorzRound(), pA->GetVertRound() );
+ }
+ }
+ break;
+
+ case META_ELLIPSE_ACTION:
+ {
+ const MetaEllipseAction* pA = (const MetaEllipseAction*) pMA;
+ Point aCenter;
+
+ aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
+ aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
+
+ METSetArcParams(pA->GetRect().GetWidth(), pA->GetRect().GetHeight(),0,0);
+
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDIFillColor );
+ METSetBackgroundColor( aGDIFillColor );
+ METBeginArea(FALSE);
+ METFullArc(aCenter,0.5);
+ METEndArea();
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDILineColor );
+ METFullArc( aCenter,0.5 );
+ }
+ }
+ break;
+
+ case META_ARC_ACTION:
+ {
+ const MetaArcAction* pA = (const MetaArcAction*) pMA;
+ Point aStartPos,aCenter;
+ double fdx,fdy,fa1,fa2;
+
+ aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
+ aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
+ fdx=(double)(pA->GetStartPoint().X()-aCenter.X());
+ fdy=(double)(pA->GetStartPoint().Y()-aCenter.Y());
+ fdx*=(double)pA->GetRect().GetHeight();
+ fdy*=(double)pA->GetRect().GetWidth();
+ if (fdx==0.0 && fdy==0.0) fdx=1.0;
+ fa1=atan2(-fdy,fdx);
+ fdx=(double)(pA->GetEndPoint().X()-aCenter.X());
+ fdy=(double)(pA->GetEndPoint().Y()-aCenter.Y());
+ fdx*=(double)pA->GetRect().GetHeight();
+ fdy*=(double)pA->GetRect().GetWidth();
+ if (fdx==0.0 && fdy==0.0) fdx=1.0;
+ fa2=atan2(-fdy,fdx);
+ aStartPos.X()=aCenter.X()+(long)(((double)pA->GetRect().GetWidth())*cos(fa1)/2.0+0.5);
+ aStartPos.Y()=aCenter.Y()-(long)(((double)pA->GetRect().GetHeight())*sin(fa1)/2.0+0.5);
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDILineColor );
+ METSetArcParams(pA->GetRect().GetWidth(), pA->GetRect().GetHeight(),0,0);
+ METBeginPath(1);
+ METMove(aStartPos);
+ METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
+ METEndPath();
+ METOutlinePath(1);
+ }
+ }
+ break;
+
+ case META_PIE_ACTION:
+ {
+ const MetaPieAction* pA = (const MetaPieAction*) pMA;
+ Point aCenter;
+ double fdx,fdy,fa1,fa2;
+
+ aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
+ aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
+ fdx=(double)(pA->GetStartPoint().X()-aCenter.X());
+ fdy=(double)(pA->GetStartPoint().Y()-aCenter.Y());
+ fdx*=(double)pA->GetRect().GetHeight();
+ fdy*=(double)pA->GetRect().GetWidth();
+ if (fdx==0.0 && fdy==0.0) fdx=1.0;
+ fa1=atan2(-fdy,fdx);
+ fdx=(double)(pA->GetEndPoint().X()-aCenter.X());
+ fdy=(double)(pA->GetEndPoint().Y()-aCenter.Y());
+ fdx*=(double)pA->GetRect().GetHeight();
+ fdy*=(double)pA->GetRect().GetWidth();
+ if (fdx==0.0 && fdy==0.0) fdx=1.0;
+ fa2=atan2(-fdy,fdx);
+
+ METSetArcParams(pA->GetRect().GetWidth(), pA->GetRect().GetHeight(),0,0);
+
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDIFillColor );
+ METSetBackgroundColor( aGDIFillColor );
+ METBeginPath(1);
+ METMove(aCenter);
+ METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
+ METLineAtCurPos(aCenter);
+ METEndPath();
+ METFillPath(1);
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDILineColor );
+ METBeginPath(1);
+ METMove(aCenter);
+ METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
+ METLineAtCurPos(aCenter);
+ METEndPath();
+ METOutlinePath(1);
+ }
+ }
+ break;
+
+ case META_CHORD_ACTION:
+ {
+ const MetaChordAction* pA = (const MetaChordAction*) pMA;
+ Point aStartPos,aCenter;
+ double fdx,fdy,fa1,fa2;
+
+ aCenter.X()=(pA->GetRect().Left()+pA->GetRect().Right())/2;
+ aCenter.Y()=(pA->GetRect().Top()+pA->GetRect().Bottom())/2;
+ fdx=(double)(pA->GetStartPoint().X()-aCenter.X());
+ fdy=(double)(pA->GetStartPoint().Y()-aCenter.Y());
+ fdx*=(double)pA->GetRect().GetHeight();
+ fdy*=(double)pA->GetRect().GetWidth();
+ if (fdx==0.0 && fdy==0.0) fdx=1.0;
+ fa1=atan2(-fdy,fdx);
+ fdx=(double)(pA->GetEndPoint().X()-aCenter.X());
+ fdy=(double)(pA->GetEndPoint().Y()-aCenter.Y());
+ fdx*=(double)pA->GetRect().GetHeight();
+ fdy*=(double)pA->GetRect().GetWidth();
+ if (fdx==0.0 && fdy==0.0) fdx=1.0;
+ fa2=atan2(-fdy,fdx);
+ aStartPos.X()=aCenter.X()+(long)(((double)pA->GetRect().GetWidth())*cos(fa1)/2.0+0.5);
+ aStartPos.Y()=aCenter.Y()-(long)(((double)pA->GetRect().GetHeight())*sin(fa1)/2.0+0.5);
+
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDIFillColor );
+ METSetBackgroundColor( aGDIFillColor );
+ METBeginPath(1);
+ METMove(aStartPos);
+ METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
+ METLineAtCurPos(aStartPos);
+ METEndPath();
+ METFillPath(1);
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix( eGDIRasterOp );
+ METSetColor( aGDILineColor );
+ METBeginPath(1);
+ METMove(aStartPos);
+ METPartialArcAtCurPos(aCenter,0.5,fa1,fa2-fa1);
+ METLineAtCurPos(aStartPos);
+ METEndPath();
+ METOutlinePath(1);
+ }
+ }
+ break;
+
+ case META_POLYLINE_ACTION:
+ {
+ const MetaPolyLineAction* pA = (const MetaPolyLineAction*) pMA;
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ LineInfo aLineInfo( pA->GetLineInfo() );
+ if ( ! ( aLineInfo.IsDefault() ) )
+ METSetAndPushLineInfo( aLineInfo );
+
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDILineColor);
+ METBeginPath(1);
+ Polygon aSimplePoly;
+ const Polygon& rPoly = pA->GetPolygon();
+ if ( rPoly.HasFlags() )
+ rPoly.AdaptiveSubdivide( aSimplePoly );
+ else
+ aSimplePoly = rPoly;
+ METLine( aSimplePoly );
+ METEndPath();
+ METOutlinePath(1);
+
+ if ( ! ( aLineInfo.IsDefault() ) )
+ METPopLineInfo( aLineInfo );
+ }
+ }
+ break;
+
+ case META_POLYGON_ACTION:
+ {
+ const MetaPolygonAction* pA = (const MetaPolygonAction*) pMA;
+ Polygon aSimplePoly;
+ const Polygon& rPoly = pA->GetPolygon();
+ if ( rPoly.HasFlags() )
+ rPoly.AdaptiveSubdivide( aSimplePoly );
+ else
+ aSimplePoly = rPoly;
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDIFillColor );
+ METSetBackgroundColor(aGDIFillColor );
+ METBeginPath(1);
+ METLine( aSimplePoly );
+ METEndPath();
+ METFillPath(1);
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDILineColor );
+ METBeginPath(1);
+ METLine( aSimplePoly );
+ METEndPath();
+ METOutlinePath(1);
+ }
+ }
+ break;
+
+ case META_POLYPOLYGON_ACTION:
+ {
+ const MetaPolyPolygonAction* pA = (const MetaPolyPolygonAction*) pMA;
+
+ PolyPolygon aSimplePolyPoly( pA->GetPolyPolygon() );
+ sal_uInt16 i, nCount = aSimplePolyPoly.Count();
+ for ( i = 0; i < nCount; i++ )
+ {
+ if ( aSimplePolyPoly[ i ].HasFlags() )
+ {
+ Polygon aSimplePoly;
+ aSimplePolyPoly[ i ].AdaptiveSubdivide( aSimplePoly );
+ aSimplePolyPoly[ i ] = aSimplePoly;
+ }
+ }
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDIFillColor);
+ METSetBackgroundColor(aGDIFillColor);
+ METBeginPath(1);
+ METLine( aSimplePolyPoly );
+ METEndPath();
+ METFillPath(1);
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDILineColor);
+ METBeginPath(1);
+ METLine( aSimplePolyPoly );
+ METEndPath();
+ METOutlinePath(1);
+ }
+ }
+ break;
+
+ case META_TEXT_ACTION:
+ {
+ const MetaTextAction* pA = (const MetaTextAction*) pMA;
+ Point aPt( pA->GetPoint() );
+
+ if( aGDIFont.GetAlign() != ALIGN_BASELINE)
+ {
+ VirtualDevice aVDev;
+
+ if( aGDIFont.GetAlign()==ALIGN_TOP )
+ aPt.Y()+=(long)aVDev.GetFontMetric( aGDIFont ).GetAscent();
+ else
+ aPt.Y()-=(long)aVDev.GetFontMetric( aGDIFont ).GetDescent();
+ }
+
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDIFont.GetColor());
+ METSetBackgroundColor(aGDIFont.GetFillColor());
+ METSetChrCellSize(aGDIFont.GetSize());
+ METSetChrAngle(aGDIFont.GetOrientation());
+ METSetChrSet(FindChrSet(aGDIFont));
+ METChrStr(aPt, String(pA->GetText(),pA->GetIndex(),pA->GetLen()));
+ }
+ break;
+
+ case META_TEXTARRAY_ACTION:
+ {
+ const MetaTextArrayAction* pA = (const MetaTextArrayAction*) pMA;
+ USHORT i;
+ String aStr;
+ Polygon aPolyDummy(1);
+ short nOrientation;
+ Point aPt( pA->GetPoint() );
+
+ if( aGDIFont.GetAlign() != ALIGN_BASELINE )
+ {
+ VirtualDevice aVDev;
+ if( aGDIFont.GetAlign() == ALIGN_TOP )
+ aPt.Y()+=(long)aVDev.GetFontMetric(aGDIFont).GetAscent();
+ else
+ aPt.Y()-=(long)aVDev.GetFontMetric(aGDIFont).GetDescent();
+ }
+
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDIFont.GetColor());
+ METSetBackgroundColor(aGDIFont.GetFillColor());
+ METSetChrCellSize(aGDIFont.GetSize());
+ METSetChrAngle( nOrientation = aGDIFont.GetOrientation() );
+ METSetChrSet(FindChrSet(aGDIFont));
+ aStr=String(pA->GetText(),pA->GetIndex(),pA->GetLen());
+
+ if( pA->GetDXArray()!=NULL )
+ {
+ Point aPt2;
+
+ for( i=0; i < aStr.Len(); i++ )
+ {
+ aPt2 = aPt;
+ if ( i > 0 )
+ {
+ aPt2.X() += pA->GetDXArray()[i-1];
+ if ( nOrientation )
+ {
+ aPolyDummy.SetPoint( aPt2, 0 );
+ aPolyDummy.Rotate( aPt, nOrientation );
+ aPt2 = aPolyDummy.GetPoint( 0 );
+ }
+ }
+ METChrStr( aPt2, String( aStr.GetChar( i ) ) );
+ }
+ }
+ else
+ METChrStr( aPt, aStr );
+ }
+ break;
+
+ case META_STRETCHTEXT_ACTION:
+ {
+ const MetaStretchTextAction* pA = (const MetaStretchTextAction*) pMA;
+ VirtualDevice aVDev;
+ USHORT i;
+ sal_Int32* pDXAry;
+ sal_Int32 nNormSize;
+ String aStr;
+ Polygon aPolyDummy(1);
+ short nOrientation;
+ Point aPt( pA->GetPoint() );
+ Point aPt2;
+
+ aVDev.SetFont( aGDIFont );
+
+ if( aGDIFont.GetAlign() != ALIGN_BASELINE)
+ {
+ if( aGDIFont.GetAlign() == ALIGN_TOP )
+ aPt.Y()+=(long)aVDev.GetFontMetric().GetAscent();
+ else
+ aPt.Y()-=(long)aVDev.GetFontMetric().GetDescent();
+ }
+
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDIFont.GetColor());
+ METSetBackgroundColor(aGDIFont.GetFillColor());
+ METSetChrCellSize(aGDIFont.GetSize());
+ METSetChrAngle( nOrientation = aGDIFont.GetOrientation() );
+ METSetChrSet(FindChrSet(aGDIFont));
+ aStr=String(pA->GetText(),pA->GetIndex(),pA->GetLen());
+ pDXAry=new sal_Int32[aStr.Len()];
+ nNormSize = aVDev.GetTextArray( aStr, pDXAry );
+
+ for ( i = 0; i < aStr.Len(); i++ )
+ {
+ aPt2 = aPt;
+ if ( i > 0 )
+ {
+ aPt2.X() += pDXAry[i-1]*((long)pA->GetWidth())/ nNormSize;
+ if ( nOrientation )
+ {
+ aPolyDummy.SetPoint( aPt2, 0 );
+ aPolyDummy.Rotate( aPt, nOrientation );
+ aPt2 = aPolyDummy.GetPoint( 0 );
+ }
+ }
+ METChrStr( aPt2, String( aStr.GetChar( i ) ) );
+ }
+
+ delete[] pDXAry;
+ }
+ break;
+
+ case META_TEXTRECT_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_TEXTRECT_ACTION!" );
+ }
+ break;
+
+ case META_BMP_ACTION:
+ {
+ const MetaBmpAction* pA = (const MetaBmpAction*) pMA;
+
+ METSetMix(eGDIRasterOp);
+ METBitBlt( pA->GetPoint(), pA->GetBitmap().GetSizePixel(), pA->GetBitmap() );
+ }
+ break;
+
+ case META_BMPSCALE_ACTION:
+ {
+ const MetaBmpScaleAction* pA = (const MetaBmpScaleAction*) pMA;
+
+ METSetMix(eGDIRasterOp);
+ METBitBlt( pA->GetPoint(), pA->GetSize(), pA->GetBitmap() );
+ }
+ break;
+
+ case META_BMPSCALEPART_ACTION:
+ {
+ const MetaBmpScalePartAction* pA = (const MetaBmpScalePartAction*) pMA;
+ Bitmap aTmp( pA->GetBitmap() );
+
+ aTmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
+ METSetMix( eGDIRasterOp );
+ METBitBlt( pA->GetDestPoint(), pA->GetDestSize(), aTmp );
+ }
+ break;
+
+ case META_BMPEX_ACTION:
+ {
+ const MetaBmpExAction* pA = (const MetaBmpExAction*) pMA;
+ Bitmap aTmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
+
+ METSetMix(eGDIRasterOp);
+ METBitBlt( pA->GetPoint(), aTmp.GetSizePixel(), aTmp );
+ }
+ break;
+
+ case META_BMPEXSCALE_ACTION:
+ {
+ const MetaBmpExScaleAction* pA = (const MetaBmpExScaleAction*) pMA;
+ Bitmap aTmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
+
+ METSetMix(eGDIRasterOp);
+ METBitBlt( pA->GetPoint(), pA->GetSize(), aTmp );
+ }
+ break;
+
+ case META_BMPEXSCALEPART_ACTION:
+ {
+ const MetaBmpExScalePartAction* pA = (const MetaBmpExScalePartAction*) pMA;
+ Bitmap aTmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
+
+ aTmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
+ METSetMix(eGDIRasterOp);
+ METBitBlt( pA->GetDestPoint(), pA->GetDestSize(), aTmp );
+ }
+ break;
+
+ case META_EPS_ACTION :
+ {
+ const MetaEPSAction* pA = (const MetaEPSAction*)pMA;
+ const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
+
+ INT32 nCount = aGDIMetaFile.GetActionCount();
+ for ( INT32 i = 0; i < nCount; i++ )
+ {
+ const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
+ if ( pMetaAct->GetType() == META_BMPSCALE_ACTION )
+ {
+ const MetaBmpScaleAction* pBmpScaleAction = (const MetaBmpScaleAction*)pMetaAct;
+ METSetMix(eGDIRasterOp);
+ METBitBlt( pA->GetPoint(), pA->GetSize(), pBmpScaleAction->GetBitmap() );
+ break;
+ }
+ }
+ }
+ break;
+
+ case META_MASK_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_MASK_ACTION!" );
+ }
+ break;
+
+ case META_MASKSCALE_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_MASKSCALE_ACTION!" );
+ }
+ break;
+
+ case META_MASKSCALEPART_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_MASKSCALEPART_ACTION!" );
+ }
+ break;
+
+ case META_GRADIENT_ACTION:
+ {
+ VirtualDevice aVDev;
+ GDIMetaFile aTmpMtf;
+ const MetaGradientAction* pA = (const MetaGradientAction*) pMA;
+
+ aVDev.SetMapMode( aTargetMapMode );
+ aVDev.AddGradientActions( pA->GetRect(), pA->GetGradient(), aTmpMtf );
+ WriteOrders( &aTmpMtf );
+ }
+ break;
+
+ case META_HATCH_ACTION:
+ {
+ VirtualDevice aVDev;
+ GDIMetaFile aTmpMtf;
+ const MetaHatchAction* pA = (const MetaHatchAction*) pMA;
+
+ aVDev.SetMapMode( aTargetMapMode );
+ aVDev.AddHatchActions( pA->GetPolyPolygon(), pA->GetHatch(), aTmpMtf );
+ WriteOrders( &aTmpMtf );
+ }
+ break;
+
+ case META_WALLPAPER_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_WALLPAPER_ACTION!" );
+ }
+ break;
+
+ case META_CLIPREGION_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_CLIPREGION_ACTION!" );
+ }
+ break;
+
+ case META_ISECTRECTCLIPREGION_ACTION:
+ {
+ const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*) pMA;
+ WriteClipRect( pA->GetRect() );
+ }
+ break;
+
+ case META_ISECTREGIONCLIPREGION_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_ISECTREGIONCLIPREGION_ACTION!" );
+ }
+ break;
+
+ case META_MOVECLIPREGION_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_MOVECLIPREGION_ACTION!" );
+ }
+ break;
+
+ case META_LINECOLOR_ACTION:
+ {
+ const MetaLineColorAction* pA = (const MetaLineColorAction*) pMA;
+
+ if( pA->IsSetting() )
+ aGDILineColor = pA->GetColor();
+ else
+ aGDILineColor = Color( COL_TRANSPARENT );
+ }
+ break;
+
+ case META_FILLCOLOR_ACTION:
+ {
+ const MetaFillColorAction* pA = (const MetaFillColorAction*) pMA;
+
+ if( pA->IsSetting() )
+ aGDIFillColor = pA->GetColor();
+ else
+ aGDIFillColor = Color( COL_TRANSPARENT );
+ }
+ break;
+
+ case META_TEXTCOLOR_ACTION:
+ {
+ const MetaTextColorAction* pA = (const MetaTextColorAction*) pMA;
+ aGDIFont.SetColor( pA->GetColor() );
+ }
+ break;
+
+ case META_TEXTFILLCOLOR_ACTION:
+ {
+ const MetaTextFillColorAction* pA = (const MetaTextFillColorAction*) pMA;
+
+ if( pA->IsSetting() )
+ aGDIFont.SetFillColor( pA->GetColor() );
+ else
+ aGDIFont.SetFillColor( Color( COL_TRANSPARENT ) );
+ }
+ break;
+
+ case META_TEXTALIGN_ACTION:
+ {
+// DBG_ERROR( "Unsupported MET-Action: META_TEXTALIGN_ACTION!" );
+ }
+ break;
+
+ case META_MAPMODE_ACTION:
+ {
+ const MetaMapModeAction* pA = (const MetaMapModeAction*) pMA;
+
+ if( aPictureMapMode != pA->GetMapMode() )
+ {
+ if ( pA->GetMapMode().GetMapUnit() == MAP_RELATIVE )
+ {
+ MapMode aMM = pA->GetMapMode();
+ Fraction aScaleX = aMM.GetScaleX();
+ Fraction aScaleY = aMM.GetScaleY();
+
+ Point aOrigin = aPictureMapMode.GetOrigin();
+ BigInt aX( aOrigin.X() );
+ aX *= BigInt( aScaleX.GetDenominator() );
+
+ if( aOrigin.X() >= 0 )
+ {
+ if( aScaleX.GetNumerator() >= 0 )
+ aX += BigInt( aScaleX.GetNumerator()/2 );
+ else
+ aX -= BigInt( (aScaleX.GetNumerator()+1)/2 );
+ }
+ else
+ {
+ if( aScaleX.GetNumerator() >= 0 )
+ aX -= BigInt( (aScaleX.GetNumerator()-1)/2 );
+ else
+ aX += BigInt( aScaleX.GetNumerator()/2 );
+ }
+
+ aX /= BigInt( aScaleX.GetNumerator() );
+ aOrigin.X() = (long) aX + aMM.GetOrigin().X();
+
+ BigInt aY( aOrigin.Y() );
+ aY *= BigInt( aScaleY.GetDenominator() );
+
+ if( aOrigin.Y() >= 0 )
+ {
+ if( aScaleY.GetNumerator() >= 0 )
+ aY += BigInt( aScaleY.GetNumerator()/2 );
+ else
+ aY -= BigInt( (aScaleY.GetNumerator()+1)/2 );
+ }
+ else
+ {
+ if( aScaleY.GetNumerator() >= 0 )
+ aY -= BigInt( (aScaleY.GetNumerator()-1)/2 );
+ else
+ aY += BigInt( aScaleY.GetNumerator()/2 );
+ }
+
+ aY /= BigInt( aScaleY.GetNumerator() );
+ aOrigin.Y() = (long)aY + aMM.GetOrigin().Y();
+ aPictureMapMode.SetOrigin( aOrigin );
+
+ aScaleX *= aPictureMapMode.GetScaleX();
+ aScaleY *= aPictureMapMode.GetScaleY();
+ aPictureMapMode.SetScaleX( aScaleX );
+ aPictureMapMode.SetScaleY( aScaleY );
+ }
+ else
+ aPictureMapMode=pA->GetMapMode();
+ }
+ }
+ break;
+
+ case META_FONT_ACTION:
+ {
+ aGDIFont = ( (const MetaFontAction*) pMA )->GetFont();
+ }
+ break;
+
+ case META_PUSH_ACTION:
+ {
+ METGDIStackMember* pGS = new METGDIStackMember;
+
+ pGS->pSucc=pGDIStack; pGDIStack=pGS;
+ pGS->aLineColor=aGDILineColor;
+ pGS->aFillColor=aGDIFillColor;
+ pGS->eRasterOp=eGDIRasterOp;
+ pGS->aFont=aGDIFont;
+ pGS->aMapMode=aPictureMapMode;
+ pGS->aClipRect=aGDIClipRect;
+ }
+ break;
+
+ case META_POP_ACTION:
+ {
+ METGDIStackMember* pGS;
+
+ if( pGDIStack )
+ {
+ pGS=pGDIStack; pGDIStack=pGS->pSucc;
+ aGDILineColor=pGS->aLineColor;
+ aGDIFillColor=pGS->aFillColor;
+ eGDIRasterOp=pGS->eRasterOp;
+ aGDIFont=pGS->aFont;
+ if ( pGS->aClipRect != aGDIClipRect )
+ WriteClipRect( pGS->aClipRect );
+ aPictureMapMode=pGS->aMapMode;
+ delete pGS;
+ }
+ }
+ break;
+
+ case META_RASTEROP_ACTION:
+ {
+ eGDIRasterOp = ( (const MetaRasterOpAction*) pMA )->GetRasterOp();
+ }
+ break;
+
+ case META_TRANSPARENT_ACTION:
+ {
+ if( aGDIFillColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDIFillColor);
+ METSetBackgroundColor(aGDIFillColor);
+ METBeginPath(1);
+ METLine(( (const MetaTransparentAction*) pMA )->GetPolyPolygon());
+ METEndPath();
+ METFillPath(1);
+ }
+
+ if( aGDILineColor != Color( COL_TRANSPARENT ) )
+ {
+ METSetMix(eGDIRasterOp);
+ METSetColor(aGDILineColor);
+ METBeginPath(1);
+ METLine(( (const MetaTransparentAction*) pMA )->GetPolyPolygon());
+ METEndPath();
+ METOutlinePath(1);
+ }
+ }
+ break;
+
+ case META_FLOATTRANSPARENT_ACTION:
+ {
+ const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pMA;
+
+ GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
+ Point aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
+ const Size aSrcSize( aTmpMtf.GetPrefSize() );
+ const Point aDestPt( pA->GetPoint() );
+ const Size aDestSize( pA->GetSize() );
+ const double fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
+ const double fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
+ long nMoveX, nMoveY;
+
+ if( fScaleX != 1.0 || fScaleY != 1.0 )
+ {
+ aTmpMtf.Scale( fScaleX, fScaleY );
+ aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
+ }
+
+ nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
+
+ if( nMoveX || nMoveY )
+ aTmpMtf.Move( nMoveX, nMoveY );
+
+ WriteOrders( &aTmpMtf );
+ }
+ break;
+ }
+
+ nWrittenActions++;
+ MayCallback();
+
+ if( pMET->GetError() )
+ bStatus=FALSE;
+
+ if( bStatus == FALSE )
+ break;
+ }
+}
+
+void METWriter::WriteObjectEnvironmentGroup(const GDIMetaFile * pMTF)
+{
+ ULONG i, nId;
+
+ //--- Das Feld 'Begin Object Environment Group':
+ WriteFieldIntroducer(16,BegObjEnvMagic,0,0);
+ WriteFieldId(7);
+
+ //--- Das Feld 'Map Color Attribute Table':
+ WriteFieldIntroducer(22,MapColAtrMagic,0,0);
+ WriteBigEndianShort(0x000e);
+ *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
+ WriteFieldId(4);
+
+ //--- Das erste Feld 'Map Coded Font':
+ WriteFieldIntroducer(32,MapCodFntMagic,0,0);
+ WriteBigEndianShort(0x0018);
+ *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
+ *pMET << (BYTE)0xff << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+ *pMET << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00 << (BYTE)0x00;
+ *pMET << (BYTE)0x04 << (BYTE)0x24 << (BYTE)0x05 << (BYTE)0x00;
+ *pMET << (BYTE)0x06 << (BYTE)0x20;
+ *pMET << (BYTE)0x03 << (BYTE)0x97 << (BYTE)0x01 << (BYTE)0xb5;
+
+ //--- Die weiteren Felder 'Map Coded Font':
+ CreateChrSets(pMTF);
+ WriteChrSets();
+
+ //--- Die Felder 'Map Data Resource':
+ nId=nActBitmapId;
+ for (i=0; i<nNumberOfBitmaps; i++)
+ {
+ WriteFieldIntroducer(29,MapDatResMagic,0,0);
+ WriteBigEndianShort(0x0015);
+ *pMET << (BYTE)0x0c << (BYTE)0x02 << (BYTE)0x84 << (BYTE)0x00;
+ WriteFieldId(nId);
+ *pMET << (BYTE)0x07 << (BYTE)0x22 << (BYTE)0x10;
+ *pMET << (sal_uInt32)nId;
+ nId++;
+ }
+
+ //--- Das Feld 'End Object Environment Group':
+ WriteFieldIntroducer(16,EndObjEnvMagic,0,0);
+ WriteFieldId(7);
+}
+
+
+void METWriter::WriteGraphicsObject(const GDIMetaFile * pMTF)
+{
+ ULONG nSegmentSize,nPos,nDataFieldsStartPos;
+
+ if( bStatus==FALSE )
+ return;
+
+ //--- Das Feld 'Begin Graphics Object':
+ WriteFieldIntroducer(16,BegGrfObjMagic,0,0);
+ WriteFieldId(7);
+
+ // Map Color Attribute Table, Fonts und anderes:
+ WriteObjectEnvironmentGroup(pMTF);
+
+ //--- Das Feld 'Graphics Data Descriptor':
+ WriteDataDescriptor(pMTF);
+
+ // Zaehler fuer Data Fields initialisieren:
+ nNumberOfDataFields=0;
+
+ // Und Position des ersten Data Fields merken:
+ nDataFieldsStartPos=pMET->Tell();
+
+ //--- Anfang des ersten Feldes 'Graphics Data'
+ WriteFieldIntroducer(0,DatGrfObjMagic,0,0);
+ nNumberOfDataFields++;
+
+ // Nun schreiben wir zunaechst den Kopf des Segments:
+ *pMET << (BYTE)0x70 << (BYTE)0x0e << (sal_uInt32)0;
+ *pMET << (BYTE)0x70 << (BYTE)0x10; // Flags
+ *pMET << (USHORT)0; // Lo-Wort der Laenge der Segementdaten (Big Endian)
+ *pMET << (sal_uInt32)0; // Reserved
+ *pMET << (USHORT)0; // Hi-Wort der Laenge der Segementdaten (Big Endian) (Ohh Ohh OS2)
+ // Anmerkung: die richtige Daten-Laenge schreiben wir weiter unten nochmal
+
+ // Jetzt werden alle Orders rausgeschrieben:
+ // (wobei die Sache ggf. in mehrere 'Graphics Data Fields' aufgeteilt
+ // wird, per Methode WillWriteOrder(..))
+ WriteOrders(pMTF);
+
+ //--- Das letzte Feld 'Graphic Data' beenden:
+ UpdateFieldSize();
+
+ //--- Und schliesslich die Segmentgroesse richtigstellen:
+ nPos=pMET->Tell();
+ nSegmentSize=nPos-nDataFieldsStartPos;
+ nSegmentSize-=nNumberOfDataFields*8; // Structured Field Introducers zaehlen nicht mit
+ pMET->Seek(nDataFieldsStartPos+16); // Zum Lo-Wort der Segmentgroesse seeken
+ WriteBigEndianShort((USHORT)(nSegmentSize&0x0000ffff)); // Und schreiben
+ pMET->Seek(nDataFieldsStartPos+22); // Zum Hi-Wort der Segmentgroesse seeken
+ WriteBigEndianShort((USHORT)(nSegmentSize>>16)); // Und schreiben
+ pMET->Seek(nPos); // Zurueck zur Tagesordnung
+
+ //--- Das Feld 'End Graphic Objects':
+ WriteFieldIntroducer(16,EndGrfObjMagic,0,0);
+ WriteFieldId(7);
+
+ if( pMET->GetError() )
+ bStatus=FALSE;
+}
+
+
+void METWriter::WriteResourceGroup(const GDIMetaFile * pMTF)
+{
+ if( bStatus==FALSE )
+ return;
+
+ //--- Das Feld 'Begin Resource Group':
+ WriteFieldIntroducer(16,BegResGrpMagic,0,0);
+ WriteFieldId(2);
+
+ //--- Der Inhalt:
+ WriteColorAttributeTable();
+ nActBitmapId=0x77777700;
+ WriteImageObjects(pMTF);
+ nActBitmapId=0x77777700;
+ WriteGraphicsObject(pMTF);
+
+ //--- Das Feld 'End Resource Group':
+ WriteFieldIntroducer(16,EndResGrpMagic,0,0);
+ WriteFieldId(2);
+
+ if( pMET->GetError() )
+ bStatus=FALSE;
+}
+
+
+void METWriter::WriteDocument(const GDIMetaFile * pMTF)
+{
+ if( bStatus==FALSE )
+ return;
+
+ //--- Das Feld 'Begin Document':
+ WriteFieldIntroducer(0,BegDocumnMagic,0,0);
+ WriteFieldId(1);
+ *pMET << (BYTE)0x00 << (BYTE)0x00;
+ *pMET << (BYTE)0x05 << (BYTE)0x18 << (BYTE)0x03 << (BYTE)0x0c << (BYTE)0x00;
+ *pMET << (BYTE)0x06 << (BYTE)0x01 << (BYTE)0x03 << (BYTE)0xd4 << (BYTE)0x03 << (BYTE)0x52;
+ *pMET << (BYTE)0x03 << (BYTE)0x65 << (BYTE)0x00;
+ UpdateFieldSize();
+
+ //--- Der Inhalt:
+ WriteResourceGroup(pMTF);
+
+ //--- Das Feld 'End Document':
+ WriteFieldIntroducer(16,EndDocumnMagic,0,0);
+ WriteFieldId(1);
+
+ if( pMET->GetError() )
+ bStatus=FALSE;
+}
+
+BOOL METWriter::WriteMET( const GDIMetaFile& rMTF, SvStream& rTargetStream, FilterConfigItem* pFilterConfigItem )
+{
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ METChrSet* pCS;
+ METGDIStackMember* pGS;
+
+ bStatus=TRUE;
+ nLastPercent=0;
+
+ pMET=&rTargetStream;
+ pMET->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+
+ aPictureRect = Rectangle( Point(), rMTF.GetPrefSize() );
+ aTargetMapMode = aPictureMapMode = rMTF.GetPrefMapMode();
+
+ aGDILineColor=Color( COL_BLACK );
+ aGDIFillColor=Color( COL_WHITE );
+ eGDIRasterOp=ROP_OVERPAINT;
+ aGDIFont=Font();
+ aGDIMapMode=MapMode();
+ aGDIClipRect=Rectangle();
+ pGDIStack=NULL;
+ aMETColor=Color(COL_BLACK);
+ aMETBackgroundColor=Color(COL_WHITE);
+ eMETMix=ROP_OVERPAINT;
+ nMETStrokeLineWidth=1;
+ aMETChrCellSize=Size(0,0);
+ nMETChrAngle=0;
+ nMETChrSet=0x00;
+ pChrSetList=NULL;
+ nNextChrSetId=1;
+ nNumberOfActions=0;
+ nNumberOfBitmaps=0;
+ nWrittenActions=0;
+ nWrittenBitmaps=0;
+ nActBitmapPercent=0;
+
+ CountActionsAndBitmaps(&rMTF);
+
+ WriteDocument(&rMTF);
+
+ while( pChrSetList )
+ {
+ pCS=pChrSetList;
+ pChrSetList=pCS->pSucc;
+ delete pCS;
+ }
+
+ while( pGDIStack )
+ {
+ pGS=pGDIStack;
+ pGDIStack=pGS->pSucc;
+ delete pGS;
+ }
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return bStatus;
+}
+
+//================== GraphicExport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{ METWriter aMETWriter;
+
+ if ( rGraphic.GetType() == GRAPHIC_GDIMETAFILE )
+ return aMETWriter.WriteMET( rGraphic.GetGDIMetaFile(), rStream, pFilterConfigItem );
+ else
+ {
+ Bitmap aBmp=rGraphic.GetBitmap();
+ GDIMetaFile aMTF;
+ VirtualDevice aVirDev;
+
+ aMTF.Record(&aVirDev);
+ aVirDev.DrawBitmap(Point(),aBmp);
+ aMTF.Stop();
+ aMTF.SetPrefSize(aBmp.GetSizePixel());
+ return aMETWriter.WriteMET( aMTF, rStream, pFilterConfigItem );
+ }
+}
+
+//================== GraphicDialog - die exportierte Funktion ================
+
+extern "C" BOOL SAL_CALL DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "eme" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEMET( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/eos2met/eos2mstr.src b/filter/source/graphicfilter/eos2met/eos2mstr.src
new file mode 100644
index 000000000000..8afebcb7564c
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/eos2mstr.src
@@ -0,0 +1,38 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "strings.hrc"
+
+String KEY_MODE
+{
+ Text = "ExportMode";
+};
+
+String KEY_SIZE
+{
+ Text = "Size";
+};
diff --git a/filter/source/graphicfilter/eos2met/exports.map b/filter/source/graphicfilter/eos2met/exports.map
new file mode 100644
index 000000000000..ce76d3850094
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/exports.map
@@ -0,0 +1,8 @@
+METEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/eos2met/makefile.mk b/filter/source/graphicfilter/eos2met/makefile.mk
new file mode 100644
index 000000000000..9f8deb74c7ca
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/makefile.mk
@@ -0,0 +1,74 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=eos2met
+TARGET2=eme
+DEPTARGET=veos2met
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES= dlgeos2.src \
+ eos2mstr.src
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/eos2met.obj \
+ $(SLO)$/dlgeos2.obj
+.ENDIF
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET2)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
+SHL1TARGET= eme$(DLLPOSTFIX)
+SHL1IMPLIB= eos2met
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/eos2met.lib
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/eos2met.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/eos2met/strings.hrc b/filter/source/graphicfilter/eos2met/strings.hrc
new file mode 100644
index 000000000000..7834e3ea2bc0
--- /dev/null
+++ b/filter/source/graphicfilter/eos2met/strings.hrc
@@ -0,0 +1,29 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define KEY_MODE 260
+#define KEY_SIZE 261
+
diff --git a/filter/source/graphicfilter/epbm/dlgepbm.cxx b/filter/source/graphicfilter/epbm/dlgepbm.cxx
new file mode 100644
index 000000000000..932fb7ff5bb9
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/dlgepbm.cxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+
+#include <tools/ref.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include <vcl/msgbox.hxx>
+#include "dlgepbm.hxx"
+#include "dlgepbm.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEPBM::DlgExportEPBM( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPBM, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aGrpFormat ( this, ResId( GRP_FORMAT, *rPara.pResMgr ) ),
+ aRBRaw ( this, ResId( RB_RAW, *rPara.pResMgr ) ),
+ aRBASCII ( this, ResId( RB_ASCII, *rPara.pResMgr ) ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ // Config-Parameter lesen
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PBM" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+ sal_Int32 nFormat = pConfigItem->ReadInt32( String( ResId( KEY_FORMAT, *pMgr ) ), 1 );
+
+ BOOL bCheck = FALSE;
+ if ( !nFormat )
+ bCheck ^= TRUE;
+
+ aRBRaw.Check( bCheck );
+ bCheck ^= TRUE;
+ aRBASCII.Check( bCheck );
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEPBM, OK ) );
+}
+
+DlgExportEPBM::~DlgExportEPBM()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEPBM, OK, void *, EMPTYARG )
+{
+
+ // Config-Parameter schreiben
+ sal_Int32 nFormat = 0;
+ if ( aRBASCII.IsChecked() )
+ nFormat++;
+ pConfigItem->WriteInt32( String( ResId( KEY_FORMAT, *pMgr ) ), nFormat );
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
diff --git a/filter/source/graphicfilter/epbm/dlgepbm.hrc b/filter/source/graphicfilter/epbm/dlgepbm.hrc
new file mode 100644
index 000000000000..876dfa840997
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/dlgepbm.hrc
@@ -0,0 +1,34 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "filter.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define GRP_FORMAT 1
+#define RB_RAW 1
+#define RB_ASCII 2
diff --git a/filter/source/graphicfilter/epbm/dlgepbm.hxx b/filter/source/graphicfilter/epbm/dlgepbm.hxx
new file mode 100644
index 000000000000..780eac366020
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/dlgepbm.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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 _DLGEPBM_HXX_
+#define _DLGEPBM_HXX_
+#include <svtools/fltcall.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#include <svtools/stdctrl.hxx>
+
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen
+|*
+\************************************************************************/
+
+class ResMgr;
+
+class FilterConfigItem;
+class DlgExportEPBM : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ FixedLine aGrpFormat;
+ RadioButton aRBRaw;
+ RadioButton aRBASCII;
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void * );
+
+public:
+ DlgExportEPBM( FltCallDialogParameter& rPara );
+ ~DlgExportEPBM();
+};
+
+#endif // _DLGEPBM_HXX_
diff --git a/filter/source/graphicfilter/epbm/dlgepbm.src b/filter/source/graphicfilter/epbm/dlgepbm.src
new file mode 100644
index 000000000000..b4e6eb2decf2
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/dlgepbm.src
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgepbm.hrc"
+ModalDialog DLG_EXPORT_EPBM
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 133 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "PBM Options" ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 73 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 73 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 73 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedLine GRP_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 60 , 8 ) ;
+ Text [ en-US ] = "File format";
+ };
+ RadioButton RB_RAW
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Binary";
+ };
+ RadioButton RB_ASCII
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Text";
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/epbm/epbm.cxx b/filter/source/graphicfilter/epbm/epbm.cxx
new file mode 100644
index 000000000000..fe8dc77fc704
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/epbm.cxx
@@ -0,0 +1,272 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/svapp.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <vcl/msgbox.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include "strings.hrc"
+#include "dlgepbm.hrc"
+#include "dlgepbm.hxx"
+
+//============================ PBMWriter ==================================
+
+class PBMWriter {
+
+private:
+
+ SvStream* mpOStm; // Die auszugebende PBM-Datei
+ USHORT mpOStmOldModus;
+
+ BOOL mbStatus;
+ sal_Int32 mnMode; // 0 -> raw, 1-> ascii
+ BitmapReadAccess* mpAcc;
+ ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
+
+ BOOL ImplWriteHeader();
+ void ImplWriteBody();
+ void ImplWriteNumber( sal_Int32 );
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+public:
+ PBMWriter();
+ ~PBMWriter();
+
+ BOOL WritePBM( const Graphic& rGraphic, SvStream& rPBM, FilterConfigItem* pFilterConfigItem );
+};
+
+//=================== Methoden von PBMWriter ==============================
+
+PBMWriter::PBMWriter() :
+ mbStatus ( TRUE ),
+ mpAcc ( NULL )
+{
+}
+
+// ------------------------------------------------------------------------
+
+PBMWriter::~PBMWriter()
+{
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PBMWriter::WritePBM( const Graphic& rGraphic, SvStream& rPBM, FilterConfigItem* pFilterConfigItem )
+{
+
+ mpOStm = &rPBM;
+
+ if ( pFilterConfigItem )
+ {
+ mnMode = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "FileFormat" ) ), 0 );
+
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
+ Bitmap aBmp = aBmpEx.GetBitmap();
+ aBmp.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
+
+ mpOStmOldModus = mpOStm->GetNumberFormatInt();
+ mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ mpAcc = aBmp.AcquireReadAccess();
+ if( mpAcc )
+ {
+ if ( ImplWriteHeader() )
+ ImplWriteBody();
+
+ aBmp.ReleaseAccess( mpAcc );
+ }
+ else
+ mbStatus = FALSE;
+
+ mpOStm->SetNumberFormatInt( mpOStmOldModus );
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PBMWriter::ImplWriteHeader()
+{
+ mnWidth = mpAcc->Width();
+ mnHeight = mpAcc->Height();
+ if ( mnWidth && mnHeight )
+ {
+ if ( mnMode == 0 )
+ *mpOStm << "P4\x0a";
+ else
+ *mpOStm << "P1\x0a";
+
+ ImplWriteNumber( mnWidth );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( mnHeight );
+ *mpOStm << (BYTE)10;
+ }
+ else mbStatus = FALSE;
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void PBMWriter::ImplWriteBody()
+{
+ if ( mnMode == 0 )
+ {
+ BYTE nBYTE = 0;
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ ULONG x;
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ nBYTE <<= 1;
+ if (!(mpAcc->GetPixel( y, x ) & 1 ) )
+ nBYTE++;
+ if ( ( x & 7 ) == 7 )
+ *mpOStm << nBYTE;
+ }
+ if ( ( x & 7 ) != 0 )
+ *mpOStm << (BYTE)( nBYTE << ( ( x ^ 7 ) + 1 ) );
+ }
+ }
+ else
+ {
+ int nxCount;
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ nxCount = 70;
+ for ( ULONG x = 0; x < mnWidth; x++ )
+ {
+ if (!( --nxCount ) )
+ {
+ nxCount = 69;
+ *mpOStm << (BYTE)10;
+ }
+ *mpOStm << (BYTE)( ( mpAcc->GetPixel( y, x ) ^ 1 ) + '0' ) ;
+ }
+ *mpOStm << (BYTE)10;
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
+
+void PBMWriter::ImplWriteNumber( sal_Int32 nNumber )
+{
+ const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
+
+ for( sal_Int16 n = 0, nLen = aNum.Len(); n < nLen; n++ )
+ *mpOStm << aNum.GetChar( n );
+
+}
+
+// ------------------------------------------------------------------------
+
+// ---------------------
+// - exported function -
+// ---------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{
+ PBMWriter aPBMWriter;
+
+ return aPBMWriter.WritePBM( rGraphic, rStream, pFilterConfigItem );
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "epb" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEPBM( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+// ------------------------------------------------------------------------
+#ifndef GCC
+#endif
+
+// ---------------
+// - Win16 trash -
+// ---------------
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+ if ( nHeap )
+ UnlockData( 0 );
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/epbm/epbmstr.src b/filter/source/graphicfilter/epbm/epbmstr.src
new file mode 100644
index 000000000000..8424505dbcd1
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/epbmstr.src
@@ -0,0 +1,35 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "strings.hrc"
+
+// Key fuer den Dialog
+String KEY_FORMAT
+{
+ Text = "FileFormat";
+};
diff --git a/filter/source/graphicfilter/epbm/exports.map b/filter/source/graphicfilter/epbm/exports.map
new file mode 100644
index 000000000000..2d09b0bdb752
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/exports.map
@@ -0,0 +1,8 @@
+PBMEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/epbm/makefile.mk b/filter/source/graphicfilter/epbm/makefile.mk
new file mode 100644
index 000000000000..3b248222cda1
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/makefile.mk
@@ -0,0 +1,75 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=epbm
+TARGET2=epb
+DEPTARGET=vepbm
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES= dlgepbm.src \
+ epbmstr.src
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/epbm.obj \
+ $(SLO)$/dlgepbm.obj
+.ENDIF
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET2)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
+SHL1TARGET= epb$(DLLPOSTFIX)
+SHL1IMPLIB= epbm
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/epbm.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/epbm.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/epbm/strings.hrc b/filter/source/graphicfilter/epbm/strings.hrc
new file mode 100644
index 000000000000..122719e87d4b
--- /dev/null
+++ b/filter/source/graphicfilter/epbm/strings.hrc
@@ -0,0 +1,27 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define KEY_FORMAT 256
diff --git a/filter/source/graphicfilter/epgm/dlgepgm.cxx b/filter/source/graphicfilter/epgm/dlgepgm.cxx
new file mode 100644
index 000000000000..3aa960b25a26
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/dlgepgm.cxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+
+#include <tools/ref.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include <vcl/msgbox.hxx>
+#include "dlgepgm.hxx"
+#include "dlgepgm.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEPGM::DlgExportEPGM( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPGM, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aGrpFormat ( this, ResId( GRP_FORMAT, *rPara.pResMgr ) ),
+ aRBRaw ( this, ResId( RB_RAW, *rPara.pResMgr ) ),
+ aRBASCII ( this, ResId( RB_ASCII, *rPara.pResMgr ) ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ // Config-Parameter lesen
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PGM" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+ sal_Int32 nFormat = pConfigItem->ReadInt32( String( ResId( KEY_FORMAT, *pMgr ) ), 0 );
+
+ BOOL bCheck = FALSE;
+ if ( !nFormat )
+ bCheck ^= TRUE;
+ aRBRaw.Check( bCheck );
+ bCheck ^= TRUE;
+ aRBASCII.Check( bCheck );
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEPGM, OK ) );
+}
+
+DlgExportEPGM::~DlgExportEPGM()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEPGM, OK, void *, EMPTYARG )
+{
+ // Config-Parameter schreiben
+ sal_Int32 nFormat = 0;
+ if ( aRBASCII.IsChecked() )
+ nFormat++;
+ pConfigItem->WriteInt32( String( ResId( KEY_FORMAT, *pMgr ) ), nFormat );
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
diff --git a/filter/source/graphicfilter/epgm/dlgepgm.hrc b/filter/source/graphicfilter/epgm/dlgepgm.hrc
new file mode 100644
index 000000000000..876dfa840997
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/dlgepgm.hrc
@@ -0,0 +1,34 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "filter.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define GRP_FORMAT 1
+#define RB_RAW 1
+#define RB_ASCII 2
diff --git a/filter/source/graphicfilter/epgm/dlgepgm.hxx b/filter/source/graphicfilter/epgm/dlgepgm.hxx
new file mode 100644
index 000000000000..3eb91bdb5fc6
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/dlgepgm.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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 _DLGEPGM_HXX_
+#define _DLGEPGM_HXX_
+#include <svtools/fltcall.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#include <svtools/stdctrl.hxx>
+
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen
+|*
+\************************************************************************/
+
+class FilterConfigItem;
+class ResMgr;
+
+class DlgExportEPGM : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ FixedLine aGrpFormat;
+ RadioButton aRBRaw;
+ RadioButton aRBASCII;
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void * );
+
+public:
+ DlgExportEPGM( FltCallDialogParameter& rPara );
+ ~DlgExportEPGM();
+};
+
+#endif // _DLGEPGM_HXX_
diff --git a/filter/source/graphicfilter/epgm/dlgepgm.src b/filter/source/graphicfilter/epgm/dlgepgm.src
new file mode 100644
index 000000000000..39e91d29fdf5
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/dlgepgm.src
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgepgm.hrc"
+ModalDialog DLG_EXPORT_EPGM
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 133 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "PGM Options" ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 73 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 73 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 73 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedLine GRP_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 60 , 8 ) ;
+ Text [ en-US ] = "File format";
+ };
+ RadioButton RB_RAW
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Binary";
+ };
+ RadioButton RB_ASCII
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Text";
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/epgm/epgm.cxx b/filter/source/graphicfilter/epgm/epgm.cxx
new file mode 100644
index 000000000000..89fbc9929ab0
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/epgm.cxx
@@ -0,0 +1,297 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/svapp.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <vcl/msgbox.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include "strings.hrc"
+#include "dlgepgm.hrc"
+#include "dlgepgm.hxx"
+
+//============================ PGMWriter ==================================
+
+class PGMWriter {
+
+private:
+
+ SvStream* mpOStm; // Die auszugebende PGM-Datei
+ USHORT mpOStmOldModus;
+
+ BOOL mbStatus;
+ UINT32 mnMode;
+ BitmapReadAccess* mpAcc;
+ ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
+
+ BOOL ImplWriteHeader();
+ void ImplWriteBody();
+ void ImplWriteNumber( sal_Int32 );
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+public:
+ PGMWriter();
+ ~PGMWriter();
+
+ BOOL WritePGM( const Graphic& rGraphic, SvStream& rPGM, FilterConfigItem* pFilterConfigItem );
+};
+
+//=================== Methoden von PGMWriter ==============================
+
+PGMWriter::PGMWriter() :
+ mbStatus ( TRUE ),
+ mpAcc ( NULL )
+{
+}
+
+// ------------------------------------------------------------------------
+
+PGMWriter::~PGMWriter()
+{
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PGMWriter::WritePGM( const Graphic& rGraphic, SvStream& rPGM, FilterConfigItem* pFilterConfigItem )
+{
+
+ mpOStm = &rPGM;
+
+ if ( pFilterConfigItem )
+ {
+ mnMode = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "FileFormat" ) ), 0 );
+
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
+ Bitmap aBmp = aBmpEx.GetBitmap();
+ aBmp.Convert( BMP_CONVERSION_8BIT_GREYS );
+
+ mpOStmOldModus = mpOStm->GetNumberFormatInt();
+ mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ mpAcc = aBmp.AcquireReadAccess();
+ if( mpAcc )
+ {
+ if ( ImplWriteHeader() )
+ {
+ ImplWriteBody();
+ }
+ aBmp.ReleaseAccess( mpAcc );
+ }
+ else
+ mbStatus = FALSE;
+
+ mpOStm->SetNumberFormatInt( mpOStmOldModus );
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PGMWriter::ImplWriteHeader()
+{
+ mnWidth = mpAcc->Width();
+ mnHeight = mpAcc->Height();
+ if ( mnWidth && mnHeight )
+ {
+ if ( mnMode == 0 )
+ *mpOStm << "P5\x0a";
+ else
+ *mpOStm << "P2\x0a";
+
+ ImplWriteNumber( mnWidth );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( mnHeight );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( 255 ); // max. gray value
+ *mpOStm << (BYTE)10;
+ }
+ else
+ mbStatus = FALSE;
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void PGMWriter::ImplWriteBody()
+{
+ if ( mnMode == 0 )
+ {
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ for ( ULONG x = 0; x < mnWidth; x++ )
+ {
+ *mpOStm << (BYTE)( mpAcc->GetPixel( y, x ) );
+ }
+ }
+ }
+ else
+ {
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ int nCount = 70;
+ for ( ULONG x = 0; x < mnWidth; x++ )
+ {
+ BYTE nDat, nNumb;
+ if ( nCount < 0 )
+ {
+ nCount = 69;
+ *mpOStm << (BYTE)10;
+ }
+ nDat = (BYTE)mpAcc->GetPixel( y, x );
+ nNumb = nDat / 100;
+ if ( nNumb )
+ {
+ *mpOStm << (BYTE)( nNumb + '0' );
+ nDat -= ( nNumb * 100 );
+ nNumb = nDat / 10;
+ *mpOStm << (BYTE)( nNumb + '0' );
+ nDat -= ( nNumb * 10 );
+ *mpOStm << (BYTE)( nDat + '0' );
+ nCount -= 4;
+ }
+ else
+ {
+ nNumb = nDat / 10;
+ if ( nNumb )
+ {
+ *mpOStm << (BYTE)( nNumb + '0' );
+ nDat -= ( nNumb * 10 );
+ *mpOStm << (BYTE)( nDat + '0' );
+ nCount -= 3;
+ }
+ else
+ {
+ *mpOStm << (BYTE)( nDat + '0' );
+ nCount -= 2;
+ }
+ }
+ *mpOStm << (BYTE)' ';
+ }
+ *mpOStm << (BYTE)10;
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
+
+void PGMWriter::ImplWriteNumber( sal_Int32 nNumber )
+{
+ const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
+
+ for( sal_Int16 n = 0UL, nLen = aNum.Len(); n < nLen; n++ )
+ *mpOStm << aNum.GetChar( n );
+
+}
+
+// ------------------------------------------------------------------------
+
+// ---------------------
+// - exported function -
+// ---------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{
+ PGMWriter aPGMWriter;
+
+ return aPGMWriter.WritePGM( rGraphic, rStream, pFilterConfigItem );
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "epg" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEPGM( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+// ------------------------------------------------------------------------
+#ifndef GCC
+#endif
+
+// ---------------
+// - Win16 trash -
+// ---------------
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+ if ( nHeap )
+ UnlockData( 0 );
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/epgm/epgmstr.src b/filter/source/graphicfilter/epgm/epgmstr.src
new file mode 100644
index 000000000000..8424505dbcd1
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/epgmstr.src
@@ -0,0 +1,35 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "strings.hrc"
+
+// Key fuer den Dialog
+String KEY_FORMAT
+{
+ Text = "FileFormat";
+};
diff --git a/filter/source/graphicfilter/epgm/exports.map b/filter/source/graphicfilter/epgm/exports.map
new file mode 100644
index 000000000000..3967c4684f05
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/exports.map
@@ -0,0 +1,8 @@
+PGMEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/epgm/makefile.mk b/filter/source/graphicfilter/epgm/makefile.mk
new file mode 100644
index 000000000000..70ab5ec93c68
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/makefile.mk
@@ -0,0 +1,76 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=epgm
+TARGET2=epg
+DEPTARGET=vepgm
+
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES= dlgepgm.src \
+ epgmstr.src
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/epgm.obj \
+ $(SLO)$/dlgepgm.obj
+.ENDIF
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET2)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
+SHL1TARGET= epg$(DLLPOSTFIX)
+SHL1IMPLIB= epgm
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/epgm.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/epgm.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/epgm/strings.hrc b/filter/source/graphicfilter/epgm/strings.hrc
new file mode 100644
index 000000000000..122719e87d4b
--- /dev/null
+++ b/filter/source/graphicfilter/epgm/strings.hrc
@@ -0,0 +1,27 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define KEY_FORMAT 256
diff --git a/filter/source/graphicfilter/epict/dlgepct.cxx b/filter/source/graphicfilter/epict/dlgepct.cxx
new file mode 100644
index 000000000000..c274dc873560
--- /dev/null
+++ b/filter/source/graphicfilter/epict/dlgepct.cxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+
+#include <vcl/msgbox.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include <com/sun/star/awt/Size.hpp>
+#include "dlgepct.hxx"
+#include "dlgepct.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEPCT::DlgExportEPCT( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPCT, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ aRbOriginal ( this, ResId( RB_ORIGINAL, *rPara.pResMgr ) ),
+ aRbSize ( this, ResId( RB_SIZE, *rPara.pResMgr ) ),
+ aGrpMode ( this, ResId( GRP_MODE, *rPara.pResMgr ) ),
+ aFtSizeX ( this, ResId( FT_SIZEX, *rPara.pResMgr ) ),
+ aMtfSizeX ( this, ResId( MTF_SIZEX, *rPara.pResMgr ) ),
+ aFtSizeY ( this, ResId( FT_SIZEY, *rPara.pResMgr ) ),
+ aMtfSizeY ( this, ResId( MTF_SIZEY, *rPara.pResMgr ) ),
+ aGrpSize ( this, ResId( GRP_SIZE, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PCT" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEPCT, OK ) );
+ aRbOriginal.SetClickHdl( LINK( this, DlgExportEPCT, ClickRbOriginal ) );
+ aRbSize.SetClickHdl( LINK( this, DlgExportEPCT, ClickRbSize ) );
+
+ // Config-Parameter lesen
+ sal_Int32 nStrMode = pConfigItem->ReadInt32( String( ResId( KEY_MODE, *pMgr ) ), 0 );
+ ::com::sun::star::awt::Size aDefault( 10000, 10000 );
+ ::com::sun::star::awt::Size aSize;
+ aSize = pConfigItem->ReadSize( String( ResId( KEY_SIZE, *pMgr ) ), aDefault );
+
+ aMtfSizeX.SetDefaultUnit( FUNIT_MM );
+ aMtfSizeY.SetDefaultUnit( FUNIT_MM );
+ aMtfSizeX.SetValue( aSize.Width );
+ aMtfSizeY.SetValue( aSize.Height );
+
+ switch ( rPara.eFieldUnit )
+ {
+ case FUNIT_NONE :
+ case FUNIT_KM :
+ case FUNIT_PERCENT :
+ case FUNIT_CUSTOM :
+ case FUNIT_MILE :
+ case FUNIT_FOOT :
+ case FUNIT_M :
+ break; // -Wall not handled.
+ case FUNIT_MM :
+ case FUNIT_CM :
+ case FUNIT_TWIP :
+ case FUNIT_POINT :
+ case FUNIT_PICA :
+ case FUNIT_INCH :
+ case FUNIT_100TH_MM :
+ {
+ aMtfSizeX.SetUnit( rPara.eFieldUnit );
+ aMtfSizeY.SetUnit( rPara.eFieldUnit );
+ }
+ break;
+ }
+ if ( nStrMode == 1 )
+ {
+ aRbSize.Check( TRUE );
+ ClickRbSize( NULL );
+ }
+ else
+ {
+ aRbOriginal.Check( TRUE );
+ ClickRbOriginal( NULL );
+ }
+}
+
+DlgExportEPCT::~DlgExportEPCT()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\**************************************** ********************************/
+
+IMPL_LINK( DlgExportEPCT, OK, void *, EMPTYARG )
+{
+ // Config-Parameter schreiben
+ ::com::sun::star::awt::Size aSize(
+ (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeX.GetValue(), 2, aMtfSizeX.GetUnit(), MAP_100TH_MM ),
+ (sal_Int32)MetricField::ConvertDoubleValue( aMtfSizeY.GetValue(), 2, aMtfSizeY.GetUnit(), MAP_100TH_MM ) );
+
+ sal_Int32 nStrMode = 0;
+ if ( aRbSize.IsChecked() )
+ nStrMode++;
+
+ pConfigItem->WriteInt32( String( ResId( KEY_MODE, *pMgr ) ), nStrMode );
+ pConfigItem->WriteSize( String( ResId( KEY_SIZE, *pMgr ) ), aSize );
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
+
+/*************************************************************************
+|*
+|* Enabled/Disabled Controls
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEPCT, ClickRbOriginal, void*, EMPTYARG )
+{
+ aGrpSize.Disable();
+ aFtSizeX.Disable();
+ aMtfSizeX.Disable();
+ aFtSizeY.Disable();
+ aMtfSizeY.Disable();
+
+ return 0;
+}
+
+
+/*************************************************************************
+|*
+|* Enabled/Disabled Controls
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEPCT, ClickRbSize, void*, EMPTYARG )
+{
+ aGrpSize.Enable();
+ aFtSizeX.Enable();
+ aMtfSizeX.Enable();
+ aFtSizeY.Enable();
+ aMtfSizeY.Enable();
+
+ return 0;
+}
+
+
+
diff --git a/filter/source/graphicfilter/epict/dlgepct.hrc b/filter/source/graphicfilter/epict/dlgepct.hrc
new file mode 100644
index 000000000000..0f92aa9bda3c
--- /dev/null
+++ b/filter/source/graphicfilter/epict/dlgepct.hrc
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include <filter.hrc>
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define CBX_SIZE 2
+#define MTF_SIZEX 1
+#define MTF_SIZEY 2
+#define FT_SIZEX 1
+#define FT_SIZEY 2
+#define GRP_SIZE 1
+#define GRP_MODE 2
+#define RB_ORIGINAL 1
+#define RB_SIZE 2
+
diff --git a/filter/source/graphicfilter/epict/dlgepct.hxx b/filter/source/graphicfilter/epict/dlgepct.hxx
new file mode 100644
index 000000000000..e879822ab1f5
--- /dev/null
+++ b/filter/source/graphicfilter/epict/dlgepct.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * 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 _DLGEPCT_HXX_
+#define _DLGEPCT_HXX_
+
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#include <svtools/fltcall.hxx>
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen bei Vektorformaten
+|*
+\************************************************************************/
+
+class FilterConfigItem;
+class ResMgr;
+
+class DlgExportEPCT : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ RadioButton aRbOriginal;
+ RadioButton aRbSize;
+ FixedLine aGrpMode;
+
+ FixedText aFtSizeX;
+ MetricField aMtfSizeX;
+ FixedText aFtSizeY;
+ MetricField aMtfSizeY;
+ FixedLine aGrpSize;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void* p );
+ DECL_LINK( ClickRbOriginal,void* p );
+ DECL_LINK( ClickRbSize,void* p );
+
+public:
+ DlgExportEPCT( FltCallDialogParameter& rPara );
+ ~DlgExportEPCT();
+};
+
+#endif // _DLGEPCT_HXX_
+
diff --git a/filter/source/graphicfilter/epict/dlgepct.src b/filter/source/graphicfilter/epict/dlgepct.src
new file mode 100644
index 000000000000..d503c53cf89c
--- /dev/null
+++ b/filter/source/graphicfilter/epict/dlgepct.src
@@ -0,0 +1,163 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgepct.hrc"
+
+ModalDialog DLG_EXPORT_EPCT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 178 , 89 ) ;
+ Text [ en-US ] = "PICT Options" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ MetricField MTF_SIZEX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 55 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 100 ;
+ Maximum = 99999 ;
+ StrictFormat = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_MM ;
+ First = 100 ;
+ Last = 99999 ;
+ SpinSize = 100 ;
+ };
+ MetricField MTF_SIZEY
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 71 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 100 ;
+ Maximum = 99999 ;
+ StrictFormat = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_MM ;
+ First = 100 ;
+ Last = 99999 ;
+ SpinSize = 100 ;
+ };
+ FixedLine GRP_SIZE
+ {
+ Pos = MAP_APPFONT ( 6 , 44 ) ;
+ Size = MAP_APPFONT ( 110 , 8 ) ;
+ Text [ en-US ] = "Size" ;
+ };
+ FixedText FT_SIZEX
+ {
+ Pos = MAP_APPFONT ( 12 , 57 ) ;
+ Size = MAP_APPFONT ( 45 , 8 ) ;
+ Text [ en-US ] = "Width" ;
+ };
+ FixedText FT_SIZEY
+ {
+ Pos = MAP_APPFONT ( 12 , 73 ) ;
+ Size = MAP_APPFONT ( 45 , 8 ) ;
+ Text [ en-US ] = "Height" ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 122 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 122 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 122 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton RB_ORIGINAL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 98 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Original" ;
+ };
+ RadioButton RB_SIZE
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 98 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Size" ;
+ };
+ FixedLine GRP_MODE
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 110 , 8 ) ;
+ Text [ en-US ] = "Mode" ;
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/epict/epict.cxx b/filter/source/graphicfilter/epict/epict.cxx
new file mode 100644
index 000000000000..7e81077e3810
--- /dev/null
+++ b/filter/source/graphicfilter/epict/epict.cxx
@@ -0,0 +1,2387 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/metaact.hxx>
+#include <svtools/filter.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+
+#include <math.h>
+#include <vcl/bmpacc.hxx>
+#include <vcl/metaact.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/hatch.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/font.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/gdimtf.hxx>
+
+#include <tools/bigint.hxx>
+#include "strings.hrc"
+#include "dlgepct.hrc"
+#include "dlgepct.hxx"
+
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+//============================== PictWriter ===================================
+
+struct PictWriterAttrStackMember {
+ struct PictWriterAttrStackMember * pSucc;
+ Color aLineColor;
+ Color aFillColor;
+ RasterOp eRasterOp;
+ Font aFont;
+ MapMode aMapMode;
+ Rectangle aClipRect;
+};
+
+
+enum PictDrawingMethod {
+ PDM_FRAME, PDM_PAINT, PDM_ERASE, PDM_INVERT, PDM_FILL
+};
+
+
+struct PictPattern {
+ sal_uInt32 nLo, nHi;
+};
+
+class PictWriter {
+
+private:
+
+ BOOL bStatus;
+ ULONG nLastPercent; // Mit welcher Zahl pCallback zuletzt aufgerufen wurde.
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+ SvStream * pPict;
+
+ // Aktuelle Attribute im Quell-Metafile:
+ Color aLineColor;
+ Color aFillColor;
+ RasterOp eSrcRasterOp;
+ Font aSrcFont;
+ MapMode aSrcMapMode;
+ MapMode aTargetMapMode;
+ Rectangle aClipRect;
+ PictWriterAttrStackMember * pAttrStack;
+
+ // Aktuelle Attribute im Ziel-Metafile, und ob sie gueltig sind
+ BOOL bDstBkPatVisible; BOOL bDstBkPatValid;
+ BYTE nDstTxFace; BOOL bDstTxFaceValid;
+ RasterOp eDstTxMode; BOOL bDstTxModeValid;
+ USHORT nDstPnSize; BOOL bDstPnSizeValid;
+ RasterOp eDstPnMode; BOOL bDstPnModeValid;
+ PictPattern aDstPnPat; BOOL bDstPnPatValid;
+ BOOL bDstFillPatVisible; BOOL bDstFillPatValid;
+ USHORT nDstTxSize; BOOL bDstTxSizeValid;
+ Color aDstFgCol; BOOL bDstFgColValid;
+ Color aDstBkCol; BOOL bDstBkColValid;
+ Point aDstPenPosition; BOOL bDstPenPositionValid;
+ Point aDstTextPosition; BOOL bDstTextPositionValid;
+ String aDstFontName; USHORT nDstFontNameId; BOOL bDstFontNameValid;
+
+ ULONG nNumberOfActions; // Anzahl der Actions im GDIMetafile
+ ULONG nNumberOfBitmaps; // Anzahl der Bitmaps
+ ULONG nWrittenActions; // Anzahl der bereits verarbeiteten Actions beim Schreiben der Opcodes
+ ULONG nWrittenBitmaps; // Anzahl der bereits geschriebenen Bitmaps
+ ULONG nActBitmapPercent; // Wieviel Prozent die naechste Bitmap schon geschrieben ist.
+
+ void MayCallback();
+ // Berechnet anhand der obigen 5 Parameter eine Prozentzahl
+ // und macht dann ggf. einen Callback. Setzt bStatus auf FALSE wenn User abbrechen
+ // moechte.
+
+ void CountActionsAndBitmaps(const GDIMetaFile & rMTF);
+ // Zaehlt die Bitmaps und Actions (nNumberOfActions und nNumberOfBitmaps muessen
+ // zu Anfang auf 0 gesetzt werden, weil diese Methode rekursiv ist)
+
+ Polygon PolyPolygonToPolygon(const PolyPolygon & rPoly);
+ // Macht aus einem PolyPolygon ein halbwegs vernuenftiges Polygon
+
+ Rectangle MapRectangle( const Rectangle& rRect );
+ void WritePoint(const Point & rPoint);
+ void WriteSize(const Size & rSize);
+ void WriteRGBColor(const Color & rColor);
+ void WriteString( const String & rString );
+ void WriteRectangle(const Rectangle & rRect);
+ void WritePolygon(const Polygon & rPoly);
+ void WriteArcAngles(const Rectangle & rRect, const Point & rStartPt, const Point & rEndPt);
+
+ void ConvertLinePattern(PictPattern & rPat, BOOL bVisible);
+ void ConvertFillPattern(PictPattern & rPat, BOOL bVisible);
+
+ void WriteOpcode_TxFace(const Font & rFont);
+ void WriteOpcode_TxMode(RasterOp eMode);
+ void WriteOpcode_PnSize(USHORT nSize);
+ void WriteOpcode_PnMode(RasterOp eMode);
+ void WriteOpcode_PnLinePat(BOOL bVisible);
+ void WriteOpcode_PnFillPat(BOOL bVisible);
+ void WriteOpcode_OvSize(const Size & rSize);
+ void WriteOpcode_TxSize(USHORT nSize);
+ void WriteOpcode_RGBFgCol(const Color & rColor);
+ void WriteOpcode_RGBBkCol(const Color & rColor);
+ void WriteOpcode_Line(const Point & rLocPt, const Point & rNewPt);
+ void WriteOpcode_LineFrom(const Point & rNewPt);
+ void WriteOpcode_Text(const Point & rPoint, const String& rString, BOOL bDelta);
+ void WriteOpcode_FontName(const Font & rFont);
+ void WriteOpcode_ClipRect( const Rectangle& rRect );
+ void WriteOpcode_Rect(PictDrawingMethod eMethod, const Rectangle & rRect);
+ void WriteOpcode_SameRect(PictDrawingMethod eMethod);
+ void WriteOpcode_RRect(PictDrawingMethod eMethod, const Rectangle & rRect);
+ void WriteOpcode_SameRRect(PictDrawingMethod eMethod);
+ void WriteOpcode_Oval(PictDrawingMethod eMethod, const Rectangle & rRect);
+ void WriteOpcode_SameOval(PictDrawingMethod eMethod);
+ void WriteOpcode_Arc(PictDrawingMethod eMethod, const Rectangle & rRect,
+ const Point & rStartPt, const Point & rEndPt);
+ void WriteOpcode_SameArc(PictDrawingMethod eMethod, const Rectangle & rRect,
+ const Point & rStartPt, const Point & rEndPt);
+ void WriteOpcode_Poly(PictDrawingMethod eMethod, const Polygon & rPoly);
+ void WriteOpcode_BitsRect(const Point & rPoint, const Size & rSize, const Bitmap & rBitmap);
+ void WriteOpcode_EndOfFile();
+
+ void SetAttrForPaint();
+ void SetAttrForFrame();
+ void SetAttrForText();
+
+ void WriteTextArray(Point & rPoint, const String& rString, const sal_Int32 * pDXAry);
+
+ void HandleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon);
+ void WriteOpcodes(const GDIMetaFile & rMTF);
+
+ void WriteHeader(const GDIMetaFile & rMTF);
+ void UpdateHeader();
+
+public:
+
+ BOOL WritePict( const GDIMetaFile & rMTF, SvStream & rTargetStream, FilterConfigItem* pFilterConfigItem );
+};
+
+
+//========================== Methoden von PictWriter ==========================
+
+
+void PictWriter::MayCallback()
+{
+ if ( xStatusIndicator.is() )
+ {
+ ULONG nPercent;
+ nPercent=((nWrittenBitmaps<<14)+(nActBitmapPercent<<14)/100+nWrittenActions)
+ *100
+ /((nNumberOfBitmaps<<14)+nNumberOfActions);
+
+ if (nPercent>=nLastPercent+3)
+ {
+ nLastPercent=nPercent;
+ if( nPercent<=100 )
+ xStatusIndicator->setValue( nPercent );
+ }
+ }
+}
+
+void PictWriter::CountActionsAndBitmaps(const GDIMetaFile & rMTF)
+{
+ ULONG nAction, nActionCount;
+ const MetaAction* pMA;
+
+ nActionCount = rMTF.GetActionCount();
+
+ for (nAction=0; nAction<nActionCount; nAction++)
+ {
+ pMA = rMTF.GetAction( nAction );
+
+ switch( pMA->GetType() )
+ {
+ case META_BMP_ACTION:
+ case META_BMPSCALE_ACTION:
+ case META_BMPSCALEPART_ACTION:
+ case META_BMPEX_ACTION:
+ case META_BMPEXSCALE_ACTION:
+ case META_BMPEXSCALEPART_ACTION:
+ nNumberOfBitmaps++;
+ break;
+ }
+
+ nNumberOfActions++;
+ }
+}
+
+
+Polygon PictWriter::PolyPolygonToPolygon(const PolyPolygon & rPolyPoly)
+{
+ USHORT nCount,nSize1,nSize2,np,i1,i2,i3,nBestIdx1,nBestIdx2;
+ long nDistSqr,nBestDistSqr, nCountdownTests;
+ Point aP1,aPRel;
+ Polygon aPoly1, aPoly2, aPoly3;
+
+ nCount=rPolyPoly.Count();
+ if (nCount==0) return Polygon(0);
+
+ aPoly1=rPolyPoly.GetObject(0);
+ for (np=1; np<nCount; np++) {
+ aPoly2=rPolyPoly.GetObject(np);
+
+ //-----------------Folgendes verschmilzt aPoly1 und aPoly2 zu aPoly1-----------------
+
+ nSize1=aPoly1.GetSize();
+ nSize2=aPoly2.GetSize();
+
+ // Zunaechst werden ein Punkt in aPoly1 (referenziert durch nBestIdx1) und ein
+ // Punkt in aPoly2 (referenziert durch nBestIdx2) gesucht, die moeglichst dicht
+ // beieinander liegen. Da dies mit quadratischem Aufwand einher geht, und somit
+ // manche Bilder Ewigkeiten benoetigen, um exportiert zu werden, begrenzen wir
+ // die Anzahl der Tests auf 1000, und brechen die Suche ggf. schon vorher ab.
+ // Dadruch wird das Ergebnis nicht falsch, sondern eventuell nicht so schoen.
+ nCountdownTests=1000;
+ nBestDistSqr=0x7fffffff;
+ nBestIdx1=0;
+ nBestIdx2=0;
+ for (i1=0; i1<nSize1; i1++) {
+ aP1=aPoly1.GetPoint(i1);
+ for (i2=0; i2<nSize2; i2++) {
+ aPRel=aPoly2.GetPoint(i2); aPRel-=aP1;
+ nDistSqr=aPRel.X()*aPRel.X()+aPRel.Y()*aPRel.Y();
+ if (nDistSqr<nBestDistSqr) {
+ nBestIdx1=i1;
+ nBestIdx2=i2;
+ nBestDistSqr=nDistSqr;
+ }
+ if (nCountdownTests<=0) break;
+ nCountdownTests--;
+ }
+ if (nCountdownTests<=0) break;
+ }
+
+ // Nun werden aPoly1 und aPoly2 zu einem Polygon aPoly3 (spaeter aPoly1) zusammengefuegt.
+ // Die beiden Polygone werden verbunden durch zwei zusaetzliche Kanten zwischen den oben
+ // gefundenen Punkten.
+ aPoly3.Clear();
+ aPoly3.SetSize(nSize1+nSize2+2);
+ i3=0;
+ for (i1=nBestIdx1; i1<nSize1; i1++) aPoly3.SetPoint(aPoly1.GetPoint(i1),i3++);
+ for (i1=0; i1<=nBestIdx1; i1++) aPoly3.SetPoint(aPoly1.GetPoint(i1),i3++);
+ for (i2=nBestIdx2; i2<nSize2; i2++) aPoly3.SetPoint(aPoly2.GetPoint(i2),i3++);
+ for (i2=0; i2<=nBestIdx2; i2++) aPoly3.SetPoint(aPoly2.GetPoint(i2),i3++);
+
+ aPoly1=aPoly3;
+
+ //-----------------------------------------------------------------------------------
+
+ }
+ return aPoly1;
+}
+
+
+void PictWriter::WritePoint(const Point & rPoint)
+{
+ Point aPoint = OutputDevice::LogicToLogic( rPoint, aSrcMapMode, aTargetMapMode );
+ *pPict << ((short)aPoint.Y()) << ((short)aPoint.X());
+}
+
+
+void PictWriter::WriteSize(const Size & rSize)
+{
+ OutputDevice::LogicToLogic( rSize, aSrcMapMode, aTargetMapMode ); // -Wall is this needed.
+ *pPict << ((short)rSize.Height()) << ((short)rSize.Width());
+}
+
+
+void PictWriter::WriteRGBColor(const Color & rColor)
+{
+ const UINT16 nR = ( (UINT16) rColor.GetRed() << 8 ) | (UINT16) rColor.GetRed();
+ const UINT16 nG = ( (UINT16) rColor.GetGreen() << 8 ) | (UINT16) rColor.GetGreen();
+ const UINT16 nB = ( (UINT16) rColor.GetBlue() << 8 ) | (UINT16) rColor.GetBlue();
+
+ *pPict << nR << nG << nB;
+}
+
+
+void PictWriter::WriteString( const String & rString )
+{
+ USHORT i,nLen;
+
+ ByteString aByteString( rString, gsl_getSystemTextEncoding() );
+ nLen = aByteString.Len();
+ if ( nLen > 255 )
+ nLen = 255;
+ *pPict << ( (BYTE)nLen );
+ for ( i = 0; i < nLen; i++ )
+ *pPict << aByteString.GetChar( i );
+}
+
+Rectangle PictWriter::MapRectangle( const Rectangle& rRect )
+{
+ Point aPoint = OutputDevice::LogicToLogic( rRect.TopLeft(), aSrcMapMode, aTargetMapMode );
+ Size aSize = OutputDevice::LogicToLogic( rRect.GetSize(), aSrcMapMode, aTargetMapMode );
+ Rectangle aRect( aPoint, aSize );
+ aRect.Justify();
+ aRect.nBottom++;
+ aRect.nRight++;
+ return aRect;
+}
+
+void PictWriter::WriteRectangle(const Rectangle & rRect)
+{
+ Rectangle aRect( MapRectangle( rRect ) );
+ *pPict << (sal_Int16)aRect.Top() << (sal_Int16)aRect.Left()
+ << (sal_Int16)aRect.Bottom() << (sal_Int16)aRect.Right();
+}
+
+void PictWriter::WritePolygon(const Polygon & rPoly)
+{
+ USHORT nDataSize,i,nSize;
+ short nMinX = 0, nMinY = 0, nMaxX = 0, nMaxY = 0;
+ short nx,ny;
+ Polygon aPoly(rPoly);
+
+ nSize=aPoly.GetSize();
+
+ if (aPoly.GetPoint(0) != aPoly.GetPoint(nSize-1))
+ {
+ nSize++;
+ aPoly.SetSize(nSize);
+ aPoly.SetPoint(aPoly.GetPoint(0),nSize-1);
+ }
+
+ nDataSize=nSize*4+10;
+ for (i=0; i<nSize; i++)
+ {
+ Point aPoint = OutputDevice::LogicToLogic( aPoly.GetPoint( i ),
+ aSrcMapMode,
+ aTargetMapMode );
+
+ nx = (short) aPoint.X();
+ ny = (short) aPoint.Y();
+
+ if ( i==0 || nMinX>nx )
+ nMinX=nx;
+ if ( i==0 || nMinY>ny )
+ nMinY=ny;
+ if ( i==0 || nMaxX<nx )
+ nMaxX=nx;
+ if ( i==0 || nMaxY<ny )
+ nMaxY=ny;
+ }
+
+ *pPict << nDataSize << nMinY << nMinX << nMaxY << nMaxX;
+
+ for (i=0; i<nSize; i++)
+ WritePoint( aPoly.GetPoint(i) );
+}
+
+
+void PictWriter::WriteArcAngles(const Rectangle & rRect, const Point & rStartPt, const Point & rEndPt)
+{
+ Point aStartPt = OutputDevice::LogicToLogic( rStartPt,
+ aSrcMapMode,
+ aTargetMapMode );
+ Point aEndPt = OutputDevice::LogicToLogic( rEndPt,
+ aSrcMapMode,
+ aTargetMapMode );
+ Rectangle aRect( OutputDevice::LogicToLogic( rRect.TopLeft(),
+ aSrcMapMode,
+ aTargetMapMode ),
+ OutputDevice::LogicToLogic( rRect.GetSize(),
+ aSrcMapMode,
+ aTargetMapMode ) );
+ Point aCenter;
+ double fAngS, fAngE, fdx, fdy;
+ short nStartAngle, nArcAngle;
+
+
+ aCenter=Point( ( aRect.Left() + aRect.Right() ) >> 1,
+ ( aRect.Top() + aRect.Bottom() ) >> 1 );
+
+ fdx=(double)(aStartPt.X()-aCenter.X());
+ fdy=(double)(aStartPt.Y()-aCenter.Y());
+ if ( fdx==0.0 && fdy==0.0 )
+ fdx=1.0;
+ fAngE=atan2(fdx,-fdy);
+
+ fdx=(double)(aEndPt.X()-aCenter.X());
+ fdy=(double)(aEndPt.Y()-aCenter.Y());
+ if ( fdx==0.0 && fdy==0.0 )
+ fdx=1.0;
+ fAngS=atan2(fdx,-fdy);
+
+ nStartAngle=(short)(fAngS*180.0/3.14159265359);
+ nArcAngle=((short)(fAngE*180.0/3.14159265359))-nStartAngle;
+ if (nArcAngle<0)
+ nArcAngle += 360;
+ *pPict << nStartAngle << nArcAngle;
+}
+
+
+void PictWriter::ConvertLinePattern(PictPattern & rPat, BOOL bVisible)
+{
+ if( bVisible )
+ {
+ rPat.nHi=0xffffffff;
+ rPat.nLo=0xffffffff;
+ }
+ else
+ {
+ rPat.nHi=0x00000000;
+ rPat.nLo=0x00000000;
+ }
+}
+
+void PictWriter::ConvertFillPattern(PictPattern & rPat, BOOL bVisible)
+{
+ if( bVisible )
+ {
+ rPat.nHi=0xffffffff;
+ rPat.nLo=0xffffffff;
+ }
+ else
+ {
+ rPat.nHi=0x00000000;
+ rPat.nLo=0x00000000;
+ }
+}
+
+
+void PictWriter::WriteOpcode_TxFace(const Font & rFont)
+{
+ BYTE nFace;
+ FontWeight eWeight;
+
+ nFace=0;
+ eWeight=rFont.GetWeight();
+ if (eWeight==WEIGHT_BOLD ||
+ eWeight==WEIGHT_SEMIBOLD ||
+ eWeight==WEIGHT_ULTRABOLD ||
+ eWeight==WEIGHT_BLACK) nFace|=0x01;
+ if (rFont.GetItalic()!=ITALIC_NONE) nFace|=0x02;
+ if (rFont.GetUnderline()!=UNDERLINE_NONE) nFace|=0x04;
+ if (rFont.IsOutline()==TRUE) nFace|=0x08;
+ if (rFont.IsShadow()==TRUE) nFace|=0x10;
+
+ if (bDstTxFaceValid==FALSE || nDstTxFace!=nFace) {
+ *pPict << (USHORT)0x0004 << nFace << (BYTE)0;
+ nDstTxFace=nFace;
+ bDstTxFaceValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_TxMode(RasterOp eMode)
+{
+ USHORT nVal;
+
+ if (bDstTxModeValid==FALSE || eDstTxMode!=eMode) {
+ switch (eMode) {
+ case ROP_INVERT: nVal=0x000c; break;
+ case ROP_XOR: nVal=0x000a; break;
+ default: nVal=0x0008;
+ }
+ *pPict << (USHORT)0x0005 << nVal;
+ eDstTxMode=eMode;
+ bDstTxModeValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_PnSize(USHORT nSize)
+{
+ if (nSize==0) nSize=1;
+ if (bDstPnSizeValid==FALSE || nDstPnSize!=nSize) {
+ *pPict << (USHORT)0x0007 << nSize << nSize;
+ nDstPnSize=nSize;
+ bDstPnSizeValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_PnMode(RasterOp eMode)
+{
+ USHORT nVal;
+
+ if (bDstPnModeValid==FALSE || eDstPnMode!=eMode) {
+ switch (eMode)
+ {
+ case ROP_INVERT: nVal=0x000c; break;
+ case ROP_XOR: nVal=0x000a; break;
+ default: nVal=0x0008;
+ }
+ *pPict << (USHORT)0x0008 << nVal;
+ eDstPnMode=eMode;
+ bDstPnModeValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_PnLinePat(BOOL bVisible)
+{
+ PictPattern aPat;
+
+ ConvertLinePattern(aPat,bVisible);
+ if (bDstPnPatValid==FALSE || aDstPnPat.nHi!=aPat.nHi || aDstPnPat.nLo!=aPat.nLo) {
+ *pPict << (USHORT)0x0009 << aPat.nHi << aPat.nLo;
+ aDstPnPat=aPat;
+ bDstPnPatValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_PnFillPat(BOOL bVisible)
+{
+ PictPattern aPat;
+
+ ConvertFillPattern(aPat,bVisible);
+ if (bDstPnPatValid==FALSE || aDstPnPat.nHi!=aPat.nHi || aDstPnPat.nLo!=aPat.nLo) {
+ *pPict << (USHORT)0x0009 << aPat.nHi << aPat.nLo;
+ aDstPnPat=aPat;
+ bDstPnPatValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_OvSize(const Size & rSize)
+{
+ *pPict << (USHORT)0x000b;
+ WriteSize(rSize);
+}
+
+
+void PictWriter::WriteOpcode_TxSize(USHORT nSize)
+{
+ if (bDstTxSizeValid==FALSE || nDstTxSize!=nSize) {
+
+ nDstTxSize = (USHORT) OutputDevice::LogicToLogic( Size( 0, nSize ),
+ aSrcMapMode, aTargetMapMode ).Height();
+
+ *pPict << (USHORT)0x000d << nDstTxSize;
+ bDstTxSizeValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_RGBFgCol(const Color & rColor)
+{
+ if (bDstFgColValid==FALSE || aDstFgCol!=rColor) {
+ *pPict << (USHORT)0x001a;
+ WriteRGBColor(rColor);
+ aDstFgCol=rColor;
+ bDstFgColValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_RGBBkCol(const Color & rColor)
+{
+ if (bDstBkColValid==FALSE || aDstBkCol!=rColor) {
+ *pPict << (USHORT)0x001b;
+ WriteRGBColor(rColor);
+ aDstBkCol=rColor;
+ bDstBkColValid=TRUE;
+ }
+}
+
+
+void PictWriter::WriteOpcode_Line(const Point & rLocPt, const Point & rNewPt)
+{
+ Point aLocPt = OutputDevice::LogicToLogic( rLocPt,
+ aSrcMapMode,
+ aTargetMapMode );
+ Point aNewPt = OutputDevice::LogicToLogic( rNewPt,
+ aSrcMapMode,
+ aTargetMapMode );
+ long dh,dv;
+
+ dh=aNewPt.X()-aLocPt.X();
+ dv=aNewPt.Y()-aLocPt.Y();
+ if (dh<=127 && dh>=-128 && dv<=127 && dv>=-128)
+ { // ShortLine
+ *pPict << (USHORT)0x0022;
+ WritePoint(rLocPt);
+ *pPict << (char)dh << (char)dv;
+ }
+ else
+ {
+ *pPict << (USHORT)0x0020;
+ WritePoint(rLocPt);
+ WritePoint(rNewPt);
+ }
+ aDstPenPosition=rNewPt;
+ bDstPenPositionValid=TRUE;
+}
+
+
+void PictWriter::WriteOpcode_LineFrom(const Point & rNewPt)
+{
+ Point aNewPt = OutputDevice::LogicToLogic( rNewPt,
+ aSrcMapMode,
+ aTargetMapMode );
+ long dh,dv;
+
+ dh = aNewPt.X()-aDstPenPosition.X();
+ dv = aNewPt.Y()-aDstPenPosition.Y();
+
+ if (dh<=127 && dh>=-128 && dv<=127 && dv>=-128)
+ { // ShortLine
+ *pPict << (USHORT)0x0023;
+ *pPict << (char)dh << (char)dv;
+ }
+ else
+ {
+ *pPict << (USHORT)0x0021;
+ WritePoint(rNewPt);
+ }
+ aDstPenPosition=rNewPt;
+ bDstPenPositionValid=TRUE;
+}
+
+
+void PictWriter::WriteOpcode_Text(const Point & rPoint, const String& rString, BOOL bDelta)
+{
+ Point aPoint = OutputDevice::LogicToLogic( rPoint,
+ aSrcMapMode,
+ aTargetMapMode );
+ long dh,dv;
+ ULONG nPos;
+
+ nPos = pPict->Tell();
+ dh = aPoint.X()-aDstTextPosition.X();
+ dv = aPoint.Y()-aDstTextPosition.Y();
+
+ if (bDstTextPositionValid==FALSE || dh<0 || dh>255 || dv<0 || dv>0 || bDelta==FALSE)
+ {
+ *pPict << (USHORT)0x0028;
+ WritePoint(rPoint);
+ }
+ else if (dv==0)
+ {
+ *pPict << (USHORT)0x0029 << (BYTE)dh;
+ }
+ else if (dh==0)
+ {
+ *pPict << (USHORT)0x002a << (BYTE)dv;
+ }
+ else
+ {
+ *pPict << (USHORT)0x002b << (BYTE)dh << (BYTE)dv;
+ }
+
+ WriteString( rString );
+ if (((pPict->Tell()-nPos)&1)!=0)
+ *pPict << (BYTE)0;
+
+ aDstTextPosition = aPoint;
+ bDstTextPositionValid=TRUE;
+}
+
+
+void PictWriter::WriteOpcode_FontName(const Font & rFont)
+{
+ USHORT nDataLen,nFontId;
+
+ switch (rFont.GetFamily()) {
+ case FAMILY_MODERN: nFontId=22; break;
+ case FAMILY_ROMAN: nFontId=20; break;
+ case FAMILY_SWISS: nFontId=21; break;
+ default: nFontId=1;
+ }
+
+ if (bDstFontNameValid==FALSE || nDstFontNameId!=nFontId || aDstFontName!=rFont.GetName())
+ {
+ ByteString aByteString( rFont.GetName(), gsl_getSystemTextEncoding() );
+ sal_uInt16 nFontNameLen = aByteString.Len();
+ if ( nFontNameLen )
+ {
+ nDataLen = 3 + nFontNameLen;
+ *pPict << (USHORT)0x002c << nDataLen << nFontId;
+ WriteString( rFont.GetName() );
+ if ( ( nFontNameLen & 1 ) == 0 )
+ *pPict << (BYTE)0;
+ }
+ *pPict << (USHORT)0x0003 << nFontId;
+ aDstFontName=rFont.GetName();
+ nDstFontNameId=nFontId;
+ bDstFontNameValid=TRUE;
+ }
+}
+
+void PictWriter::WriteOpcode_ClipRect( const Rectangle& rRect )
+{
+ Rectangle aRect( MapRectangle( rRect ) );
+ aRect.nBottom++;
+ aRect.nRight++;
+ *pPict << (sal_uInt16)1 // opcode 1
+ << (sal_uInt16)10 // data size
+ << (sal_Int16)aRect.Top() << (sal_Int16)aRect.Left()
+ << (sal_Int16)aRect.Bottom() << (sal_Int16)aRect.Right();
+ aClipRect = aRect;
+}
+
+void PictWriter::WriteOpcode_Rect(PictDrawingMethod eMethod, const Rectangle & rRect)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0030; break;
+ case PDM_PAINT: oc=0x0031; break;
+ case PDM_ERASE: oc=0x0032; break;
+ case PDM_INVERT: oc=0x0033; break;
+ case PDM_FILL: oc=0x0034; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+ WriteRectangle(rRect);
+}
+
+
+void PictWriter::WriteOpcode_SameRect(PictDrawingMethod eMethod)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0038; break;
+ case PDM_PAINT: oc=0x0039; break;
+ case PDM_ERASE: oc=0x003a; break;
+ case PDM_INVERT: oc=0x003b; break;
+ case PDM_FILL: oc=0x003c; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+}
+
+
+void PictWriter::WriteOpcode_RRect(PictDrawingMethod eMethod, const Rectangle & rRect)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0040; break;
+ case PDM_PAINT: oc=0x0041; break;
+ case PDM_ERASE: oc=0x0042; break;
+ case PDM_INVERT: oc=0x0043; break;
+ case PDM_FILL: oc=0x0044; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+ WriteRectangle(rRect);
+}
+
+
+void PictWriter::WriteOpcode_SameRRect(PictDrawingMethod eMethod)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0048; break;
+ case PDM_PAINT: oc=0x0049; break;
+ case PDM_ERASE: oc=0x004a; break;
+ case PDM_INVERT: oc=0x004b; break;
+ case PDM_FILL: oc=0x004c; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+}
+
+
+void PictWriter::WriteOpcode_Oval(PictDrawingMethod eMethod, const Rectangle & rRect)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0050; break;
+ case PDM_PAINT: oc=0x0051; break;
+ case PDM_ERASE: oc=0x0052; break;
+ case PDM_INVERT: oc=0x0053; break;
+ case PDM_FILL: oc=0x0054; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+ WriteRectangle(rRect);
+}
+
+
+void PictWriter::WriteOpcode_SameOval(PictDrawingMethod eMethod)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0058; break;
+ case PDM_PAINT: oc=0x0059; break;
+ case PDM_ERASE: oc=0x005a; break;
+ case PDM_INVERT: oc=0x005b; break;
+ case PDM_FILL: oc=0x005c; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+}
+
+
+void PictWriter::WriteOpcode_Arc(PictDrawingMethod eMethod, const Rectangle & rRect,
+ const Point & rStartPt, const Point & rEndPt)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0060; break;
+ case PDM_PAINT: oc=0x0061; break;
+ case PDM_ERASE: oc=0x0062; break;
+ case PDM_INVERT: oc=0x0063; break;
+ case PDM_FILL: oc=0x0064; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+ WriteRectangle(rRect);
+ WriteArcAngles(rRect,rStartPt,rEndPt);
+}
+
+
+void PictWriter::WriteOpcode_SameArc(PictDrawingMethod eMethod, const Rectangle & rRect,
+ const Point & rStartPt, const Point & rEndPt)
+{
+ USHORT oc;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0068; break;
+ case PDM_PAINT: oc=0x0069; break;
+ case PDM_ERASE: oc=0x006a; break;
+ case PDM_INVERT: oc=0x006b; break;
+ case PDM_FILL: oc=0x006c; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+ WriteArcAngles(rRect,rStartPt,rEndPt);
+}
+
+
+void PictWriter::WriteOpcode_Poly(PictDrawingMethod eMethod, const Polygon & rPoly)
+{
+ USHORT oc;
+
+ if (rPoly.GetSize()<3) return;
+ switch (eMethod) {
+ case PDM_FRAME: oc=0x0070; break;
+ case PDM_PAINT: oc=0x0071; break;
+ case PDM_ERASE: oc=0x0072; break;
+ case PDM_INVERT: oc=0x0073; break;
+ case PDM_FILL: oc=0x0074; break;
+ default: oc=0; break; // -Wall a default for oc...
+ }
+ *pPict << oc;
+ WritePolygon(rPoly);
+}
+
+
+void PictWriter::WriteOpcode_BitsRect(const Point & rPoint, const Size & rSize, const Bitmap & rBitmap)
+{
+ BitmapReadAccess* pAcc = NULL;
+ Bitmap aBitmap( rBitmap );
+
+ ULONG nWidth, nHeight, nDstRowBytes, nx, nc, ny, nCount, nColTabSize, i;
+ ULONG nDstRowPos, nSrcRowBytes, nEqu3, nPos, nDstMapPos;
+ USHORT nBitsPerPixel, nPackType;
+ BYTE *pComp[4], *pPix, *pTemp;
+ BYTE nEquData = 0;
+ BYTE nFlagCounterByte, nRed, nGreen, nBlue;
+
+ SetAttrForPaint();
+
+ // temopraere Windows-BMP-Datei erzeugen:
+ nActBitmapPercent=30;
+ MayCallback();
+
+ if ( bStatus == FALSE )
+ return;
+ if ( ( pAcc = aBitmap.AcquireReadAccess() ) == NULL )
+ return;
+
+ nBitsPerPixel = aBitmap.GetBitCount();
+
+ // export code below only handles four discrete cases
+ nBitsPerPixel =
+ nBitsPerPixel <= 1 ? 1 : nBitsPerPixel <= 4 ? 4 : nBitsPerPixel <= 8 ? 8 : 24;
+
+ nWidth = pAcc->Width();
+ nHeight = pAcc->Height();
+
+ // Wenn 24-Bit, dann den Opcode 'DirectBitsRect' erzeugen:
+ if ( nBitsPerPixel == 24 )
+ {
+
+ // Anzahl Bytes einer (ungepackten) Zeile in Quelle und Ziel berechnen:
+ nSrcRowBytes =( ( 3 * nWidth ) + 0x0003 ) & 0xfffc;
+ nDstRowBytes = nWidth * 4;
+
+ // Opcode und BaseAddr (?) schreiben:
+ *pPict << (USHORT)0x009a << (sal_uInt32)0x000000ff;
+
+ // Normalerweise wollen wir den Packing-Type 4 (Run length encoding
+ // for 32-Bit Pixels) erzeugen. Wenn aber RowBytes<8 gilt, sind die Daten
+ // grundsaetzlich ungepackt, auch wenn der Packing-Type 4 angegeben ist,
+ // was etwas komisch erscheint. Daher wollen wir in so einem Fall lieber
+ // gleich den Packing-Type 1 (ungepackt) angeben:
+
+ if ( nDstRowBytes < 8 )
+ nPackType = 1;
+ else
+ nPackType = 4;
+
+ // PixMap-Struktur schreiben:
+ *pPict << (USHORT)(nDstRowBytes|0x8000) // Bytes pro Zeile und dass es eine 'PixMap' ist
+ << (USHORT)0x0000 // Y1-Position der Bitmap in der Quelle
+ << (USHORT)0x0000 // X1-Position der Bitmap in der Quelle
+ << (USHORT)nHeight // Y2-Position der Bitmap in der Quelle
+ << (USHORT)nWidth // X2-Position der Bitmap in der Quelle
+ << (USHORT)0x0000 // Version
+ << (USHORT)nPackType // Packing type
+ << (sal_uInt32) 0x00000000 // Packing size (?)
+ << (sal_uInt32) 0x00480000 // H-Res
+ << (sal_uInt32) 0x00480000 // V-Res
+ << (USHORT)0x0010 // Pixel type (?)
+ << (USHORT)0x0020 // Pixel size: 32 bit
+ << (USHORT)0x0004 // CmpCount: 4 Komponenten
+ << (USHORT)0x0008 // CmpSize: 8 Bits
+ << (sal_uInt32) 0x00000000 // PlaneBytes (?)
+ << (sal_uInt32) 0x00000000 // (?)
+ << (sal_uInt32) 0x00000000; // (?)
+
+ // Source-Rectangle schreiben:
+ *pPict << (USHORT)0x0000 // Y1-Position auf der Bitmap
+ << (USHORT)0x0000 // X1-Position auf der Bitmap
+ << (USHORT)nHeight // Y2-Position auf der Bitmap
+ << (USHORT)nWidth; // X2-Position auf der Bitmap
+
+ // Destination-Rectangle schreiben:
+ WritePoint( rPoint );
+ WritePoint( Point( rPoint.X() + rSize.Width(), rPoint.Y() + rSize.Height() ) );
+
+ // Transfer mode schreiben:
+ *pPict << (USHORT)0x0000; // (?)
+
+ // Position der Map-Daten in Ziel merken:
+ nDstMapPos=pPict->Tell();
+
+ if ( nPackType == 1 ) // bei 24 bits nWidth == 1 !!
+ { // nicht packen
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ *pPict << (BYTE)0;
+ *pPict << (BYTE)pAcc->GetPixel( ny, 0 ).GetRed();
+ *pPict << (BYTE)pAcc->GetPixel( ny, 0 ).GetGreen();
+ *pPict << (BYTE)pAcc->GetPixel( ny, 0 ).GetBlue();
+ // Prozente zaehlen, Callback, Fehler pruefen:
+ nActBitmapPercent = ( ny * 70 / nHeight ) + 30; // (30% machten schon das Schreiben der Win-BMP-Datei aus)
+ MayCallback();
+ }
+ }
+ else // packen ( PackType == 4 )
+ {
+ // Speicher fuer Zeilen-Zwischen-Datenstruktur allozieren:
+ for ( nc = 0; nc < 4; nc++ )
+ pComp[ nc ] = new BYTE[ nWidth ];
+
+ // Schleife ueber Zeilen:
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ // Zeil ny der Quelle in die Zwischen-Datenstrktur einlesen:
+
+ for ( nx = 0; nx < nWidth; nx++ )
+ {
+ pComp[ 1 ][ nx ] = (BYTE)pAcc->GetPixel( ny, nx ) .GetRed();
+ pComp[ 2 ][ nx ] = (BYTE)pAcc->GetPixel( ny, nx ) .GetGreen();
+ pComp[ 3 ][ nx ] = (BYTE)pAcc->GetPixel( ny, nx ) .GetBlue();
+ pComp[ 0 ][ nx ] = 0;
+ }
+
+ // Anfang der Zeile im Ziel merken:
+ nDstRowPos = pPict->Tell();
+
+ // ByteCount (das ist die Groesse der gepackten Zeile) zunaechst 0 (wird spaeter berichtigt):
+ if ( nDstRowBytes > 250 )
+ *pPict << (USHORT)0;
+ else
+ *pPict << (BYTE)0;
+
+ // Schleife ueber Componenten:
+ for ( nc = 0; nc < 4; nc++ )
+ {
+ // Schleife ueber x:
+ nx = 0;
+ while ( nx < nWidth )
+ {
+ // Die Position von 3 gleichen Bytes suchen und in nEqu3 merken.
+ // wenn nicht gefunden, dann nEqu3=nWidth setzten.
+ // Wenn doch gefunden, dann in nEquData den Wert der Bytes merken.
+ nEqu3 = nx;
+ for (;;)
+ {
+ if ( nEqu3 + 2 >= nWidth )
+ {
+ nEqu3 = nWidth;
+ break;
+ }
+ nEquData = pComp[nc][nEqu3];
+ if ( nEquData == pComp[nc][nEqu3+1] && nEquData==pComp[nc][nEqu3+2] )
+ break;
+ nEqu3++;
+ }
+
+ // Die Daten von nx bis nEqu3 unkomprimiert schreiben (ggf. in mehreren Records):
+ while ( nEqu3 > nx )
+ {
+ nCount = nEqu3 - nx;
+ if ( nCount > 128 )
+ nCount=128;
+ nFlagCounterByte = (BYTE)(nCount-1);
+ *pPict << nFlagCounterByte;
+ do
+ {
+ *pPict << pComp[nc][nx++];
+ nCount--;
+ }
+ while ( nCount > 0 );
+ }
+
+ // Jetzt einen Komprimierungs-Record erzeugen (falls oben mindestens 3
+ // gleiche Bytes gefunden):
+ if ( nx < nWidth )
+ { // Hinweis: es gilt nx==nEqu3 (hoffentlich)
+ nCount=3; // Drei Bytes sind gleich, wie weiter oben herausgefunden.
+ // Pruefen, ob es weitere gleiche Bytes gibts (dabei Max.-Record-Groesse beachten):
+ while ( nx + nCount < nWidth && nCount < 128 )
+ {
+ if ( nEquData != pComp[ nc ][ nx + nCount ] )
+ break;
+ nCount++;
+ }
+ // nCount gleiche Bytes komprimiert schreiben:
+ nFlagCounterByte = (BYTE)( 1 - (long)nCount );
+ *pPict << nFlagCounterByte << nEquData;
+ nx += nCount;
+ }
+ }
+ }
+ // ByteCount berichtigen:
+ nPos = pPict->Tell();
+ pPict->Seek( nDstRowPos );
+ if ( nDstRowBytes > 250 )
+ *pPict << ( (USHORT)( nPos - nDstRowPos - 2 ) );
+ else
+ *pPict << ( (BYTE)( nPos - nDstRowPos - 1 ) );
+ pPict->Seek( nPos );
+
+ // Prozente zaehlen, Callback, Fehler pruefen:
+ nActBitmapPercent = ( ny * 70 / nHeight ) + 30; // (30% machten schon das Schreiben der Win-BMP-Datei aus)
+ MayCallback();
+ }
+ // Aufraeumen:
+ for ( nc = 0; nc < 4; nc++ )
+ delete pComp[ nc ];
+ }
+ }
+ else
+ { // nicht 24-Bit also Opcode 'PackBitsRect' erzeugen:
+
+ // Bei 1-Bit-Bildern ignorieren manche Import-Filter die Palette und nehmen statt
+ // dessen die Vorder- und Hintergrundfarbe:
+ if ( nBitsPerPixel == 1 )
+ {
+ WriteOpcode_RGBBkCol( pAcc->GetPaletteColor( 0 ) );
+ WriteOpcode_RGBFgCol( pAcc->GetPaletteColor( 1 ) );
+ }
+ else
+ {
+ WriteOpcode_RGBBkCol( Color( COL_BLACK ) );
+ WriteOpcode_RGBFgCol( Color( COL_WHITE ) );
+ }
+
+ // Anzahl Bytes einer (ungepackten) Zeile in Ziel und Quelle berechnen:
+ nDstRowBytes = ( nWidth * nBitsPerPixel + 7 ) >> 3;
+ nSrcRowBytes = ( nDstRowBytes + 3 ) & 0xfffffffc;
+
+ // Opcode schreiben:
+ *pPict << (USHORT)0x0098;
+
+ // Normalerweise wollen wir den Packing-Type 0 (default Packing) erzeugen.
+ // Wenn aber RowBytes<8 gilt, sind die Daten grundsaetzlich ungepackt,
+ // auch wenn der Packing-Type 0 angegeben ist, was etwas komisch erscheint.
+ // Daher wollen wir in so einem Fall lieber gleich den Packing-Type 1 (ungepackt)
+ // angeben:
+ if ( nDstRowBytes < 8 )
+ nPackType = 1;
+ else
+ nPackType = 0;
+
+ // PixMap-Struktur schreiben:
+ *pPict << (USHORT)(nDstRowBytes|0x8000) // Bytes pro Zeile und dass es eine 'PixMap' ist
+ << (USHORT)0x0000 // Y1-Position der Bitmap in der Quelle
+ << (USHORT)0x0000 // X1-Position der Bitmap in der Quelle
+ << (USHORT)nHeight // Y2-Position der Bitmap in der Quelle
+ << (USHORT)nWidth // X2-Position der Bitmap in der Quelle
+ << (USHORT)0x0000 // Version
+ << (USHORT)nPackType // Packing type
+ << (sal_uInt32) 0x00000000 // Packing size (?)
+ << (sal_uInt32) 0x00480000 // H-Res
+ << (sal_uInt32) 0x00480000 // V-Res
+ << (USHORT)0x0000 // Pixel type (?)
+ << (USHORT)nBitsPerPixel // Pixel size
+ << (USHORT)0x0001 // CmpCount: 1 Komponente
+ << (USHORT)nBitsPerPixel // CmpSize
+ << (sal_uInt32) 0x00000000 // PlaneBytes (?)
+ << (sal_uInt32) 0x00000000 // (?)
+ << (sal_uInt32) 0x00000000; // (?)
+
+ // Palette lesen und schreiben:
+ nColTabSize = pAcc->GetPaletteEntryCount();
+ *pPict << (sal_uInt32)0 << (USHORT)0x8000 << (USHORT)( nColTabSize - 1 );
+
+ for ( i = 0; i < nColTabSize; i++ )
+ {
+ nRed = (BYTE)pAcc->GetPaletteColor( (USHORT)i ).GetRed();
+ nGreen = (BYTE)pAcc->GetPaletteColor( (USHORT)i ).GetGreen();
+ nBlue = (BYTE)pAcc->GetPaletteColor( (USHORT)i ).GetBlue();
+ *pPict << (UINT16)0 << nRed << nRed << nGreen << nGreen << nBlue << nBlue;
+ }
+
+ // Source-Rectangle schreiben:
+ *pPict << (USHORT)0 << (USHORT)0 << (USHORT)nHeight << (USHORT)nWidth;
+
+ // Destination-Rectangle schreiben:
+ WritePoint( rPoint );
+ WritePoint( Point( rPoint.X() + rSize.Width(), rPoint.Y() + rSize.Height() ) );
+
+ // Transfer mode schreiben:
+ *pPict << (USHORT)0; // (?)
+
+ // Speicher fuer eine Zeile allozieren:
+ pPix = new BYTE[ nSrcRowBytes ];
+
+ // Position der Map-Daten in Ziel merken:
+ nDstMapPos=pPict->Tell();
+
+ // Schleife ueber Zeilen:
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+
+ // Zeile ny der Quelle in den Zwischenspeicher einlesen:
+
+ switch ( nBitsPerPixel )
+ {
+ case 1 :
+ for ( pTemp = pPix, i = 0; i < nSrcRowBytes; i++ )
+ *pTemp++ = (BYTE)0;
+ for ( i = 0; i < nWidth; i++ )
+ pPix[ ( i >> 3 ) ] |= (BYTE)( pAcc->GetPixel( ny, i ) & 1 ) << ( ( i & 7 ) ^ 7 );
+ break;
+ case 4 :
+ for ( pTemp = pPix, i = 0; i < nSrcRowBytes; i++ )
+ *pTemp++ = (BYTE)0;
+ for ( i = 0; i < nWidth; i++ )
+ pPix[ ( i >> 1 ) ] |= (BYTE)( pAcc->GetPixel( ny, i ) & 15 ) << ( ( i & 1 ) << 2 ) ;
+ break;
+ case 8 :
+ for ( i = 0; i < nWidth; i++ )
+ pPix[ i ] = (BYTE)pAcc->GetPixel( ny, i );
+ break;
+ }
+
+ if ( nPackType == 1 )
+ { // nicht packen
+ pPict->Write( pPix, nDstRowBytes );
+ }
+ else
+ { // Packen (nPackType==0)
+
+ // Anfang der Zeile im Ziel merken:
+ nDstRowPos = pPict->Tell();
+
+ // ByteCount (das ist die Groesse der gepackten Zeile) zunaechst 0 (wird spaeter berichtigt):
+ if ( nDstRowBytes > 250 )
+ *pPict << (USHORT)0;
+ else
+ *pPict << (BYTE)0;
+
+ // Schleife ueber Bytes der Zeile:
+ nx=0;
+ while ( nx < nDstRowBytes && bStatus )
+ {
+ // Die Position von 3 gleichen Bytes suchen und in nEqu3 merken.
+ // wenn nicht gefunden, dann nEqu3=nDstRowBytes setzten.
+ // Wenn doch gefunden, dann in nEquData den Wert der Bytes merken.
+ nEqu3 = nx;
+ for (;;)
+ {
+ if ( nEqu3 + 2 >= nDstRowBytes )
+ {
+ nEqu3 = nDstRowBytes;
+ break;
+ }
+ nEquData = pPix[ nEqu3 ];
+ if ( nEquData == pPix[ nEqu3 + 1 ] && nEquData == pPix[ nEqu3 + 2 ] )
+ break;
+ nEqu3++;
+ }
+
+ // Die Daten von nx bis nEqu3 unkomprimiert schreiben (ggf. in mehreren Records):
+ while ( nEqu3 > nx )
+ {
+ nCount = nEqu3 - nx;
+ if ( nCount > 128 )
+ nCount = 128;
+ nFlagCounterByte = (BYTE)( nCount - 1 );
+ *pPict << nFlagCounterByte;
+ do
+ {
+ *pPict << pPix[ nx++ ];
+ nCount--;
+ } while ( nCount > 0 );
+ }
+
+ // Jetzt einen Komprimierungs-Record erzeugen (falls oben mindestens 3
+ // gleiche Bytes gefunden):
+ if ( nx < nDstRowBytes )
+ { // Hinweis: es gilt nx==nEqu3 (hoffentlich)
+ nCount = 3; // Drei Bytes sind gleich, wie weiter oben herausgefunden.
+ // Pruefen, ob es weitere gleiche Bytes gibts (dabei Max.-Record-Groesse beachten):
+ while ( nx + nCount < nDstRowBytes && nCount < 128 )
+ {
+ if ( nEquData != pPix[ nx + nCount ] )
+ break;
+ nCount++;
+ }
+ // nCount gleiche Bytes komprimiert schreiben:
+ nFlagCounterByte = (BYTE)( 1 - (long)nCount );
+ *pPict << nFlagCounterByte << nEquData;
+ nx += nCount;
+ }
+ }
+
+ // ByteCount berichtigen:
+ nPos = pPict->Tell();
+ pPict->Seek( nDstRowPos );
+ if ( nDstRowBytes > 250 )
+ *pPict << ( (USHORT)( nPos - nDstRowPos - 2 ) );
+ else
+ *pPict << ( (BYTE)( nPos - nDstRowPos - 1 ) );
+ pPict->Seek( nPos );
+ }
+
+ // Prozente zaehlen, Callback, Fehler pruefen:
+ nActBitmapPercent =( ny * 70 / nHeight ) + 30; // (30% machten schon das Schreiben der Win-BMP-Datei aus)
+ MayCallback();
+ if ( pPict->GetError() )
+ bStatus = FALSE;
+ }
+ // Aufraeumen:
+ delete[] pPix;
+ }
+
+ // Map-Daten muessen gerade Anzahl von Bytes sein:
+ if ( ( ( pPict->Tell() - nDstMapPos ) & 1 ) != 0 )
+ *pPict << (BYTE)0;
+
+ // Bitmaps zaehlen:
+ nWrittenBitmaps++;
+ nActBitmapPercent = 0;
+ if ( pAcc )
+ aBitmap.ReleaseAccess( pAcc );
+}
+
+void PictWriter::WriteOpcode_EndOfFile()
+{
+ *pPict << (USHORT)0x00ff;
+}
+
+
+void PictWriter::SetAttrForPaint()
+{
+ WriteOpcode_PnMode(eSrcRasterOp);
+ WriteOpcode_RGBFgCol(aFillColor);
+ WriteOpcode_RGBBkCol(aFillColor);
+ WriteOpcode_PnFillPat(aFillColor!=Color( COL_TRANSPARENT ));
+}
+
+
+void PictWriter::SetAttrForFrame()
+{
+ WriteOpcode_PnMode(eSrcRasterOp);
+ WriteOpcode_PnSize(0);
+ WriteOpcode_RGBFgCol(aLineColor);
+ WriteOpcode_PnLinePat(aLineColor!=Color( COL_TRANSPARENT ));
+}
+
+
+void PictWriter::SetAttrForText()
+{
+ WriteOpcode_RGBFgCol(aSrcFont.GetColor());
+ WriteOpcode_RGBBkCol(aSrcFont.GetFillColor());
+ WriteOpcode_PnLinePat(TRUE);
+ WriteOpcode_FontName(aSrcFont);
+ WriteOpcode_TxSize((USHORT)(aSrcFont.GetSize().Height()));
+ WriteOpcode_TxMode(eSrcRasterOp);
+ WriteOpcode_TxFace(aSrcFont);
+}
+
+
+void PictWriter::WriteTextArray(Point & rPoint, const String& rString, const sal_Int32 * pDXAry)
+{
+ USHORT i,nLen;
+ sal_Unicode c;
+ BOOL bDelta;
+ Point aPt;
+
+ if ( pDXAry == NULL )
+ WriteOpcode_Text( rPoint, rString, FALSE );
+ else
+ {
+ bDelta = FALSE;
+ nLen = rString.Len();
+ for ( i = 0; i < nLen; i++ )
+ {
+ c = rString.GetChar( i );
+ if ( c && ( c != 0x20 ) )
+ {
+ aPt = rPoint;
+ if ( i > 0 )
+ aPt.X() += pDXAry[ i - 1 ];
+
+ WriteOpcode_Text( aPt, String( c ), bDelta );
+ bDelta = TRUE;
+ }
+ }
+ }
+}
+
+void PictWriter::HandleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon)
+{
+ if(rLinePolygon.count())
+ {
+ basegfx::B2DPolyPolygon aLinePolyPolygon(rLinePolygon);
+ basegfx::B2DPolyPolygon aFillPolyPolygon;
+
+ rInfo.applyToB2DPolyPolygon(aLinePolyPolygon, aFillPolyPolygon);
+
+ if(aLinePolyPolygon.count())
+ {
+ aLinePolyPolygon = aLinePolyPolygon.getDefaultAdaptiveSubdivision();
+ const sal_uInt32 nPolyCount(aLinePolyPolygon.count());
+ SetAttrForFrame();
+
+ for(sal_uInt32 a(0); a < nPolyCount; a++)
+ {
+ const basegfx::B2DPolygon aCandidate(aLinePolyPolygon.getB2DPolygon(a));
+ const sal_uInt32 nPointCount(aCandidate.count());
+
+ if(nPointCount)
+ {
+ const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount + 1 : nPointCount);
+ const basegfx::B2DPoint aCurr(aCandidate.getB2DPoint(0));
+ Point nCurr(basegfx::fround(aCurr.getX()), basegfx::fround(aCurr.getY()));
+
+ for(sal_uInt32 b(0); b < nEdgeCount; b++)
+ {
+ const sal_uInt32 nNextIndex((b + 1) % nPointCount);
+ const basegfx::B2DPoint aNext(aCandidate.getB2DPoint(nNextIndex));
+ const Point nNext(basegfx::fround(aNext.getX()), basegfx::fround(aNext.getY()));
+
+ WriteOpcode_Line(nCurr, nNext);
+ nCurr = nNext;
+ }
+ }
+ }
+ }
+
+ if(aFillPolyPolygon.count())
+ {
+ const Color aOldLineColor(aLineColor);
+ const Color aOldFillColor(aFillColor);
+
+ aLineColor = Color( COL_TRANSPARENT );
+ aFillColor = aOldLineColor;
+ SetAttrForPaint();
+
+ for(sal_uInt32 a(0); a < aFillPolyPolygon.count(); a++)
+ {
+ const Polygon aPolygon(aFillPolyPolygon.getB2DPolygon(a).getDefaultAdaptiveSubdivision());
+ WriteOpcode_Poly(PDM_PAINT, aPolygon);
+ }
+
+ aLineColor = aOldLineColor;
+ aFillColor = aOldFillColor;
+ }
+ }
+}
+
+void PictWriter::WriteOpcodes( const GDIMetaFile & rMTF )
+{
+ ULONG nA, nACount;
+ const MetaAction* pMA;
+
+ if( !bStatus)
+ return;
+
+ nACount=rMTF.GetActionCount();
+
+ for (nA=0; nA<nACount; nA++)
+ {
+ pMA = rMTF.GetAction(nA);
+
+ switch (pMA->GetType())
+ {
+ case META_PIXEL_ACTION:
+ {
+ const MetaPixelAction* pA = (const MetaPixelAction*) pMA;
+ WriteOpcode_PnMode(eSrcRasterOp);
+ WriteOpcode_PnSize(1);
+ WriteOpcode_RGBFgCol(pA->GetColor());
+ WriteOpcode_PnLinePat(TRUE);
+ WriteOpcode_Line(pA->GetPoint(),pA->GetPoint());
+ }
+ break;
+
+ case META_POINT_ACTION:
+ {
+ const MetaPointAction* pA = (const MetaPointAction*) pMA;
+
+ if( aLineColor != Color( COL_TRANSPARENT ) )
+ {
+ SetAttrForFrame();
+ WriteOpcode_Line( pA->GetPoint(),pA->GetPoint() );
+ }
+ }
+ break;
+
+ case META_LINE_ACTION:
+ {
+ const MetaLineAction* pA = (const MetaLineAction*) pMA;
+
+ if( aLineColor != Color( COL_TRANSPARENT ) )
+ {
+ if(pA->GetLineInfo().IsDefault())
+ {
+ SetAttrForFrame();
+ WriteOpcode_Line( pA->GetStartPoint(),pA->GetEndPoint() );
+ }
+ else
+ {
+ // LineInfo used; handle Dash/Dot and fat lines
+ basegfx::B2DPolygon aPolygon;
+ aPolygon.append(basegfx::B2DPoint(pA->GetStartPoint().X(), pA->GetStartPoint().Y()));
+ aPolygon.append(basegfx::B2DPoint(pA->GetEndPoint().X(), pA->GetEndPoint().Y()));
+ HandleLineInfoPolyPolygons(pA->GetLineInfo(), aPolygon);
+ }
+ }
+ break;
+ }
+
+ case META_RECT_ACTION:
+ {
+ const MetaRectAction* pA = (const MetaRectAction*) pMA;
+
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_Rect(PDM_PAINT,pA->GetRect());
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_SameRect(PDM_FRAME);
+ }
+ }
+ else if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_Rect(PDM_FRAME,pA->GetRect());
+ }
+ }
+ break;
+
+ case META_ROUNDRECT_ACTION:
+ {
+ const MetaRoundRectAction* pA = (const MetaRoundRectAction*) pMA;
+
+ WriteOpcode_OvSize( Size( pA->GetHorzRound(), pA->GetVertRound() ) );
+
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_RRect(PDM_PAINT,pA->GetRect());
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_SameRRect(PDM_FRAME);
+ }
+ }
+ else if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_RRect(PDM_FRAME,pA->GetRect());
+ }
+ }
+ break;
+
+ case META_ELLIPSE_ACTION:
+ {
+ const MetaEllipseAction* pA = (const MetaEllipseAction*) pMA;
+
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_Oval(PDM_PAINT,pA->GetRect());
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_SameOval(PDM_FRAME);
+ }
+ }
+ else if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_Oval(PDM_FRAME,pA->GetRect());
+ }
+ }
+ break;
+
+ case META_ARC_ACTION:
+ {
+ const MetaArcAction* pA = (const MetaArcAction*) pMA;
+
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_Arc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
+ }
+ }
+ break;
+
+ case META_PIE_ACTION:
+ {
+ const MetaPieAction* pA = (const MetaPieAction *) pMA;
+
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_Arc(PDM_PAINT,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
+
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_SameArc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
+ }
+ }
+ else if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_Arc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
+ }
+
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ double fxc,fyc,fxr,fyr,fx1,fy1,fx2,fy2,l1,l2;
+
+ fxc=((double)(pA->GetRect().Left()+pA->GetRect().Right()))/2.0;
+ fyc=((double)(pA->GetRect().Top()+pA->GetRect().Bottom()))/2.0;
+ fxr=((double)pA->GetRect().GetWidth())/2.0;
+ fyr=((double)pA->GetRect().GetHeight())/2.0;
+ fx1=((double)pA->GetStartPoint().X())-fxc;
+ fy1=((double)pA->GetStartPoint().Y())-fyc;
+ fx2=((double)pA->GetEndPoint().X())-fxc;
+ fy2=((double)pA->GetEndPoint().Y())-fyc;
+ l1=sqrt(fx1*fx1+fy1*fy1);
+ l2=sqrt(fx2*fx2+fy2*fy2);
+
+ if (l1>0)
+ {
+ fx1=fx1/l1*fxr;
+ fy1=fy1/l1*fyr;
+ }
+
+ if (l2>0)
+ {
+ fx2=fx2/l2*fxr;
+ fy2=fy2/l2*fyr;
+ }
+ fx1+=fxc; fy1+=fyc; fx2+=fxc; fy2+=fyc;
+ WriteOpcode_Line(Point((long)(fx1+0.5),(long)(fy1+0.5)), Point((long)(fxc+0.5),(long)(fyc+0.5)));
+ WriteOpcode_LineFrom(Point((long)(fx2+0.5),(long)(fy2+0.5)));
+ }
+ }
+ break;
+
+ case META_CHORD_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_CHORD_ACTION!" );
+ }
+ break;
+
+ case META_POLYLINE_ACTION:
+ {
+ const MetaPolyLineAction* pA = (const MetaPolyLineAction*) pMA;
+
+ if( aLineColor!=Color( COL_TRANSPARENT ) )
+ {
+ const Polygon& rPoly = pA->GetPolygon();
+
+ if( rPoly.GetSize() )
+ {
+ if(pA->GetLineInfo().IsDefault())
+ {
+ Polygon aSimplePoly;
+ if ( rPoly.HasFlags() )
+ rPoly.AdaptiveSubdivide( aSimplePoly );
+ else
+ aSimplePoly = rPoly;
+
+ const USHORT nSize = aSimplePoly.GetSize();
+ Point aLast;
+
+ if ( nSize )
+ {
+ SetAttrForFrame();
+ aLast = aSimplePoly[0];
+
+ for ( USHORT i = 1; i < nSize; i++ )
+ {
+ WriteOpcode_Line( aLast, aSimplePoly[i] );
+ aLast = aSimplePoly[i];
+ }
+ }
+ }
+ else
+ {
+ // LineInfo used; handle Dash/Dot and fat lines
+ HandleLineInfoPolyPolygons(pA->GetLineInfo(), rPoly.getB2DPolygon());
+ }
+ }
+ }
+ }
+ break;
+
+ case META_POLYGON_ACTION:
+ {
+ const MetaPolygonAction* pA = (const MetaPolygonAction*) pMA;
+
+ const Polygon& rPoly = pA->GetPolygon();
+
+ Polygon aSimplePoly;
+ if ( rPoly.HasFlags() )
+ rPoly.AdaptiveSubdivide( aSimplePoly );
+ else
+ aSimplePoly = rPoly;
+
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_Poly( PDM_PAINT, aSimplePoly );
+ }
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ WriteOpcode_Poly( PDM_FRAME, aSimplePoly );
+ }
+ }
+ break;
+
+ case META_POLYPOLYGON_ACTION:
+ {
+ const MetaPolyPolygonAction* pA = (const MetaPolyPolygonAction*) pMA;
+
+ const PolyPolygon& rPolyPoly = pA->GetPolyPolygon();
+ sal_uInt16 nPolyCount = rPolyPoly.Count();
+ PolyPolygon aSimplePolyPoly( rPolyPoly );
+ for ( sal_uInt16 i = 0; i < nPolyCount; i++ )
+ {
+ if ( aSimplePolyPoly[ i ].HasFlags() )
+ {
+ Polygon aSimplePoly;
+ aSimplePolyPoly[ i ].AdaptiveSubdivide( aSimplePoly );
+ aSimplePolyPoly[ i ] = aSimplePoly;
+ }
+ }
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_Poly( PDM_PAINT, PolyPolygonToPolygon( aSimplePolyPoly ));
+ }
+
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ USHORT nCount,i;
+ SetAttrForFrame();
+ nCount = aSimplePolyPoly.Count();
+ for ( i = 0; i < nCount; i++ )
+ WriteOpcode_Poly( PDM_FRAME, aSimplePolyPoly.GetObject( i ) );
+ }
+ }
+ break;
+
+ case META_TEXT_ACTION:
+ {
+ const MetaTextAction* pA = (const MetaTextAction*) pMA;
+ Point aPt( pA->GetPoint() );
+
+ if ( aSrcFont.GetAlign() != ALIGN_BASELINE )
+ {
+ VirtualDevice aVirDev;
+
+ if (aSrcFont.GetAlign()==ALIGN_TOP)
+ aPt.Y()+=(long)aVirDev.GetFontMetric(aSrcFont).GetAscent();
+ else
+ aPt.Y()-=(long)aVirDev.GetFontMetric(aSrcFont).GetDescent();
+ }
+
+ SetAttrForText();
+ String aStr( pA->GetText(),pA->GetIndex(),pA->GetLen() );
+ WriteOpcode_Text( aPt, aStr, FALSE );
+ }
+ break;
+
+ case META_TEXTARRAY_ACTION:
+ {
+ const MetaTextArrayAction* pA = (const MetaTextArrayAction*) pMA;
+ Point aPt( pA->GetPoint() );
+
+ if (aSrcFont.GetAlign()!=ALIGN_BASELINE)
+ {
+ VirtualDevice aVirDev;
+
+ if (aSrcFont.GetAlign()==ALIGN_TOP)
+ aPt.Y()+=(long)aVirDev.GetFontMetric(aSrcFont).GetAscent();
+ else
+ aPt.Y()-=(long)aVirDev.GetFontMetric(aSrcFont).GetDescent();
+ }
+ SetAttrForText();
+ String aStr( pA->GetText(),pA->GetIndex(),pA->GetLen() );
+ WriteTextArray( aPt, aStr, pA->GetDXArray() );
+ break;
+ }
+
+ case META_STRETCHTEXT_ACTION:
+ {
+ const MetaStretchTextAction* pA = (const MetaStretchTextAction*) pMA;
+ Point aPt( pA->GetPoint() );
+ String aStr( pA->GetText(),pA->GetIndex(),pA->GetLen() );
+ VirtualDevice aVirDev;
+ sal_Int32* pDXAry = new sal_Int32[ aStr.Len() ];
+ sal_Int32 nNormSize( aVirDev.GetTextArray( aStr,pDXAry ) );
+ USHORT i;
+
+ if (aSrcFont.GetAlign()!=ALIGN_BASELINE)
+ {
+ if (aSrcFont.GetAlign()==ALIGN_TOP)
+ aPt.Y()+=(long)aVirDev.GetFontMetric(aSrcFont).GetAscent();
+ else
+ aPt.Y()-=(long)aVirDev.GetFontMetric(aSrcFont).GetDescent();
+ }
+
+ for ( i = 0; i < aStr.Len() - 1; i++ )
+ pDXAry[ i ] = pDXAry[ i ] * ( (long)pA->GetWidth() ) / nNormSize;
+
+ SetAttrForText();
+ WriteTextArray( aPt, aStr, pDXAry );
+ delete[] pDXAry;
+ }
+ break;
+
+ case META_TEXTRECT_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_TEXTRECT_ACTION!" );
+ }
+ break;
+
+ case META_BMP_ACTION:
+ {
+ const MetaBmpAction* pA = (const MetaBmpAction*) pMA;
+ WriteOpcode_BitsRect( pA->GetPoint(),pA->GetBitmap().GetSizePixel(), pA->GetBitmap() );
+ }
+ break;
+
+ case META_BMPSCALE_ACTION:
+ {
+ const MetaBmpScaleAction* pA = (const MetaBmpScaleAction*) pMA;
+ WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), pA->GetBitmap() );
+ }
+ break;
+
+ case META_BMPSCALEPART_ACTION:
+ {
+ const MetaBmpScalePartAction* pA = (const MetaBmpScalePartAction*) pMA;
+ Bitmap aBmp( pA->GetBitmap() );
+
+ aBmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
+ WriteOpcode_BitsRect( pA->GetDestPoint(), pA->GetDestSize(), aBmp );
+ }
+ break;
+
+ case META_BMPEX_ACTION:
+ {
+ const MetaBmpExAction* pA = (const MetaBmpExAction*) pMA;
+ const Bitmap aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
+
+ WriteOpcode_BitsRect( pA->GetPoint(), aBmp.GetSizePixel(), aBmp );
+ }
+ break;
+
+ case META_BMPEXSCALE_ACTION:
+ {
+ const MetaBmpExScaleAction* pA = (const MetaBmpExScaleAction*) pMA;
+ const Bitmap aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
+
+ WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), aBmp );
+ }
+ break;
+
+ case META_BMPEXSCALEPART_ACTION:
+ {
+ const MetaBmpExScalePartAction* pA = (const MetaBmpExScalePartAction*) pMA;
+ Bitmap aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
+
+ aBmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
+ WriteOpcode_BitsRect( pA->GetDestPoint(), pA->GetDestSize(), aBmp );
+ }
+ break;
+
+ case META_EPS_ACTION :
+ {
+ const MetaEPSAction* pA = (const MetaEPSAction*)pMA;
+ const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
+
+ INT32 nCount = aGDIMetaFile.GetActionCount();
+ for ( INT32 i = 0; i < nCount; i++ )
+ {
+ const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
+ if ( pMetaAct->GetType() == META_BMPSCALE_ACTION )
+ {
+ const MetaBmpScaleAction* pBmpScaleAction = (const MetaBmpScaleAction*)pMetaAct;
+ WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), pBmpScaleAction->GetBitmap() );
+ break;
+ }
+ }
+ }
+ break;
+
+ case META_MASK_ACTION:
+ case META_MASKSCALE_ACTION:
+ case META_MASKSCALEPART_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_MASK..._ACTION!" );
+ }
+ break;
+
+ case META_GRADIENT_ACTION:
+ {
+ VirtualDevice aVDev;
+ GDIMetaFile aTmpMtf;
+ const MetaGradientAction* pA = (const MetaGradientAction*) pMA;
+
+ aVDev.SetMapMode( aTargetMapMode );
+ aVDev.AddGradientActions( pA->GetRect(), pA->GetGradient(), aTmpMtf );
+ WriteOpcodes( aTmpMtf );
+ }
+ break;
+
+ case META_HATCH_ACTION:
+ {
+ VirtualDevice aVDev;
+ GDIMetaFile aTmpMtf;
+ const MetaHatchAction* pA = (const MetaHatchAction*) pMA;
+
+ aVDev.SetMapMode( aTargetMapMode );
+ aVDev.AddHatchActions( pA->GetPolyPolygon(), pA->GetHatch(), aTmpMtf );
+ WriteOpcodes( aTmpMtf );
+ }
+ break;
+
+ case META_WALLPAPER_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_WALLPAPER_ACTION!" );
+ }
+ break;
+
+ case META_CLIPREGION_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_CLIPREGION_ACTION!" );
+ }
+ break;
+
+ case META_ISECTRECTCLIPREGION_ACTION:
+ {
+ const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*) pMA;
+ WriteOpcode_ClipRect( pA->GetRect() );
+ }
+ break;
+
+ case META_ISECTREGIONCLIPREGION_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_ISECTREGIONCLIPREGION_ACTION!" );
+ }
+ break;
+
+ case META_MOVECLIPREGION_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_MOVECLIPREGION_ACTION!" );
+ }
+ break;
+
+ case META_LINECOLOR_ACTION:
+ {
+ const MetaLineColorAction* pA = (const MetaLineColorAction*) pMA;
+
+ if( pA->IsSetting() )
+ aLineColor = pA->GetColor();
+ else
+ aLineColor = Color( COL_TRANSPARENT );
+ }
+ break;
+
+ case META_FILLCOLOR_ACTION:
+ {
+ const MetaFillColorAction* pA = (const MetaFillColorAction*) pMA;
+
+ if( pA->IsSetting() )
+ aFillColor = pA->GetColor();
+ else
+ aFillColor = Color( COL_TRANSPARENT );
+ }
+ break;
+
+ case META_TEXTCOLOR_ACTION:
+ {
+ const MetaTextColorAction* pA = (const MetaTextColorAction*) pMA;
+ aSrcFont.SetColor( pA->GetColor() );
+ }
+ break;
+
+ case META_TEXTFILLCOLOR_ACTION:
+ {
+ const MetaTextFillColorAction* pA = (const MetaTextFillColorAction*) pMA;
+
+ if( pA->IsSetting() )
+ aSrcFont.SetFillColor( pA->GetColor() );
+ else
+ aSrcFont.SetFillColor( Color( COL_TRANSPARENT ) );
+ }
+ break;
+
+ case META_TEXTALIGN_ACTION:
+ {
+// DBG_ERROR( "Unsupported PICT-Action: META_TEXTALIGN_ACTION!" );
+ }
+ break;
+
+ case META_MAPMODE_ACTION:
+ {
+ const MetaMapModeAction* pA = (const MetaMapModeAction*) pMA;
+
+ if (aSrcMapMode!=pA->GetMapMode())
+ {
+ if( pA->GetMapMode().GetMapUnit() == MAP_RELATIVE )
+ {
+ MapMode aMM = pA->GetMapMode();
+ Fraction aScaleX = aMM.GetScaleX();
+ Fraction aScaleY = aMM.GetScaleY();
+
+ Point aOrigin = aSrcMapMode.GetOrigin();
+ BigInt aX( aOrigin.X() );
+ aX *= BigInt( aScaleX.GetDenominator() );
+ if( aOrigin.X() >= 0 )
+ {
+ if( aScaleX.GetNumerator() >= 0 )
+ aX += BigInt( aScaleX.GetNumerator()/2 );
+ else
+ aX -= BigInt( (aScaleX.GetNumerator()+1)/2 );
+ }
+ else
+ {
+ if( aScaleX.GetNumerator() >= 0 )
+ aX -= BigInt( (aScaleX.GetNumerator()-1)/2 );
+ else
+ aX += BigInt( aScaleX.GetNumerator()/2 );
+ }
+
+ aX /= BigInt( aScaleX.GetNumerator() );
+ aOrigin.X() = (long)aX + aMM.GetOrigin().X();
+ BigInt aY( aOrigin.Y() );
+ aY *= BigInt( aScaleY.GetDenominator() );
+
+ if( aOrigin.Y() >= 0 )
+ {
+ if( aScaleY.GetNumerator() >= 0 )
+ aY += BigInt( aScaleY.GetNumerator()/2 );
+ else
+ aY -= BigInt( (aScaleY.GetNumerator()+1)/2 );
+ }
+ else
+ {
+ if( aScaleY.GetNumerator() >= 0 )
+ aY -= BigInt( (aScaleY.GetNumerator()-1)/2 );
+ else
+ aY += BigInt( aScaleY.GetNumerator()/2 );
+ }
+
+ aY /= BigInt( aScaleY.GetNumerator() );
+ aOrigin.Y() = (long)aY + aMM.GetOrigin().Y();
+ aSrcMapMode.SetOrigin( aOrigin );
+
+ aScaleX *= aSrcMapMode.GetScaleX();
+ aScaleY *= aSrcMapMode.GetScaleY();
+ aSrcMapMode.SetScaleX( aScaleX );
+ aSrcMapMode.SetScaleY( aScaleY );
+ }
+ else
+ aSrcMapMode = pA->GetMapMode();
+ }
+ }
+ break;
+
+ case META_FONT_ACTION:
+ {
+ const MetaFontAction* pA = (const MetaFontAction*) pMA;
+ aSrcFont=pA->GetFont();
+ }
+ break;
+
+ case META_PUSH_ACTION:
+ {
+ PictWriterAttrStackMember * pAt = new PictWriterAttrStackMember;
+ pAt->aLineColor=aLineColor;
+ pAt->aFillColor=aFillColor;
+ pAt->eRasterOp=eSrcRasterOp;
+ pAt->aFont=aSrcFont;
+ pAt->aMapMode=aSrcMapMode;
+ pAt->aClipRect=aClipRect;
+ pAt->pSucc=pAttrStack;
+ pAttrStack=pAt;
+ }
+ break;
+
+ case META_POP_ACTION:
+ {
+ PictWriterAttrStackMember* pAt=pAttrStack;
+
+ if( pAt )
+ {
+ aLineColor=pAt->aLineColor;
+ aFillColor=pAt->aFillColor;
+ eSrcRasterOp=pAt->eRasterOp;
+ aSrcFont=pAt->aFont;
+ aSrcMapMode=pAt->aMapMode;
+ if ( pAt->aClipRect != aClipRect )
+ {
+ Rectangle aRect( pAt->aClipRect );
+ *pPict << (sal_uInt16)1 // opcode 1
+ << (sal_uInt16)10 // data size
+ << (sal_Int16)aRect.Top() << (sal_Int16)aRect.Left()
+ << (sal_Int16)aRect.Bottom() << (sal_Int16)aRect.Right();
+ }
+ aClipRect=pAt->aClipRect;
+ pAttrStack=pAt->pSucc;
+ delete pAt;
+ }
+ }
+ break;
+
+ case META_RASTEROP_ACTION:
+ {
+ const MetaRasterOpAction* pA = (const MetaRasterOpAction*) pMA;
+ eSrcRasterOp=pA->GetRasterOp();
+ }
+ break;
+
+ case META_TRANSPARENT_ACTION:
+ {
+ const PolyPolygon& rPolyPoly = ( (const MetaTransparentAction*) pMA )->GetPolyPolygon();
+
+ if (aFillColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForPaint();
+ WriteOpcode_Poly( PDM_PAINT, PolyPolygonToPolygon( rPolyPoly ) );
+ }
+
+ if (aLineColor!=Color( COL_TRANSPARENT ))
+ {
+ SetAttrForFrame();
+ for( USHORT i = 0, nCount = rPolyPoly.Count(); i < nCount; i++ )
+ WriteOpcode_Poly( PDM_FRAME, rPolyPoly.GetObject( i ) );
+ }
+ }
+ break;
+
+ case META_FLOATTRANSPARENT_ACTION:
+ {
+ const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pMA;
+
+ GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
+ Point aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
+ const Size aSrcSize( aTmpMtf.GetPrefSize() );
+ const Point aDestPt( pA->GetPoint() );
+ const Size aDestSize( pA->GetSize() );
+ const double fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
+ const double fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
+ long nMoveX, nMoveY;
+
+ if( fScaleX != 1.0 || fScaleY != 1.0 )
+ {
+ aTmpMtf.Scale( fScaleX, fScaleY );
+ aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
+ }
+
+ nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
+
+ if( nMoveX || nMoveY )
+ aTmpMtf.Move( nMoveX, nMoveY );
+
+ WriteOpcodes( aTmpMtf );
+ }
+ break;
+ }
+
+ nWrittenActions++;
+ MayCallback();
+
+ if (pPict->GetError())
+ bStatus=FALSE;
+
+ if (bStatus==FALSE)
+ break;
+ }
+}
+
+
+void PictWriter::WriteHeader(const GDIMetaFile & rMTF)
+{
+ USHORT i;
+ Size aSize( rMTF.GetPrefSize() );
+ Point aPoint;
+ Rectangle aRect( aPoint, aSize );
+
+ // 512 Bytes "Muell" am Anfang:
+ for (i=0;i<128;i++) *pPict << (sal_uInt32)0;
+
+ // Lo-16-Bits der Groesse der Datei ohne die 512 Bytes Muell:
+ *pPict << (USHORT)0; // wird spaeter durch UpdateHeader() berichtigt
+
+ // Das Bounding-Rectangle (y1,x1,y2,x2 !):
+ WriteRectangle( aRect );
+
+ // Version 2:
+ *pPict << (sal_uInt32)0x001102ff;
+
+ // Extended-Version-2-Header:
+ *pPict << (USHORT)0x0c00 // Opcode
+ << (USHORT)0xfffe // Version (?)
+ << (USHORT)0x0000 // Reserved
+ << (sal_uInt32) 0x00480000 // hRes
+ << (sal_uInt32) 0x00480000;
+ WriteRectangle( aRect );
+ *pPict << (sal_uInt32)0x00000000; // Reserved
+
+ // viele Import-Filter verlangen die Angabe eines
+ // Clipping-Bereichs am Anfang
+
+ WriteOpcode_ClipRect( aRect );
+}
+
+
+void PictWriter::UpdateHeader()
+{
+ ULONG nPos;
+
+ // Lo-16-Bits der Groesse der Datei ohne die 512 Bytes Muell berichtigen:
+ nPos=pPict->Tell();
+ pPict->Seek(512);
+ *pPict << (USHORT)((nPos-512)&0x0000ffff);
+ pPict->Seek(nPos);
+}
+
+
+BOOL PictWriter::WritePict(const GDIMetaFile & rMTF, SvStream & rTargetStream, FilterConfigItem* pFilterConfigItem )
+{
+ PictWriterAttrStackMember* pAt;
+ MapMode aMap72( MAP_INCH );
+ Fraction aDPIFrac( 1, 72 );
+
+ bStatus=TRUE;
+ nLastPercent=0;
+
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ pPict=&rTargetStream;
+ pPict->SetNumberFormatInt(NUMBERFORMAT_INT_BIGENDIAN);
+
+ aLineColor=Color( COL_BLACK );
+ aFillColor=Color( COL_WHITE );
+ eSrcRasterOp=ROP_OVERPAINT;
+ aSrcFont=Font();
+ aSrcMapMode = rMTF.GetPrefMapMode();
+
+ aMap72.SetScaleX( aDPIFrac );
+ aMap72.SetScaleY( aDPIFrac );
+ aTargetMapMode = aMap72;
+
+ pAttrStack=NULL;
+
+ bDstBkPatValid=FALSE;
+ bDstTxFaceValid=FALSE;
+ bDstTxModeValid=FALSE;
+ bDstPnSizeValid=FALSE;
+ bDstPnModeValid=FALSE;
+ bDstPnPatValid=FALSE;
+ bDstFillPatValid=FALSE;
+ bDstTxSizeValid=FALSE;
+ bDstFgColValid=FALSE;
+ bDstBkColValid=FALSE;
+ bDstPenPositionValid=FALSE;
+ bDstTextPositionValid=FALSE;
+ bDstFontNameValid=FALSE;
+
+ nNumberOfActions=0;
+ nNumberOfBitmaps=0;
+ nWrittenActions=0;
+ nWrittenBitmaps=0;
+ nActBitmapPercent=0;
+
+ CountActionsAndBitmaps(rMTF);
+
+ WriteHeader(rMTF);
+ WriteOpcodes(rMTF);
+ WriteOpcode_EndOfFile();
+ UpdateHeader();
+
+ while (pAttrStack!=NULL) {
+ pAt=pAttrStack;
+ pAttrStack=pAt->pSucc;
+ delete pAt;
+ }
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return bStatus;
+}
+
+//================== GraphicExport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem, BOOL)
+{
+ PictWriter aPictWriter;
+
+ if (rGraphic.GetType()==GRAPHIC_GDIMETAFILE)
+ {
+ GDIMetaFile aScaledMtf( rGraphic.GetGDIMetaFile() );
+
+/*
+ MapMode aMap72( MAP_INCH );
+ Fraction aDPIFrac( 1, 72 );
+ Size aOldSize = aScaledMtf.GetPrefSize();
+
+ aMap72.SetScaleX( aDPIFrac );
+ aMap72.SetScaleY( aDPIFrac );
+
+ Size aNewSize = OutputDevice::LogicToLogic( aOldSize,
+ aScaledMtf.GetPrefMapMode(),
+ aMap72 );
+
+ aScaledMtf.Scale( Fraction( aNewSize.Width(), aOldSize.Width() ),
+ Fraction( aNewSize.Height(), aOldSize.Height() ) );
+ aScaledMtf.SetPrefMapMode( aMap72 );
+ aScaledMtf.SetPrefSize( aNewSize );
+*/
+
+ return aPictWriter.WritePict( aScaledMtf, rStream, pFilterConfigItem );
+ }
+ else
+ {
+ Bitmap aBmp=rGraphic.GetBitmap();
+ GDIMetaFile aMTF;
+ VirtualDevice aVirDev;
+
+ aMTF.Record(&aVirDev);
+ aVirDev.DrawBitmap(Point(),aBmp);
+ aMTF.Stop();
+ aMTF.SetPrefSize(aBmp.GetSizePixel());
+ return aPictWriter.WritePict( aMTF, rStream, pFilterConfigItem );
+ }
+}
+
+//================== GraphicDialog - die exportierte Funktion ================
+
+extern "C" BOOL SAL_CALL DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "ept" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEPCT( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+
+//=============================== fuer Windows ==============================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/epict/epictstr.src b/filter/source/graphicfilter/epict/epictstr.src
new file mode 100644
index 000000000000..8afebcb7564c
--- /dev/null
+++ b/filter/source/graphicfilter/epict/epictstr.src
@@ -0,0 +1,38 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "strings.hrc"
+
+String KEY_MODE
+{
+ Text = "ExportMode";
+};
+
+String KEY_SIZE
+{
+ Text = "Size";
+};
diff --git a/filter/source/graphicfilter/epict/exports.map b/filter/source/graphicfilter/epict/exports.map
new file mode 100644
index 000000000000..2f21c5c04b53
--- /dev/null
+++ b/filter/source/graphicfilter/epict/exports.map
@@ -0,0 +1,8 @@
+PICTEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/epict/makefile.mk b/filter/source/graphicfilter/epict/makefile.mk
new file mode 100644
index 000000000000..a7c99eb3f732
--- /dev/null
+++ b/filter/source/graphicfilter/epict/makefile.mk
@@ -0,0 +1,76 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=epict
+TARGET2=ept
+DEPTARGET=vepict
+
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES = dlgepct.src \
+ epictstr.src
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/epict.obj \
+ $(SLO)$/dlgepct.obj
+.ENDIF
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET2)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
+SHL1TARGET= ept$(DLLPOSTFIX)
+SHL1IMPLIB= epict
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB) $(BASEGFXLIB)
+
+SHL1LIBS= $(SLB)$/epict.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/epict.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/epict/strings.hrc b/filter/source/graphicfilter/epict/strings.hrc
new file mode 100644
index 000000000000..7834e3ea2bc0
--- /dev/null
+++ b/filter/source/graphicfilter/epict/strings.hrc
@@ -0,0 +1,29 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define KEY_MODE 260
+#define KEY_SIZE 261
+
diff --git a/filter/source/graphicfilter/eppm/dlgeppm.cxx b/filter/source/graphicfilter/eppm/dlgeppm.cxx
new file mode 100644
index 000000000000..23822bfebf7c
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/dlgeppm.cxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+#include <tools/ref.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include <vcl/msgbox.hxx>
+#include "dlgeppm.hxx"
+#include "dlgeppm.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEPPM::DlgExportEPPM( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPPM, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aGrpFormat ( this, ResId( GRP_FORMAT, *rPara.pResMgr ) ),
+ aRBRaw ( this, ResId( RB_RAW, *rPara.pResMgr ) ),
+ aRBASCII ( this, ResId( RB_ASCII, *rPara.pResMgr ) ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ // Config-Parameter lesen
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/PPM" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+ sal_Int32 nFormat = pConfigItem->ReadInt32( String( ResId( KEY_FORMAT, *pMgr ) ), 0 );
+
+ BOOL bCheck = FALSE;
+ if ( !nFormat )
+ bCheck ^= TRUE;
+ aRBRaw.Check( bCheck );
+ bCheck ^= TRUE;
+ aRBASCII.Check( bCheck );
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEPPM, OK ) );
+}
+
+DlgExportEPPM::~DlgExportEPPM()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEPPM, OK, void *, EMPTYARG )
+{
+ // Config-Parameter schreiben
+ sal_Int32 nFormat = 0;
+ if ( aRBASCII.IsChecked() )
+ nFormat++;
+ pConfigItem->WriteInt32( String( ResId( KEY_FORMAT, *pMgr ) ), nFormat );
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
diff --git a/filter/source/graphicfilter/eppm/dlgeppm.hrc b/filter/source/graphicfilter/eppm/dlgeppm.hrc
new file mode 100644
index 000000000000..876dfa840997
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/dlgeppm.hrc
@@ -0,0 +1,34 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "filter.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define GRP_FORMAT 1
+#define RB_RAW 1
+#define RB_ASCII 2
diff --git a/filter/source/graphicfilter/eppm/dlgeppm.hxx b/filter/source/graphicfilter/eppm/dlgeppm.hxx
new file mode 100644
index 000000000000..a03ca3ad24f0
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/dlgeppm.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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 _DLGEPPM_HXX_
+#define _DLGEPPM_HXX_
+#include <svtools/fltcall.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#include <svtools/stdctrl.hxx>
+
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen
+|*
+\************************************************************************/
+
+class FilterConfigItem;
+class ResMgr;
+
+class DlgExportEPPM : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ FixedLine aGrpFormat;
+ RadioButton aRBRaw;
+ RadioButton aRBASCII;
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void * );
+
+public:
+ DlgExportEPPM( FltCallDialogParameter& rPara );
+ ~DlgExportEPPM();
+};
+
+#endif // _DLGEPPM_HXX_
diff --git a/filter/source/graphicfilter/eppm/dlgeppm.src b/filter/source/graphicfilter/eppm/dlgeppm.src
new file mode 100644
index 000000000000..bf6c6ec653cb
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/dlgeppm.src
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgeppm.hrc"
+ModalDialog DLG_EXPORT_EPPM
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 133 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "PPM Options" ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 73 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 73 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 73 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedLine GRP_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 60 , 8 ) ;
+ Text [ en-US ] = "File format";
+ };
+ RadioButton RB_RAW
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Binary";
+ };
+ RadioButton RB_ASCII
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Text";
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/eppm/eppm.cxx b/filter/source/graphicfilter/eppm/eppm.cxx
new file mode 100644
index 000000000000..bef9ce9d3077
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/eppm.cxx
@@ -0,0 +1,305 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/svapp.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <vcl/msgbox.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include "strings.hrc"
+#include "dlgeppm.hrc"
+#include "dlgeppm.hxx"
+
+//============================ PPMWriter ==================================
+
+class PPMWriter {
+
+private:
+
+ SvStream* mpOStm; // Die auszugebende PPM-Datei
+ USHORT mpOStmOldModus;
+
+ BOOL mbStatus;
+ sal_Int32 mnMode;
+ BitmapReadAccess* mpAcc;
+ ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
+
+ BOOL ImplWriteHeader();
+ void ImplWriteBody();
+ void ImplWriteNumber( sal_Int32 );
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+public:
+ PPMWriter();
+ ~PPMWriter();
+
+ BOOL WritePPM( const Graphic& rGraphic, SvStream& rPPM, FilterConfigItem* pFilterConfigItem );
+};
+
+//=================== Methoden von PPMWriter ==============================
+
+PPMWriter::PPMWriter() :
+ mbStatus ( TRUE ),
+ mpAcc ( NULL )
+{
+}
+
+// ------------------------------------------------------------------------
+
+PPMWriter::~PPMWriter()
+{
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PPMWriter::WritePPM( const Graphic& rGraphic, SvStream& rPPM, FilterConfigItem* pFilterConfigItem )
+{
+
+ mpOStm = &rPPM;
+
+ if ( pFilterConfigItem )
+ {
+ mnMode = pFilterConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "FileFormat" ) ), 0 );
+
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
+ Bitmap aBmp = aBmpEx.GetBitmap();
+ aBmp.Convert( BMP_CONVERSION_24BIT );
+
+ mpOStmOldModus = mpOStm->GetNumberFormatInt();
+ mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ mpAcc = aBmp.AcquireReadAccess();
+ if( mpAcc )
+ {
+ if ( ImplWriteHeader() )
+ {
+ ImplWriteBody();
+ }
+ aBmp.ReleaseAccess( mpAcc );
+ }
+ else
+ mbStatus = FALSE;
+
+ mpOStm->SetNumberFormatInt( mpOStmOldModus );
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PPMWriter::ImplWriteHeader()
+{
+ mnWidth = mpAcc->Width();
+ mnHeight = mpAcc->Height();
+ if ( mnWidth && mnHeight )
+ {
+ if ( mnMode == 0 )
+ *mpOStm << "P6\x0a";
+ else
+ *mpOStm << "P3\x0a";
+
+ ImplWriteNumber( mnWidth );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( mnHeight );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( 255 ); // max. col.
+ *mpOStm << (BYTE)10;
+ }
+ else
+ mbStatus = FALSE;
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void PPMWriter::ImplWriteBody()
+{
+ if ( mnMode == 0 )
+ {
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ for ( ULONG x = 0; x < mnWidth; x++ )
+ {
+ const BitmapColor& rColor = mpAcc->GetPixel( y, x );
+ *mpOStm << rColor.GetRed();
+ *mpOStm << rColor.GetGreen();
+ *mpOStm << rColor.GetBlue();
+ }
+ }
+ }
+ else
+ {
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ int nCount = 70;
+ for ( ULONG x = 0; x < mnWidth; x++ )
+ {
+ BYTE i, nDat[3], nNumb;
+ if ( nCount < 0 )
+ {
+ nCount = 69;
+ *mpOStm << (BYTE)10;
+ }
+ nDat[0] = mpAcc->GetPixel( y, x ).GetRed();
+ nDat[1] = mpAcc->GetPixel( y, x ).GetGreen();
+ nDat[2] = mpAcc->GetPixel( y, x ).GetBlue();
+ for ( i = 0; i < 3; i++ )
+ {
+ nNumb = nDat[ i ] / 100;
+ if ( nNumb )
+ {
+ *mpOStm << (BYTE)( nNumb + '0' );
+ nDat[ i ] -= ( nNumb * 100 );
+ nNumb = nDat[ i ] / 10;
+ *mpOStm << (BYTE)( nNumb + '0' );
+ nDat[ i ] -= ( nNumb * 10 );
+ *mpOStm << (BYTE)( nDat[ i ] + '0' );
+ nCount -= 4;
+ }
+ else
+ {
+ nNumb = nDat[ i ] / 10;
+ if ( nNumb )
+ {
+ *mpOStm << (BYTE)( nNumb + '0' );
+ nDat[ i ] -= ( nNumb * 10 );
+ *mpOStm << (BYTE)( nDat[ i ] + '0' );
+ nCount -= 3;
+ }
+ else
+ {
+ *mpOStm << (BYTE)( nDat[ i ] + '0' );
+ nCount -= 2;
+ }
+ }
+ *mpOStm << (BYTE)' ';
+ }
+ }
+ *mpOStm << (BYTE)10;
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
+
+void PPMWriter::ImplWriteNumber( sal_Int32 nNumber )
+{
+ const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
+
+ for( sal_Int16 n = 0, nLen = aNum.Len(); n < nLen; n++ )
+ *mpOStm << aNum.GetChar( n );
+
+}
+
+// ------------------------------------------------------------------------
+
+// ---------------------
+// - exported function -
+// ---------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{
+ PPMWriter aPPMWriter;
+ return aPPMWriter.WritePPM( rGraphic, rStream, pFilterConfigItem );
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "epp" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEPPM( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+#ifndef GCC
+#endif
+
+// ------------------------------------------------------------------------
+
+// ---------------
+// - Win16 trash -
+// ---------------
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+ if ( nHeap )
+ UnlockData( 0 );
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/eppm/eppmstr.src b/filter/source/graphicfilter/eppm/eppmstr.src
new file mode 100644
index 000000000000..8424505dbcd1
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/eppmstr.src
@@ -0,0 +1,35 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "strings.hrc"
+
+// Key fuer den Dialog
+String KEY_FORMAT
+{
+ Text = "FileFormat";
+};
diff --git a/filter/source/graphicfilter/eppm/exports.map b/filter/source/graphicfilter/eppm/exports.map
new file mode 100644
index 000000000000..0462b75b7b43
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/exports.map
@@ -0,0 +1,8 @@
+PPMEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/eppm/makefile.mk b/filter/source/graphicfilter/eppm/makefile.mk
new file mode 100644
index 000000000000..44e6ca11d34a
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/makefile.mk
@@ -0,0 +1,76 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=eppm
+TARGET2=epp
+DEPTARGET=veppm
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES= dlgeppm.src \
+ eppmstr.src
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/eppm.obj \
+ $(SLO)$/dlgeppm.obj
+.ENDIF
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET2)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
+SHL1TARGET= epp$(DLLPOSTFIX)
+SHL1IMPLIB= eppm
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/eppm.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/eppm.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/eppm/strings.hrc b/filter/source/graphicfilter/eppm/strings.hrc
new file mode 100644
index 000000000000..122719e87d4b
--- /dev/null
+++ b/filter/source/graphicfilter/eppm/strings.hrc
@@ -0,0 +1,27 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define KEY_FORMAT 256
diff --git a/filter/source/graphicfilter/eps/dlgeps.cxx b/filter/source/graphicfilter/eps/dlgeps.cxx
new file mode 100644
index 000000000000..c6f2abba5912
--- /dev/null
+++ b/filter/source/graphicfilter/eps/dlgeps.cxx
@@ -0,0 +1,206 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#ifndef GCC
+#endif
+
+#include <tools/ref.hxx>
+#include <vcl/msgbox.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include "dlgeps.hxx"
+#include "dlgeps.hrc"
+#include "strings.hrc"
+
+/*************************************************************************
+|*
+|* Ctor
+|*
+\************************************************************************/
+
+DlgExportEPS::DlgExportEPS( FltCallDialogParameter& rPara ) :
+ ModalDialog ( rPara.pWindow, ResId( DLG_EXPORT_EPS, *rPara.pResMgr ) ),
+ rFltCallPara ( rPara ),
+ aGrpPreview ( this, ResId( GRP_PREVIEW, *rPara.pResMgr ) ),
+ aCBPreviewTiff ( this, ResId( CB_PREVIEW_TIFF, *rPara.pResMgr ) ),
+ aCBPreviewEPSI ( this, ResId( CB_PREVIEW_EPSI, *rPara.pResMgr ) ),
+ aGrpVersion ( this, ResId( GRP_VERSION, *rPara.pResMgr ) ),
+ aRBLevel1 ( this, ResId( RB_LEVEL1, *rPara.pResMgr ) ),
+ aRBLevel2 ( this, ResId( RB_LEVEL2, *rPara.pResMgr ) ),
+ aGrpColor ( this, ResId( GRP_COLOR, *rPara.pResMgr ) ),
+ aRBColor ( this, ResId( RB_COLOR, *rPara.pResMgr ) ),
+ aRBGrayscale ( this, ResId( RB_GRAYSCALE, *rPara.pResMgr ) ),
+ aGrpCompression ( this, ResId( GRP_COMPRESSION, *rPara.pResMgr ) ),
+ aRBCompressionLZW ( this, ResId( RB_COMPRESSION_LZW, *rPara.pResMgr ) ),
+ aRBCompressionNone ( this, ResId( RB_COMPRESSION_NONE, *rPara.pResMgr ) ),
+ aBtnOK ( this, ResId( BTN_OK, *rPara.pResMgr ) ),
+ aBtnCancel ( this, ResId( BTN_CANCEL, *rPara.pResMgr ) ),
+ aBtnHelp ( this, ResId( BTN_HELP, *rPara.pResMgr ) ),
+ pMgr ( rPara.pResMgr )
+{
+ FreeResource();
+
+ String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Export/EPS" ) );
+ pConfigItem = new FilterConfigItem( aFilterConfigPath, &rPara.aFilterData );
+
+ // Config-Parameter lesen
+ String sPreview( RTL_CONSTASCII_USTRINGPARAM( "Preview" ) );
+ String sVersion( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
+ String sColorFormat( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
+ String sCompressionMode( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
+ String sTextMode( RTL_CONSTASCII_USTRINGPARAM( "TextMode" ) );
+
+ sal_Int32 nPreview = pConfigItem->ReadInt32( sPreview, 0 );
+ sal_Int32 nVersion = pConfigItem->ReadInt32( sVersion, 2 );
+ sal_Int32 nColor = pConfigItem->ReadInt32( sColorFormat, 0 );
+ sal_Int32 nCompr = pConfigItem->ReadInt32( sCompressionMode, 2 );
+
+ /* SJ: The following line is not superfluous, reading the item will also #106652#
+ create the corresponding FilterData Property. Since all filter
+ are no longer accessing the configuration itself, we have fill the
+ FilterData sequence with all available configuration items */
+ pConfigItem->ReadInt32( sTextMode, 0 );
+
+ BOOL bCheck = FALSE;
+ if ( nPreview & 1 )
+ bCheck = TRUE;
+ aCBPreviewTiff.Check( bCheck );
+ if ( nPreview & 2 )
+ bCheck = TRUE;
+ aCBPreviewEPSI.Check( bCheck );
+
+ bCheck = FALSE;
+ if ( nVersion == 1 )
+ bCheck ^= TRUE;
+ aRBLevel1.Check( bCheck );
+ bCheck ^= TRUE;
+ aRBLevel2.Check( bCheck );
+
+ bCheck = FALSE;
+ if ( nColor == 1 )
+ bCheck ^= TRUE;
+ aRBColor.Check( bCheck );
+ bCheck ^= TRUE;
+ aRBGrayscale.Check( bCheck );
+
+ bCheck = FALSE;
+ if ( nCompr == 1 )
+ bCheck ^= TRUE;
+ aRBCompressionLZW.Check( bCheck );
+ bCheck ^= TRUE;
+ aRBCompressionNone.Check( bCheck );
+
+ if ( aRBLevel1.IsChecked() )
+ {
+ aRBColor.Disable();
+ aRBGrayscale.Disable();
+ aRBCompressionNone.Disable();
+ aRBCompressionLZW.Disable();
+ aRBCompressionNone.Disable();
+ }
+
+ aBtnOK.SetClickHdl( LINK( this, DlgExportEPS, OK ) );
+ aRBLevel1.SetClickHdl( LINK( this, DlgExportEPS, LEVEL1 ) );
+ aRBLevel2.SetClickHdl( LINK( this, DlgExportEPS, LEVEL2 ) );
+}
+
+DlgExportEPS::~DlgExportEPS()
+{
+ delete pConfigItem;
+}
+
+/*************************************************************************
+|*
+|* Speichert eingestellte Werte in ini-Datei
+|*
+\************************************************************************/
+
+IMPL_LINK( DlgExportEPS, OK, void *, EMPTYARG )
+{
+
+ // Config-Parameter schreiben
+ sal_Int32 nCheck = 0;
+ if ( aCBPreviewTiff.IsChecked() )
+ nCheck++;
+ if ( aCBPreviewEPSI.IsChecked() )
+ nCheck += 2;
+
+ String sPreview( RTL_CONSTASCII_USTRINGPARAM( "Preview" ) );
+ pConfigItem->WriteInt32( sPreview, nCheck );
+
+ nCheck = 1;
+ if ( aRBLevel2.IsChecked() )
+ nCheck++;
+ String sVersion( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
+ pConfigItem->WriteInt32( sVersion, nCheck );
+
+ nCheck = 1;
+ if ( aRBGrayscale.IsChecked() )
+ nCheck++;
+ String sColorFormat( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
+ pConfigItem->WriteInt32( sColorFormat, nCheck );
+
+ nCheck = 1;
+ if ( aRBCompressionNone.IsChecked() )
+ nCheck++;
+ String sCompressionMode( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
+ pConfigItem->WriteInt32( sCompressionMode, nCheck );
+
+ rFltCallPara.aFilterData = pConfigItem->GetFilterData();
+ EndDialog( RET_OK );
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( DlgExportEPS, LEVEL1, void*, EMPTYARG )
+{
+ if ( aRBLevel1.IsChecked() )
+ {
+ aRBColor.Disable();
+ aRBGrayscale.Disable();
+ aRBCompressionLZW.Disable();
+ aRBCompressionNone.Disable();
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( DlgExportEPS, LEVEL2, void*, EMPTYARG )
+{
+ if ( aRBLevel2.IsChecked() )
+ {
+ aRBColor.Enable();
+ aRBGrayscale.Enable();
+ aRBCompressionLZW.Enable();
+ aRBCompressionNone.Enable();
+ }
+ return 0;
+}
diff --git a/filter/source/graphicfilter/eps/dlgeps.hrc b/filter/source/graphicfilter/eps/dlgeps.hrc
new file mode 100644
index 000000000000..061c8b2db6cb
--- /dev/null
+++ b/filter/source/graphicfilter/eps/dlgeps.hrc
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#include "filter.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define GRP_PREVIEW 1
+#define GRP_VERSION 2
+#define GRP_COLOR 3
+#define GRP_COMPRESSION 4
+#define CB_PREVIEW_TIFF 1
+#define CB_PREVIEW_EPSI 2
+#define RB_LEVEL1 1
+#define RB_LEVEL2 2
+#define RB_COLOR 3
+#define RB_GRAYSCALE 4
+#define RB_COMPRESSION_LZW 5
+#define RB_COMPRESSION_NONE 6
diff --git a/filter/source/graphicfilter/eps/dlgeps.hxx b/filter/source/graphicfilter/eps/dlgeps.hxx
new file mode 100644
index 000000000000..ada390b44e87
--- /dev/null
+++ b/filter/source/graphicfilter/eps/dlgeps.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * 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 _DLGEPS_HXX_
+#define _DLGEPS_HXX_
+#include <svtools/fltcall.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#include <vcl/lstbox.hxx>
+#include <svtools/stdctrl.hxx>
+
+
+/*************************************************************************
+|*
+|* Dialog zum Einstellen von Filteroptionen
+|*
+\************************************************************************/
+
+class FilterConfigItem;
+class ResMgr;
+
+class DlgExportEPS : public ModalDialog
+{
+private:
+
+ FltCallDialogParameter& rFltCallPara;
+
+ FixedLine aGrpPreview;
+ CheckBox aCBPreviewTiff;
+ CheckBox aCBPreviewEPSI;
+ FixedLine aGrpVersion;
+ RadioButton aRBLevel1;
+ RadioButton aRBLevel2;
+ FixedLine aGrpColor;
+ RadioButton aRBColor;
+ RadioButton aRBGrayscale;
+ FixedLine aGrpCompression;
+ RadioButton aRBCompressionLZW;
+ RadioButton aRBCompressionNone;
+ OKButton aBtnOK;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ FilterConfigItem* pConfigItem;
+ ResMgr* pMgr;
+
+ DECL_LINK( OK, void * );
+ DECL_LINK( LEVEL1, void* );
+ DECL_LINK( LEVEL2, void* );
+
+public:
+ DlgExportEPS( FltCallDialogParameter& rPara );
+ ~DlgExportEPS();
+};
+
+#endif // _DLGEPS_HXX_
diff --git a/filter/source/graphicfilter/eps/dlgeps.src b/filter/source/graphicfilter/eps/dlgeps.src
new file mode 100644
index 000000000000..31ddccd5be4f
--- /dev/null
+++ b/filter/source/graphicfilter/eps/dlgeps.src
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "dlgeps.hrc"
+ModalDialog DLG_EXPORT_EPS
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 230, 161 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Text [ en-US ] = "EPS Export Options";
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 174 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 174, 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 174 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+
+ FixedLine GRP_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 162 , 8 ) ;
+ Text [ en-US ] = "Preview";
+ };
+ CheckBox CB_PREVIEW_TIFF
+ {
+ Pos = MAP_APPFONT ( 12, 14 ) ;
+ Size = MAP_APPFONT ( 150 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Image ~preview (TIFF)";
+ };
+ CheckBox CB_PREVIEW_EPSI
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 150, 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Interchange (EPSI)";
+ };
+ FixedLine GRP_VERSION
+ {
+ Pos = MAP_APPFONT ( 6, 41 ) ;
+ Size = MAP_APPFONT ( 162 , 8 ) ;
+ Text [ en-US ] = "Version";
+ };
+ RadioButton RB_LEVEL1
+ {
+ Pos = MAP_APPFONT ( 12 , 52 ) ;
+ Size = MAP_APPFONT ( 150 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Level ~1";
+ };
+ RadioButton RB_LEVEL2
+ {
+ Pos = MAP_APPFONT ( 12 , 66 ) ;
+ Size = MAP_APPFONT ( 150, 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Level ~2";
+ };
+
+ FixedLine GRP_COLOR
+ {
+ Pos = MAP_APPFONT ( 6 , 79 ) ;
+ Size = MAP_APPFONT ( 162 , 8 ) ;
+ Text [ en-US ] = "Color format";
+ };
+ RadioButton RB_COLOR
+ {
+ Pos = MAP_APPFONT ( 12 , 90 ) ;
+ Size = MAP_APPFONT ( 150, 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Color";
+ };
+ RadioButton RB_GRAYSCALE
+ {
+ Pos = MAP_APPFONT ( 12 , 104 ) ;
+ Size = MAP_APPFONT ( 150, 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Grayscale";
+ };
+
+ FixedLine GRP_COMPRESSION
+ {
+ Pos = MAP_APPFONT ( 6 , 117 ) ;
+ Size = MAP_APPFONT ( 162 , 8 ) ;
+ Text [ en-US ] = "Compression";
+ };
+ RadioButton RB_COMPRESSION_LZW
+ {
+ Pos = MAP_APPFONT ( 12, 128 );
+ Size = MAP_APPFONT ( 150, 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "LZW encoding";
+ };
+ RadioButton RB_COMPRESSION_NONE
+ {
+ Pos = MAP_APPFONT ( 12, 141 ) ;
+ Size = MAP_APPFONT ( 150, 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "None";
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/eps/eps.cxx b/filter/source/graphicfilter/eps/eps.cxx
new file mode 100644
index 000000000000..5e221b58c72e
--- /dev/null
+++ b/filter/source/graphicfilter/eps/eps.cxx
@@ -0,0 +1,2793 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/sv.h>
+#include <tools/stream.hxx>
+#include <tools/bigint.hxx>
+#include <tools/poly.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/metaact.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <vcl/region.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/font.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <vcl/gradient.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+#include <vcl/graphictools.hxx>
+#include "strings.hrc"
+#include "dlgeps.hrc"
+#include "dlgeps.hxx"
+
+#include <math.h>
+
+#define POSTSCRIPT_BOUNDINGSEARCH 0x1000 // we only try to get the BoundingBox
+ // in the first 4096 bytes
+
+#define EPS_PREVIEW_TIFF 1
+#define EPS_PREVIEW_EPSI 2
+
+#define PS_LINESIZE 70 // maximum number of characters a line in the output
+
+#define PS_NONE 0 // formating mode: action which is inserted behind the output
+#define PS_SPACE 1
+#define PS_RET 2
+#define PS_WRAP 4
+
+// -----------------------------Feld-Typen-------------------------------
+
+struct ChrSet
+{
+ struct ChrSet * pSucc;
+ BYTE nSet;
+ String aName;
+ FontWeight eWeight;
+};
+
+struct StackMember
+{
+ struct StackMember * pSucc;
+ Color aGlobalCol;
+ BOOL bLineCol;
+ Color aLineCol;
+ BOOL bFillCol;
+ Color aFillCol;
+ Color aTextCol;
+ BOOL bTextFillCol;
+ Color aTextFillCol;
+ Color aBackgroundCol;
+ Font aFont;
+ TextAlign eTextAlign;
+
+ double fLineWidth;
+ double fMiterLimit;
+ SvtGraphicStroke::CapType eLineCap;
+ SvtGraphicStroke::JoinType eJoinType;
+ SvtGraphicStroke::DashArray aDashArray;
+};
+
+struct PSLZWCTreeNode
+{
+
+ PSLZWCTreeNode* pBrother; // naechster Knoten, der den selben Vater hat
+ PSLZWCTreeNode* pFirstChild; // erster Sohn
+ USHORT nCode; // Der Code fuer den String von Pixelwerten, der sich ergibt, wenn
+ USHORT nValue; // Der Pixelwert
+};
+
+class PSWriter
+{
+private:
+ BOOL mbStatus;
+ ULONG mnLevelWarning; // number of embedded eps files which was not exported
+ ULONG mnLastPercent; // Mit welcher Zahl pCallback zuletzt aufgerufen wurde.
+ UINT32 mnLatestPush; // offset auf streamposition, an der zuletzt gepusht wurde
+
+ long mnLevel; // dialog options
+ sal_Bool mbGrayScale;
+ sal_Bool mbCompression;
+ sal_Int32 mnPreview;
+ sal_Int32 mnTextMode;
+
+ SvStream* mpPS;
+ const GDIMetaFile* pMTF;
+ GDIMetaFile* pAMTF; // only created if Graphics is not a Metafile
+ VirtualDevice aVDev;
+
+ double nBoundingX1; // this represents the bounding box
+ double nBoundingY1;
+ double nBoundingX2;
+ double nBoundingY2;
+ //
+ StackMember* pGDIStack;
+ ULONG mnCursorPos; // aktuelle Cursorposition im Output
+ Color aColor; // aktuelle Farbe die fuer den Output benutzt wird
+ BOOL bLineColor;
+ Color aLineColor; // aktuelle GDIMetafile Farbeinstellungen
+ BOOL bFillColor; //
+ Color aFillColor; //
+ Color aTextColor; //
+ BOOL bTextFillColor; //
+ Color aTextFillColor; //
+ Color aBackgroundColor; //
+ BOOL bRegionChanged;
+ TextAlign eTextAlign; //
+
+ double fLineWidth;
+ double fMiterLimit;
+ SvtGraphicStroke::CapType eLineCap;
+ SvtGraphicStroke::JoinType eJoinType;
+ SvtGraphicStroke::DashArray aDashArray;
+
+ Font maFont;
+ Font maLastFont;
+ BYTE nChrSet;
+ ChrSet* pChrSetList; // Liste der Character-Sets
+ BYTE nNextChrSetId; // die erste unbenutzte ChrSet-Id
+
+ PSLZWCTreeNode* pTable; // LZW compression data
+ PSLZWCTreeNode* pPrefix; // the compression is as same as the TIFF compression
+ USHORT nDataSize;
+ USHORT nClearCode;
+ USHORT nEOICode;
+ USHORT nTableSize;
+ USHORT nCodeSize;
+ ULONG nOffset;
+ ULONG dwShift;
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+ void ImplWriteProlog( const Graphic* pPreviewEPSI = NULL );
+ void ImplWriteEpilog();
+ void ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev );
+
+ // this method makes LF's, space inserting and word wrapping as used in all nMode
+ // parameters
+ inline void ImplExecMode( ULONG nMode );
+
+ // writes char[] + LF to stream
+ inline void ImplWriteLine( const char*, ULONG nMode = PS_RET );
+
+ // writes ( nNumb / 10^nCount ) in ASCII format to stream
+ void ImplWriteF( sal_Int32 nNumb, ULONG nCount = 3, ULONG nMode = PS_SPACE );
+
+ // writes a double in ASCII format to stream
+ void ImplWriteDouble( double, ULONG nMode = PS_SPACE );
+
+ // writes a long in ASCII format to stream
+ void ImplWriteLong( sal_Int32 nNumb, ULONG nMode = PS_SPACE );
+
+ // writes a byte in ASCII format to stream
+ void ImplWriteByte( BYTE nNumb, ULONG nMode = PS_SPACE );
+
+ // writes a byte in ASCII (hex) format to stream
+ void ImplWriteHexByte( BYTE nNumb, ULONG nMode = PS_WRAP );
+
+ // writes nNumb as number from 0.000 till 1.000 in ASCII format to stream
+ void ImplWriteB1( BYTE nNumb, ULONG nMode = PS_SPACE );
+
+ inline void ImplWritePoint( const Point&, sal_uInt32 nMode = PS_SPACE );
+ void ImplMoveTo( const Point&, sal_uInt32 nMode = PS_SPACE );
+ void ImplLineTo( const Point&, sal_uInt32 nMode = PS_SPACE );
+ void ImplCurveTo( const Point& rP1, const Point& rP2, const Point& rP3, sal_uInt32 nMode = PS_SPACE );
+ void ImplTranslate( const double& fX, const double& fY, sal_uInt32 nMode = PS_RET );
+ void ImplScale( const double& fX, const double& fY, sal_uInt32 nMode = PS_RET );
+
+ void ImplWriteLine( const Polygon & rPolygon );
+ void ImplAddPath( const Polygon & rPolygon );
+ void ImplWriteLineInfo( double fLineWidth, double fMiterLimit, SvtGraphicStroke::CapType eLineCap,
+ SvtGraphicStroke::JoinType eJoinType, SvtGraphicStroke::DashArray& rDashArray );
+ void ImplWriteLineInfo( const LineInfo& rLineInfo );
+ void ImplRect( const Rectangle & rRectangle );
+ void ImplRectFill ( const Rectangle & rRectangle );
+ void ImplWriteGradient( const PolyPolygon& rPolyPoly, const Gradient& rGradient, VirtualDevice& rVDev );
+ void ImplIntersect( const PolyPolygon& rPolyPoly );
+ void ImplPolyPoly( const PolyPolygon & rPolyPolygon, sal_Bool bTextOutline = sal_False );
+ void ImplPolyLine( const Polygon & rPolygon );
+
+ void ImplSetClipRegion( Region& rRegion );
+ void ImplBmp( Bitmap*, Bitmap*, const Point &, double nWidth, double nHeight );
+ void ImplText( const String& rUniString, const Point& rPos, const INT32* pDXArry, sal_Int32 nWidth, VirtualDevice& rVDev );
+ void ImplSetAttrForText( const Point & rPoint );
+ void ImplWriteCharacter( sal_Char );
+ void ImplWriteString( const ByteString&, VirtualDevice& rVDev, const INT32* pDXArry = NULL, BOOL bStretch = FALSE );
+ void ImplDefineFont( const char*, const char* );
+
+ void ImplClosePathDraw( ULONG nMode = PS_RET );
+ void ImplPathDraw();
+
+ inline void ImplWriteLineColor( ULONG nMode = PS_RET );
+ inline void ImplWriteFillColor( ULONG nMode = PS_RET );
+ inline void ImplWriteTextColor( ULONG nMode = PS_RET );
+ inline void ImplWriteTextFillColor( ULONG nMode = PS_RET );
+ void ImplWriteColor( ULONG nMode );
+
+ double ImplGetScaling( const MapMode& );
+ void ImplGetMapMode( const MapMode& );
+ BOOL ImplGetBoundingBox( double* nNumb, BYTE* pSource, ULONG nSize );
+ BYTE* ImplSearchEntry( BYTE* pSource, BYTE* pDest, ULONG nComp, ULONG nSize );
+ // LZW methods
+ void StartCompression();
+ void Compress( BYTE nSrc );
+ void EndCompression();
+ inline void WriteBits( USHORT nCode, USHORT nCodeLen );
+
+public:
+ BOOL WritePS( const Graphic& rGraphic, SvStream& rTargetStream, FilterConfigItem* );
+ PSWriter();
+ ~PSWriter();
+};
+
+//========================== Methoden von PSWriter ==========================
+
+//---------------------------------------------------------------------------------
+
+PSWriter::PSWriter()
+{
+ pAMTF = NULL;
+}
+
+
+PSWriter::~PSWriter()
+{
+ delete pAMTF;
+}
+
+//---------------------------------------------------------------------------------
+
+BOOL PSWriter::WritePS( const Graphic& rGraphic, SvStream& rTargetStream, FilterConfigItem* pFilterConfigItem )
+{
+ UINT32 nStreamPosition = 0, nPSPosition = 0; // -Wall warning, unset, check
+
+ mbStatus = TRUE;
+ mnPreview = 0;
+ mnLevelWarning = 0;
+ mnLastPercent = 0;
+ mnLatestPush = 0xEFFFFFFE;
+
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ mpPS = &rTargetStream;
+ mpPS->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ // default values for the dialog options
+ mnLevel = 2;
+ mbGrayScale = FALSE;
+ mbCompression = TRUE;
+ mnTextMode = 0; // default0 : export glyph outlines
+
+ // try to get the dialog selection
+ if ( pFilterConfigItem )
+ {
+ ByteString aResMgrName( "eps" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ String aPreviewStr( RTL_CONSTASCII_USTRINGPARAM( "Preview" ) );
+ String aVersionStr( RTL_CONSTASCII_USTRINGPARAM( "Version" ) );
+ String aColorStr( RTL_CONSTASCII_USTRINGPARAM( "ColorFormat" ) );
+ String aComprStr( RTL_CONSTASCII_USTRINGPARAM( "CompressionMode" ) );
+ mnPreview = pFilterConfigItem->ReadInt32( aPreviewStr, 1 );
+ mnLevel = pFilterConfigItem->ReadInt32( aVersionStr, 2 );
+ if ( mnLevel != 1 )
+ mnLevel = 2;
+ mbGrayScale = pFilterConfigItem->ReadInt32( aColorStr, 1 ) == 2;
+ mbCompression = pFilterConfigItem->ReadInt32( aComprStr, 1 ) == 1;
+ String sTextMode( RTL_CONSTASCII_USTRINGPARAM( "TextMode" ) );
+ mnTextMode = pFilterConfigItem->ReadInt32( sTextMode, 0 );
+ if ( mnTextMode > 2 )
+ mnTextMode = 0;
+ delete pResMgr;
+ }
+ }
+
+ // compression is not available for Level 1
+ if ( mnLevel == 1 )
+ {
+ mbGrayScale = TRUE;
+ mbCompression = FALSE;
+ }
+
+ if ( mnPreview & EPS_PREVIEW_TIFF )
+ {
+ rTargetStream << (UINT32)0xC6D3D0C5;
+ nStreamPosition = rTargetStream.Tell();
+ rTargetStream << (UINT32)0 << (UINT32)0 << (UINT32)0 << (UINT32)0
+ << nStreamPosition + 26 << (UINT32)0 << (UINT16)0xffff;
+
+ UINT32 nErrCode;
+ if ( mbGrayScale )
+ {
+ BitmapEx aTempBitmapEx( rGraphic.GetBitmapEx() );
+ aTempBitmapEx.Convert( BMP_CONVERSION_8BIT_GREYS );
+ nErrCode = GraphicConverter::Export( rTargetStream, aTempBitmapEx, CVT_TIF ) ;
+ }
+ else
+ nErrCode = GraphicConverter::Export( rTargetStream, rGraphic, CVT_TIF ) ;
+
+ if ( nErrCode == ERRCODE_NONE )
+ {
+ rTargetStream.Seek( STREAM_SEEK_TO_END );
+ nPSPosition = rTargetStream.Tell();
+ rTargetStream.Seek( nStreamPosition + 20 );
+ rTargetStream << nPSPosition - 30; // size of tiff gfx
+ rTargetStream.Seek( nPSPosition );
+ }
+ else
+ {
+ mnPreview &=~ EPS_PREVIEW_TIFF;
+ rTargetStream.Seek( nStreamPosition - 4 );
+ }
+ }
+
+ // global default value setting
+ ChrSet* pCS;
+ StackMember* pGS;
+
+ if ( rGraphic.GetType() == GRAPHIC_GDIMETAFILE )
+ pMTF = &rGraphic.GetGDIMetaFile();
+ else
+ pMTF = pAMTF = new GDIMetaFile( rGraphic.GetGDIMetaFile() );
+ aVDev.SetMapMode( pMTF->GetPrefMapMode() );
+ nBoundingX1 = nBoundingY1 = 0;
+ nBoundingX2 = pMTF->GetPrefSize().Width();
+ nBoundingY2 = pMTF->GetPrefSize().Height();
+
+ pGDIStack = NULL;
+ aColor = Color( COL_TRANSPARENT );
+ bLineColor = TRUE;
+ aLineColor = Color( COL_BLACK );
+ bFillColor = TRUE;
+ aFillColor = Color( COL_WHITE );
+ bTextFillColor = TRUE;
+ aTextFillColor = Color( COL_BLACK );
+ fLineWidth = 1;
+ fMiterLimit = 15; // use same limit as most graphic systems and basegfx
+ eLineCap = SvtGraphicStroke::capButt;
+ eJoinType = SvtGraphicStroke::joinMiter;
+ aBackgroundColor = Color( COL_WHITE );
+ eTextAlign = ALIGN_BASELINE;
+ bRegionChanged = FALSE;
+
+ nChrSet = 0x00;
+ pChrSetList = NULL;
+ nNextChrSetId = 1;
+
+ if( pMTF->GetActionCount() )
+ {
+ ImplWriteProlog( ( mnPreview & EPS_PREVIEW_EPSI ) ? &rGraphic : NULL );
+ mnCursorPos = 0;
+ ImplWriteActions( *pMTF, aVDev );
+ ImplWriteEpilog();
+ if ( mnPreview & EPS_PREVIEW_TIFF )
+ {
+ UINT32 nPosition = rTargetStream.Tell();
+ rTargetStream.Seek( nStreamPosition );
+ rTargetStream << nPSPosition;
+ rTargetStream << nPosition - nPSPosition;
+ rTargetStream.Seek( nPosition );
+ }
+ while( pChrSetList )
+ {
+ pCS=pChrSetList;
+ pChrSetList=pCS->pSucc;
+ delete pCS;
+ }
+ while( pGDIStack )
+ {
+ pGS=pGDIStack;
+ pGDIStack=pGS->pSucc;
+ delete pGS;
+ }
+ }
+ else
+ mbStatus = FALSE;
+
+ if ( mbStatus && mnLevelWarning && pFilterConfigItem )
+ {
+ ByteString aResMgrName( "eps" );
+ ResMgr* pResMgr;
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+ if( pResMgr )
+ {
+ InfoBox aInfoBox( NULL, String( ResId( KEY_VERSION_CHECK, *pResMgr ) ) );
+ aInfoBox.Execute();
+ delete pResMgr;
+ }
+ }
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteProlog( const Graphic* pPreview )
+{
+ ImplWriteLine( "%!PS-Adobe-3.0 EPSF-3.0 " );
+ *mpPS << "%%BoundingBox: "; // BoundingBox
+ ImplWriteLong( 0 );
+ ImplWriteLong( 0 );
+ Size aSizePoint = Application::GetDefaultDevice()->LogicToLogic( pMTF->GetPrefSize(),
+ pMTF->GetPrefMapMode(), MAP_POINT );
+ ImplWriteLong( aSizePoint.Width() );
+ ImplWriteLong( aSizePoint.Height() ,PS_RET );
+ ImplWriteLine( "%%Pages: 0" );
+ ImplWriteLine( "%%Creator: Sun Microsystems, Inc." );
+ ImplWriteLine( "%%Title: none" );
+ ImplWriteLine( "%%CreationDate: none" );
+
+// defaults
+
+ *mpPS << "%%LanguageLevel: "; // Language level
+ ImplWriteLong( mnLevel, PS_RET );
+ if ( !mbGrayScale && mnLevel == 1 )
+ ImplWriteLine( "%%Extensions: CMYK" ); // CMYK extension is to set in color mode in level 1
+ ImplWriteLine( "%%EndComments" );
+ if ( pPreview && aSizePoint.Width() && aSizePoint.Height() )
+ {
+ Size aSizeBitmap( ( aSizePoint.Width() + 7 ) & ~7, aSizePoint.Height() );
+ Bitmap aTmpBitmap( pPreview->GetBitmap() );
+ aTmpBitmap.Scale( aSizeBitmap, BMP_SCALE_INTERPOLATE );
+ aTmpBitmap.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
+ BitmapReadAccess* pAcc = aTmpBitmap.AcquireReadAccess();
+ if ( pAcc )
+ {
+ *mpPS << "%%BeginPreview: "; // BoundingBox
+ ImplWriteLong( aSizeBitmap.Width() );
+ ImplWriteLong( aSizeBitmap.Height() );
+ *mpPS << "1 ";
+ INT32 nLines = aSizeBitmap.Width() / 312;
+ if ( ( nLines * 312 ) != aSizeBitmap.Width() )
+ nLines++;
+ nLines *= aSizeBitmap.Height();
+ ImplWriteLong( nLines );
+ char nVal;
+ INT32 nX, nY, nCount2, nCount = 4;
+ const BitmapColor aBlack( pAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
+ for ( nY = 0; nY < aSizeBitmap.Height(); nY++ )
+ {
+ nCount2 = 0;
+ nVal = 0;
+ for ( nX = 0; nX < aSizeBitmap.Width(); nX++ )
+ {
+ if ( !nCount2 )
+ {
+ ImplExecMode( PS_RET );
+ *mpPS << "%";
+ nCount2 = 312;
+ }
+ nVal <<= 1;
+ if ( pAcc->GetPixel( nY, nX ) == aBlack )
+ nVal |= 1;
+ if ( ! ( --nCount ) )
+ {
+ if ( nVal > 9 )
+ nVal += 'A' - 10;
+ else
+ nVal += '0';
+ *mpPS << nVal;
+ nVal = 0;
+ nCount += 4;
+ }
+ nCount2--;
+ }
+ }
+ aTmpBitmap.ReleaseAccess( pAcc );
+ ImplExecMode( PS_RET );
+ ImplWriteLine( "%%EndPreview" );
+ }
+ }
+ ImplWriteLine( "%%BeginProlog" );
+ ImplWriteLine( "%%BeginResource: procset SDRes-Prolog 1.0 0" );
+
+// BEGIN EPSF
+ ImplWriteLine( "/b4_inc_state save def\n/dict_count countdictstack def\n/op_count count 1 sub def\nuserdict begin" );
+ ImplWriteLine( "0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath" );
+ ImplWriteLine( "/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if" );
+
+ ImplWriteLine( "/bdef {bind def} bind def" ); // der neue operator bdef wird erzeugt
+ if ( mbGrayScale )
+ ImplWriteLine( "/c {setgray} bdef" );
+ else
+ ImplWriteLine( "/c {setrgbcolor} bdef" );
+ ImplWriteLine( "/l {neg lineto} bdef" );
+ ImplWriteLine( "/rl {neg rlineto} bdef" );
+ ImplWriteLine( "/lc {setlinecap} bdef" );
+ ImplWriteLine( "/lj {setlinejoin} bdef" );
+ ImplWriteLine( "/lw {setlinewidth} bdef" );
+ ImplWriteLine( "/ml {setmiterlimit} bdef" );
+ ImplWriteLine( "/ld {setdash} bdef" );
+ ImplWriteLine( "/m {neg moveto} bdef" );
+ ImplWriteLine( "/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef" );
+ ImplWriteLine( "/r {rotate} bdef" );
+ ImplWriteLine( "/t {neg translate} bdef" );
+ ImplWriteLine( "/s {scale} bdef" );
+ ImplWriteLine( "/sw {show} bdef" );
+ ImplWriteLine( "/gs {gsave} bdef" );
+ ImplWriteLine( "/gr {grestore} bdef" );
+
+ ImplWriteLine( "/f {findfont dup length dict begin" ); // Setfont
+ ImplWriteLine( "{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def" );
+ ImplWriteLine( "currentdict end /NFont exch definefont pop /NFont findfont} bdef" );
+
+ ImplWriteLine( "/p {closepath} bdef" );
+ ImplWriteLine( "/sf {scalefont setfont} bdef" );
+
+ ImplWriteLine( "/ef {eofill}bdef" ); // close path and fill
+ ImplWriteLine( "/pc {closepath stroke}bdef" ); // close path and draw
+ ImplWriteLine( "/ps {stroke}bdef" ); // draw current path
+ ImplWriteLine( "/pum {matrix currentmatrix}bdef" ); // pushes the current matrix
+ ImplWriteLine( "/pom {setmatrix}bdef" ); // pops the matrix
+ ImplWriteLine( "/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef" );
+ ImplWriteLine( "%%EndResource" );
+ ImplWriteLine( "%%EndProlog" );
+ ImplWriteLine( "%%BeginSetup" );
+ ImplWriteLine( "%%EndSetup" );
+ ImplWriteLine( "%%Page: 1 1" );
+ ImplWriteLine( "%%BeginPageSetup" );
+ ImplWriteLine( "%%EndPageSetup" );
+ ImplWriteLine( "pum" );
+ ImplScale( (double)aSizePoint.Width() / (double)pMTF->GetPrefSize().Width(), (double)aSizePoint.Height() / (double)pMTF->GetPrefSize().Height() );
+ ImplWriteDouble( 0 );
+ ImplWriteDouble( -pMTF->GetPrefSize().Height() );
+ ImplWriteLine( "t" );
+ ImplWriteLine( "/tm matrix currentmatrix def" );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteEpilog()
+{
+ ImplTranslate( 0, nBoundingY2 );
+ ImplWriteLine( "pom" );
+ ImplWriteLine( "count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore" );
+
+ ImplWriteLine( "%%PageTrailer" );
+ ImplWriteLine( "%%Trailer" );
+
+ ImplWriteLine( "%%EOF" );
+}
+
+//---------------------------------------------------------------------------------
+//---------------------------------------------------------------------------------
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteActions( const GDIMetaFile& rMtf, VirtualDevice& rVDev )
+{
+ PolyPolygon aFillPath;
+
+ for( ULONG nCurAction = 0, nCount = rMtf.GetActionCount(); nCurAction < nCount; nCurAction++ )
+ {
+ MetaAction* pMA = rMtf.GetAction( nCurAction );
+
+ switch( pMA->GetType() )
+ {
+ case META_NULL_ACTION :
+ break;
+
+ case META_PIXEL_ACTION :
+ {
+ Color aOldLineColor( aLineColor );
+ aLineColor = ( (const MetaPixelAction*) pMA )->GetColor();
+ ImplWriteLineColor( PS_SPACE );
+ ImplMoveTo( ( (const MetaPixelAction*)pMA )->GetPoint() );
+ ImplLineTo( ( (const MetaPixelAction*)pMA )->GetPoint() );
+ ImplPathDraw();
+ aLineColor = aOldLineColor;
+ }
+ break;
+
+ case META_POINT_ACTION :
+ {
+ ImplWriteLineColor( PS_SPACE );
+ ImplMoveTo( ( (const MetaPointAction*)pMA )->GetPoint() );
+ ImplLineTo( ( (const MetaPointAction*)pMA )->GetPoint() );
+ ImplPathDraw();
+ }
+ break;
+
+ case META_LINE_ACTION :
+ {
+ const LineInfo& rLineInfo = ( ( const MetaLineAction*)pMA )->GetLineInfo();
+ ImplWriteLineInfo( rLineInfo );
+ if ( bLineColor )
+ {
+ ImplWriteLineColor( PS_SPACE );
+ ImplMoveTo( ( (const MetaLineAction*) pMA )->GetStartPoint() );
+ ImplLineTo( ( (const MetaLineAction*) pMA )->GetEndPoint() );
+ ImplPathDraw();
+ }
+ }
+ break;
+
+ case META_RECT_ACTION :
+ {
+ ImplRect( ( (const MetaRectAction*) pMA )->GetRect() );
+ }
+ break;
+
+ case META_ROUNDRECT_ACTION :
+ ImplRect( ( (const MetaRoundRectAction*) pMA )->GetRect() );
+ break;
+
+ case META_ELLIPSE_ACTION :
+ {
+ Rectangle aRect = ( ( (const MetaEllipseAction*) pMA )->GetRect() );
+ Point aCenter = aRect.Center();
+ Polygon aPoly( aCenter, aRect.GetWidth() / 2, aRect.GetHeight() / 2 );
+ PolyPolygon aPolyPoly( aPoly );
+ ImplPolyPoly( aPolyPoly );
+ }
+ break;
+
+ case META_ARC_ACTION :
+ {
+ Polygon aPoly( ( (const MetaArcAction*)pMA )->GetRect(), ( (const MetaArcAction*)pMA )->GetStartPoint(),
+ ( (const MetaArcAction*)pMA )->GetEndPoint(), POLY_ARC );
+ PolyPolygon aPolyPoly( aPoly );
+ ImplPolyPoly( aPolyPoly );
+ }
+ break;
+
+ case META_PIE_ACTION :
+ {
+ Polygon aPoly( ( (const MetaPieAction*)pMA )->GetRect(), ( (const MetaPieAction*)pMA )->GetStartPoint(),
+ ( (const MetaPieAction*)pMA )->GetEndPoint(), POLY_PIE );
+ PolyPolygon aPolyPoly( aPoly );
+ ImplPolyPoly( aPolyPoly );
+ }
+ break;
+
+ case META_CHORD_ACTION :
+ {
+ Polygon aPoly( ( (const MetaChordAction*)pMA )->GetRect(), ( (const MetaChordAction*)pMA )->GetStartPoint(),
+ ( (const MetaChordAction*)pMA )->GetEndPoint(), POLY_CHORD );
+ PolyPolygon aPolyPoly( aPoly );
+ ImplPolyPoly( aPolyPoly );
+ }
+ break;
+
+ case META_POLYLINE_ACTION :
+ {
+ Polygon aPoly( ( (const MetaPolyLineAction*) pMA )->GetPolygon() );
+ const LineInfo& rLineInfo = ( ( const MetaPolyLineAction*)pMA )->GetLineInfo();
+ ImplWriteLineInfo( rLineInfo );
+
+ if(basegfx::B2DLINEJOIN_NONE == rLineInfo.GetLineJoin()
+ && rLineInfo.GetWidth() > 1)
+ {
+ // emulate B2DLINEJOIN_NONE by creating single edges
+ const sal_uInt16 nPoints(aPoly.GetSize());
+ const bool bCurve(aPoly.HasFlags());
+
+ for(sal_uInt16 a(0); a + 1 < nPoints; a++)
+ {
+ if(bCurve
+ && POLY_NORMAL != aPoly.GetFlags(a + 1)
+ && a + 2 < nPoints
+ && POLY_NORMAL != aPoly.GetFlags(a + 2)
+ && a + 3 < nPoints)
+ {
+ const Polygon aSnippet(4,
+ aPoly.GetConstPointAry() + a,
+ aPoly.GetConstFlagAry() + a);
+ ImplPolyLine(aSnippet);
+ a += 2;
+ }
+ else
+ {
+ const Polygon aSnippet(2,
+ aPoly.GetConstPointAry() + a);
+ ImplPolyLine(aSnippet);
+ }
+ }
+ }
+ else
+ {
+ ImplPolyLine( aPoly );
+ }
+ }
+ break;
+
+ case META_POLYGON_ACTION :
+ {
+ PolyPolygon aPolyPoly( ( (const MetaPolygonAction*) pMA )->GetPolygon() );
+ ImplPolyPoly( aPolyPoly );
+ }
+ break;
+
+ case META_POLYPOLYGON_ACTION :
+ {
+ ImplPolyPoly( ( (const MetaPolyPolygonAction*) pMA )->GetPolyPolygon() );
+ }
+ break;
+
+ case META_TEXT_ACTION:
+ {
+ const MetaTextAction * pA = (const MetaTextAction*) pMA;
+
+ String aUniStr( pA->GetText(), pA->GetIndex(), pA->GetLen() );
+ Point aPoint( pA->GetPoint() );
+
+ ImplText( aUniStr, aPoint, NULL, 0, rVDev );
+ }
+ break;
+
+ case META_TEXTRECT_ACTION:
+ {
+ DBG_ERROR( "Unsupported action: TextRect...Action!" );
+ }
+ break;
+
+ case META_STRETCHTEXT_ACTION :
+ {
+ const MetaStretchTextAction* pA = (const MetaStretchTextAction*)pMA;
+ String aUniStr( pA->GetText(), pA->GetIndex(), pA->GetLen() );
+ Point aPoint( pA->GetPoint() );
+
+ ImplText( aUniStr, aPoint, NULL, pA->GetWidth(), rVDev );
+ }
+ break;
+
+ case META_TEXTARRAY_ACTION:
+ {
+ const MetaTextArrayAction* pA = (const MetaTextArrayAction*)pMA;
+ String aUniStr( pA->GetText(), pA->GetIndex(), pA->GetLen() );
+ Point aPoint( pA->GetPoint() );
+
+ ImplText( aUniStr, aPoint, pA->GetDXArray(), 0, rVDev );
+ }
+ break;
+
+ case META_BMP_ACTION :
+ {
+ Bitmap aBitmap = ( (const MetaBmpAction*)pMA )->GetBitmap();
+ if ( mbGrayScale )
+ aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
+ Point aPoint = ( (const MetaBmpAction*) pMA )->GetPoint();
+ Size aSize = aBitmap.GetSizePixel();
+ ImplBmp( &aBitmap, NULL, aPoint, aSize.Width(), aSize.Height() );
+ }
+ break;
+
+ case META_BMPSCALE_ACTION :
+ {
+ Bitmap aBitmap = ( (const MetaBmpScaleAction*)pMA )->GetBitmap();
+ if ( mbGrayScale )
+ aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
+ Point aPoint = ( (const MetaBmpScaleAction*) pMA )->GetPoint();
+ Size aSize = ( (const MetaBmpScaleAction*)pMA )->GetSize();
+ ImplBmp( &aBitmap, NULL, aPoint, aSize.Width(), aSize.Height() );
+ }
+ break;
+
+ case META_BMPSCALEPART_ACTION :
+ {
+ Bitmap aBitmap( ( (const MetaBmpScalePartAction*)pMA )->GetBitmap() );
+ aBitmap.Crop( Rectangle( ( (const MetaBmpScalePartAction*)pMA )->GetSrcPoint(),
+ ( (const MetaBmpScalePartAction*)pMA )->GetSrcSize() ) );
+ if ( mbGrayScale )
+ aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
+ Point aPoint = ( (const MetaBmpScalePartAction*) pMA)->GetDestPoint();
+ Size aSize = ( (const MetaBmpScalePartAction*)pMA )->GetDestSize();
+ ImplBmp( &aBitmap, NULL, aPoint, aSize.Width(), aSize.Height() );
+ }
+ break;
+
+ case META_BMPEX_ACTION :
+ {
+ BitmapEx aBitmapEx( ( (MetaBmpExAction*)pMA)->GetBitmapEx() );
+ Bitmap aBitmap( aBitmapEx.GetBitmap() );
+ if ( mbGrayScale )
+ aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
+ Bitmap aMask( aBitmapEx.GetMask() );
+ Point aPoint = ( (const MetaBmpExAction*) pMA)->GetPoint();
+ Size aSize = ( aBitmap.GetSizePixel() );
+ ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
+ }
+ break;
+
+ case META_BMPEXSCALE_ACTION :
+ {
+ BitmapEx aBitmapEx( ( (MetaBmpExScaleAction*)pMA)->GetBitmapEx() );
+ Bitmap aBitmap( aBitmapEx.GetBitmap() );
+ if ( mbGrayScale )
+ aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
+ Bitmap aMask( aBitmapEx.GetMask() );
+ Point aPoint = ( (const MetaBmpExScaleAction*) pMA)->GetPoint();
+ Size aSize( ( (const MetaBmpExScaleAction*)pMA )->GetSize() );
+ ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
+ }
+ break;
+
+ case META_BMPEXSCALEPART_ACTION :
+ {
+ BitmapEx aBitmapEx( ( (const MetaBmpExScalePartAction*)pMA )->GetBitmapEx() );
+ aBitmapEx.Crop( Rectangle( ( (const MetaBmpExScalePartAction*)pMA )->GetSrcPoint(),
+ ( (const MetaBmpExScalePartAction*)pMA )->GetSrcSize() ) );
+ Bitmap aBitmap( aBitmapEx.GetBitmap() );
+ if ( mbGrayScale )
+ aBitmap.Convert( BMP_CONVERSION_8BIT_GREYS );
+ Bitmap aMask( aBitmapEx.GetMask() );
+ Point aPoint = ( (const MetaBmpExScalePartAction*) pMA)->GetDestPoint();
+ Size aSize = ( (const MetaBmpExScalePartAction*)pMA )->GetDestSize();
+ ImplBmp( &aBitmap, &aMask, aPoint, aSize.Width(), aSize.Height() );
+ }
+ break;
+
+ // Unsupported Actions
+ case META_MASK_ACTION:
+ case META_MASKSCALE_ACTION:
+ case META_MASKSCALEPART_ACTION:
+ {
+ DBG_ERROR( "Unsupported action: MetaMask...Action!" );
+ }
+ break;
+
+ case META_GRADIENT_ACTION :
+ {
+ PolyPolygon aPolyPoly( ( (const MetaGradientAction*)pMA)->GetRect() );
+ ImplWriteGradient( aPolyPoly, ( (const MetaGradientAction*) pMA )->GetGradient(), rVDev );
+ }
+ break;
+
+ case META_GRADIENTEX_ACTION :
+ {
+ PolyPolygon aPolyPoly( ( (const MetaGradientExAction*)pMA)->GetPolyPolygon() );
+ ImplWriteGradient( aPolyPoly, ( (const MetaGradientExAction*) pMA )->GetGradient(), rVDev );
+ }
+ break;
+
+ case META_HATCH_ACTION :
+ {
+ VirtualDevice l_aVDev;
+ GDIMetaFile aTmpMtf;
+
+ l_aVDev.SetMapMode( rVDev.GetMapMode() );
+ l_aVDev.AddHatchActions( ( (const MetaHatchAction*)pMA)->GetPolyPolygon(),
+ ( (const MetaHatchAction*)pMA )->GetHatch(), aTmpMtf );
+ ImplWriteActions( aTmpMtf, rVDev );
+ }
+ break;
+
+ case META_WALLPAPER_ACTION :
+ {
+ const MetaWallpaperAction* pA = (const MetaWallpaperAction*)pMA;
+ Rectangle aRect = pA->GetRect();
+ Wallpaper aWallpaper = pA->GetWallpaper();
+
+ if ( aWallpaper.IsBitmap() )
+ {
+ BitmapEx aBitmapEx = aWallpaper.GetBitmap();
+ Bitmap aBitmap( aBitmapEx.GetBitmap() );
+ if ( aBitmapEx.IsTransparent() )
+ {
+ if ( aWallpaper.IsGradient() )
+ {
+
+ // gradient action
+
+ }
+ Bitmap aMask( aBitmapEx.GetMask() );
+ ImplBmp( &aBitmap, &aMask, Point( aRect.Left(), aRect.Top() ), aRect.GetWidth(), aRect.GetHeight() );
+ }
+ else
+ ImplBmp( &aBitmap, NULL, Point( aRect.Left(), aRect.Top() ), aRect.GetWidth(), aRect.GetHeight() );
+
+ // wallpaper Style
+
+ }
+ else if ( aWallpaper.IsGradient() )
+ {
+
+ // gradient action
+
+ }
+ else
+ {
+ aColor = aWallpaper.GetColor();
+ ImplRectFill( aRect );
+ }
+ }
+ break;
+
+ case META_ISECTRECTCLIPREGION_ACTION:
+ {
+ const MetaISectRectClipRegionAction* pA = (const MetaISectRectClipRegionAction*) pMA;
+ Region aRegion( pA->GetRect() );
+ ImplSetClipRegion( aRegion );
+ }
+ break;
+
+ case META_CLIPREGION_ACTION:
+ {
+ const MetaClipRegionAction* pA = (const MetaClipRegionAction*) pMA;
+ Region aRegion( pA->GetRegion() );
+ ImplSetClipRegion( aRegion );
+ }
+ break;
+
+ case META_ISECTREGIONCLIPREGION_ACTION:
+ {
+ const MetaISectRegionClipRegionAction* pA = (const MetaISectRegionClipRegionAction*) pMA;
+ Region aRegion( pA->GetRegion() );
+ ImplSetClipRegion( aRegion );
+ }
+ break;
+
+ case META_MOVECLIPREGION_ACTION:
+ {
+/*
+ if ( !aClipRegion.IsEmpty() )
+ {
+ const MetaMoveClipRegionAction* pA = (const MetaMoveClipRegionAction*) pMA;
+ aClipRegion.Move( pA->GetHorzMove(), pA->GetVertMove() );
+ ImplSetClipRegion();
+ }
+*/
+ }
+ break;
+
+ case META_LINECOLOR_ACTION :
+ {
+ if ( ( (const MetaLineColorAction*) pMA)->IsSetting() )
+ {
+ bLineColor = TRUE;
+ aLineColor = ( (const MetaLineColorAction*) pMA )->GetColor();
+ }
+ else
+ bLineColor = FALSE;
+ }
+ break;
+
+ case META_FILLCOLOR_ACTION :
+ {
+ if ( ( (const MetaFillColorAction*) pMA )->IsSetting() )
+ {
+ bFillColor = TRUE;
+ aFillColor = ( (const MetaFillColorAction*) pMA )->GetColor();
+ }
+ else
+ bFillColor = FALSE;
+ }
+ break;
+
+ case META_TEXTCOLOR_ACTION :
+ {
+ aTextColor = ( (const MetaTextColorAction*) pMA )->GetColor();
+ }
+ break;
+
+ case META_TEXTFILLCOLOR_ACTION :
+ {
+ if ( ( (const MetaTextFillColorAction*) pMA )->IsSetting() )
+ {
+ bTextFillColor = TRUE;
+ aTextFillColor = ( (const MetaTextFillColorAction*) pMA )->GetColor();
+ }
+ else
+ bTextFillColor = FALSE;
+ }
+ break;
+
+ case META_TEXTALIGN_ACTION :
+ {
+ eTextAlign = ( (const MetaTextAlignAction*) pMA )->GetTextAlign();
+ }
+ break;
+
+ case META_MAPMODE_ACTION :
+ {
+ pMA->Execute( &rVDev );
+ ImplGetMapMode( rVDev.GetMapMode() );
+ }
+ break;
+
+ case META_FONT_ACTION :
+ {
+ maFont = ((const MetaFontAction*)pMA)->GetFont();
+ rVDev.SetFont( maFont );
+ }
+ break;
+
+ case META_PUSH_ACTION :
+ {
+ rVDev.Push(((const MetaPushAction*)pMA)->GetFlags() );
+ StackMember* pGS = new StackMember;
+ pGS->pSucc = pGDIStack;
+ pGDIStack = pGS;
+ pGS->aDashArray = aDashArray;
+ pGS->eJoinType = eJoinType;
+ pGS->eLineCap = eLineCap;
+ pGS->fLineWidth = fLineWidth;
+ pGS->fMiterLimit = fMiterLimit;
+ pGS->eTextAlign = eTextAlign;
+ pGS->aGlobalCol = aColor;
+ pGS->bLineCol = bLineColor;
+ pGS->aLineCol = aLineColor;
+ pGS->bFillCol = bFillColor;
+ pGS->aFillCol = aFillColor;
+ pGS->aTextCol = aTextColor;
+ pGS->bTextFillCol = bTextFillColor;
+ pGS->aTextFillCol = aTextFillColor;
+ pGS->aBackgroundCol = aBackgroundColor;
+ bRegionChanged = FALSE;
+ pGS->aFont = maFont;
+ mnLatestPush = mpPS->Tell();
+ ImplWriteLine( "gs" );
+ }
+ break;
+
+ case META_POP_ACTION :
+ {
+ rVDev.Pop();
+ StackMember* pGS;
+ if( pGDIStack )
+ {
+ pGS = pGDIStack;
+ pGDIStack = pGS->pSucc;
+ aDashArray = pGS->aDashArray;
+ eJoinType = pGS->eJoinType;
+ eLineCap = pGS->eLineCap;
+ fLineWidth = pGS->fLineWidth;
+ fMiterLimit = pGS->fMiterLimit;
+ eTextAlign = pGS->eTextAlign;
+ aColor = pGS->aGlobalCol;
+ bLineColor = pGS->bLineCol;
+ aLineColor = pGS->aLineCol;
+ bFillColor = pGS->bFillCol;
+ aFillColor = pGS->aFillCol;
+ aTextColor = pGS->aTextCol;
+ bTextFillColor = pGS->bTextFillCol;
+ aTextFillColor = pGS->aTextFillCol;
+ aBackgroundColor = pGS->aBackgroundCol;
+ maFont = pGS->aFont;
+ maLastFont = Font(); // set maLastFont != maFont -> so that
+ delete pGS;
+ sal_uInt32 nCurrentPos = mpPS->Tell();
+ if ( nCurrentPos - 3 == mnLatestPush )
+ {
+ mpPS->Seek( mnLatestPush );
+ ImplWriteLine( " " );
+ mpPS->Seek( mnLatestPush );
+ }
+ else
+ ImplWriteLine( "gr" );
+ }
+ }
+ break;
+
+ case META_EPS_ACTION :
+ {
+ GfxLink aGfxLink = ( (const MetaEPSAction*) pMA )->GetLink();
+ const GDIMetaFile aSubstitute( ( ( const MetaEPSAction*) pMA )->GetSubstitute() );
+
+ BOOL bLevelConflict = FALSE;
+ BYTE* pSource = (BYTE*) aGfxLink.GetData();
+ ULONG nSize = aGfxLink.GetDataSize();
+ ULONG nParseThis = POSTSCRIPT_BOUNDINGSEARCH;
+ if ( nSize < 64 ) // assuming eps is larger than 64 bytes
+ pSource = NULL;
+ if ( nParseThis > nSize )
+ nParseThis = nSize;
+
+ if ( pSource && ( mnLevel == 1 ) )
+ {
+ BYTE* pFound = ImplSearchEntry( pSource, (BYTE*)"%%LanguageLevel:", nParseThis - 10, 16 );
+ if ( pFound )
+ {
+ BYTE k, i = 10;
+ pFound += 16;
+ while ( --i )
+ {
+ k = *pFound++;
+ if ( ( k > '0' ) && ( k <= '9' ) )
+ {
+ if ( k != '1' )
+ {
+ bLevelConflict = TRUE;
+ mnLevelWarning++;
+ }
+ break;
+ }
+ }
+ }
+ }
+ if ( !bLevelConflict )
+ {
+ double nBoundingBox[4];
+ if ( pSource && ImplGetBoundingBox( nBoundingBox, pSource, nParseThis ) )
+ {
+ Point aPoint = ( (const MetaEPSAction*) pMA )->GetPoint();
+ Size aSize = ( (const MetaEPSAction*) pMA )->GetSize();
+
+ MapMode aMapMode( aSubstitute.GetPrefMapMode() );
+ Size aOutSize( rVDev.LogicToLogic( aSize, rVDev.GetMapMode(), aMapMode ) );
+ Point aOrigin( rVDev.LogicToLogic( aPoint, rVDev.GetMapMode(), aMapMode ) );
+ aOrigin.Y() += aOutSize.Height();
+ aMapMode.SetOrigin( aOrigin );
+ aMapMode.SetScaleX( aOutSize.Width() / ( nBoundingBox[ 2 ] - nBoundingBox[ 0 ] ) );
+ aMapMode.SetScaleY( aOutSize.Height() / ( nBoundingBox[ 3 ] - nBoundingBox[ 1 ] ) );
+ ImplWriteLine( "gs" );
+ ImplGetMapMode( aMapMode );
+ ImplWriteLine( "%%BeginDocument:" );
+ mpPS->Write( pSource, aGfxLink.GetDataSize() );
+ ImplWriteLine( "%%EndDocument\ngr" );
+ }
+ }
+ }
+ break;
+
+ case META_TRANSPARENT_ACTION:
+ {
+// ImplLine( ( (const MetaTransparentAction*) pMA )->GetPolyPolygon() );
+ }
+ break;
+
+ case META_RASTEROP_ACTION:
+ {
+ pMA->Execute( &rVDev );
+ }
+ break;
+
+ case META_FLOATTRANSPARENT_ACTION:
+ {
+ const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pMA;
+
+ GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
+ Point aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
+ const Size aSrcSize( aTmpMtf.GetPrefSize() );
+ const Point aDestPt( pA->GetPoint() );
+ const Size aDestSize( pA->GetSize() );
+ const double fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
+ const double fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
+ long nMoveX, nMoveY;
+
+ if( fScaleX != 1.0 || fScaleY != 1.0 )
+ {
+ aTmpMtf.Scale( fScaleX, fScaleY );
+ aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
+ }
+
+ nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
+
+ if( nMoveX || nMoveY )
+ aTmpMtf.Move( nMoveX, nMoveY );
+
+ ImplWriteActions( aTmpMtf, rVDev );
+ }
+ break;
+
+ case META_COMMENT_ACTION:
+ {
+ const MetaCommentAction* pA = (const MetaCommentAction*) pMA;
+ if ( pA->GetComment().CompareIgnoreCaseToAscii( "XGRAD_SEQ_BEGIN" ) == COMPARE_EQUAL )
+ {
+ const MetaGradientExAction* pGradAction = NULL;
+ while( ++nCurAction < nCount )
+ {
+ MetaAction* pAction = rMtf.GetAction( nCurAction );
+ if( pAction->GetType() == META_GRADIENTEX_ACTION )
+ pGradAction = (const MetaGradientExAction*) pAction;
+ else if( ( pAction->GetType() == META_COMMENT_ACTION ) &&
+ ( ( (const MetaCommentAction*) pAction )->GetComment().CompareIgnoreCaseToAscii( "XGRAD_SEQ_END" ) == COMPARE_EQUAL ) )
+ {
+ break;
+ }
+ }
+ if( pGradAction )
+ ImplWriteGradient( pGradAction->GetPolyPolygon(), pGradAction->GetGradient(), rVDev );
+ }
+ else if ( pA->GetComment().Equals( "XPATHFILL_SEQ_END" ) )
+ {
+ if ( aFillPath.Count() )
+ {
+ aFillPath = PolyPolygon();
+ ImplWriteLine( "gr" );
+ }
+ }
+ else
+ {
+ const BYTE* pData = pA->GetData();
+ if ( pData )
+ {
+ SvMemoryStream aMemStm( (void*)pData, pA->GetDataSize(), STREAM_READ );
+ sal_Bool bSkipSequence = sal_False;
+ ByteString sSeqEnd;
+
+ if( pA->GetComment().Equals( "XPATHSTROKE_SEQ_BEGIN" ) )
+ {
+ sSeqEnd = ByteString( "XPATHSTROKE_SEQ_END" );
+ SvtGraphicStroke aStroke;
+ aMemStm >> aStroke;
+
+ Polygon aPath;
+ aStroke.getPath( aPath );
+
+ PolyPolygon aStartArrow;
+ PolyPolygon aEndArrow;
+// double fTransparency( aStroke.getTransparency() );
+ double fStrokeWidth( aStroke.getStrokeWidth() );
+ SvtGraphicStroke::JoinType eJT( aStroke.getJoinType() );
+ SvtGraphicStroke::DashArray l_aDashArray;
+
+ aStroke.getStartArrow( aStartArrow );
+ aStroke.getEndArrow( aEndArrow );
+ aStroke.getDashArray( l_aDashArray );
+
+ bSkipSequence = sal_True;
+ if ( l_aDashArray.size() > 11 ) // ps dasharray limit is 11
+ bSkipSequence = sal_False;
+ if ( aStartArrow.Count() || aEndArrow.Count() )
+ bSkipSequence = sal_False;
+ if ( (sal_uInt32)eJT > 2 )
+ bSkipSequence = sal_False;
+ if ( l_aDashArray.size() && ( fStrokeWidth != 0.0 ) )
+ bSkipSequence = sal_False;
+ if ( bSkipSequence )
+ {
+ ImplWriteLineInfo( fStrokeWidth, aStroke.getMiterLimit(),
+ aStroke.getCapType(), eJT, l_aDashArray );
+ ImplPolyLine( aPath );
+ }
+ }
+ else if( pA->GetComment().Equals( "XPATHFILL_SEQ_BEGIN" ) )
+ {
+ sSeqEnd = ByteString( "XPATHFILL_SEQ_END" );
+ SvtGraphicFill aFill;
+ aMemStm >> aFill;
+ switch( aFill.getFillType() )
+ {
+ case SvtGraphicFill::fillSolid :
+ {
+ bSkipSequence = sal_True;
+ PolyPolygon aPolyPoly;
+ aFill.getPath( aPolyPoly );
+ sal_uInt16 i, nPolyCount = aPolyPoly.Count();
+ if ( nPolyCount )
+ {
+ aFillColor = aFill.getFillColor();
+ ImplWriteFillColor( PS_SPACE );
+ for ( i = 0; i < nPolyCount; )
+ {
+ ImplAddPath( aPolyPoly.GetObject( i ) );
+ if ( ++i < nPolyCount )
+ {
+ *mpPS << "p";
+ mnCursorPos += 2;
+ ImplExecMode( PS_RET );
+ }
+ }
+ *mpPS << "p ef";
+ mnCursorPos += 4;
+ ImplExecMode( PS_RET );
+ }
+ }
+ break;
+
+ case SvtGraphicFill::fillTexture :
+ {
+ aFill.getPath( aFillPath );
+
+ /* normally an object filling is consisting of three MetaActions:
+ MetaBitmapAction using RasterOp xor,
+ MetaPolyPolygonAction using RasterOp rop_0
+ MetaBitmapAction using RasterOp xor
+
+ Because RasterOps cannot been used in Postscript, we have to
+ replace these actions. The MetaComment "XPATHFILL_SEQ_BEGIN" is
+ providing the clippath of the object. The following loop is
+ trying to find the bitmap that is matching the clippath, so that
+ only one bitmap is exported, otherwise if the bitmap is not
+ locatable, all metaactions are played normally.
+ */
+ sal_uInt32 nCommentStartAction = nCurAction;
+ sal_uInt32 nBitmapCount = 0;
+ sal_uInt32 nBitmapAction = 0;
+
+ sal_Bool bOk = sal_True;
+ while( bOk && ( ++nCurAction < nCount ) )
+ {
+ MetaAction* pAction = rMtf.GetAction( nCurAction );
+ switch( pAction->GetType() )
+ {
+ case META_BMPSCALE_ACTION :
+ case META_BMPSCALEPART_ACTION :
+ case META_BMPEXSCALE_ACTION :
+ case META_BMPEXSCALEPART_ACTION :
+ {
+ nBitmapCount++;
+ nBitmapAction = nCurAction;
+ }
+ break;
+ case META_COMMENT_ACTION :
+ {
+ if (((const MetaCommentAction*)pAction)->GetComment().Equals( "XPATHFILL_SEQ_END" ))
+ bOk = sal_False;
+ }
+ break;
+ }
+ }
+ if( nBitmapCount == 2 )
+ {
+ ImplWriteLine( "gs" );
+ ImplIntersect( aFillPath );
+ GDIMetaFile aTempMtf;
+ aTempMtf.AddAction( rMtf.GetAction( nBitmapAction )->Clone() );
+ ImplWriteActions( aTempMtf, rVDev );
+ ImplWriteLine( "gr" );
+ aFillPath = PolyPolygon();
+ }
+ else
+ nCurAction = nCommentStartAction + 1;
+ }
+ break;
+
+ case SvtGraphicFill::fillGradient :
+ aFill.getPath( aFillPath );
+ break;
+
+ case SvtGraphicFill::fillHatch :
+ break;
+ }
+ if ( aFillPath.Count() )
+ {
+ ImplWriteLine( "gs" );
+ ImplIntersect( aFillPath );
+ }
+ }
+ if ( bSkipSequence )
+ {
+ while( ++nCurAction < nCount )
+ {
+ pMA = rMtf.GetAction( nCurAction );
+ if ( pMA->GetType() == META_COMMENT_ACTION )
+ {
+ ByteString sComment( ((MetaCommentAction*)pMA)->GetComment() );
+ if ( sComment.Equals( sSeqEnd ) )
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+}
+
+
+
+//---------------------------------------------------------------------------------
+
+inline void PSWriter::ImplWritePoint( const Point& rPoint, sal_uInt32 nMode )
+{
+ ImplWriteDouble( rPoint.X() );
+ ImplWriteDouble( rPoint.Y(), nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplMoveTo( const Point& rPoint, sal_uInt32 nMode )
+{
+ ImplWritePoint( rPoint );
+ ImplWriteByte( 'm' );
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplLineTo( const Point& rPoint, sal_uInt32 nMode )
+{
+ ImplWritePoint( rPoint );
+ ImplWriteByte( 'l' );
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplCurveTo( const Point& rP1, const Point& rP2, const Point& rP3, sal_uInt32 nMode )
+{
+ ImplWritePoint( rP1 );
+ ImplWritePoint( rP2 );
+ ImplWritePoint( rP3 );
+ *mpPS << "ct ";
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplTranslate( const double& fX, const double& fY, sal_uInt32 nMode )
+{
+ ImplWriteDouble( fX );
+ ImplWriteDouble( fY );
+ ImplWriteByte( 't' );
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplScale( const double& fX, const double& fY, sal_uInt32 nMode )
+{
+ ImplWriteDouble( fX );
+ ImplWriteDouble( fY );
+ ImplWriteByte( 's' );
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplRect( const Rectangle & rRect )
+{
+ if ( bFillColor )
+ ImplRectFill( rRect );
+ if ( bLineColor )
+ {
+ double nWidth = rRect.GetWidth();
+ double nHeight = rRect.GetHeight();
+
+ ImplWriteLineColor( PS_SPACE );
+ ImplMoveTo( rRect.TopLeft() );
+ ImplWriteDouble( nWidth );
+ *mpPS << "0 rl 0 ";
+ ImplWriteDouble( nHeight );
+ *mpPS << "rl ";
+ ImplWriteDouble( nWidth );
+ *mpPS << "neg 0 rl ";
+ ImplClosePathDraw();
+ }
+ *mpPS << (BYTE)10;
+ mnCursorPos = 0;
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplRectFill( const Rectangle & rRect )
+{
+ double nWidth = rRect.GetWidth();
+ double nHeight = rRect.GetHeight();
+
+ ImplWriteFillColor( PS_SPACE );
+ ImplMoveTo( rRect.TopLeft() );
+ ImplWriteDouble( nWidth );
+ *mpPS << "0 rl 0 ";
+ ImplWriteDouble( nHeight );
+ *mpPS << "rl ";
+ ImplWriteDouble( nWidth );
+ *mpPS << "neg 0 rl ef ";
+ *mpPS << "p ef";
+ mnCursorPos += 2;
+ ImplExecMode( PS_RET );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplAddPath( const Polygon & rPolygon )
+{
+ USHORT i = 1;
+ USHORT nPointCount = rPolygon.GetSize();
+ if ( nPointCount > 1 )
+ {
+ ImplMoveTo( rPolygon.GetPoint( 0 ) );
+ while ( i < nPointCount )
+ {
+ if ( ( rPolygon.GetFlags( i ) == POLY_CONTROL )
+ && ( ( i + 2 ) < nPointCount )
+ && ( rPolygon.GetFlags( i + 1 ) == POLY_CONTROL )
+ && ( rPolygon.GetFlags( i + 2 ) != POLY_CONTROL ) )
+ {
+ ImplCurveTo( rPolygon[ i ], rPolygon[ i + 1 ], rPolygon[ i + 2 ], PS_WRAP );
+ i += 3;
+ }
+ else
+ ImplLineTo( rPolygon.GetPoint( i++ ), PS_SPACE | PS_WRAP );
+ }
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplIntersect( const PolyPolygon& rPolyPoly )
+{
+ sal_uInt16 i, nPolyCount = rPolyPoly.Count();
+ for ( i = 0; i < nPolyCount; )
+ {
+ ImplAddPath( rPolyPoly.GetObject( i ) );
+ if ( ++i < nPolyCount )
+ {
+ *mpPS << "p";
+ mnCursorPos += 2;
+ ImplExecMode( PS_RET );
+ }
+ }
+ ImplWriteLine( "eoclip newpath" );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteGradient( const PolyPolygon& rPolyPoly, const Gradient& rGradient, VirtualDevice& rVDev )
+{
+ VirtualDevice l_aVDev;
+ GDIMetaFile aTmpMtf;
+ l_aVDev.SetMapMode( rVDev.GetMapMode() );
+ l_aVDev.AddGradientActions( rPolyPoly.GetBoundRect(), rGradient, aTmpMtf );
+ ImplWriteActions( aTmpMtf, rVDev );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplPolyPoly( const PolyPolygon & rPolyPoly, sal_Bool bTextOutline )
+{
+ sal_uInt16 i, nPolyCount = rPolyPoly.Count();
+ if ( nPolyCount )
+ {
+ if ( bFillColor || bTextOutline )
+ {
+ if ( bTextOutline )
+ ImplWriteTextColor( PS_SPACE );
+ else
+ ImplWriteFillColor( PS_SPACE );
+ for ( i = 0; i < nPolyCount; )
+ {
+ ImplAddPath( rPolyPoly.GetObject( i ) );
+ if ( ++i < nPolyCount )
+ {
+ *mpPS << "p";
+ mnCursorPos += 2;
+ ImplExecMode( PS_RET );
+ }
+ }
+ *mpPS << "p ef";
+ mnCursorPos += 4;
+ ImplExecMode( PS_RET );
+ }
+ if ( bLineColor )
+ {
+ ImplWriteLineColor( PS_SPACE );
+ for ( i = 0; i < nPolyCount; i++ )
+ ImplAddPath( rPolyPoly.GetObject( i ) );
+ ImplClosePathDraw( PS_RET );
+ }
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplPolyLine( const Polygon & rPoly )
+{
+ if ( bLineColor )
+ {
+ ImplWriteLineColor( PS_SPACE );
+ sal_uInt16 i, nPointCount = rPoly.GetSize();
+ if ( nPointCount )
+ {
+ if ( nPointCount > 1 )
+ {
+ ImplMoveTo( rPoly.GetPoint( 0 ) );
+ i = 1;
+ while ( i < nPointCount )
+ {
+ if ( ( rPoly.GetFlags( i ) == POLY_CONTROL )
+ && ( ( i + 2 ) < nPointCount )
+ && ( rPoly.GetFlags( i + 1 ) == POLY_CONTROL )
+ && ( rPoly.GetFlags( i + 2 ) != POLY_CONTROL ) )
+ {
+ ImplCurveTo( rPoly[ i ], rPoly[ i + 1 ], rPoly[ i + 2 ], PS_WRAP );
+ i += 3;
+ }
+ else
+ ImplLineTo( rPoly.GetPoint( i++ ), PS_SPACE | PS_WRAP );
+ }
+ }
+
+ // #104645# explicitely close path if polygon is closed
+ if( rPoly[ 0 ] == rPoly[ nPointCount-1 ] )
+ ImplClosePathDraw( PS_RET );
+ else
+ ImplPathDraw();
+ }
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplSetClipRegion( Region& rClipRegion )
+{
+ if ( !rClipRegion.IsEmpty() )
+ {
+ Rectangle aRect;
+ RegionHandle hRegionHandle = rClipRegion.BeginEnumRects();
+
+ while ( rClipRegion.GetNextEnumRect( hRegionHandle, aRect ) )
+ {
+ double nX1 = aRect.Left();
+ double nY1 = aRect.Top();
+ double nX2 = aRect.Right();
+ double nY2 = aRect.Bottom();
+ ImplWriteDouble( nX1 );
+ ImplWriteDouble( nY1 );
+ ImplWriteByte( 'm' );
+ ImplWriteDouble( nX2 );
+ ImplWriteDouble( nY1 );
+ ImplWriteByte( 'l' );
+ ImplWriteDouble( nX2 );
+ ImplWriteDouble( nY2 );
+ ImplWriteByte( 'l' );
+ ImplWriteDouble( nX1 );
+ ImplWriteDouble( nY2 );
+ ImplWriteByte( 'l' );
+ ImplWriteDouble( nX1 );
+ ImplWriteDouble( nY1 );
+ ImplWriteByte( 'l', PS_SPACE | PS_WRAP );
+ };
+ rClipRegion.EndEnumRects( hRegionHandle );
+ ImplWriteLine( "eoclip newpath" );
+ }
+}
+
+//---------------------------------------------------------------------------------
+// possible gfx formats:
+//
+// level 1: grayscale 8 bit
+// color 24 bit
+//
+// level 2: grayscale 8 bit
+// color 1(pal), 4(pal), 8(pal), 24 Bit
+//
+
+void PSWriter::ImplBmp( Bitmap* pBitmap, Bitmap* pMaskBitmap, const Point & rPoint, double nXWidth, double nYHeightOrg )
+{
+ if ( !pBitmap )
+ return;
+
+ INT32 nHeightOrg = pBitmap->GetSizePixel().Height();
+ INT32 nHeightLeft = nHeightOrg;
+ long nWidth = pBitmap->GetSizePixel().Width();
+ Point aSourcePos( rPoint );
+
+ while ( nHeightLeft )
+ {
+ Bitmap aTileBitmap( *pBitmap );
+ long nHeight = nHeightLeft;
+ double nYHeight = nYHeightOrg;
+
+ BOOL bDoTrans = FALSE;
+
+ Rectangle aRect;
+ Region aRegion;
+
+ if ( pMaskBitmap )
+ {
+ bDoTrans = TRUE;
+ while (TRUE)
+ {
+ if ( mnLevel == 1 )
+ {
+ if ( nHeight > 10 )
+ nHeight = 8;
+ }
+ aRect = Rectangle( Point( 0, nHeightOrg - nHeightLeft ), Size( (long)nWidth, (long)nHeight ) );
+ aRegion = Region( pMaskBitmap->CreateRegion( COL_BLACK, aRect ) );
+
+ if ( ( mnLevel == 1 ) && ( aRegion.GetRectCount() * 5 > 1000 ) )
+ {
+ nHeight >>= 1;
+ if ( nHeight < 2 )
+ return;
+ continue;
+ }
+ break;
+ }
+ }
+ if ( nHeight != nHeightOrg )
+ {
+ nYHeight = nYHeightOrg * nHeight / nHeightOrg;
+ aTileBitmap.Crop( Rectangle( Point( 0, nHeightOrg - nHeightLeft ), Size( nWidth, nHeight ) ) );
+ }
+ if ( bDoTrans )
+ {
+ ImplWriteLine( "gs\npum" );
+ ImplTranslate( aSourcePos.X(), aSourcePos.Y() );
+ ImplScale( nXWidth / nWidth, nYHeight / nHeight );
+ RegionHandle hRegionHandle = aRegion.BeginEnumRects();
+
+ while ( aRegion.GetNextEnumRect( hRegionHandle, aRect ) )
+ {
+ aRect.Move( 0, - ( nHeightOrg - nHeightLeft ) );
+ ImplWriteLong( aRect.Left() );
+ ImplWriteLong( aRect.Top() );
+ ImplWriteByte( 'm' );
+ ImplWriteLong( aRect.Right() + 1 );
+ ImplWriteLong( aRect.Top() );
+ ImplWriteByte( 'l' );
+ ImplWriteLong( aRect.Right() + 1 );
+ ImplWriteLong( aRect.Bottom() + 1 );
+ ImplWriteByte( 'l' );
+ ImplWriteLong( aRect.Left() );
+ ImplWriteLong( aRect.Bottom() + 1 );
+ ImplWriteByte( 'l' );
+ ImplWriteByte( 'p', PS_SPACE | PS_WRAP );
+ };
+ aRegion.EndEnumRects( hRegionHandle );
+ ImplWriteLine( "eoclip newpath" );
+ ImplWriteLine( "pom" );
+ }
+ BitmapReadAccess* pAcc = aTileBitmap.AcquireReadAccess();
+
+ if (!bDoTrans )
+ ImplWriteLine( "pum" );
+
+ ImplTranslate( aSourcePos.X(), aSourcePos.Y() + nYHeight );
+ ImplScale( nXWidth, nYHeight );
+ if ( mnLevel == 1 ) // level 1 is always grayscale !!!
+ {
+ ImplWriteLong( nWidth );
+ ImplWriteLong( nHeight );
+ *mpPS << "8 [";
+ ImplWriteLong( nWidth );
+ *mpPS << "0 0 ";
+ ImplWriteLong( -nHeight );
+ ImplWriteLong( 0 );
+ ImplWriteLong( nHeight );
+ ImplWriteLine( "]" );
+ *mpPS << "{currentfile ";
+ ImplWriteLong( nWidth );
+ ImplWriteLine( "string readhexstring pop}" );
+ ImplWriteLine( "image" );
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ ImplWriteHexByte( (BYTE)pAcc->GetPixel( y, x ) );
+ }
+ }
+ *mpPS << (BYTE)10;
+ }
+ else // Level 2
+ {
+ if ( mbGrayScale )
+ {
+ ImplWriteLine( "/DeviceGray setcolorspace" );
+ ImplWriteLine( "<<" );
+ ImplWriteLine( "/ImageType 1" );
+ *mpPS << "/Width ";
+ ImplWriteLong( nWidth, PS_RET );
+ *mpPS << "/Height ";
+ ImplWriteLong( nHeight, PS_RET );
+ ImplWriteLine( "/BitsPerComponent 8" );
+ ImplWriteLine( "/Decode[0 1]" );
+ *mpPS << "/ImageMatrix[";
+ ImplWriteLong( nWidth );
+ *mpPS << "0 0 ";
+ ImplWriteLong( -nHeight );
+ ImplWriteLong( 0 );
+ ImplWriteLong( nHeight, PS_NONE );
+ ImplWriteByte( ']', PS_RET );
+ ImplWriteLine( "/DataSource currentfile" );
+ ImplWriteLine( "/ASCIIHexDecode filter" );
+ if ( mbCompression )
+ ImplWriteLine( "/LZWDecode filter" );
+ ImplWriteLine( ">>" );
+ ImplWriteLine( "image" );
+ if ( mbCompression )
+ {
+ StartCompression();
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ Compress( (BYTE)pAcc->GetPixel( y, x ) );
+ }
+ }
+ EndCompression();
+ }
+ else
+ {
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ ImplWriteHexByte( (BYTE)pAcc->GetPixel( y, x ) );
+ }
+ }
+ }
+ }
+ else
+ {
+ // have we to write a palette ?
+
+ if ( pAcc->HasPalette() )
+ {
+ ImplWriteLine( "[/Indexed /DeviceRGB " );
+ ImplWriteLong( pAcc->GetPaletteEntryCount() - 1, PS_RET );
+ ImplWriteByte( '<', PS_NONE );
+ for ( USHORT i = 0; i < pAcc->GetPaletteEntryCount(); i++ )
+ {
+ BitmapColor aBitmapColor = pAcc->GetPaletteColor( i );
+ ImplWriteHexByte( aBitmapColor.GetRed(), PS_NONE );
+ ImplWriteHexByte( aBitmapColor.GetGreen(), PS_NONE );
+ ImplWriteHexByte( aBitmapColor.GetBlue(), PS_SPACE | PS_WRAP );
+ }
+ ImplWriteByte( '>', PS_RET );
+
+ ImplWriteLine( "] setcolorspace" );
+ ImplWriteLine( "<<" );
+ ImplWriteLine( "/ImageType 1" );
+ *mpPS << "/Width ";
+ ImplWriteLong( nWidth, PS_RET );
+ *mpPS << "/Height ";
+ ImplWriteLong( nHeight, PS_RET );
+ ImplWriteLine( "/BitsPerComponent 8" );
+ ImplWriteLine( "/Decode[0 255]" );
+ *mpPS << "/ImageMatrix[";
+ ImplWriteLong( nWidth );
+ *mpPS << "0 0 ";
+ ImplWriteLong( -nHeight );
+ ImplWriteLong( 0);
+ ImplWriteLong( nHeight, PS_NONE );
+ ImplWriteByte( ']', PS_RET );
+ ImplWriteLine( "/DataSource currentfile" );
+ ImplWriteLine( "/ASCIIHexDecode filter" );
+ if ( mbCompression )
+ ImplWriteLine( "/LZWDecode filter" );
+ ImplWriteLine( ">>" );
+ ImplWriteLine( "image" );
+ if ( mbCompression )
+ {
+ StartCompression();
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ Compress( (BYTE)pAcc->GetPixel( y, x ) );
+ }
+ }
+ EndCompression();
+ }
+ else
+ {
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ ImplWriteHexByte( (BYTE)pAcc->GetPixel( y, x ) );
+ }
+ }
+ }
+ }
+ else // 24 bit color
+ {
+ ImplWriteLine( "/DeviceRGB setcolorspace" );
+ ImplWriteLine( "<<" );
+ ImplWriteLine( "/ImageType 1" );
+ *mpPS << "/Width ";
+ ImplWriteLong( nWidth, PS_RET );
+ *mpPS << "/Height ";
+ ImplWriteLong( nHeight, PS_RET );
+ ImplWriteLine( "/BitsPerComponent 8" );
+ ImplWriteLine( "/Decode[0 1 0 1 0 1]" );
+ *mpPS << "/ImageMatrix[";
+ ImplWriteLong( nWidth );
+ *mpPS << "0 0 ";
+ ImplWriteLong( -nHeight );
+ ImplWriteLong( 0 );
+ ImplWriteLong( nHeight, PS_NONE );
+ ImplWriteByte( ']', PS_RET );
+ ImplWriteLine( "/DataSource currentfile" );
+ ImplWriteLine( "/ASCIIHexDecode filter" );
+ if ( mbCompression )
+ ImplWriteLine( "/LZWDecode filter" );
+ ImplWriteLine( ">>" );
+ ImplWriteLine( "image" );
+ if ( mbCompression )
+ {
+ StartCompression();
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ const BitmapColor aBitmapColor( pAcc->GetPixel( y, x ) );
+ Compress( aBitmapColor.GetRed() );
+ Compress( aBitmapColor.GetGreen() );
+ Compress( aBitmapColor.GetBlue() );
+ }
+ }
+ EndCompression();
+ }
+ else
+ {
+ for ( long y = 0; y < nHeight; y++ )
+ {
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ const BitmapColor aBitmapColor( pAcc->GetPixel( y, x ) );
+ ImplWriteHexByte( aBitmapColor.GetRed() );
+ ImplWriteHexByte( aBitmapColor.GetGreen() );
+ ImplWriteHexByte( aBitmapColor.GetBlue() );
+ }
+ }
+ }
+ }
+ }
+ ImplWriteLine( ">" ); // in Level 2 the dictionary needs to be closed (eod)
+ }
+ if ( bDoTrans )
+ ImplWriteLine( "gr" );
+ else
+ ImplWriteLine( "pom" );
+
+ aTileBitmap.ReleaseAccess( pAcc );
+ nHeightLeft -= nHeight;
+ if ( nHeightLeft )
+ {
+ nHeightLeft++;
+ aSourcePos.Y() = (long) ( rPoint.Y() + ( nYHeightOrg * ( nHeightOrg - nHeightLeft ) ) / nHeightOrg );
+ }
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteCharacter( sal_Char nChar )
+{
+ switch( nChar )
+ {
+ case '(' :
+ case ')' :
+ case '\\' :
+ ImplWriteByte( (BYTE)'\\', PS_NONE );
+ }
+ ImplWriteByte( (BYTE)nChar, PS_NONE );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteString( const ByteString& rString, VirtualDevice& rVDev, const INT32* pDXArry, BOOL bStretch )
+{
+ USHORT nLen = rString.Len();
+ if ( nLen )
+ {
+ USHORT i;
+ if ( pDXArry )
+ {
+ double nx = 0;
+
+ for( i = 0; i < nLen; i++ )
+ {
+ if ( i > 0 )
+ nx = pDXArry[ i - 1 ];
+ ImplWriteDouble( ( bStretch ) ? nx : rVDev.GetTextWidth( rString.GetChar( i ) ) );
+ ImplWriteDouble( nx );
+ ImplWriteLine( "(", PS_NONE );
+ ImplWriteCharacter( rString.GetChar( i ) );
+ ImplWriteLine( ") bs" );
+ }
+ }
+ else
+ {
+ ImplWriteByte( '(', PS_NONE );
+ for ( i = 0; i < nLen; i++ )
+ ImplWriteCharacter( rString.GetChar( i ) );
+ ImplWriteLine( ") sw" );
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void PSWriter::ImplText( const String& rUniString, const Point& rPos, const INT32* pDXArry, sal_Int32 nWidth, VirtualDevice& rVDev )
+{
+ sal_uInt16 nLen = rUniString.Len();
+ if ( !nLen )
+ return;
+ if ( mnTextMode == 0 ) // using glpyh outlines
+ {
+ Font aNotRotatedFont( maFont );
+ aNotRotatedFont.SetOrientation( 0 );
+
+ VirtualDevice aVirDev( 1 );
+ aVirDev.SetMapMode( rVDev.GetMapMode() );
+ aVirDev.SetFont( aNotRotatedFont );
+ aVirDev.SetTextAlign( eTextAlign );
+
+ sal_Int16 nRotation = maFont.GetOrientation();
+ Polygon aPolyDummy( 1 );
+
+ PolyPolygon aPolyPoly;
+ Point aPos( rPos );
+ if ( nRotation )
+ {
+ aPolyDummy.SetPoint( aPos, 0 );
+ aPolyDummy.Rotate( rPos, nRotation );
+ aPos = aPolyDummy.GetPoint( 0 );
+ }
+ sal_Bool bOldLineColor = bLineColor;
+ bLineColor = sal_False;
+ std::vector<PolyPolygon> aPolyPolyVec;
+ if ( aVirDev.GetTextOutlines( aPolyPolyVec, rUniString, 0, 0, STRING_LEN, TRUE, nWidth, pDXArry ) )
+ {
+ // always adjust text position to match baseline alignment
+ ImplWriteLine( "pum" );
+ ImplWriteDouble( aPos.X() );
+ ImplWriteDouble( aPos.Y() );
+ ImplWriteLine( "t" );
+ if ( nRotation )
+ {
+ ImplWriteF( nRotation, 1 );
+ *mpPS << "r ";
+ }
+ std::vector<PolyPolygon>::iterator aIter( aPolyPolyVec.begin() );
+ while ( aIter != aPolyPolyVec.end() )
+ ImplPolyPoly( *aIter++, sal_True );
+ ImplWriteLine( "pom" );
+ }
+ bLineColor = bOldLineColor;
+ }
+ else if ( ( mnTextMode == 1 ) || ( mnTextMode == 2 ) ) // normal text output
+ {
+ if ( mnTextMode == 2 ) // forcing output one complete text packet, by
+ pDXArry = NULL; // ignoring the kerning array
+ ImplSetAttrForText( rPos );
+ ByteString aStr( rUniString, maFont.GetCharSet() );
+ ImplWriteString( aStr, rVDev, pDXArry, nWidth != 0 );
+ if ( maFont.GetOrientation() )
+ ImplWriteLine( "gr" );
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void PSWriter::ImplSetAttrForText( const Point& rPoint )
+{
+ Point aPoint( rPoint );
+
+ long nRotation = maFont.GetOrientation();
+ ImplWriteTextColor();
+
+ Size aSize = maFont.GetSize();
+
+ if ( maLastFont != maFont )
+ {
+ if ( maFont.GetPitch() == PITCH_FIXED ) // a little bit font selection
+ ImplDefineFont( "Courier", "Oblique" );
+ else if ( maFont.GetCharSet() == RTL_TEXTENCODING_SYMBOL )
+ ImplWriteLine( "/Symbol findfont" );
+ else if ( maFont.GetFamily() == FAMILY_SWISS )
+ ImplDefineFont( "Helvetica", "Oblique" );
+ else
+ ImplDefineFont( "Times", "Italic" );
+
+ maLastFont = maFont;
+ aSize = maFont.GetSize();
+ ImplWriteDouble( aSize.Height() );
+ *mpPS << "sf ";
+ }
+ if ( eTextAlign != ALIGN_BASELINE )
+ { // PostScript kennt kein FontAlignment
+ if ( eTextAlign == ALIGN_TOP ) // -> ich gehe daher davon aus, dass
+ aPoint.Y() += ( aSize.Height() * 4 / 5 ); // der Bereich unter der Baseline
+ else if ( eTextAlign == ALIGN_BOTTOM ) // in etwa 20% der Fontsize ausmacht
+ aPoint.Y() -= ( aSize.Height() / 5 );
+ }
+ ImplMoveTo( aPoint );
+ if ( nRotation )
+ {
+ *mpPS << "gs ";
+ ImplWriteF( nRotation, 1 );
+ *mpPS << "r ";
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplDefineFont( const char* pOriginalName, const char* pItalic )
+{
+ *mpPS << (BYTE)'/'; //convert the font pOriginalName using ISOLatin1Encoding
+ *mpPS << pOriginalName;
+ switch ( maFont.GetWeight() )
+ {
+ case WEIGHT_SEMIBOLD :
+ case WEIGHT_BOLD :
+ case WEIGHT_ULTRABOLD :
+ case WEIGHT_BLACK :
+ *mpPS << "-Bold";
+ if ( maFont.GetItalic() != ITALIC_NONE )
+ *mpPS << pItalic;
+ break;
+ default:
+ if ( maFont.GetItalic() != ITALIC_NONE )
+ *mpPS << pItalic;
+ break;
+ }
+ ImplWriteLine( " f" );
+}
+
+//---------------------------------------------------------------------------------
+//---------------------------------------------------------------------------------
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplClosePathDraw( ULONG nMode )
+{
+ *mpPS << "pc";
+ mnCursorPos += 2;
+ ImplExecMode( nMode );
+}
+
+void PSWriter::ImplPathDraw()
+{
+ *mpPS << "ps";
+ mnCursorPos += 2;
+ ImplExecMode( PS_RET );
+}
+
+//---------------------------------------------------------------------------------
+
+inline void PSWriter::ImplWriteLineColor( ULONG nMode )
+{
+ if ( aColor != aLineColor )
+ {
+ aColor = aLineColor;
+ ImplWriteColor( nMode );
+ }
+}
+inline void PSWriter::ImplWriteFillColor( ULONG nMode )
+{
+ if ( aColor != aFillColor )
+ {
+ aColor = aFillColor;
+ ImplWriteColor( nMode );
+ }
+}
+inline void PSWriter::ImplWriteTextColor( ULONG nMode )
+{
+ if ( aColor != aTextColor )
+ {
+ aColor = aTextColor;
+ ImplWriteColor( nMode );
+ }
+}
+inline void PSWriter::ImplWriteTextFillColor( ULONG nMode )
+{
+ if ( aColor != aTextFillColor )
+ {
+ aColor = aTextFillColor;
+ ImplWriteColor( nMode );
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteColor( ULONG nMode )
+{
+ if ( mbGrayScale )
+ {
+ // writes the Color (grayscale) as a Number from 0.000 up to 1.000
+
+ ImplWriteF( 1000 * ( (BYTE)aColor.GetRed() * 77 + (BYTE)aColor.GetGreen() * 151 +
+ (BYTE)aColor.GetBlue() * 28 + 1 ) / 65536, 3, nMode );
+ }
+ else
+ {
+ ImplWriteB1 ( (BYTE)aColor.GetRed() );
+ ImplWriteB1 ( (BYTE)aColor.GetGreen() );
+ ImplWriteB1 ( (BYTE)aColor.GetBlue() );
+ }
+ *mpPS << "c"; // ( c is defined as setrgbcolor or setgray )
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+double PSWriter::ImplGetScaling( const MapMode& rMapMode )
+{
+ double nMul;
+ switch ( rMapMode.GetMapUnit() )
+ {
+ case MAP_PIXEL :
+ case MAP_SYSFONT :
+ case MAP_APPFONT :
+
+ case MAP_100TH_MM :
+ nMul = 1;
+ break;
+ case MAP_10TH_MM :
+ nMul = 10;
+ break;
+ case MAP_MM :
+ nMul = 100;
+ break;
+ case MAP_CM :
+ nMul = 1000;
+ break;
+ case MAP_1000TH_INCH :
+ nMul = 2.54;
+ break;
+ case MAP_100TH_INCH :
+ nMul = 25.4;
+ break;
+ case MAP_10TH_INCH :
+ nMul = 254;
+ break;
+ case MAP_INCH :
+ nMul = 2540;
+ break;
+ case MAP_TWIP :
+ nMul = 1.76388889;
+ break;
+ case MAP_POINT :
+ nMul = 35.27777778;
+ break;
+ default:
+ nMul = 1.0;
+ break;
+ }
+ return nMul;
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplGetMapMode( const MapMode& rMapMode )
+{
+ ImplWriteLine( "tm setmatrix" );
+ double fMul = ImplGetScaling( rMapMode );
+ double fScaleX = (double)rMapMode.GetScaleX() * fMul;
+ double fScaleY = (double)rMapMode.GetScaleY() * fMul;
+ ImplTranslate( rMapMode.GetOrigin().X() * fScaleX, rMapMode.GetOrigin().Y() * fScaleY );
+ ImplScale( fScaleX, fScaleY );
+}
+
+//---------------------------------------------------------------------------------
+
+inline void PSWriter::ImplExecMode( ULONG nMode )
+{
+ if ( nMode & PS_WRAP )
+ {
+ if ( mnCursorPos >= PS_LINESIZE )
+ {
+ mnCursorPos = 0;
+ *mpPS << (BYTE)0xa;
+ return;
+ }
+ }
+ if ( nMode & PS_SPACE )
+ {
+ *mpPS << (BYTE)32;
+ mnCursorPos++;
+ }
+ if ( nMode & PS_RET )
+ {
+ *mpPS << (BYTE)0xa;
+ mnCursorPos = 0;
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+inline void PSWriter::ImplWriteLine( const char* pString, ULONG nMode )
+{
+ ULONG i = 0;
+ while ( pString[ i ] )
+ {
+ *mpPS << (BYTE)pString[ i++ ];
+ }
+ mnCursorPos += i;
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteLineInfo( double fLWidth, double fMLimit,
+ SvtGraphicStroke::CapType eLCap,
+ SvtGraphicStroke::JoinType eJoin,
+ SvtGraphicStroke::DashArray& rLDash )
+{
+ if ( fLineWidth != fLWidth )
+ {
+ fLineWidth = fLWidth;
+ ImplWriteDouble( fLineWidth );
+ ImplWriteLine( "lw", PS_SPACE );
+ }
+ if ( eLineCap != eLCap )
+ {
+ eLineCap = eLCap;
+ ImplWriteLong( (sal_Int32)eLineCap, PS_SPACE );
+ ImplWriteLine( "lc", PS_SPACE );
+ }
+ if ( eJoinType != eJoin )
+ {
+ eJoinType = eJoin;
+ ImplWriteLong( (sal_Int32)eJoinType, PS_SPACE );
+ ImplWriteLine( "lj", PS_SPACE );
+ }
+ if ( eJoinType == SvtGraphicStroke::joinMiter )
+ {
+ if ( fMiterLimit != fMLimit )
+ {
+ fMiterLimit = fMLimit;
+ ImplWriteDouble( fMiterLimit );
+ ImplWriteLine( "ml", PS_SPACE );
+ }
+ }
+ if ( aDashArray != rLDash )
+ {
+ aDashArray = rLDash;
+ sal_uInt32 j, i = aDashArray.size();
+ ImplWriteLine( "[", PS_SPACE );
+ for ( j = 0; j < i; j++ )
+ ImplWriteDouble( aDashArray[ j ] );
+ ImplWriteLine( "] 0 ld" );
+ }
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteLineInfo( const LineInfo& rLineInfo )
+{
+ SvtGraphicStroke::DashArray l_aDashArray;
+ if ( rLineInfo.GetStyle() == LINE_DASH )
+ l_aDashArray.push_back( 2 );
+ const double fLWidth(( ( rLineInfo.GetWidth() + 1 ) + ( rLineInfo.GetWidth() + 1 ) ) * 0.5);
+ SvtGraphicStroke::JoinType aJoinType(SvtGraphicStroke::joinMiter);
+
+ switch(rLineInfo.GetLineJoin())
+ {
+ default: // B2DLINEJOIN_NONE, B2DLINEJOIN_MIDDLE
+ // do NOT use SvtGraphicStroke::joinNone here
+ // since it will be written as numerical value directly
+ // and is NOT a valid EPS value
+ break;
+ case basegfx::B2DLINEJOIN_MITER:
+ aJoinType = SvtGraphicStroke::joinMiter;
+ break;
+ case basegfx::B2DLINEJOIN_BEVEL:
+ aJoinType = SvtGraphicStroke::joinBevel;
+ break;
+ case basegfx::B2DLINEJOIN_ROUND:
+ aJoinType = SvtGraphicStroke::joinRound;
+ break;
+ }
+
+ ImplWriteLineInfo( fLWidth, fMiterLimit, SvtGraphicStroke::capButt, aJoinType, l_aDashArray );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteLong( sal_Int32 nNumber, ULONG nMode )
+{
+ const ByteString aNumber( ByteString::CreateFromInt32( nNumber ) );
+ ULONG nLen = aNumber.Len();
+ mnCursorPos += nLen;
+ for ( USHORT n = 0; n < nLen; n++ )
+ *mpPS << aNumber.GetChar( n );
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteDouble( double fNumber, ULONG nMode )
+{
+ sal_Int32 nLength;
+
+ sal_Int32 nPTemp = (sal_Int32)fNumber;
+ sal_Int32 nATemp = labs( (sal_Int32)( ( fNumber - nPTemp ) * 100000 ) );
+
+ if ( !nPTemp && nATemp && ( fNumber < 0.0 ) )
+ *mpPS << (sal_Char)'-';
+
+ ByteString aNumber1( ByteString::CreateFromInt32( nPTemp ) );
+ nLength = aNumber1.Len();
+ mnCursorPos += nLength;
+ for ( sal_Int32 n = 0; n < nLength; n++ )
+ *mpPS << aNumber1.GetChar( (sal_uInt16)n );
+
+ int zCount = 0;
+ if ( nATemp )
+ {
+ *mpPS << (BYTE)'.';
+ mnCursorPos++;
+ const ByteString aNumber2( ByteString::CreateFromInt32( nATemp ) );
+
+ sal_Int16 n, nLen = aNumber2.Len();
+ if ( nLen < 8 )
+ {
+ mnCursorPos += 6 - nLen;
+ for ( n = 0; n < ( 5 - nLen ); n++ )
+ {
+ *mpPS << (BYTE)'0';
+ }
+ }
+ mnCursorPos += nLen;
+ for ( n = 0; n < nLen; n++ )
+ {
+ *mpPS << aNumber2.GetChar( n );
+ zCount--;
+ if ( aNumber2.GetChar( n ) != '0' )
+ zCount = 0;
+ }
+ if ( zCount )
+ mpPS->SeekRel( zCount );
+ }
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+// writes the number to stream: nNumber / ( 10^nCount )
+
+void PSWriter::ImplWriteF( sal_Int32 nNumber, ULONG nCount, ULONG nMode )
+{
+ if ( nNumber < 0 )
+ {
+ *mpPS << (BYTE)'-';
+ nNumber = -nNumber;
+ mnCursorPos++;
+ }
+ const ByteString aScaleFactor( ByteString::CreateFromInt32( nNumber ) );
+ ULONG nLen = aScaleFactor.Len();
+ long nStSize = ( nCount + 1 ) - nLen;
+ if ( nStSize >= 1 )
+ {
+ *mpPS << (BYTE)'0';
+ mnCursorPos++;
+ }
+ if ( nStSize >= 2 )
+ {
+ *mpPS << (BYTE)'.';
+ for ( long i = 1; i < nStSize; i++ )
+ {
+ *mpPS << (BYTE)'0';
+ mnCursorPos++;
+ }
+ }
+ mnCursorPos += nLen;
+ for( USHORT n = 0UL; n < nLen; n++ )
+ {
+ if ( n == nLen - nCount )
+ {
+ *mpPS << (BYTE)'.';
+ mnCursorPos++;
+ }
+ *mpPS << aScaleFactor.GetChar( n );
+ }
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteByte( BYTE nNumb, ULONG nMode )
+{
+ *mpPS << ( nNumb );
+ mnCursorPos++;
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+void PSWriter::ImplWriteHexByte( BYTE nNumb, ULONG nMode )
+{
+ if ( ( nNumb >> 4 ) > 9 )
+ *mpPS << (BYTE)( ( nNumb >> 4 ) + 'A' - 10 );
+ else
+ *mpPS << (BYTE)( ( nNumb >> 4 ) + '0' );
+
+ if ( ( nNumb & 0xf ) > 9 )
+ *mpPS << (BYTE)( ( nNumb & 0xf ) + 'A' - 10 );
+ else
+ *mpPS << (BYTE)( ( nNumb & 0xf ) + '0' );
+ mnCursorPos += 2;
+ ImplExecMode( nMode );
+}
+
+//---------------------------------------------------------------------------------
+
+// writes the BYTE nNumb as a Number from 0.000 up to 1.000
+
+void PSWriter::ImplWriteB1( BYTE nNumb, ULONG nMode )
+{
+ ImplWriteF( 1000 * ( nNumb + 1 ) / 256 , 3, nMode );
+}
+
+
+// ------------------------------------------------------------------------
+
+inline void PSWriter::WriteBits( USHORT nCode, USHORT nCodeLen )
+{
+ dwShift |= ( nCode << ( nOffset - nCodeLen ) );
+ nOffset -= nCodeLen;
+ while ( nOffset < 24 )
+ {
+ ImplWriteHexByte( (BYTE)( dwShift >> 24 ) );
+ dwShift <<= 8;
+ nOffset += 8;
+ }
+ if ( nCode == 257 && nOffset != 32 )
+ ImplWriteHexByte( (BYTE)( dwShift >> 24 ) );
+}
+
+// ------------------------------------------------------------------------
+
+void PSWriter::StartCompression()
+{
+ USHORT i;
+ nDataSize = 8;
+
+ nClearCode = 1 << nDataSize;
+ nEOICode = nClearCode + 1;
+ nTableSize = nEOICode + 1;
+ nCodeSize = nDataSize + 1;
+
+ nOffset = 32; // anzahl freier bits in dwShift
+ dwShift = 0;
+
+ pTable = new PSLZWCTreeNode[ 4096 ];
+
+ for ( i = 0; i < 4096; i++ )
+ {
+ pTable[ i ].pBrother = pTable[ i ].pFirstChild = NULL;
+ pTable[ i ].nValue = (BYTE)( pTable[ i ].nCode = i );
+ }
+ pPrefix = NULL;
+ WriteBits( nClearCode, nCodeSize );
+}
+
+// ------------------------------------------------------------------------
+
+void PSWriter::Compress( BYTE nCompThis )
+{
+ PSLZWCTreeNode* p;
+ USHORT i;
+ BYTE nV;
+
+ if( !pPrefix )
+ {
+ pPrefix = pTable + nCompThis;
+ }
+ else
+ {
+ nV = nCompThis;
+ for( p = pPrefix->pFirstChild; p != NULL; p = p->pBrother )
+ {
+ if ( p->nValue == nV )
+ break;
+ }
+
+ if( p )
+ pPrefix = p;
+ else
+ {
+ WriteBits( pPrefix->nCode, nCodeSize );
+
+ if ( nTableSize == 409 )
+ {
+ WriteBits( nClearCode, nCodeSize );
+
+ for ( i = 0; i < nClearCode; i++ )
+ pTable[ i ].pFirstChild = NULL;
+
+ nCodeSize = nDataSize + 1;
+ nTableSize = nEOICode + 1;
+ }
+ else
+ {
+ if( nTableSize == (USHORT)( ( 1 << nCodeSize ) - 1 ) )
+ nCodeSize++;
+
+ p = pTable + ( nTableSize++ );
+ p->pBrother = pPrefix->pFirstChild;
+ pPrefix->pFirstChild = p;
+ p->nValue = nV;
+ p->pFirstChild = NULL;
+ }
+
+ pPrefix = pTable + nV;
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void PSWriter::EndCompression()
+{
+ if( pPrefix )
+ WriteBits( pPrefix->nCode, nCodeSize );
+
+ WriteBits( nEOICode, nCodeSize );
+ delete[] pTable;
+}
+
+// ------------------------------------------------------------------------
+
+BYTE* PSWriter::ImplSearchEntry( BYTE* pSource, BYTE* pDest, ULONG nComp, ULONG nSize )
+{
+ while ( nComp-- >= nSize )
+ {
+ ULONG i;
+ for ( i = 0; i < nSize; i++ )
+ {
+ if ( ( pSource[i]&~0x20 ) != ( pDest[i]&~0x20 ) )
+ break;
+ }
+ if ( i == nSize )
+ return pSource;
+ pSource++;
+ }
+ return NULL;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PSWriter::ImplGetBoundingBox( double* nNumb, BYTE* pSource, ULONG nSize )
+{
+ BOOL bRetValue = FALSE;
+ ULONG nBytesRead;
+
+ if ( nSize < 256 ) // we assume that the file is greater than 256 bytes
+ return FALSE;
+
+ if ( nSize < POSTSCRIPT_BOUNDINGSEARCH )
+ nBytesRead = nSize;
+ else
+ nBytesRead = POSTSCRIPT_BOUNDINGSEARCH;
+
+ BYTE* pDest = ImplSearchEntry( pSource, (BYTE*)"%%BoundingBox:", nBytesRead, 14 );
+ if ( pDest )
+ {
+ int nSecurityCount = 100; // only 100 bytes following the bounding box will be checked
+ nNumb[0] = nNumb[1] = nNumb[2] = nNumb[3] = 0;
+ pDest += 14;
+ for ( int i = 0; ( i < 4 ) && nSecurityCount; i++ )
+ {
+ int nDivision = 1;
+ BOOL bDivision = FALSE;
+ BOOL bNegative = FALSE;
+ BOOL bValid = TRUE;
+
+ while ( ( --nSecurityCount ) && ( ( *pDest == ' ' ) || ( *pDest == 0x9 ) ) )
+ pDest++;
+ BYTE nByte = *pDest;
+ while ( nSecurityCount && ( nByte != ' ' ) && ( nByte != 0x9 ) && ( nByte != 0xd ) && ( nByte != 0xa ) )
+ {
+ switch ( nByte )
+ {
+ case '.' :
+ if ( bDivision )
+ bValid = FALSE;
+ else
+ bDivision = TRUE;
+ break;
+ case '-' :
+ bNegative = TRUE;
+ break;
+ default :
+ if ( ( nByte < '0' ) || ( nByte > '9' ) )
+ nSecurityCount = 1; // error parsing the bounding box values
+ else if ( bValid )
+ {
+ if ( bDivision )
+ nDivision*=10;
+ nNumb[i] *= 10;
+ nNumb[i] += nByte - '0';
+ }
+ break;
+ }
+ nSecurityCount--;
+ nByte = *(++pDest);
+ }
+ if ( bNegative )
+ nNumb[i] = -nNumb[i];
+ if ( bDivision && ( nDivision != 1 ) )
+ nNumb[i] /= nDivision;
+ }
+ if ( nSecurityCount)
+ bRetValue = TRUE;
+ }
+ return bRetValue;
+}
+
+//================== GraphicExport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem, BOOL)
+{
+ PSWriter aPSWriter;
+ return aPSWriter.WritePS( rGraphic, rStream, pFilterConfigItem );
+}
+
+//---------------------------------------------------------------------------------
+
+extern "C" BOOL __LOADONCALLAPI DoExportDialog( FltCallDialogParameter& rPara )
+{
+ BOOL bRet = FALSE;
+
+ if ( rPara.pWindow )
+ {
+ ByteString aResMgrName( "eps" );
+ ResMgr* pResMgr;
+
+ pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
+
+ if( pResMgr )
+ {
+ rPara.pResMgr = pResMgr;
+ bRet = ( DlgExportEPS( rPara ).Execute() == RET_OK );
+ delete pResMgr;
+ }
+ else
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/eps/epsstr.src b/filter/source/graphicfilter/eps/epsstr.src
new file mode 100644
index 000000000000..5f456cbf8027
--- /dev/null
+++ b/filter/source/graphicfilter/eps/epsstr.src
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "strings.hrc"
+
+String KEY_VERSION_CHECK
+{
+ Text [ en-US ] = "Warning: Not all of the imported EPS graphics could be saved at level1\nas some are at a higher level!";
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/filter/source/graphicfilter/eps/exports.map b/filter/source/graphicfilter/eps/exports.map
new file mode 100644
index 000000000000..1b61354c2869
--- /dev/null
+++ b/filter/source/graphicfilter/eps/exports.map
@@ -0,0 +1,8 @@
+EPSEXPORTER_1_0 {
+ global:
+ GraphicExport;
+ DoExportDialog;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/eps/makefile.mk b/filter/source/graphicfilter/eps/makefile.mk
new file mode 100644
index 000000000000..189972e80e6e
--- /dev/null
+++ b/filter/source/graphicfilter/eps/makefile.mk
@@ -0,0 +1,79 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=eps
+DEPTARGET=veps
+
+#GEN_HID=TRUE
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SRS1NAME=$(TARGET)
+SRC1FILES = dlgeps.src \
+ epsstr.src
+.IF "$(L10N_framework)"==""
+EXCEPTIONSFILES=$(SLO)$/eps.obj
+SLOFILES = $(SLO)$/eps.obj \
+ $(SLO)$/dlgeps.obj
+.ENDIF
+
+# ==========================================================================
+
+RESLIB1NAME=$(TARGET)
+RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
+SHL1TARGET= eps$(DLLPOSTFIX)
+SHL1IMPLIB= eps
+SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/eps.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/eps.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/eps/strings.hrc b/filter/source/graphicfilter/eps/strings.hrc
new file mode 100644
index 000000000000..8628c16b1e94
--- /dev/null
+++ b/filter/source/graphicfilter/eps/strings.hrc
@@ -0,0 +1,29 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#define KEY_VERSION_CHECK 260
+
diff --git a/filter/source/graphicfilter/eras/eras.cxx b/filter/source/graphicfilter/eras/eras.cxx
new file mode 100644
index 000000000000..845dbf6ff83a
--- /dev/null
+++ b/filter/source/graphicfilter/eras/eras.cxx
@@ -0,0 +1,317 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+
+//============================ RASWriter ==================================
+
+class RASWriter {
+
+private:
+
+ SvStream* mpOStm;
+ USHORT mpOStmOldModus;
+
+ BOOL mbStatus;
+ BitmapReadAccess* mpAcc;
+
+ ULONG mnWidth, mnHeight;
+ USHORT mnColors, mnDepth;
+
+ ULONG mnRepCount;
+ BYTE mnRepVal;
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+ void ImplCallback( ULONG nCurrentYPos );
+ BOOL ImplWriteHeader();
+ void ImplWritePalette();
+ void ImplWriteBody();
+ void ImplPutByte( BYTE ); // RLE decoding
+
+public:
+ RASWriter();
+ ~RASWriter();
+
+ BOOL WriteRAS( const Graphic& rGraphic, SvStream& rRAS, FilterConfigItem* pFilterConfigItem );
+};
+
+//=================== Methoden von RASWriter ==============================
+
+RASWriter::RASWriter() :
+ mbStatus ( TRUE ),
+ mpAcc ( NULL ),
+ mnRepCount ( 0xffffffff )
+{
+}
+
+// ------------------------------------------------------------------------
+
+RASWriter::~RASWriter()
+{
+}
+
+// ------------------------------------------------------------------------
+
+void RASWriter::ImplCallback( ULONG nYPos )
+{
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->setValue( (USHORT)( ( 100 * nYPos ) / mnHeight ) );
+}
+
+// ------------------------------------------------------------------------
+
+BOOL RASWriter::WriteRAS( const Graphic& rGraphic, SvStream& rRAS, FilterConfigItem* pFilterConfigItem)
+{
+ Bitmap aBmp;
+
+ mpOStm = &rRAS;
+
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
+ aBmp = aBmpEx.GetBitmap();
+
+ if ( aBmp.GetBitCount() == 4 )
+ aBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
+
+ mnDepth = aBmp.GetBitCount();
+
+ // export code below only handles three discrete cases
+ mnDepth = mnDepth <= 1 ? 1 : mnDepth <= 8 ? 8 : 24;
+
+ mpAcc = aBmp.AcquireReadAccess();
+ if ( mpAcc )
+ {
+ mpOStmOldModus = mpOStm->GetNumberFormatInt();
+ mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ if ( ImplWriteHeader() )
+ {
+ if ( mnDepth <= 8 )
+ ImplWritePalette();
+ ImplWriteBody();
+ }
+ aBmp.ReleaseAccess( mpAcc );
+ }
+ else
+ mbStatus = FALSE;
+
+ mpOStm->SetNumberFormatInt( mpOStmOldModus );
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL RASWriter::ImplWriteHeader()
+{
+ mnWidth = mpAcc->Width();
+ mnHeight = mpAcc->Height();
+ if ( mnDepth <= 8 )
+ {
+ mnColors = mpAcc->GetPaletteEntryCount();
+ if (mnColors == 0)
+ mbStatus = FALSE;
+ }
+ if ( mbStatus && mnWidth && mnHeight && mnDepth )
+ {
+ *mpOStm << (UINT32)0x59a66a95 << (UINT32)mnWidth << (UINT32)mnHeight
+ << (UINT32)mnDepth
+ << (UINT32)(( ( ( ( mnWidth * mnDepth ) + 15 ) >> 4 ) << 1 ) * mnHeight)
+ << (UINT32)2;
+
+ if ( mnDepth > 8 )
+ *mpOStm << (UINT32)0 << (UINT32)0;
+ else
+ {
+
+ *mpOStm << (UINT32)1 << (UINT32)( mnColors * 3 );
+ }
+ }
+ else mbStatus = FALSE;
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void RASWriter::ImplWritePalette()
+{
+ USHORT i;
+
+ for ( i = 0; i < mnColors; *mpOStm << mpAcc->GetPaletteColor( i++ ).GetRed() ) ;
+ for ( i = 0; i < mnColors; *mpOStm << mpAcc->GetPaletteColor( i++ ).GetGreen() ) ;
+ for ( i = 0; i < mnColors; *mpOStm << mpAcc->GetPaletteColor( i++ ).GetBlue() ) ;
+}
+
+// ------------------------------------------------------------------------
+
+void RASWriter::ImplWriteBody()
+{
+ ULONG x, y;
+
+ if ( mnDepth == 24 )
+ {
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ ImplCallback( y ); // processing output
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ BitmapColor aColor( mpAcc->GetPixel( y, x ) );
+ ImplPutByte( aColor.GetBlue() ); // Format ist BGR
+ ImplPutByte( aColor.GetGreen() );
+ ImplPutByte( aColor.GetRed() );
+ }
+ if ( x & 1 ) ImplPutByte( 0 ); // WORD ALIGNMENT ???
+ }
+ }
+ else if ( mnDepth == 8 )
+ {
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ ImplCallback( y ); // processing output
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ ImplPutByte ( mpAcc->GetPixel( y, x ) );
+ }
+ if ( x & 1 ) ImplPutByte( 0 ); // WORD ALIGNMENT ???
+ }
+ }
+ else if ( mnDepth == 1 )
+ {
+ BYTE nDat = 0;
+
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ ImplCallback( y ); // processing output
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ nDat = ( ( nDat << 1 ) | ( mpAcc->GetPixel ( y, x ) & 1 ) );
+ if ( ( x & 7 ) == 7 )
+ ImplPutByte( nDat );
+ }
+ if ( x & 7 )
+ ImplPutByte( sal::static_int_cast< BYTE >(nDat << ( ( ( x & 7 ) ^ 7 ) + 1)) );// write remaining bits
+ if (!( ( x - 1 ) & 0x8 ) )
+ ImplPutByte( 0 ); // WORD ALIGNMENT ???
+ }
+ }
+ ImplPutByte( mnRepVal + 1 ); // end of RLE decoding
+}
+
+// ------------------------------------------------------------------------
+
+void RASWriter::ImplPutByte( BYTE nPutThis )
+{
+ if ( mnRepCount == 0xffffffff )
+ {
+ mnRepCount = 0;
+ mnRepVal = nPutThis;
+ }
+ else
+ {
+ if ( ( nPutThis == mnRepVal ) && ( mnRepCount != 0xff ) )
+ mnRepCount++;
+ else
+ {
+ if ( mnRepCount == 0 )
+ {
+ *mpOStm << (BYTE)mnRepVal;
+ if ( mnRepVal == 0x80 )
+ *mpOStm << (BYTE)0;
+ }
+ else
+ {
+ *mpOStm << (BYTE)0x80;
+ *mpOStm << (BYTE)mnRepCount;
+ *mpOStm << (BYTE)mnRepVal;
+ }
+ mnRepVal = nPutThis;
+ mnRepCount = 0;
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+// ---------------------
+// - exported function -
+// ---------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{
+ RASWriter aRASWriter;
+
+ return aRASWriter.WriteRAS( rGraphic, rStream, pFilterConfigItem );
+}
+#ifndef GCC
+#endif
+
+// ---------------
+// - Win16 trash -
+// ---------------
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+ if ( nHeap )
+ UnlockData( 0 );
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/eras/exports.map b/filter/source/graphicfilter/eras/exports.map
new file mode 100644
index 000000000000..4a78a96ee951
--- /dev/null
+++ b/filter/source/graphicfilter/eras/exports.map
@@ -0,0 +1,7 @@
+RASEXPORTER_1_0 {
+ global:
+ GraphicExport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/eras/makefile.mk b/filter/source/graphicfilter/eras/makefile.mk
new file mode 100644
index 000000000000..051c70699595
--- /dev/null
+++ b/filter/source/graphicfilter/eras/makefile.mk
@@ -0,0 +1,67 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=eras
+DEPTARGET=veras
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+.IF "$(L10N_framework)"==""
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+
+SLOFILES = $(SLO)$/eras.obj
+
+# ==========================================================================
+
+SHL1TARGET= era$(DLLPOSTFIX)
+SHL1IMPLIB= eras
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB) $(SVTOOLLIB)
+SHL1LIBS= $(SLB)$/eras.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/eras.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
+
diff --git a/filter/source/graphicfilter/etiff/etiff.cxx b/filter/source/graphicfilter/etiff/etiff.cxx
new file mode 100644
index 000000000000..0e71141eb812
--- /dev/null
+++ b/filter/source/graphicfilter/etiff/etiff.cxx
@@ -0,0 +1,648 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svl/solar.hrc>
+#include <svtools/fltcall.hxx>
+#include <svtools/FilterConfigItem.hxx>
+
+#define NewSubfileType 254
+#define ImageWidth 256
+#define ImageLength 257
+#define BitsPerSample 258
+#define Compression 259
+#define PhotometricInterpretation 262
+#define StripOffsets 273
+#define SamplesPerPixel 277
+#define RowsPerStrip 278
+#define StripByteCounts 279
+#define XResolution 282
+#define YResolution 283
+#define PlanarConfiguration 284
+#define ResolutionUnit 296
+#define ColorMap 320
+#define ReferenceBlackWhite 532
+
+// -------------
+// - TIFFWriter -
+// -------------
+
+struct TIFFLZWCTreeNode
+{
+
+ TIFFLZWCTreeNode* pBrother; // naechster Knoten, der den selben Vater hat
+ TIFFLZWCTreeNode* pFirstChild; // erster Sohn
+ USHORT nCode; // Der Code fuer den String von Pixelwerten, der sich ergibt, wenn
+ USHORT nValue; // Der Pixelwert
+};
+
+class TIFFWriter
+{
+private:
+
+ SvStream* mpOStm;
+ UINT32 mnStreamOfs;
+
+ BOOL mbStatus;
+ BitmapReadAccess* mpAcc;
+
+ UINT32 mnWidth, mnHeight, mnColors;
+ UINT32 mnCurAllPictHeight;
+ UINT32 mnSumOfAllPictHeight;
+ UINT32 mnBitsPerPixel;
+ UINT32 mnLastPercent;
+
+ UINT32 mnLatestIfdPos;
+ UINT16 mnTagCount; // number of tags already written
+ UINT32 mnCurrentTagCountPos; // offset to the position where the current
+ // tag count is to insert
+
+ UINT32 mnXResPos; // if != 0 this DWORDs stores the
+ UINT32 mnYResPos; // actual streamposition of the
+ UINT32 mnPalPos; // Tag Entry
+ UINT32 mnBitmapPos;
+ UINT32 mnStripByteCountPos;
+
+ TIFFLZWCTreeNode* pTable;
+ TIFFLZWCTreeNode* pPrefix;
+ USHORT nDataSize;
+ USHORT nClearCode;
+ USHORT nEOICode;
+ USHORT nTableSize;
+ USHORT nCodeSize;
+ ULONG nOffset;
+ ULONG dwShift;
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+ void ImplCallback( UINT32 nPercent );
+ BOOL ImplWriteHeader( BOOL bMultiPage );
+ void ImplWritePalette();
+ BOOL ImplWriteBody();
+ void ImplWriteTag( UINT16 TagID, UINT16 DataType, UINT32 NumberOfItems, UINT32 Value);
+ void ImplWriteResolution( ULONG nStreamPos, sal_uInt32 nResolutionUnit );
+ void StartCompression();
+ void Compress( BYTE nSrc );
+ void EndCompression();
+ inline void WriteBits( USHORT nCode, USHORT nCodeLen );
+
+public:
+
+ TIFFWriter();
+ ~TIFFWriter();
+
+ BOOL WriteTIFF( const Graphic& rGraphic, SvStream& rTIFF, FilterConfigItem* pFilterConfigItem );
+};
+
+// ------------------------------------------------------------------------
+
+TIFFWriter::TIFFWriter() :
+ mbStatus ( TRUE ),
+ mpAcc ( NULL ),
+ mnCurAllPictHeight ( 0 ),
+ mnSumOfAllPictHeight( 0 ),
+ mnLastPercent ( 0 ),
+ mnXResPos ( 0 ),
+ mnYResPos ( 0 ),
+ mnBitmapPos ( 0 ),
+ mnStripByteCountPos ( 0 )
+{
+}
+
+// ------------------------------------------------------------------------
+
+TIFFWriter::~TIFFWriter()
+{
+}
+
+// ------------------------------------------------------------------------
+
+BOOL TIFFWriter::WriteTIFF( const Graphic& rGraphic, SvStream& rTIFF, FilterConfigItem* pFilterConfigItem)
+{
+ ULONG* pDummy = new ULONG; delete pDummy; // damit unter OS/2
+ // das richtige (Tools-)new
+ // verwendet wird, da es sonst
+ // in dieser DLL nur Vector-news
+ // gibt;
+
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ // #i69169# copy stream
+ mpOStm = &rTIFF;
+
+ const UINT16 nOldFormat = mpOStm->GetNumberFormatInt();
+ mnStreamOfs = mpOStm->Tell();
+
+ // we will use the BIG Endian Mode
+ // TIFF header
+ mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+ *mpOStm << (UINT32)0x4d4d002a; // TIFF identifier
+ mnLatestIfdPos = mpOStm->Tell();
+ *mpOStm << (UINT32)0;
+
+ Animation aAnimation;
+ Bitmap aBmp;
+
+ if( mbStatus )
+ {
+ if ( rGraphic.IsAnimated() )
+ aAnimation = rGraphic.GetAnimation();
+ else
+ {
+ AnimationBitmap aAnimationBitmap( rGraphic.GetBitmap(), Point(), Size() );
+ aAnimation.Insert( aAnimationBitmap );
+ }
+
+ USHORT i;
+ for ( i = 0; i < aAnimation.Count(); i++ )
+ mnSumOfAllPictHeight += aAnimation.Get( i ).aBmpEx.GetSizePixel().Height();
+
+ for ( i = 0; mbStatus && ( i < aAnimation.Count() ); i++ )
+ {
+ mnPalPos = 0;
+ const AnimationBitmap& rAnimationBitmap = aAnimation.Get( i );
+ aBmp = rAnimationBitmap.aBmpEx.GetBitmap();
+ mpAcc = aBmp.AcquireReadAccess();
+ if ( mpAcc )
+ {
+ mnBitsPerPixel = aBmp.GetBitCount();
+
+ // export code below only handles four discrete cases
+ mnBitsPerPixel =
+ mnBitsPerPixel <= 1 ? 1 : mnBitsPerPixel <= 4 ? 4 : mnBitsPerPixel <= 8 ? 8 : 24;
+
+ if ( ImplWriteHeader( ( aAnimation.Count() > 0 ) ) )
+ {
+ Size aDestMapSize( 300, 300 );
+ const MapMode aMapMode( aBmp.GetPrefMapMode() );
+ if ( aMapMode.GetMapUnit() != MAP_PIXEL )
+ {
+ const Size aPrefSize( rGraphic.GetPrefSize() );
+ aDestMapSize = OutputDevice::LogicToLogic( aPrefSize, aMapMode, MAP_INCH );
+ }
+ ImplWriteResolution( mnXResPos, aDestMapSize.Width() );
+ ImplWriteResolution( mnYResPos, aDestMapSize.Height() );
+ if ( mnPalPos )
+ ImplWritePalette();
+ ImplWriteBody();
+ }
+ UINT32 nCurPos = mpOStm->Tell();
+ mpOStm->Seek( mnCurrentTagCountPos );
+ *mpOStm << mnTagCount;
+ mpOStm->Seek( nCurPos );
+
+ aBmp.ReleaseAccess( mpAcc );
+ }
+ else
+ mbStatus = FALSE;
+ }
+ }
+ mpOStm->SetNumberFormatInt( nOldFormat );
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::ImplCallback( UINT32 nPercent )
+{
+ if ( xStatusIndicator.is() )
+ {
+ if( nPercent >= mnLastPercent + 3 )
+ {
+ mnLastPercent = nPercent;
+ if ( nPercent <= 100 )
+ xStatusIndicator->setValue( nPercent );
+ }
+ }
+}
+
+
+// ------------------------------------------------------------------------
+
+BOOL TIFFWriter::ImplWriteHeader( BOOL bMultiPage )
+{
+ mnTagCount = 0;
+ mnWidth = mpAcc->Width();
+ mnHeight = mpAcc->Height();
+
+ if ( mnWidth && mnHeight && mnBitsPerPixel && mbStatus )
+ {
+ UINT32 nCurrentPos = mpOStm->Tell();
+ mpOStm->Seek( mnLatestIfdPos );
+ *mpOStm << (UINT32)( nCurrentPos - mnStreamOfs ); // offset to the IFD
+ mpOStm->Seek( nCurrentPos );
+
+ // (OFS8) TIFF image file directory (IFD)
+ mnCurrentTagCountPos = mpOStm->Tell();
+ *mpOStm << (UINT16)0; // the number of tagentrys is to insert later
+
+ UINT32 nSubFileFlags = 0;
+ if ( bMultiPage )
+ nSubFileFlags |= 2;
+ ImplWriteTag( NewSubfileType, 4, 1, nSubFileFlags );
+ ImplWriteTag( ImageWidth, 4, 1, mnWidth );
+ ImplWriteTag( ImageLength, 4, 1, mnHeight);
+ ImplWriteTag( BitsPerSample, 3, 1, ( mnBitsPerPixel == 24 ) ? 8 : mnBitsPerPixel );
+ ImplWriteTag( Compression, 3, 1, 5 );
+ BYTE nTemp;
+ switch ( mnBitsPerPixel )
+ {
+ case 1 :
+ nTemp = 1;
+ break;
+ case 4 :
+ case 8 :
+ nTemp = 3;
+ break;
+ case 24:
+ nTemp = 2;
+ break;
+ default:
+ nTemp = 0; // -Wall set a default...
+ break;
+ }
+ ImplWriteTag( PhotometricInterpretation, 3, 1, nTemp );
+ mnBitmapPos = mpOStm->Tell();
+ ImplWriteTag( StripOffsets, 4, 1, 0 );
+ ImplWriteTag( SamplesPerPixel, 3, 1, ( mnBitsPerPixel == 24 ) ? 3 : 1 );
+ ImplWriteTag( RowsPerStrip, 4, 1, mnHeight ); //0xffffffff );
+ mnStripByteCountPos = mpOStm->Tell();
+ ImplWriteTag( StripByteCounts, 4, 1, ( ( mnWidth * mnBitsPerPixel * mnHeight ) + 7 ) >> 3 );
+ mnXResPos = mpOStm->Tell();
+ ImplWriteTag( XResolution, 5, 1, 0 );
+ mnYResPos = mpOStm->Tell();
+ ImplWriteTag( YResolution, 5, 1, 0 );
+ if ( mnBitsPerPixel != 1 )
+ ImplWriteTag( PlanarConfiguration, 3, 1, 1 ); // ( RGB ORDER )
+ ImplWriteTag( ResolutionUnit, 3, 1, 2); // Resolution Unit is Inch
+ if ( ( mnBitsPerPixel == 4 ) || ( mnBitsPerPixel == 8 ) )
+ {
+ mnColors = mpAcc->GetPaletteEntryCount();
+ mnPalPos = mpOStm->Tell();
+ ImplWriteTag( ColorMap, 3, 3 * mnColors, 0 );
+ }
+
+ // and last we write zero to close the num dir entries list
+ mnLatestIfdPos = mpOStm->Tell();
+ *mpOStm << (UINT32)0; // there are no more IFD
+ }
+ else
+ mbStatus = FALSE;
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::ImplWritePalette()
+{
+ USHORT i;
+ ULONG nCurrentPos = mpOStm->Tell();
+ mpOStm->Seek( mnPalPos + 8 ); // the palette tag entry needs the offset
+ *mpOStm << static_cast<sal_uInt32>(nCurrentPos - mnStreamOfs); // to the palette colors
+ mpOStm->Seek( nCurrentPos );
+
+ for ( i = 0; i < mnColors; i++ )
+ {
+ const BitmapColor& rColor = mpAcc->GetPaletteColor( i );
+ *mpOStm << (UINT16)( rColor.GetRed() << 8 );
+ }
+ for ( i = 0; i < mnColors; i++ )
+ {
+ const BitmapColor& rColor = mpAcc->GetPaletteColor( i );
+ *mpOStm << (UINT16)( rColor.GetGreen() << 8 );
+ }
+ for ( i = 0; i < mnColors; i++ )
+ {
+ const BitmapColor& rColor = mpAcc->GetPaletteColor( i );
+ *mpOStm << (UINT16)( rColor.GetBlue() << 8 );
+ }
+}
+
+// ------------------------------------------------------------------------
+
+BOOL TIFFWriter::ImplWriteBody()
+{
+ BYTE nTemp = 0;
+ BYTE nShift;
+ ULONG j, x, y;
+
+ ULONG nGfxBegin = mpOStm->Tell();
+ mpOStm->Seek( mnBitmapPos + 8 ); // the strip offset tag entry needs the offset
+ *mpOStm << static_cast<sal_uInt32>(nGfxBegin - mnStreamOfs); // to the bitmap data
+ mpOStm->Seek( nGfxBegin );
+
+ StartCompression();
+
+ switch( mnBitsPerPixel )
+ {
+ case 24 :
+ {
+ for ( y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
+ {
+ ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ const BitmapColor& rColor = mpAcc->GetPixel( y, x );
+ Compress( rColor.GetRed() );
+ Compress( rColor.GetGreen() );
+ Compress( rColor.GetBlue() );
+ }
+ }
+ }
+ break;
+
+ case 8 :
+ {
+ for ( y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
+ {
+ ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ Compress( mpAcc->GetPixel( y, x ) );
+ }
+ }
+ }
+ break;
+
+ case 4 :
+ {
+ for ( nShift = 0, y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
+ {
+ ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
+ for ( x = 0; x < mnWidth; x++, nShift++ )
+ {
+ if (!( nShift & 1 ))
+ nTemp = ( (BYTE)mpAcc->GetPixel( y, x ) << 4 );
+ else
+ Compress( (BYTE)( nTemp | ( mpAcc->GetPixel( y, x ) & 0xf ) ) );
+ }
+ if ( nShift & 1 )
+ Compress( nTemp );
+ }
+ }
+ break;
+
+ case 1 :
+ {
+ j = 1;
+ for ( y = 0; y < mnHeight; y++, mnCurAllPictHeight++ )
+ {
+ ImplCallback( 100 * mnCurAllPictHeight / mnSumOfAllPictHeight );
+ for ( x = 0; x < mnWidth; x++)
+ {
+ j <<= 1;
+ j |= ( ( ~mpAcc->GetPixel( y, x ) ) & 1 );
+ if ( j & 0x100 )
+ {
+ Compress( (BYTE)j );
+ j = 1;
+ }
+ }
+ if ( j != 1 )
+ {
+ Compress( (BYTE)(j << ( ( ( x & 7) ^ 7 ) + 1 ) ) );
+ j = 1;
+ }
+ }
+ }
+ break;
+
+ default:
+ {
+ mbStatus = FALSE;
+ }
+ break;
+ }
+
+ EndCompression();
+
+ if ( mnStripByteCountPos && mbStatus )
+ {
+ ULONG nGfxEnd = mpOStm->Tell();
+ mpOStm->Seek( mnStripByteCountPos + 8 );
+ *mpOStm << static_cast<sal_uInt32>( nGfxEnd - nGfxBegin ); // mnStripByteCountPos needs the size of the compression data
+ mpOStm->Seek( nGfxEnd );
+ }
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::ImplWriteResolution( ULONG nStreamPos, sal_uInt32 nResolutionUnit )
+{
+ ULONG nCurrentPos = mpOStm->Tell();
+ mpOStm->Seek( nStreamPos + 8 );
+ *mpOStm << (UINT32)nCurrentPos - mnStreamOfs;
+ mpOStm->Seek( nCurrentPos );
+ *mpOStm << (UINT32)1;
+ *mpOStm << nResolutionUnit;
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::ImplWriteTag( UINT16 nTagID, UINT16 nDataType, UINT32 nNumberOfItems, UINT32 nValue)
+{
+ mnTagCount++;
+
+ *mpOStm << nTagID;
+ *mpOStm << nDataType;
+ *mpOStm << nNumberOfItems;
+ if ( nDataType == 3 )
+ nValue <<=16; // in Big Endian Mode WORDS needed to be shifted to a DWORD
+ *mpOStm << nValue;
+}
+
+// ------------------------------------------------------------------------
+
+inline void TIFFWriter::WriteBits( USHORT nCode, USHORT nCodeLen )
+{
+ dwShift |= ( nCode << ( nOffset - nCodeLen ) );
+ nOffset -= nCodeLen;
+ while ( nOffset < 24 )
+ {
+ *mpOStm << (BYTE)( dwShift >> 24 );
+ dwShift <<= 8;
+ nOffset += 8;
+ }
+ if ( nCode == 257 && nOffset != 32 )
+ {
+ *mpOStm << (BYTE)( dwShift >> 24 );
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::StartCompression()
+{
+ USHORT i;
+ nDataSize = 8;
+
+ nClearCode = 1 << nDataSize;
+ nEOICode = nClearCode + 1;
+ nTableSize = nEOICode + 1;
+ nCodeSize = nDataSize + 1;
+
+ nOffset = 32; // anzahl freier bits in dwShift
+ dwShift = 0;
+
+ pTable = new TIFFLZWCTreeNode[ 4096 ];
+
+ for ( i = 0; i < 4096; i++)
+ {
+ pTable[ i ].pBrother = pTable[ i ].pFirstChild = NULL;
+ pTable[ i ].nValue = (BYTE)( pTable[ i ].nCode = i );
+ }
+
+ pPrefix = NULL;
+ WriteBits( nClearCode, nCodeSize );
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::Compress( BYTE nCompThis )
+{
+ TIFFLZWCTreeNode* p;
+ USHORT i;
+ BYTE nV;
+
+ if( !pPrefix )
+ {
+ pPrefix = pTable + nCompThis;
+ }
+ else
+ {
+ nV = nCompThis;
+ for( p = pPrefix->pFirstChild; p != NULL; p = p->pBrother )
+ {
+ if ( p->nValue == nV )
+ break;
+ }
+
+ if( p )
+ pPrefix = p;
+ else
+ {
+ WriteBits( pPrefix->nCode, nCodeSize );
+
+ if ( nTableSize == 409 )
+ {
+ WriteBits( nClearCode, nCodeSize );
+
+ for ( i = 0; i < nClearCode; i++ )
+ pTable[ i ].pFirstChild = NULL;
+
+ nCodeSize = nDataSize + 1;
+ nTableSize = nEOICode + 1;
+ }
+ else
+ {
+ if( nTableSize == (USHORT)( ( 1 << nCodeSize ) - 1 ) )
+ nCodeSize++;
+
+ p = pTable + ( nTableSize++ );
+ p->pBrother = pPrefix->pFirstChild;
+ pPrefix->pFirstChild = p;
+ p->nValue = nV;
+ p->pFirstChild = NULL;
+ }
+
+ pPrefix = pTable + nV;
+ }
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void TIFFWriter::EndCompression()
+{
+ if( pPrefix )
+ WriteBits( pPrefix->nCode, nCodeSize );
+
+ WriteBits( nEOICode, nCodeSize );
+ delete[] pTable;
+}
+
+// ------------------------------------------------------------------------
+
+// ---------------------
+// - exported function -
+// ---------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{
+ return TIFFWriter().WriteTIFF( rGraphic, rStream, pFilterConfigItem );
+}
+
+#ifndef GCC
+#endif
+
+// ---------------
+// - Win16 trash -
+// ---------------
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+ if ( nHeap )
+ UnlockData( 0 );
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/etiff/exports.map b/filter/source/graphicfilter/etiff/exports.map
new file mode 100644
index 000000000000..094e72c0f5fb
--- /dev/null
+++ b/filter/source/graphicfilter/etiff/exports.map
@@ -0,0 +1,7 @@
+TIFEXPORTER_1_0 {
+ global:
+ GraphicExport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/etiff/makefile.mk b/filter/source/graphicfilter/etiff/makefile.mk
new file mode 100644
index 000000000000..a3f52199513d
--- /dev/null
+++ b/filter/source/graphicfilter/etiff/makefile.mk
@@ -0,0 +1,65 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=etiff
+DEPTARGET=vetiff
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/etiff.obj
+
+# ==========================================================================
+
+SHL1TARGET= eti$(DLLPOSTFIX)
+SHL1IMPLIB= etiff
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB) $(SVTOOLLIB)
+SHL1LIBS= $(SLB)$/etiff.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/etiff.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/expm/expm.cxx b/filter/source/graphicfilter/expm/expm.cxx
new file mode 100644
index 000000000000..cd05331e5ade
--- /dev/null
+++ b/filter/source/graphicfilter/expm/expm.cxx
@@ -0,0 +1,302 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+
+//============================ XPMWriter ==================================
+
+class XPMWriter {
+
+private:
+
+ SvStream* mpOStm; // Die auszugebende XPM-Datei
+ USHORT mpOStmOldModus;
+
+ BOOL mbStatus;
+ BOOL mbTrans;
+ BitmapReadAccess* mpAcc;
+ ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
+ USHORT mnColors;
+
+ com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > xStatusIndicator;
+
+ void ImplCallback( USHORT nPercent );
+ BOOL ImplWriteHeader();
+ void ImplWritePalette();
+ void ImplWriteColor( USHORT );
+ void ImplWriteBody();
+ void ImplWriteNumber( sal_Int32 );
+ void ImplWritePixel( ULONG );
+
+public:
+ XPMWriter();
+ ~XPMWriter();
+
+ BOOL WriteXPM( const Graphic& rGraphic, SvStream& rXPM, FilterConfigItem* pFilterConfigItem );
+};
+
+//=================== Methoden von XPMWriter ==============================
+
+XPMWriter::XPMWriter() :
+ mbStatus ( TRUE ),
+ mbTrans ( FALSE ),
+ mpAcc ( NULL )
+{
+}
+
+// ------------------------------------------------------------------------
+
+XPMWriter::~XPMWriter()
+{
+}
+
+// ------------------------------------------------------------------------
+
+void XPMWriter::ImplCallback( USHORT nPercent )
+{
+ if ( xStatusIndicator.is() )
+ {
+ if ( nPercent <= 100 )
+ xStatusIndicator->setValue( nPercent );
+ }
+}
+
+// ------------------------------------------------------------------------
+
+BOOL XPMWriter::WriteXPM( const Graphic& rGraphic, SvStream& rXPM, FilterConfigItem* pFilterConfigItem)
+{
+ Bitmap aBmp;
+
+ mpOStm = &rXPM;
+
+ if ( pFilterConfigItem )
+ {
+ xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
+ if ( xStatusIndicator.is() )
+ {
+ rtl::OUString aMsg;
+ xStatusIndicator->start( aMsg, 100 );
+ }
+ }
+
+ BitmapEx aBmpEx( rGraphic.GetBitmapEx() );
+ aBmp = aBmpEx.GetBitmap();
+
+ if ( rGraphic.IsTransparent() ) // event. transparente Farbe erzeugen
+ {
+ mbTrans = TRUE;
+ if ( aBmp.GetBitCount() >= 8 ) // wenn noetig Bild auf 8 bit konvertieren
+ aBmp.Convert( BMP_CONVERSION_8BIT_TRANS );
+ else
+ aBmp.Convert( BMP_CONVERSION_4BIT_TRANS );
+ aBmp.Replace( aBmpEx.GetMask(), BMP_COL_TRANS );
+ }
+ else
+ {
+ if ( aBmp.GetBitCount() > 8 ) // wenn noetig Bild auf 8 bit konvertieren
+ aBmp.Convert( BMP_CONVERSION_8BIT_COLORS );
+ }
+ mpAcc = aBmp.AcquireReadAccess();
+ if ( mpAcc )
+ {
+ mnColors = mpAcc->GetPaletteEntryCount();
+ mpOStmOldModus = mpOStm->GetNumberFormatInt();
+ mpOStm->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ if ( ImplWriteHeader() )
+ {
+ ImplWritePalette();
+ ImplWriteBody();
+ *mpOStm << "\x22XPMENDEXT\x22\x0a};";
+ }
+ aBmp.ReleaseAccess( mpAcc );
+ }
+ else
+ mbStatus = FALSE;
+
+ mpOStm->SetNumberFormatInt( mpOStmOldModus );
+
+ if ( xStatusIndicator.is() )
+ xStatusIndicator->end();
+
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL XPMWriter::ImplWriteHeader()
+{
+ mnWidth = mpAcc->Width();
+ mnHeight = mpAcc->Height();
+ if ( mnWidth && mnHeight && mnColors )
+ {
+ *mpOStm << "/* XPM */\x0astatic char * image[] = \x0a{\x0a\x22";
+ ImplWriteNumber( mnWidth );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( mnHeight );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( mnColors );
+ *mpOStm << (BYTE)32;
+ ImplWriteNumber( ( mnColors > 26 ) ? 2 : 1 );
+ *mpOStm << "\x22,\x0a";
+ }
+ else mbStatus = FALSE;
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+void XPMWriter::ImplWritePalette()
+{
+ USHORT nTransIndex = 0xffff;
+
+ if ( mbTrans )
+ nTransIndex = mpAcc->GetBestMatchingColor( BMP_COL_TRANS );
+ for ( USHORT i = 0; i < mnColors; i++ )
+ {
+ *mpOStm << "\x22";
+ ImplWritePixel( i );
+ *mpOStm << (BYTE)32;
+ if ( nTransIndex != i )
+ {
+ ImplWriteColor( i );
+ *mpOStm << "\x22,\x0a";
+ }
+ else
+ *mpOStm << "c none\x22,\x0a";
+ }
+}
+
+// ------------------------------------------------------------------------
+
+void XPMWriter::ImplWriteBody()
+{
+ for ( ULONG y = 0; y < mnHeight; y++ )
+ {
+ ImplCallback( (USHORT)( ( 100 * y ) / mnHeight ) ); // processing output in percent
+ *mpOStm << (BYTE)0x22;
+ for ( ULONG x = 0; x < mnWidth; x++ )
+ {
+ ImplWritePixel( (BYTE)(mpAcc->GetPixel( y, x ) ) );
+ }
+ *mpOStm << "\x22,\x0a";
+ }
+}
+
+// ------------------------------------------------------------------------
+// eine Dezimalzahl im ASCII format wird in den Stream geschrieben
+
+void XPMWriter::ImplWriteNumber( sal_Int32 nNumber )
+{
+ const ByteString aNum( ByteString::CreateFromInt32( nNumber ) );
+
+ for( sal_Int16 n = 0UL, nLen = aNum.Len(); n < nLen; n++ )
+ *mpOStm << aNum.GetChar( n );
+
+}
+
+// ------------------------------------------------------------------------
+
+void XPMWriter::ImplWritePixel( ULONG nCol )
+{
+ if ( mnColors > 26 )
+ {
+ BYTE nDiff = (BYTE) ( nCol / 26 );
+ *mpOStm << (BYTE)( nDiff + 'A' );
+ *mpOStm << (BYTE)( nCol - ( nDiff*26 ) + 'A' );
+ }
+ else
+ *mpOStm << (BYTE)( nCol + 'A' );
+}
+
+// ------------------------------------------------------------------------
+// ein Farbwert wird im Hexadezimalzahlformat in den Stream geschrieben
+void XPMWriter::ImplWriteColor( USHORT nNumber )
+{
+ ULONG nTmp;
+ BYTE j;
+
+ *mpOStm << "c #"; // # zeigt einen folgenden Hexwert an
+ const BitmapColor& rColor = mpAcc->GetPaletteColor( nNumber );
+ nTmp = ( rColor.GetRed() << 16 ) | ( rColor.GetGreen() << 8 ) | rColor.GetBlue();
+ for ( signed char i = 20; i >= 0 ; i-=4 )
+ {
+ if ( ( j = (BYTE)( nTmp >> i ) & 0xf ) > 9 )
+ j += 'A' - 10;
+ else
+ j += '0';
+ *mpOStm << j;
+ }
+}
+
+// ------------------------------------------------------------------------
+
+// ---------------------
+// - exported function -
+// ---------------------
+
+extern "C" BOOL __LOADONCALLAPI GraphicExport( SvStream& rStream, Graphic& rGraphic, FilterConfigItem* pFilterConfigItem, BOOL )
+{
+ XPMWriter aXPMWriter;
+
+ return aXPMWriter.WriteXPM( rGraphic, rStream, pFilterConfigItem );
+}
+
+#ifndef GCC
+#endif
+
+// ---------------
+// - Win16 trash -
+// ---------------
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0;
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+ if ( nHeap )
+ UnlockData( 0 );
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/expm/exports.map b/filter/source/graphicfilter/expm/exports.map
new file mode 100644
index 000000000000..f1f42312c802
--- /dev/null
+++ b/filter/source/graphicfilter/expm/exports.map
@@ -0,0 +1,7 @@
+XPMEXPORTER_1_0 {
+ global:
+ GraphicExport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/expm/makefile.mk b/filter/source/graphicfilter/expm/makefile.mk
new file mode 100644
index 000000000000..743149712620
--- /dev/null
+++ b/filter/source/graphicfilter/expm/makefile.mk
@@ -0,0 +1,66 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=expm
+DEPTARGET=vexpm
+
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/expm.obj
+
+# ==========================================================================
+
+SHL1TARGET= exp$(DLLPOSTFIX)
+SHL1IMPLIB= expm
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB) $(SVTOOLLIB)
+SHL1LIBS= $(SLB)$/expm.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/expm.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/icgm/actimpr.cxx b/filter/source/graphicfilter/icgm/actimpr.cxx
new file mode 100644
index 000000000000..ccc9eb8c93d9
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/actimpr.cxx
@@ -0,0 +1,1134 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <vcl/bitmapex.hxx>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/Hatch.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/awt/FontUnderline.hpp>
+#include <com/sun/star/drawing/XShapeGrouper.hpp>
+#include <com/sun/star/drawing/CircleKind.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/drawing/PointSequenceSequence.hpp>
+#include <com/sun/star/drawing/PointSequence.hpp>
+#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <com/sun/star/drawing/FlagSequence.hpp>
+#include <com/sun/star/drawing/TextAdjust.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/style/HorizontalAlignment.hpp>
+
+#include <unotools/processfactory.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+
+//#include <toolkit/unohlp.hxx>
+
+#include "main.hxx"
+#include "outact.hxx"
+
+using namespace ::com::sun::star;
+
+// ---------------------------------------------------------------
+// ---------------------------------------------------------------
+// ---------------------------------------------------------------
+// ---------------------------------------------------------------
+
+CGMImpressOutAct::CGMImpressOutAct( CGM& rCGM, const uno::Reference< frame::XModel > & rModel ) :
+ CGMOutAct ( rCGM ),
+ nFinalTextCount ( 0 )
+{
+ sal_Bool bStatRet = sal_False;
+
+ if ( mpCGM->mbStatus )
+ {
+ uno::Reference< drawing::XDrawPagesSupplier > aDrawPageSup( rModel, uno::UNO_QUERY );
+ if( aDrawPageSup.is() )
+ {
+ maXDrawPages = aDrawPageSup->getDrawPages();
+ if ( maXDrawPages.is() )
+ {
+ maXServiceManagerSC = utl::getProcessServiceFactory();
+ if ( maXServiceManagerSC.is() )
+ {
+ uno::Any aAny( rModel->queryInterface( ::getCppuType((const uno::Reference< lang::XMultiServiceFactory >*)0) ));
+ if( aAny >>= maXMultiServiceFactory )
+ {
+ maXDrawPage = *(uno::Reference< drawing::XDrawPage > *)maXDrawPages->getByIndex( 0 ).getValue();
+ if ( ImplInitPage() )
+ bStatRet = sal_True;
+ }
+ }
+ }
+ }
+ mpCGM->mbStatus = bStatRet;
+ }
+};
+
+// ---------------------------------------------------------------
+
+sal_Bool CGMImpressOutAct::ImplInitPage()
+{
+ sal_Bool bStatRet = sal_False;
+ if( maXDrawPage.is() )
+ {
+ maXShapes = uno::Reference< drawing::XShapes >( maXDrawPage, uno::UNO_QUERY );
+ if ( maXShapes.is() )
+ {
+ bStatRet = sal_True;
+ }
+ }
+ return bStatRet;
+}
+
+// ---------------------------------------------------------------
+
+sal_Bool CGMImpressOutAct::ImplCreateShape( const ::rtl::OUString& rType )
+{
+ uno::Reference< uno::XInterface > xNewShape( maXMultiServiceFactory->createInstance( rType ) );
+ maXShape = uno::Reference< drawing::XShape >( xNewShape, uno::UNO_QUERY );
+ maXPropSet = uno::Reference< beans::XPropertySet >( xNewShape, uno::UNO_QUERY );
+ if ( maXShape.is() && maXPropSet.is() )
+ {
+ maXShapes->add( maXShape );
+ return sal_True;
+ }
+ return sal_False;
+}
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::ImplSetOrientation( FloatPoint& rRefPoint, double& rOrientation )
+{
+ uno::Any aAny;
+ aAny <<= (sal_Int32)rRefPoint.X;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointX"), aAny );
+ aAny <<= (sal_Int32)rRefPoint.Y;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointY"), aAny );
+ aAny <<= (sal_Int32)( rOrientation * 100.0 );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotateAngle"), aAny );
+}
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::ImplSetLineBundle()
+{
+ uno::Any aAny;
+ drawing::LineStyle eLS;
+
+ sal_uInt32 nLineColor;
+ LineType eLineType;
+ double fLineWidth;
+
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINECOLOR )
+ nLineColor = mpCGM->pElement->pLineBundle->GetColor();
+ else
+ nLineColor = mpCGM->pElement->aLineBundle.GetColor();
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINETYPE )
+ eLineType = mpCGM->pElement->pLineBundle->eLineType;
+ else
+ eLineType = mpCGM->pElement->aLineBundle.eLineType;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINEWIDTH )
+ fLineWidth = mpCGM->pElement->pLineBundle->nLineWidth;
+ else
+ fLineWidth = mpCGM->pElement->aLineBundle.nLineWidth;
+
+ aAny <<= (sal_Int32)nLineColor;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineColor"), aAny );
+
+ aAny <<= (sal_Int32)fLineWidth;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineWidth"), aAny );
+
+ switch( eLineType )
+ {
+ case LT_NONE :
+ eLS = drawing::LineStyle_NONE;
+ break;
+ case LT_DASH :
+ case LT_DOT :
+ case LT_DASHDOT :
+ case LT_DOTDOTSPACE :
+ case LT_LONGDASH :
+ case LT_DASHDASHDOT :
+ eLS = drawing::LineStyle_DASH;
+ break;
+ case LT_SOLID :
+ default:
+ eLS = drawing::LineStyle_SOLID;
+ break;
+ }
+ aAny <<= eLS;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineStyle"), aAny );
+ if ( eLS == drawing::LineStyle_DASH )
+ {
+ drawing::LineDash aLineDash( drawing::DashStyle_RECTRELATIVE, 1, 50, 3, 33, 100 );
+ aAny <<= aLineDash;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineDash"), aAny );
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::ImplSetFillBundle()
+{
+
+ uno::Any aAny;
+ drawing::LineStyle eLS;
+ drawing::FillStyle eFS;
+
+ sal_uInt32 nEdgeColor = 0;
+ EdgeType eEdgeType;
+ double fEdgeWidth = 0;
+
+ sal_uInt32 nFillColor;
+ FillInteriorStyle eFillStyle;
+ long nPatternIndex;
+ sal_uInt32 nHatchIndex;
+
+ if ( mpCGM->pElement->eEdgeVisibility == EV_ON )
+ {
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_EDGETYPE )
+ eEdgeType = mpCGM->pElement->pEdgeBundle->eEdgeType;
+ else
+ eEdgeType = mpCGM->pElement->aEdgeBundle.eEdgeType;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_EDGEWIDTH )
+ fEdgeWidth = mpCGM->pElement->pEdgeBundle->nEdgeWidth;
+ else
+ fEdgeWidth = mpCGM->pElement->aEdgeBundle.nEdgeWidth;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_EDGECOLOR )
+ nEdgeColor = mpCGM->pElement->pEdgeBundle->GetColor();
+ else
+ nEdgeColor = mpCGM->pElement->aEdgeBundle.GetColor();
+ }
+ else
+ eEdgeType = ET_NONE;
+
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_FILLINTERIORSTYLE )
+ eFillStyle = mpCGM->pElement->pFillBundle->eFillInteriorStyle;
+ else
+ eFillStyle = mpCGM->pElement->aFillBundle.eFillInteriorStyle;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_FILLCOLOR )
+ nFillColor = mpCGM->pElement->pFillBundle->GetColor();
+ else
+ nFillColor = mpCGM->pElement->aFillBundle.GetColor();
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_HATCHINDEX )
+ nHatchIndex = (sal_uInt32)mpCGM->pElement->pFillBundle->nFillHatchIndex;
+ else
+ nHatchIndex = (sal_uInt32)mpCGM->pElement->aFillBundle.nFillHatchIndex;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_PATTERNINDEX )
+ nPatternIndex = mpCGM->pElement->pFillBundle->nFillPatternIndex;
+ else
+ nPatternIndex = mpCGM->pElement->aFillBundle.nFillPatternIndex;
+
+ aAny <<= (sal_Int32)nFillColor;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillColor"), aAny );
+
+ switch ( eFillStyle )
+ {
+ case FIS_HATCH :
+ {
+ if ( nHatchIndex == 0 )
+ eFS = drawing::FillStyle_NONE;
+ else
+ eFS = drawing::FillStyle_HATCH;
+ }
+ break;
+ case FIS_PATTERN :
+ case FIS_SOLID :
+ {
+ eFS = drawing::FillStyle_SOLID;
+ }
+ break;
+
+ case FIS_GEOPATTERN :
+ {
+ if ( mpCGM->pElement->eTransparency == T_ON )
+ nFillColor = mpCGM->pElement->nAuxiliaryColor;
+ eFS = drawing::FillStyle_NONE;
+ }
+ break;
+
+ case FIS_INTERPOLATED :
+ case FIS_GRADIENT :
+ {
+ eFS = drawing::FillStyle_GRADIENT;
+ }
+ break;
+
+ case FIS_HOLLOW :
+ case FIS_EMPTY :
+ default:
+ {
+ eFS = drawing::FillStyle_NONE;
+ }
+ }
+
+ if ( mpCGM->mnAct4PostReset & ACT4_GRADIENT_ACTION )
+ eFS = drawing::FillStyle_GRADIENT;
+
+ if ( eFS == drawing::FillStyle_GRADIENT )
+ {
+ aAny <<= *mpGradient;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillGradient"), aAny );
+ }
+ aAny <<= eFS;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillStyle"), aAny );
+
+ eLS = drawing::LineStyle_NONE;
+ if ( eFillStyle == FIS_HOLLOW )
+ {
+ eLS = drawing::LineStyle_SOLID;
+ aAny <<= (sal_Int32)nFillColor;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineColor"), aAny );
+ aAny <<= (sal_Int32)0;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineWidth"), aAny );
+ }
+ else if ( eEdgeType != ET_NONE )
+ {
+ aAny <<= (sal_Int32)nEdgeColor;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineColor"), aAny );
+
+ aAny <<= (sal_Int32)fEdgeWidth;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineWidth"), aAny );
+
+ switch( eEdgeType )
+ {
+ case ET_DASH :
+ case ET_DOT :
+ case ET_DASHDOT :
+ case ET_DASHDOTDOT :
+ case ET_DOTDOTSPACE :
+ case ET_LONGDASH :
+ case ET_DASHDASHDOT :
+// {
+// eLS = LineStyle_DASH;
+// aAny.setValue( &eLS, ::getCppuType((const drawing::LineStyle*)0) );
+// maXPropSet->setPropertyValue( L"LineStyle", aAny );
+// drawing::LineDash aLineDash( DashStyle_RECTRELATIVE, 1, 160, 1, 160, 190 );
+// aAny.setValue( &aLineDash, ::getCppuType((const drawing::LineDash*)0) );
+// maXPropSet->setPropertyValue( L"DashStyle", aAny );
+// }
+// break;
+ default: // case ET_SOLID :
+ {
+ eLS = drawing::LineStyle_SOLID;
+ }
+ break;
+ }
+ }
+
+ aAny <<= eLS;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("LineStyle"), aAny );
+
+ if ( eFS == drawing::FillStyle_HATCH )
+ {
+ drawing::Hatch aHatch;
+
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_LINECOLOR )
+ aHatch.Color = nFillColor;
+ else
+ aHatch.Color = nFillColor;
+ HatchEntry* pHatchEntry = (HatchEntry*)mpCGM->pElement->aHatchTable.Get( nHatchIndex );
+ if ( pHatchEntry )
+ {
+ switch ( pHatchEntry->HatchStyle )
+ {
+ case 0 : aHatch.Style = drawing::HatchStyle_SINGLE; break;
+ case 1 : aHatch.Style = drawing::HatchStyle_DOUBLE; break;
+ case 2 : aHatch.Style = drawing::HatchStyle_TRIPLE; break;
+ }
+ aHatch.Distance = pHatchEntry->HatchDistance;
+ aHatch.Angle = pHatchEntry->HatchAngle;
+ }
+ else
+ {
+ aHatch.Style = drawing::HatchStyle_TRIPLE;
+ aHatch.Distance = 10 * ( nHatchIndex & 0x1f ) | 100;
+ aHatch.Angle = 15 * ( ( nHatchIndex & 0x1f ) - 5 );
+ }
+ aAny <<= aHatch;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillHatch"), aAny );
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::ImplSetTextBundle( const uno::Reference< beans::XPropertySet > & rProperty )
+{
+ uno::Any aAny;
+ TextPrecision eTextPrecision;
+ sal_uInt32 nTextFontIndex;
+ sal_uInt32 nTextColor;
+ double fCharacterExpansion;
+ double fCharacterSpacing;
+
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTFONTINDEX )
+ nTextFontIndex = mpCGM->pElement->pTextBundle->nTextFontIndex;
+ else
+ nTextFontIndex = mpCGM->pElement->aTextBundle.nTextFontIndex;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTPRECISION )
+ eTextPrecision = mpCGM->pElement->pTextBundle->eTextPrecision;
+ else
+ eTextPrecision = mpCGM->pElement->aTextBundle.eTextPrecision;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_CHARACTEREXPANSION )
+ fCharacterExpansion = mpCGM->pElement->pTextBundle->nCharacterExpansion;
+ else
+ fCharacterExpansion = mpCGM->pElement->aTextBundle.nCharacterExpansion;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_CHARACTERSPACING )
+ fCharacterSpacing = mpCGM->pElement->pTextBundle->nCharacterSpacing;
+ else
+ fCharacterSpacing = mpCGM->pElement->aTextBundle.nCharacterSpacing;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTCOLOR )
+ nTextColor = mpCGM->pElement->pTextBundle->GetColor();
+ else
+ nTextColor = mpCGM->pElement->aTextBundle.GetColor();
+
+ aAny <<= (sal_Int32)nTextColor;
+ rProperty->setPropertyValue( rtl::OUString::createFromAscii("CharColor"), aAny );
+
+ sal_uInt32 nFontType = 0;
+ awt::FontDescriptor aFontDescriptor;
+ FontEntry* pFontEntry = mpCGM->pElement->aFontList.GetFontEntry( nTextFontIndex );
+ if ( pFontEntry )
+ {
+ nFontType = pFontEntry->nFontType;
+ aFontDescriptor.Name = String::CreateFromAscii( (char*)pFontEntry->pFontName );
+ }
+ aFontDescriptor.Height = ( sal_Int16 )( ( mpCGM->pElement->nCharacterHeight * (double)1.50 ) );
+ if ( nFontType & 1 )
+ aFontDescriptor.Slant = awt::FontSlant_ITALIC;
+ if ( nFontType & 2 )
+ aFontDescriptor.Weight = awt::FontWeight::BOLD;
+ else
+ aFontDescriptor.Weight = awt::FontWeight::NORMAL;
+
+ if ( mpCGM->pElement->eUnderlineMode != UM_OFF )
+ {
+ aFontDescriptor.Underline = awt::FontUnderline::SINGLE;
+ }
+ aAny <<= aFontDescriptor;
+ rProperty->setPropertyValue( rtl::OUString::createFromAscii("FontDescriptor"), aAny );
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::InsertPage()
+{
+ if ( mnCurrentPage ) // eine seite ist immer vorhanden, deshalb wird die erste Seite ausgelassen
+ {
+ uno::Reference< drawing::XDrawPage > xPage( maXDrawPages->insertNewByIndex( 0xffff ), uno::UNO_QUERY );
+ maXDrawPage = xPage;
+ if ( ImplInitPage() == sal_False )
+ mpCGM->mbStatus = sal_False;
+ }
+ mnCurrentPage++;
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::BeginGroup()
+{
+ if ( mnGroupLevel < CGM_OUTACT_MAX_GROUP_LEVEL )
+ {
+ mpGroupLevel[ mnGroupLevel ] = maXShapes->getCount();
+ }
+ mnGroupLevel++;
+ mnGroupActCount = mpCGM->mnActCount;
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::EndGroup()
+{
+ if ( mnGroupLevel ) // preserve overflow
+ mnGroupLevel--;
+ if ( mnGroupLevel < CGM_OUTACT_MAX_GROUP_LEVEL )
+ {
+ sal_uInt32 mnFirstIndex = mpGroupLevel[ mnGroupLevel ];
+ if ( mnFirstIndex == 0xffffffff )
+ mnFirstIndex = 0;
+ sal_uInt32 mnCurrentCount = maXShapes->getCount();
+ if ( ( mnCurrentCount - mnFirstIndex ) > 1 )
+ {
+ uno::Reference< drawing::XShapeGrouper > aXShapeGrouper;
+ uno::Any aAny( maXDrawPage->queryInterface( ::getCppuType(((const uno::Reference< drawing::XShapeGrouper >*)0) )));
+ if( aAny >>= aXShapeGrouper )
+ {
+ uno::Reference< drawing::XShapes > aXShapes;
+// if ( maXServiceManagerSC->createInstance( L"stardiv.one.drawing.ShapeCollection" )->queryInterface( ::getCppuType((const Reference< drawing::XShapes >*)0), aXShapes ) )
+
+ uno::Reference< drawing::XShape > aXShapeCollection( maXServiceManagerSC->createInstance( rtl::OUString::createFromAscii("com.sun.star.drawing.ShapeCollection") ), uno::UNO_QUERY );
+ if ( aXShapeCollection.is() )
+ {
+ aXShapes = uno::Reference< drawing::XShapes >( aXShapeCollection, uno::UNO_QUERY );
+ if( aXShapes.is() )
+ {
+ for ( sal_uInt32 i = mnFirstIndex; i < mnCurrentCount; i++ )
+ {
+ uno::Reference< drawing::XShape > aXShape = *(uno::Reference< drawing::XShape > *)maXShapes->getByIndex( i ).getValue();
+ if (aXShape.is() )
+ {
+ aXShapes->add( aXShape );
+ }
+ }
+ }
+ }
+ uno::Reference< drawing::XShapeGroup > aXShapeGroup = aXShapeGrouper->group( aXShapes );
+ }
+ }
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::EndGrouping()
+{
+ while ( mnGroupLevel )
+ {
+ EndGroup();
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawRectangle( FloatRect& rFloatRect )
+{
+ if ( mnGroupActCount != ( mpCGM->mnActCount - 1 ) ) // POWERPOINT HACK !!!
+ {
+ if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.RectangleShape") ) )
+ {
+ awt::Size aSize( (long)(rFloatRect.Right - rFloatRect.Left ), (long)(rFloatRect.Bottom-rFloatRect.Top ) );
+ maXShape->setSize( aSize );
+ maXShape->setPosition( awt::Point( (long)rFloatRect.Left, (long)rFloatRect.Top ) );
+ ImplSetFillBundle();
+ }
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawEllipse( FloatPoint& rCenter, FloatPoint& rSize, double& rOrientation )
+{
+ if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.EllipseShape") ) )
+ {
+ drawing::CircleKind eCircleKind = drawing::CircleKind_FULL;
+ uno::Any aAny( &eCircleKind, ::getCppuType((const drawing::CircleKind*)0) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleKind"), aAny );
+
+ long nXSize = (long)( rSize.X * 2.0 ); // Merkwuerdigkes Verhalten bei einer awt::Size von 0
+ long nYSize = (long)( rSize.Y * 2.0 );
+ if ( nXSize < 1 )
+ nXSize = 1;
+ if ( nYSize < 1 )
+ nYSize = 1;
+ maXShape->setSize( awt::Size( nXSize, nYSize ) );
+ maXShape->setPosition( awt::Point( (long)( rCenter.X - rSize.X ), (long)( rCenter.Y - rSize.Y ) ) );
+
+ if ( rOrientation != 0 )
+ {
+ ImplSetOrientation( rCenter, rOrientation );
+ }
+ ImplSetFillBundle();
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawEllipticalArc( FloatPoint& rCenter, FloatPoint& rSize, double& rOrientation,
+ sal_uInt32 nType, double& fStartAngle, double& fEndAngle )
+{
+ if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.EllipseShape") ) )
+ {
+ uno::Any aAny;
+ drawing::CircleKind eCircleKind;
+
+
+ long nXSize = (long)( rSize.X * 2.0 ); // Merkwuerdigkes Verhalten bei einer awt::Size von 0
+ long nYSize = (long)( rSize.Y * 2.0 );
+ if ( nXSize < 1 )
+ nXSize = 1;
+ if ( nYSize < 1 )
+ nYSize = 1;
+
+ maXShape->setSize( awt::Size ( nXSize, nYSize ) );
+
+ if ( rOrientation != 0 )
+ {
+ fStartAngle += rOrientation;
+ if ( fStartAngle >= 360 )
+ fStartAngle -= 360;
+ fEndAngle += rOrientation;
+ if ( fEndAngle >= 360 )
+ fEndAngle -= 360;
+ }
+ switch( nType )
+ {
+ case 0 : eCircleKind = drawing::CircleKind_SECTION; break;
+ case 1 : eCircleKind = drawing::CircleKind_CUT; break;
+ case 2 : eCircleKind = drawing::CircleKind_ARC; break;
+ default : eCircleKind = drawing::CircleKind_FULL; break;
+ }
+ if ( (long)fStartAngle == (long)fEndAngle )
+ {
+ eCircleKind = drawing::CircleKind_FULL;
+ aAny.setValue( &eCircleKind, ::getCppuType((const drawing::CircleKind*)0) );
+ }
+ else
+ {
+ aAny.setValue( &eCircleKind, ::getCppuType((const drawing::CircleKind*)0) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleKind"), aAny );
+ aAny <<= (sal_Int32)( (long)( fStartAngle * 100 ) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleStartAngle"), aAny );
+ aAny <<= (sal_Int32)( (long)( fEndAngle * 100 ) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("CircleEndAngle"), aAny );
+ }
+ maXShape->setPosition( awt::Point( (long)( rCenter.X - rSize.X ), (long)( rCenter.Y - rSize.Y ) ) );
+ if ( rOrientation != 0 )
+ {
+ ImplSetOrientation( rCenter, rOrientation );
+ }
+ if ( eCircleKind == drawing::CircleKind_ARC )
+ {
+ ImplSetLineBundle();
+ }
+ else
+ {
+ ImplSetFillBundle();
+ if ( nType == 2 )
+ {
+ ImplSetLineBundle();
+ drawing::FillStyle eFillStyle = drawing::FillStyle_NONE;
+ aAny.setValue( &eFillStyle, ::getCppuType((const drawing::FillStyle*)0) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("FillStyle"), aAny );
+ }
+ }
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawBitmap( CGMBitmapDescriptor* pBmpDesc )
+{
+ if ( pBmpDesc->mbStatus && pBmpDesc->mpBitmap )
+ {
+ FloatPoint aOrigin = pBmpDesc->mnOrigin;
+ double fdx = pBmpDesc->mndx;
+ double fdy = pBmpDesc->mndy;
+
+ sal_uInt32 nMirr = BMP_MIRROR_NONE;
+ if ( pBmpDesc->mbVMirror )
+ nMirr |= BMP_MIRROR_VERT;
+ if ( pBmpDesc->mbHMirror )
+ nMirr |= BMP_MIRROR_HORZ;
+ if ( nMirr != BMP_MIRROR_NONE )
+ pBmpDesc->mpBitmap->Mirror( nMirr );
+
+ mpCGM->ImplMapPoint( aOrigin );
+ mpCGM->ImplMapX( fdx );
+ mpCGM->ImplMapY( fdy );
+
+ if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.GraphicObjectShape") ) )
+ {
+ maXShape->setSize( awt::Size( (long)fdx, (long)fdy ) );
+ maXShape->setPosition( awt::Point( (long)aOrigin.X, (long)aOrigin.Y ) );
+
+ if ( pBmpDesc->mnOrientation != 0 )
+ {
+ ImplSetOrientation( aOrigin, pBmpDesc->mnOrientation );
+ }
+
+ uno::Reference< awt::XBitmap > xBitmap( VCLUnoHelper::CreateBitmap( BitmapEx( *( pBmpDesc->mpBitmap ) ) ) );
+ uno::Any aAny;
+ aAny <<= xBitmap;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("GraphicObjectFillBitmap"), aAny );
+
+ }
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawPolygon( Polygon& rPoly )
+{
+ sal_uInt16 nPoints = rPoly.GetSize();
+
+ if ( ( nPoints > 1 ) && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.PolyPolygonShape") ) )
+ {
+ drawing::PointSequenceSequence aRetval;
+
+ // Polygone innerhalb vrobereiten
+ aRetval.realloc( 1 );
+
+ // Zeiger auf aeussere Arrays holen
+ drawing::PointSequence* pOuterSequence = aRetval.getArray();
+
+ // Platz in Arrays schaffen
+ pOuterSequence->realloc((sal_Int32)nPoints);
+
+ // Pointer auf arrays holen
+ awt::Point* pInnerSequence = pOuterSequence->getArray();
+
+ for( sal_uInt16 n = 0; n < nPoints; n++ )
+ *pInnerSequence++ = awt::Point( rPoly[ n ].X(), rPoly[n].Y() );
+
+ uno::Any aParam;
+ aParam <<= aRetval;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygon"), aParam );
+ ImplSetFillBundle();
+ }
+};
+
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawPolyLine( Polygon& rPoly )
+{
+ sal_uInt16 nPoints = rPoly.GetSize();
+
+ if ( ( nPoints > 1 ) && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.PolyLineShape") ) )
+ {
+ drawing::PointSequenceSequence aRetval;
+
+ // Polygone innerhalb vrobereiten
+ aRetval.realloc( 1 );
+
+ // Zeiger auf aeussere Arrays holen
+ drawing::PointSequence* pOuterSequence = aRetval.getArray();
+
+ // Platz in Arrays schaffen
+ pOuterSequence->realloc((sal_Int32)nPoints);
+
+ // Pointer auf arrays holen
+ awt::Point* pInnerSequence = pOuterSequence->getArray();
+
+ for( sal_uInt16 n = 0; n < nPoints; n++ )
+ *pInnerSequence++ = awt::Point( rPoly[ n ].X(), rPoly[n].Y() );
+
+ uno::Any aParam;
+ aParam <<= aRetval;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygon"), aParam );
+ ImplSetLineBundle();
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawPolybezier( Polygon& rPolygon )
+{
+ USHORT nPoints = rPolygon.GetSize();
+ if ( ( nPoints > 1 ) && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.OpenBezierShape") ) )
+ {
+ drawing::PolyPolygonBezierCoords aRetval;
+
+ aRetval.Coordinates.realloc( 1 );
+ aRetval.Flags.realloc( 1 );
+
+ // Zeiger auf aeussere Arrays holen
+ drawing::PointSequence* pOuterSequence = aRetval.Coordinates.getArray();
+ drawing::FlagSequence* pOuterFlags = aRetval.Flags.getArray();
+
+ // Platz in Arrays schaffen
+ pOuterSequence->realloc( nPoints );
+ pOuterFlags->realloc( nPoints );
+
+ awt::Point* pInnerSequence = pOuterSequence->getArray();
+ drawing::PolygonFlags* pInnerFlags = pOuterFlags->getArray();
+
+ for( USHORT i = 0; i < nPoints; i++ )
+ {
+ *pInnerSequence++ = awt::Point( rPolygon[ i ].X(), rPolygon[ i ].Y() );
+ *pInnerFlags++ = (drawing::PolygonFlags)rPolygon.GetFlags( i );
+ }
+ uno::Any aParam;
+ aParam <<= aRetval;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygonBezier"), aParam );
+ ImplSetLineBundle();
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawPolyPolygon( PolyPolygon& rPolyPolygon )
+{
+ sal_uInt32 nNumPolys = rPolyPolygon.Count();
+ if ( nNumPolys && ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.ClosedBezierShape") ) )
+ {
+ drawing::PolyPolygonBezierCoords aRetval;
+
+ // Polygone innerhalb vrobereiten
+ aRetval.Coordinates.realloc((sal_Int32)nNumPolys);
+ aRetval.Flags.realloc((sal_Int32)nNumPolys);
+
+ // Zeiger auf aeussere Arrays holen
+ drawing::PointSequence* pOuterSequence = aRetval.Coordinates.getArray();
+ drawing::FlagSequence* pOuterFlags = aRetval.Flags.getArray();
+
+ for( sal_uInt16 a = 0; a < nNumPolys; a++ )
+ {
+ Polygon aPolygon( rPolyPolygon.GetObject( a ) );
+ sal_uInt32 nNumPoints = aPolygon.GetSize();
+
+ // Platz in Arrays schaffen
+ pOuterSequence->realloc((sal_Int32)nNumPoints);
+ pOuterFlags->realloc((sal_Int32)nNumPoints);
+
+ // Pointer auf arrays holen
+ awt::Point* pInnerSequence = pOuterSequence->getArray();
+ drawing::PolygonFlags* pInnerFlags = pOuterFlags->getArray();
+
+ for( sal_uInt16 b = 0; b < nNumPoints; b++ )
+ {
+ *pInnerSequence++ = awt::Point( aPolygon.GetPoint( b ).X(), aPolygon.GetPoint( b ).Y() ) ;
+ *pInnerFlags++ = (drawing::PolygonFlags)aPolygon.GetFlags( b );
+ }
+ pOuterSequence++;
+ pOuterFlags++;
+ }
+ uno::Any aParam;
+ aParam <<= aRetval;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("PolyPolygonBezier"), aParam);
+ ImplSetFillBundle();
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawText( awt::Point& rTextPos, awt::Size& rTextSize, char* pString, sal_uInt32 /*nSize*/, FinalFlag eFlag )
+{
+ if ( ImplCreateShape( rtl::OUString::createFromAscii("com.sun.star.drawing.TextShape") ) )
+ {
+ uno::Any aAny;
+ long nWidth = rTextSize.Width;
+ long nHeight = rTextSize.Height;
+
+ awt::Point aTextPos( rTextPos );
+ switch ( mpCGM->pElement->eTextAlignmentV )
+ {
+ case TAV_HALF :
+ {
+ aTextPos.Y -= static_cast<sal_Int32>( ( mpCGM->pElement->nCharacterHeight * 1.5 ) / 2 );
+ }
+ break;
+
+ case TAV_BASE :
+ case TAV_BOTTOM :
+ case TAV_NORMAL :
+ aTextPos.Y -= static_cast<sal_Int32>( mpCGM->pElement->nCharacterHeight * 1.5 );
+ case TAV_TOP :
+ break;
+ case TAV_CAP:
+ case TAV_CONT:
+ break; // -Wall these two were not here.
+ }
+
+ if ( nWidth < 0 )
+ {
+ nWidth = -nWidth;
+ }
+ else if ( nWidth == 0 )
+ {
+ nWidth = -1;
+ }
+ if ( nHeight < 0 )
+ {
+ nHeight = -nHeight;
+ }
+ else if ( nHeight == 0 )
+ {
+ nHeight = -1;
+ }
+ maXShape->setPosition( aTextPos );
+ maXShape->setSize( awt::Size( nWidth, nHeight ) );
+ double nX = mpCGM->pElement->nCharacterOrientation[ 2 ];
+ double nY = mpCGM->pElement->nCharacterOrientation[ 3 ];
+ double nOrientation = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
+ if ( nY < 0 )
+ nOrientation = 360 - nOrientation;
+
+ if ( nOrientation )
+ {
+ aAny <<= (sal_Int32)( aTextPos.X );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointX"), aAny );
+ aAny <<= (sal_Int32)( aTextPos.Y + nHeight );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotationPointY"), aAny );
+ aAny <<= (sal_Int32)( (sal_Int32)( nOrientation * 100 ) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("RotateAngle"), aAny );
+ }
+ if ( nWidth == -1 )
+ {
+ sal_Bool bTrue( sal_True );
+ aAny.setValue( &bTrue, ::getCppuType((const sal_Bool*)0 ));
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextAutoGrowWidth"), aAny );
+
+ drawing::TextAdjust eTextAdjust;
+ switch ( mpCGM->pElement->eTextAlignmentH )
+ {
+ case TAH_RIGHT :
+ eTextAdjust = drawing::TextAdjust_RIGHT;
+ break;
+ case TAH_LEFT :
+ case TAH_CONT :
+ case TAH_NORMAL :
+ eTextAdjust = drawing::TextAdjust_LEFT;
+ break;
+ case TAH_CENTER :
+ eTextAdjust = drawing::TextAdjust_CENTER;
+ break;
+ }
+ aAny <<= eTextAdjust;
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextHorizontalAdjust"), aAny );
+ }
+ if ( nHeight == -1 )
+ {
+ sal_Bool bTrue = sal_True;
+ aAny.setValue( &bTrue, ::getCppuType((const sal_Bool*)0) );
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextAutoGrowHeight"), aAny );
+ }
+ uno::Reference< text::XText > xText;
+ uno::Any aFirstQuery( maXShape->queryInterface( ::getCppuType((const uno::Reference< text::XText >*)0) ));
+ if( aFirstQuery >>= xText )
+ {
+ String aStr( String::CreateFromAscii( pString ) );
+
+ uno::Reference< text::XTextCursor > aXTextCursor( xText->createTextCursor() );
+ {
+ aXTextCursor->gotoEnd( sal_False );
+ uno::Reference< text::XTextRange > aCursorText;
+ uno::Any aSecondQuery( aXTextCursor->queryInterface( ::getCppuType((const uno::Reference< text::XTextRange >*)0) ));
+ if ( aSecondQuery >>= aCursorText )
+ {
+ uno::Reference< beans::XPropertySet > aCursorPropSet;
+
+ uno::Any aQuery( aCursorText->queryInterface( ::getCppuType((const uno::Reference< beans::XPropertySet >*)0) ));
+ if( aQuery >>= aCursorPropSet )
+ {
+ if ( nWidth != -1 ) // paragraph adjusting in a valid textbox ?
+ {
+ switch ( mpCGM->pElement->eTextAlignmentH )
+ {
+ case TAH_RIGHT :
+ aAny <<= (sal_Int16)style::HorizontalAlignment_RIGHT;
+ break;
+ case TAH_LEFT :
+ case TAH_CONT :
+ case TAH_NORMAL :
+ aAny <<= (sal_Int16)style::HorizontalAlignment_LEFT;
+ break;
+ case TAH_CENTER :
+ aAny <<= (sal_Int16)style::HorizontalAlignment_CENTER;
+ break;
+ }
+ aCursorPropSet->setPropertyValue( rtl::OUString::createFromAscii("ParaAdjust"), aAny );
+ }
+ if ( nWidth > 0 && nHeight > 0 ) // restricted text
+ {
+ sal_Bool bTrue = sal_True;
+ aAny.setValue( &bTrue, ::getCppuType((const sal_Bool*)0));
+ maXPropSet->setPropertyValue( rtl::OUString::createFromAscii("TextFitToSize"), aAny );
+ }
+ aCursorText->setString( aStr );
+ aXTextCursor->gotoEnd( sal_True );
+ ImplSetTextBundle( aCursorPropSet );
+ }
+ }
+ }
+ }
+ if ( eFlag == FF_NOT_FINAL )
+ {
+ nFinalTextCount = maXShapes->getCount();
+ }
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::AppendText( char* pString, sal_uInt32 /*nSize*/, FinalFlag /*eFlag*/ )
+{
+ if ( nFinalTextCount )
+ {
+ uno::Reference< drawing::XShape > aShape = *(uno::Reference< drawing::XShape > *)maXShapes->getByIndex( nFinalTextCount - 1 ).getValue();
+ if ( aShape.is() )
+ {
+ uno::Reference< text::XText > xText;
+ uno::Any aFirstQuery( aShape->queryInterface( ::getCppuType((const uno::Reference< text::XText >*)0)) );
+ if( aFirstQuery >>= xText )
+ {
+ String aStr( String::CreateFromAscii( pString ) );
+
+ uno::Reference< text::XTextCursor > aXTextCursor( xText->createTextCursor() );
+ if ( aXTextCursor.is() )
+ {
+ aXTextCursor->gotoEnd( sal_False );
+ uno::Reference< text::XTextRange > aCursorText;
+ uno::Any aSecondQuery(aXTextCursor->queryInterface( ::getCppuType((const uno::Reference< text::XTextRange >*)0) ));
+ if ( aSecondQuery >>= aCursorText )
+ {
+ uno::Reference< beans::XPropertySet > aPropSet;
+ uno::Any aQuery(aCursorText->queryInterface( ::getCppuType((const uno::Reference< beans::XPropertySet >*)0) ));
+ if( aQuery >>= aPropSet )
+ {
+ aCursorText->setString( aStr );
+ aXTextCursor->gotoEnd( sal_True );
+ ImplSetTextBundle( aPropSet );
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------------
+// nCount != 0 -> Append Text
+sal_uInt32 CGMImpressOutAct::DrawText( TextEntry* /*pTextEntry*/, NodeFrameSet& /*rNodeFrameSet*/, sal_uInt32 /*nObjCount*/ )
+{
+
+return 0;
+
+/*
+ uno::Reference< drawing::XShape > aShape;
+
+ if ( nObjCount )
+ {
+ aShape = (drawing::XShape*) maXShapes->getElementByIndex( nObjCount - 1 )->queryInterface( ::getCppuType((const Reference< drawing::XShape >*)0) );
+ }
+ else
+ {
+ aShape = maXShapes->insertShape( maXShapeFactory->createShape( L"ShapeText", rNodeFrameSet.nSize ), rNodeFrameSet.nTopLeft );
+ }
+ if ( aShape.is() )
+ {
+ uno::Reference< text::XText > xText = (text::XText*)aShape->queryInterface( ::getCppuType((const Reference< text::XText >*)0) );
+ if ( xText.is() )
+ {
+ uno::Reference< text::XTextCursor > aXTextCursor = (text::XTextCursor*)xText->createTextCursor()->queryInterface( ::getCppuType((const Reference< text::XTextCursor >*)0) );
+ if ( aXTextCursor.is() )
+ {
+ uno::Any aAny;
+ sal_uInt32 nTextOfs = 0;
+ TextAttribute* pTAttr = pTextEntry->pAttribute;
+ do
+ {
+ if ( pTAttr->nTextAttribSize > 0.3 ) // is text readable
+ {
+ aXTextCursor->gotoEnd( sal_False );
+ char nPushedChar = pTextEntry->pText[ nTextOfs + pTAttr->nTextAttribCount ];
+ pTextEntry->pText[ nTextOfs + pTAttr->nTextAttribCount ] = 0;
+ UString aStr( StringToOUString( pTextEntry->pText + nTextOfs, CHARSET_SYSTEM ) );
+
+ uno::Reference< text::XText > aCursorText = (text::XText*)aXTextCursor->queryInterface( ::getCppuType((const Reference< text::XText >*)0) );
+ if ( aCursorText.is() )
+ {
+ uno::Reference< beans::XPropertySet > aPropSet = (beans::XPropertySet*)aCursorText->queryInterface( ::getCppuType((const Reference< beans::XPropertySet >*)0) );
+ if ( aPropSet.is() )
+ {
+ if ( pTextEntry->nRowOrLineNum )
+ {
+ uno::Reference< XControlCharacterInsertable > aCRef = (XControlCharacterInsertable*)aXTextCursor->queryInterface( ::getCppuType((const Reference< XControlCharacterInsertable >*)0) );
+ if ( aCRef.is() )
+ {
+ aCRef->insertControlCharacter( TEXTCONTROLCHAR_PARAGRAPH_BREAK );
+ }
+ }
+ aCursorText->setText( aStr );
+ aXTextCursor->gotoEnd( sal_True );
+ double nSize = mpCGM->mnOutdx;
+ if ( mpCGM->mnOutdx < mpCGM->mnOutdy )
+ nSize = mpCGM->mnOutdy;
+ nSize = ( nSize * (double)pTAttr->nTextAttribSize * (double)1.5 ) / 100;
+
+ aAny <<= (sal_Int32)( (sal_Int32)nSize );
+ aPropSet->setPropertyValue( L"CharHeight", aAny );
+
+ sal_uInt32 nTextColor = pTAttr->nTextColorIndex;
+ if ( nTextColor == 0xff )
+ {
+ nTextColor = ( pTAttr->nTextColorBlue << 16 ) + ( pTAttr->nTextColorGreen << 8 ) + pTAttr->nTextColorRed;
+ }
+ else
+ {
+ nTextColor = mpCGM->pElement->aColorTable[ nTextColor ];
+ }
+
+ sal_uInt32 nFontType = 0;
+
+ if ( pTAttr->nTextFontType == 0xff )
+ {
+ FontEntry* pFontEntry = mpCGM->pElement->aFontList.GetFontEntry( pTAttr->nTextFontFamily );
+ if ( pFontEntry )
+ {
+ nFontType = pFontEntry->nFontType;
+ if ( mpCGM->pElement->nAspectSourceFlags & ASF_TEXTCOLOR )
+ nTextColor = mpCGM->pElement->pTextBundle->GetColor();
+ else
+ nTextColor = mpCGM->pElement->aTextBundle.GetColor();
+ }
+ FontItalic eFontItalic = ITALIC_NONE;
+ if ( nFontType & 1 )
+ eFontItalic = ITALIC_NORMAL;
+ aAny.setValue( &eFontItalic, ::getCppuType((const FontItalic*)0) );
+ aPropSet->setPropertyValue( L"CharPosture", aAny );
+ }
+ aAny <<= (sal_Int32)( (sal_Int32)nTextColor );
+ aPropSet->setPropertyValue( L"CharColor", aAny );
+
+ awt::FontWeight eFontWeight = WEIGHT_NORMAL;
+ if ( nFontType & 2 )
+ eFontWeight = WEIGHT_BOLD;
+ aAny.setValue( &eFontWeight, ::getCppuType((const awt::FontWeight*)0) );
+ aPropSet->setPropertyValue( L"CharWeight", aAny );
+
+ if ( pTAttr->nTextAttribBits & 0x4000 )
+ {
+ awt::FontUnderline eUnderline = UNDERLINE_SINGLE;
+ aAny.setValue( &eUnderline, ::getCppuType((const awt::FontUnderline*)0) );
+ aPropSet->setPropertyValue( L"CharUnderline", aAny );
+ }
+ }
+ }
+ pTextEntry->pText[ nTextOfs + pTAttr->nTextAttribCount ] = nPushedChar;
+ }
+ nTextOfs += pTAttr->nTextAttribCount;
+ }
+ while ( ( ( pTAttr = pTAttr->pNextAttribute ) != NULL ) );
+ }
+ }
+ }
+ return ( nObjCount ) ? nObjCount : maXShapes->getCount();
+*/
+}
+
+// ---------------------------------------------------------------
+
+void CGMImpressOutAct::DrawChart()
+{
+}
diff --git a/filter/source/graphicfilter/icgm/bitmap.cxx b/filter/source/graphicfilter/icgm/bitmap.cxx
new file mode 100644
index 000000000000..c971c87e54e3
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/bitmap.cxx
@@ -0,0 +1,410 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include "main.hxx"
+
+// ---------------------------------------------------------------
+
+CGMBitmap::CGMBitmap( CGM& rCGM ) :
+ mpCGM ( &rCGM ),
+ pCGMBitmapDescriptor ( new CGMBitmapDescriptor )
+{
+ ImplGetBitmap( *pCGMBitmapDescriptor );
+};
+
+// ---------------------------------------------------------------
+
+CGMBitmap::~CGMBitmap()
+{
+ delete pCGMBitmapDescriptor;
+}
+
+// ---------------------------------------------------------------
+
+void CGMBitmap::ImplGetBitmap( CGMBitmapDescriptor& rDesc )
+{
+ rDesc.mbStatus = sal_True;
+ long nx, ny, nxC, nxCount, nyCount;
+
+ if ( ImplGetDimensions( rDesc ) && rDesc.mpBuf )
+ {
+ if ( ( rDesc.mpBitmap = new Bitmap( Size( rDesc.mnX, rDesc.mnY ), (sal_uInt16)rDesc.mnDstBitsPerPixel ) ) != NULL )
+ {
+ if ( ( rDesc.mpAcc = rDesc.mpBitmap->AcquireWriteAccess() ) != NULL )
+ {
+
+ // the picture may either be read from left to right or right to left, from top to bottom ...
+
+ nxCount = rDesc.mnX + 1; // +1 because we are using prefix decreasing
+ nyCount = rDesc.mnY + 1;
+
+ switch ( rDesc.mnDstBitsPerPixel )
+ {
+ case 1 :
+ {
+ if ( rDesc.mnLocalColorPrecision == 1 )
+ ImplSetCurrentPalette( rDesc );
+ else
+ {
+ rDesc.mpAcc->SetPaletteEntryCount( 2 );
+ rDesc.mpAcc->SetPaletteColor( 0, BMCOL( mpCGM->pElement->nBackGroundColor ) );
+ rDesc.mpAcc->SetPaletteColor( 1,
+ ( mpCGM->pElement->nAspectSourceFlags & ASF_FILLINTERIORSTYLE )
+ ? BMCOL( mpCGM->pElement->pFillBundle->GetColor() )
+ : BMCOL( mpCGM->pElement->aFillBundle.GetColor() ) ) ;
+ }
+ for ( ny = 0; --nyCount ; ny++, rDesc.mpBuf += rDesc.mnScanSize )
+ {
+ nxC = nxCount;
+ for ( nx = 0; --nxC; nx++ )
+ { // this is not fast, but a one bit/pixel format is rarely used
+ rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( (*( rDesc.mpBuf + ( nx >> 3 ) ) >> ( ( nx & 7 ) ^ 7 ) ) ) & 1 );
+ }
+ }
+ }
+ break;
+
+ case 2 :
+ {
+ ImplSetCurrentPalette( rDesc );
+ for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
+ {
+ nxC = nxCount;
+ for ( nx = 0; --nxC; nx++ )
+ { // this is not fast, but a two bits/pixel format is rarely used
+ rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( (*( rDesc.mpBuf + ( nx >> 2 ) ) >> ( ( ( nx & 3 ) ^ 3 ) << 1 ) ) ) & 3 );
+ }
+ }
+ }
+ break;
+
+ case 4 :
+ {
+ ImplSetCurrentPalette( rDesc );
+ for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
+ {
+ nxC = nxCount;
+ sal_Int8 nDat;
+ sal_uInt8* pTemp = rDesc.mpBuf;
+ for ( nx = 0; --nxC; nx++ )
+ {
+ nDat = *pTemp++;
+ rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( nDat >> 4 ) );
+ if ( --nxC )
+ {
+ nx ++;
+ rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( nDat & 15 ) );
+ }
+ else
+ break;
+ }
+ }
+ }
+ break;
+
+ case 8 :
+ {
+ ImplSetCurrentPalette( rDesc );
+ for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
+ {
+ sal_uInt8* pTemp = rDesc.mpBuf;
+ nxC = nxCount;
+ for ( nx = 0; --nxC; nx++ )
+ {
+ rDesc.mpAcc->SetPixel( ny, nx, (sal_Int8)( *pTemp++ ) );
+ }
+ }
+ }
+ break;
+
+ case 24 :
+ {
+ {
+ BitmapColor aBitmapColor;
+ for ( ny = 0; --nyCount; ny++, rDesc.mpBuf += rDesc.mnScanSize )
+ {
+ sal_uInt8* pTemp = rDesc.mpBuf;
+ nxC = nxCount;
+ for ( nx = 0; --nxC; nx++ )
+ {
+ aBitmapColor.SetRed( (sal_Int8)*pTemp++ );
+ aBitmapColor.SetGreen( (sal_Int8)*pTemp++ );
+ aBitmapColor.SetBlue( (sal_Int8)*pTemp++ );
+ rDesc.mpAcc->SetPixel( ny, nx, aBitmapColor );
+ }
+ }
+ }
+ }
+ break;
+ };
+ double nX = rDesc.mnR.X - rDesc.mnQ.X;
+ double nY = rDesc.mnR.Y - rDesc.mnQ.Y;
+
+ rDesc.mndy = sqrt( nX * nX + nY * nY );
+
+ nX = rDesc.mnR.X - rDesc.mnP.X;
+ nY = rDesc.mnR.Y - rDesc.mnP.Y;
+
+ rDesc.mndx = sqrt( nX * nX + nY * nY );
+
+ nX = rDesc.mnR.X - rDesc.mnP.X;
+ nY = rDesc.mnR.Y - rDesc.mnP.Y;
+
+ rDesc.mnOrientation = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
+ if ( nY > 0 )
+ rDesc.mnOrientation = 360 - rDesc.mnOrientation;
+
+ nX = rDesc.mnQ.X - rDesc.mnR.X;
+ nY = rDesc.mnQ.Y - rDesc.mnR.Y;
+
+ double fAngle = 0.01745329251994 * ( 360 - rDesc.mnOrientation );
+ double fSin = sin(fAngle);
+ double fCos = cos(fAngle);
+ nX = fCos * nX + fSin * nY;
+ nY = -( fSin * nX - fCos * nY );
+
+ fAngle = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
+ if ( nY > 0 )
+ fAngle = 360 - fAngle;
+
+ if ( fAngle > 180 ) // wird das bild nach oben oder unten aufgebaut ?
+ {
+ rDesc.mnOrigin = rDesc.mnP;
+ }
+ else
+ {
+ rDesc.mbVMirror = sal_True;
+ rDesc.mnOrigin = rDesc.mnP;
+ rDesc.mnOrigin.X += rDesc.mnQ.X - rDesc.mnR.X;
+ rDesc.mnOrigin.Y += rDesc.mnQ.Y - rDesc.mnR.Y;
+ }
+ }
+ else
+ rDesc.mbStatus = sal_False;
+ }
+ else
+ rDesc.mbStatus = sal_False;
+ }
+ else
+ rDesc.mbStatus = sal_False;
+
+ if ( rDesc.mpAcc )
+ {
+ rDesc.mpBitmap->ReleaseAccess( rDesc.mpAcc );
+ rDesc.mpAcc = NULL;
+ }
+ if ( rDesc.mbStatus == sal_False )
+ {
+ if ( rDesc.mpBitmap )
+ {
+ delete rDesc.mpBitmap;
+ rDesc.mpBitmap = NULL;
+ }
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGMBitmap::ImplSetCurrentPalette( CGMBitmapDescriptor& rDesc )
+{
+ sal_uInt16 nColors = sal::static_int_cast< sal_uInt16 >(
+ 1 << rDesc.mnDstBitsPerPixel);
+ rDesc.mpAcc->SetPaletteEntryCount( nColors );
+ for ( sal_uInt16 i = 0; i < nColors; i++ )
+ {
+ rDesc.mpAcc->SetPaletteColor( i, BMCOL( mpCGM->pElement->aLatestColorTable[ i ] ) );
+ }
+}
+
+// ---------------------------------------------------------------
+
+sal_Bool CGMBitmap::ImplGetDimensions( CGMBitmapDescriptor& rDesc )
+{
+ mpCGM->ImplGetPoint( rDesc.mnP ); // parallelogram p < - > r
+ mpCGM->ImplGetPoint( rDesc.mnQ ); // |
+ mpCGM->ImplGetPoint( rDesc.mnR ); // q
+ sal_uInt32 nPrecision = mpCGM->pElement->nIntegerPrecision;
+ rDesc.mnX = mpCGM->ImplGetUI( nPrecision );
+ rDesc.mnY = mpCGM->ImplGetUI( nPrecision );
+ rDesc.mnLocalColorPrecision = mpCGM->ImplGetI( nPrecision );
+ rDesc.mnScanSize = 0;
+ switch( rDesc.mnLocalColorPrecision )
+ {
+ case 0x80000001 : // monochrome ( bit = 0->backgroundcolor )
+ case 0 : // bit = 1->fillcolor
+ rDesc.mnDstBitsPerPixel = 1;
+ break;
+ case 1 : // 2 color indexed ( monochrome )
+ case -1 :
+ rDesc.mnDstBitsPerPixel = 1;
+ break;
+ case 2 : // 4 color indexed
+ case -2 :
+ rDesc.mnDstBitsPerPixel = 2;
+ break;
+ case 4 : // 16 color indexed
+ case -4 :
+ rDesc.mnDstBitsPerPixel = 4;
+ break;
+ case 8 : // 256 color indexed
+ case -8 :
+ rDesc.mnDstBitsPerPixel = 8;
+ rDesc.mnScanSize = rDesc.mnX;
+ break;
+ case 16 : // NS
+ case -16 :
+ rDesc.mbStatus = sal_False;
+ break;
+ case 24 : // 24 bit directColor ( 8 bits each component )
+ case -24 :
+ rDesc.mnDstBitsPerPixel = 24;
+ break;
+ case 32 : // NS
+ case -32 :
+ rDesc.mbStatus = sal_False;
+ break;
+
+ }
+ // mnCompressionMode == 0 : CCOMP_RUNLENGTH
+ // == 1 : CCOMP_PACKED ( no compression. each row starts on a 4 byte boundary )
+ if ( ( rDesc.mnCompressionMode = mpCGM->ImplGetUI16() ) != 1 )
+ rDesc.mbStatus = sal_False;
+
+ if ( ( rDesc.mnX || rDesc.mnY ) == 0 )
+ rDesc.mbStatus = sal_False;
+
+ sal_uInt32 nHeaderSize = 2 + 3 * nPrecision + 3 * mpCGM->ImplGetPointSize();
+ rDesc.mnScanSize = ( ( rDesc.mnX * rDesc.mnDstBitsPerPixel + 7 ) >> 3 );
+
+ sal_uInt32 nScanSize;
+ nScanSize = rDesc.mnScanSize;
+ if ( ( nScanSize * rDesc.mnY + nHeaderSize ) != mpCGM->mnElementSize ) // try a scansize without dw alignment
+ {
+ nScanSize = ( rDesc.mnScanSize + 1 ) & ~1;
+ if ( ( nScanSize * rDesc.mnY + nHeaderSize ) != mpCGM->mnElementSize ) // then we'll try word alignment
+ {
+ nScanSize = ( rDesc.mnScanSize + 3 ) & ~3;
+ if ( ( nScanSize * rDesc.mnY + nHeaderSize ) != mpCGM->mnElementSize ) // and last we'll try dword alignment
+ {
+ nScanSize = ( rDesc.mnScanSize + 1 ) & ~1; // and LAST BUT NOT LEAST we'll try word alignment without aligning the last line
+ if ( ( nScanSize * ( rDesc.mnY - 1 ) + rDesc.mnScanSize + nHeaderSize ) != mpCGM->mnElementSize )
+ {
+ nScanSize = ( rDesc.mnScanSize + 3 ) & ~3;
+ if ( ( nScanSize * ( rDesc.mnY - 1 ) + rDesc.mnScanSize + nHeaderSize ) != mpCGM->mnElementSize )
+ {
+ mpCGM->mnParaSize = 0; // this format is corrupt
+ rDesc.mbStatus = sal_False;
+ }
+ }
+ }
+ }
+ }
+ rDesc.mnScanSize = nScanSize;
+ if ( rDesc.mbStatus )
+ {
+ rDesc.mpBuf = mpCGM->mpSource + mpCGM->mnParaSize; // mpBuf now points to the first scanline
+ mpCGM->mnParaSize += rDesc.mnScanSize * rDesc.mnY;
+ }
+ return rDesc.mbStatus;
+}
+
+// ---------------------------------------------------------------
+
+void CGMBitmap::ImplInsert( CGMBitmapDescriptor& rSource, CGMBitmapDescriptor& rDest )
+{
+ if ( ( rSource.mnR.Y == rDest.mnQ.Y ) && ( rSource.mnR.X == rDest.mnQ.X ) )
+ { // Insert on Bottom
+ if ( mpCGM->mnVDCYmul == -1 )
+ rDest.mnOrigin = rSource.mnOrigin; // neuer origin
+ rDest.mpBitmap->Expand( 0, rSource.mnY );
+ rDest.mpBitmap->CopyPixel( Rectangle( Point( 0, rDest.mnY ), Size( rSource.mnX, rSource.mnY ) ),
+ Rectangle( Point( 0, 0 ), Size( rSource.mnX, rSource.mnY ) ), rSource.mpBitmap );
+ FloatPoint aFloatPoint;
+ aFloatPoint.X = rSource.mnQ.X - rSource.mnR.X;
+ aFloatPoint.Y = rSource.mnQ.Y - rSource.mnR.Y;
+ rDest.mnQ.X += aFloatPoint.X;
+ rDest.mnQ.Y += aFloatPoint.Y;
+ rDest.mnP = rSource.mnP;
+ rDest.mnR = rSource.mnR;
+ }
+ else
+ { // Insert on Top
+ if ( mpCGM->mnVDCYmul == 1 )
+ rDest.mnOrigin = rSource.mnOrigin; // neuer origin
+ rDest.mpBitmap->Expand( 0, rSource.mnY );
+ rDest.mpBitmap->CopyPixel( Rectangle( Point( 0, rDest.mnY ), Size( rSource.mnX, rSource.mnY ) ),
+ Rectangle( Point( 0, 0 ), Size( rSource.mnX, rSource.mnY ) ), rSource.mpBitmap );
+ rDest.mnP = rSource.mnP;
+ rDest.mnR = rSource.mnR;
+ }
+ rDest.mnY += rSource.mnY;
+ rDest.mndy += rSource.mndy;
+};
+
+// ---------------------------------------------------------------
+
+CGMBitmap* CGMBitmap::GetNext()
+{
+ if ( pCGMBitmapDescriptor->mpBitmap && pCGMBitmapDescriptor->mbStatus )
+ {
+ CGMBitmap* pCGMTempBitmap = new CGMBitmap( *mpCGM );
+ if ( pCGMTempBitmap )
+ {
+ if ( ( (long)pCGMTempBitmap->pCGMBitmapDescriptor->mnOrientation == (long)pCGMBitmapDescriptor->mnOrientation ) &&
+ ( ( ( pCGMTempBitmap->pCGMBitmapDescriptor->mnR.X == pCGMBitmapDescriptor->mnQ.X ) &&
+ ( pCGMTempBitmap->pCGMBitmapDescriptor->mnR.Y == pCGMBitmapDescriptor->mnQ.Y ) ) ||
+ ( ( pCGMTempBitmap->pCGMBitmapDescriptor->mnQ.X == pCGMBitmapDescriptor->mnR.X ) &&
+ ( pCGMTempBitmap->pCGMBitmapDescriptor->mnQ.Y == pCGMBitmapDescriptor->mnR.Y ) ) ) )
+ {
+ ImplInsert( *(pCGMTempBitmap->pCGMBitmapDescriptor), *(pCGMBitmapDescriptor) );
+ delete pCGMTempBitmap;
+ return NULL;
+ }
+ else // we'll replace the pointers and return the old one
+ {
+ CGMBitmapDescriptor* pTempBD = pCGMBitmapDescriptor;
+ pCGMBitmapDescriptor = pCGMTempBitmap->pCGMBitmapDescriptor;
+ pCGMTempBitmap->pCGMBitmapDescriptor = pTempBD;
+ return pCGMTempBitmap;
+ }
+ }
+ return NULL;
+ }
+ else
+ return NULL;
+}
+
+// ---------------------------------------------------------------
+
+CGMBitmapDescriptor* CGMBitmap::GetBitmap()
+{
+ return pCGMBitmapDescriptor;
+}
+
diff --git a/filter/source/graphicfilter/icgm/bitmap.hxx b/filter/source/graphicfilter/icgm/bitmap.hxx
new file mode 100644
index 000000000000..151c668f5d36
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/bitmap.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * 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 CGM_BITMAP_HXX_
+#define CGM_BITMAP_HXX_
+
+#include "cgm.hxx"
+#include <vcl/bmpacc.hxx>
+
+class CGM;
+
+class CGMBitmapDescriptor
+{
+ public:
+ sal_uInt8* mpBuf;
+ Bitmap* mpBitmap;
+ BitmapWriteAccess* mpAcc;
+ sal_Bool mbStatus;
+ sal_Bool mbVMirror;
+ sal_Bool mbHMirror;
+ sal_uInt32 mnDstBitsPerPixel;
+ sal_uInt32 mnScanSize; // bytes per line
+ FloatPoint mnP, mnQ, mnR;
+
+ FloatPoint mnOrigin;
+ double mndx, mndy;
+ double mnOrientation;
+
+ sal_uInt32 mnX, mnY;
+ long mnLocalColorPrecision;
+ sal_uInt32 mnCompressionMode;
+ CGMBitmapDescriptor() :
+ mpBuf ( NULL ),
+ mpBitmap ( NULL ),
+ mpAcc ( NULL ),
+ mbStatus ( sal_False ),
+ mbVMirror ( sal_False ),
+ mbHMirror ( sal_False ) { };
+ ~CGMBitmapDescriptor()
+ {
+ if ( mpAcc )
+ mpBitmap->ReleaseAccess( mpAcc );
+ if ( mpBitmap )
+ delete mpBitmap;
+ };
+};
+
+class CGMBitmap
+{
+ CGM* mpCGM;
+ CGMBitmapDescriptor* pCGMBitmapDescriptor;
+ sal_Bool ImplGetDimensions( CGMBitmapDescriptor& );
+ void ImplSetCurrentPalette( CGMBitmapDescriptor& );
+ void ImplGetBitmap( CGMBitmapDescriptor& );
+ void ImplInsert( CGMBitmapDescriptor& rSource, CGMBitmapDescriptor& rDest );
+ public:
+ CGMBitmap( CGM& rCGM );
+ ~CGMBitmap();
+ CGMBitmapDescriptor* GetBitmap();
+ CGMBitmap* GetNext();
+};
+#endif
+
diff --git a/filter/source/graphicfilter/icgm/bundles.cxx b/filter/source/graphicfilter/icgm/bundles.cxx
new file mode 100644
index 000000000000..f948f6549115
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/bundles.cxx
@@ -0,0 +1,288 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include "bundles.hxx"
+
+#include <vcl/salbtype.hxx>
+#include <tools/stream.hxx>
+#include <tools/list.hxx>
+
+Bundle& Bundle::operator=( Bundle& rSource )
+{
+ mnColor = rSource.mnColor;
+ mnBundleIndex = rSource.mnBundleIndex;
+ return *this;
+};
+
+// ---------------------------------------------------------------
+
+void Bundle::SetColor( sal_uInt32 nColor )
+{
+ mnColor = nColor;
+}
+
+sal_uInt32 Bundle::GetColor()
+{
+ return mnColor;
+}
+
+// ---------------------------------------------------------------
+
+LineBundle& LineBundle::operator=( LineBundle& rSource )
+{
+ SetIndex( rSource.GetIndex() );
+ eLineType = rSource.eLineType;
+ nLineWidth = rSource.nLineWidth;
+ return *this;
+};
+
+MarkerBundle& MarkerBundle::operator=( MarkerBundle& rSource )
+{
+ SetIndex( rSource.GetIndex() );
+ eMarkerType = rSource.eMarkerType;
+ nMarkerSize = rSource.nMarkerSize;
+ return *this;
+};
+
+EdgeBundle& EdgeBundle::operator=( EdgeBundle& rSource )
+{
+ SetIndex( rSource.GetIndex() );
+ eEdgeType = rSource.eEdgeType;
+ nEdgeWidth = rSource.nEdgeWidth;
+ return *this;
+};
+
+TextBundle& TextBundle::operator=( TextBundle& rSource )
+{
+ SetIndex( rSource.GetIndex() );
+ nTextFontIndex = rSource.nTextFontIndex;
+ eTextPrecision = rSource.eTextPrecision;
+ nCharacterExpansion = rSource.nCharacterExpansion;
+ nCharacterSpacing = rSource.nCharacterSpacing;
+ return *this;
+};
+
+FillBundle& FillBundle::operator=( FillBundle& rSource )
+{
+ SetIndex( rSource.GetIndex() );
+ eFillInteriorStyle = rSource.eFillInteriorStyle;
+ nFillPatternIndex = rSource.nFillPatternIndex;
+ nFillHatchIndex = rSource.nFillHatchIndex;
+ return *this;
+};
+
+// ---------------------------------------------------------------
+
+FontEntry::FontEntry() :
+ pFontName ( NULL ),
+ eCharSetType ( CST_CCOMPLETE ),
+ pCharSetValue ( NULL ),
+ nFontType ( 0 )
+{
+}
+
+FontEntry::~FontEntry()
+{
+ delete pFontName;
+ delete pCharSetValue;
+}
+
+// ---------------------------------------------------------------
+
+CGMFList::CGMFList() :
+ nFontNameCount ( 0 ),
+ nCharSetCount ( 0 ),
+ nFontsAvailable ( 0 )
+{
+ aFontEntryList.Clear();
+}
+
+CGMFList::~CGMFList()
+{
+ ImplDeleteList();
+}
+
+// ---------------------------------------------------------------
+
+CGMFList& CGMFList::operator=( CGMFList& rSource )
+{
+ ImplDeleteList();
+ nFontsAvailable = rSource.nFontsAvailable;
+ nFontNameCount = rSource.nFontNameCount;
+ nCharSetCount = rSource.nCharSetCount;
+ FontEntry* pPtr = (FontEntry*)rSource.aFontEntryList.First();
+ while( pPtr )
+ {
+ FontEntry* pCFontEntry = new FontEntry;
+ if ( pPtr->pFontName )
+ {
+ sal_uInt32 nSize = strlen( (const char*)pPtr->pFontName ) + 1;
+ pCFontEntry->pFontName = new sal_Int8[ nSize ];
+ memcpy( pCFontEntry->pFontName, pPtr->pFontName, nSize );
+ }
+ if ( pPtr->pCharSetValue )
+ {
+ sal_uInt32 nSize = strlen( (const char*)pPtr->pCharSetValue ) + 1;
+ pCFontEntry->pCharSetValue = new sal_Int8[ nSize ];
+ memcpy( pCFontEntry->pCharSetValue, pPtr->pCharSetValue, nSize );
+ }
+ pCFontEntry->eCharSetType = pPtr->eCharSetType;
+ pCFontEntry->nFontType = pPtr->nFontType;
+ aFontEntryList.Insert( pCFontEntry, LIST_APPEND );
+ pPtr = (FontEntry*)rSource.aFontEntryList.Next();
+ }
+ return *this;
+}
+
+// ---------------------------------------------------------------
+
+FontEntry* CGMFList::GetFontEntry( sal_uInt32 nIndex )
+{
+ sal_uInt32 nInd = nIndex;
+ if ( nInd )
+ nInd--;
+ return (FontEntry*)aFontEntryList.GetObject( nInd );
+}
+
+// ---------------------------------------------------------------
+
+static sal_Int8* ImplSearchEntry( sal_Int8* pSource, sal_Int8* pDest, sal_uInt32 nComp, sal_uInt32 nSize )
+{
+ while ( nComp-- >= nSize )
+ {
+ sal_uInt32 i;
+ for ( i = 0; i < nSize; i++ )
+ {
+ if ( ( pSource[i]&~0x20 ) != ( pDest[i]&~0x20 ) )
+ break;
+ }
+ if ( i == nSize )
+ return pSource;
+ pSource++;
+ }
+ return NULL;
+}
+
+void CGMFList::InsertName( sal_uInt8* pSource, sal_uInt32 nSize )
+{
+ FontEntry* pFontEntry;
+ if ( nFontsAvailable == nFontNameCount )
+ {
+ nFontsAvailable++;
+ pFontEntry = new FontEntry;
+ aFontEntryList.Insert( pFontEntry, LIST_APPEND );
+ }
+ else
+ {
+ pFontEntry = (FontEntry*)aFontEntryList.GetObject( nFontNameCount );
+ }
+ nFontNameCount++;
+ sal_Int8* pBuf = new sal_Int8[ nSize ];
+ memcpy( pBuf, pSource, nSize );
+ sal_Int8* pFound = ImplSearchEntry( pBuf, (sal_Int8*)"ITALIC", nSize, 6 );
+ if ( pFound )
+ {
+ pFontEntry->nFontType |= 1;
+ sal_uInt32 nPrev = ( pFound - pBuf );
+ sal_uInt32 nToCopyOfs = 6;
+ if ( nPrev && ( pFound[ -1 ] == '-' || pFound[ -1 ] == ' ' ) )
+ {
+ nPrev--;
+ pFound--;
+ nToCopyOfs++;
+ }
+ sal_uInt32 nToCopy = nSize - nToCopyOfs - nPrev;
+ if ( nToCopy )
+ {
+ memcpy( pFound, pFound + nToCopyOfs, nToCopy );
+ }
+ nSize -= nToCopyOfs;
+ }
+ pFound = ImplSearchEntry( pBuf, (sal_Int8*)"BOLD", nSize, 4 );
+ if ( pFound )
+ {
+ pFontEntry->nFontType |= 2;
+
+ sal_uInt32 nPrev = ( pFound - pBuf );
+ sal_uInt32 nToCopyOfs = 4;
+ if ( nPrev && ( pFound[ -1 ] == '-' || pFound[ -1 ] == ' ' ) )
+ {
+ nPrev--;
+ pFound--;
+ nToCopyOfs++;
+ }
+ sal_uInt32 nToCopy = nSize - nToCopyOfs - nPrev;
+ if ( nToCopy )
+ {
+ memcpy( pFound, pFound + nToCopyOfs, nToCopy );
+ }
+ nSize -= nToCopyOfs;
+ }
+ pFontEntry->pFontName = new sal_Int8[ nSize + 1 ];
+ pFontEntry->pFontName[ nSize ] = 0;
+ memcpy( pFontEntry->pFontName, pBuf, nSize );
+ delete[] pBuf;
+}
+
+//--------------------------------------------------------------------------
+
+void CGMFList::InsertCharSet( CharSetType eCharSetType, sal_uInt8* pSource, sal_uInt32 nSize )
+{
+ FontEntry* pFontEntry;
+ if ( nFontsAvailable == nCharSetCount )
+ {
+ nFontsAvailable++;
+ pFontEntry = new FontEntry;
+ aFontEntryList.Insert( pFontEntry, LIST_APPEND );
+ }
+ else
+ {
+ pFontEntry = (FontEntry*)aFontEntryList.GetObject( nCharSetCount );
+ }
+ nCharSetCount++;
+ pFontEntry->eCharSetType = eCharSetType;
+ pFontEntry->pCharSetValue = new sal_Int8[ nSize + 1 ];
+ pFontEntry->pCharSetValue[ nSize ] = 0;
+ memcpy( pFontEntry->pCharSetValue, pSource , nSize );
+}
+
+// ---------------------------------------------------------------
+
+void CGMFList::ImplDeleteList()
+{
+ FontEntry* pFontEntry = (FontEntry*)aFontEntryList.First();
+ while( pFontEntry )
+ {
+ delete pFontEntry;
+ pFontEntry = (FontEntry*)aFontEntryList.Next();
+ }
+ aFontEntryList.Clear();
+}
+
diff --git a/filter/source/graphicfilter/icgm/bundles.hxx b/filter/source/graphicfilter/icgm/bundles.hxx
new file mode 100644
index 000000000000..5185553055cb
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/bundles.hxx
@@ -0,0 +1,173 @@
+/*************************************************************************
+ *
+ * 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 CGM_BUNDLES_HXX_
+#define CGM_BUNDLES_HXX_
+
+#include <sal/types.h>
+#include "cgmtypes.hxx"
+#include <tools/list.hxx>
+#include <vcl/salbtype.hxx>
+
+// ---------------------------------------------------------------
+
+class CGM;
+
+class Bundle
+{
+
+ long mnBundleIndex;
+ sal_uInt32 mnColor;
+
+public:
+ void SetColor( sal_uInt32 nColor ) ;
+ sal_uInt32 GetColor() ;
+ long GetIndex() const { return mnBundleIndex; } ;
+ void SetIndex( long nBundleIndex ) { mnBundleIndex = nBundleIndex; } ;
+
+ Bundle() {};
+ virtual Bundle* Clone() { return new Bundle( *this ); };
+ Bundle& operator=( Bundle& rBundle );
+
+ virtual ~Bundle() {} ;
+};
+
+// ---------------------------------------------------------------
+
+class LineBundle : public Bundle
+{
+public:
+
+ LineType eLineType;
+ double nLineWidth;
+
+ LineBundle() {};
+ virtual Bundle* Clone() { return new LineBundle( *this ); };
+ LineBundle& operator=( LineBundle& rLineBundle );
+ virtual ~LineBundle() {};
+};
+
+// ---------------------------------------------------------------
+
+class MarkerBundle : public Bundle
+{
+public:
+
+ MarkerType eMarkerType;
+ double nMarkerSize;
+
+ MarkerBundle() {};
+ virtual Bundle* Clone() { return new MarkerBundle( *this ); } ;
+ MarkerBundle& operator=( MarkerBundle& rMarkerBundle );
+ virtual ~MarkerBundle() {};
+};
+
+// ---------------------------------------------------------------
+
+class EdgeBundle : public Bundle
+{
+public:
+
+ EdgeType eEdgeType;
+ double nEdgeWidth;
+
+ EdgeBundle() {};
+ virtual Bundle* Clone() { return new EdgeBundle( *this ); } ;
+ EdgeBundle& operator=( EdgeBundle& rEdgeBundle );
+ virtual ~EdgeBundle() {};
+};
+
+// ---------------------------------------------------------------
+
+class TextBundle : public Bundle
+{
+public:
+
+ sal_uInt32 nTextFontIndex;
+ TextPrecision eTextPrecision;
+ double nCharacterExpansion;
+ double nCharacterSpacing;
+
+ TextBundle() {};
+ virtual Bundle* Clone() { return new TextBundle( *this ); } ;
+ TextBundle& operator=( TextBundle& rTextBundle );
+ virtual ~TextBundle() {};
+};
+
+// ---------------------------------------------------------------
+
+class FillBundle : public Bundle
+{
+public:
+
+ FillInteriorStyle eFillInteriorStyle;
+ long nFillPatternIndex;
+ long nFillHatchIndex;
+
+ FillBundle() {};
+ virtual Bundle* Clone() { return new FillBundle( *this ); } ;
+ FillBundle& operator=( FillBundle& rFillBundle );
+ virtual ~FillBundle() {};
+};
+
+
+// ---------------------------------------------------------------
+
+class FontEntry
+{
+public:
+ sal_Int8* pFontName;
+ CharSetType eCharSetType;
+ sal_Int8* pCharSetValue;
+ sal_uInt32 nFontType; // bit 0 = 1 -> Italic,
+ // bit 1 = 1 -> Bold
+
+ FontEntry();
+ FontEntry* Clone() { return new FontEntry( *this ); } ;
+ ~FontEntry();
+};
+
+// ---------------------------------------------------------------
+
+class CGMFList
+{
+ sal_uInt32 nFontNameCount;
+ sal_uInt32 nCharSetCount;
+ List aFontEntryList;
+ void ImplDeleteList();
+public:
+ sal_uInt32 nFontsAvailable;
+ FontEntry* GetFontEntry( sal_uInt32 );
+ void InsertName( sal_uInt8* pSource, sal_uInt32 nSize );
+ void InsertCharSet( CharSetType, sal_uInt8* pSource, sal_uInt32 nSize );
+ CGMFList();
+ CGMFList& operator=( CGMFList& rFontList );
+ ~CGMFList();
+};
+
+
+#endif
diff --git a/filter/source/graphicfilter/icgm/cgm.cxx b/filter/source/graphicfilter/icgm/cgm.cxx
new file mode 100644
index 000000000000..ea474a160e36
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/cgm.cxx
@@ -0,0 +1,927 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <unotools/ucbstreamhelper.hxx>
+
+#define CGM_BREAK_ACTION 0xffffffff
+#include <osl/endian.h>
+#include <vcl/virdev.hxx>
+#include <vcl/graph.hxx>
+#include <tools/stream.hxx>
+#include <chart.hxx>
+#include <main.hxx>
+#include <elements.hxx>
+#include <outact.hxx>
+
+using namespace ::com::sun::star;
+
+// ---------------------------------------------------------------
+
+void CGM::ImplCGMInit()
+{
+ mbIsFinished = mbPicture = mbMetaFile = mbPictureBody = sal_False;
+
+ mnActCount = 0;
+ mnOutdx = 28000;
+ mnOutdy = 21000;
+
+ mpBuf = NULL;
+ mpChart = NULL;
+ mpBitmapInUse = NULL;
+
+ pCopyOfE = new CGMElements( *this );
+ pElement = new CGMElements( *this );
+}
+
+// ---------------------------------------------------------------
+
+#ifdef CGM_EXPORT_IMPRESS
+
+CGM::CGM( sal_uInt32 nMode, uno::Reference< frame::XModel > & rModel ) :
+ mpGraphic ( NULL ),
+ mpCommentOut ( NULL ),
+ mbStatus ( sal_True ),
+ mpOutAct ( new CGMImpressOutAct( *this, rModel ) ),
+ mnMode ( nMode )
+{
+ mnMode |= CGM_EXPORT_IMPRESS;
+ ImplCGMInit();
+}
+#endif
+
+// ---------------------------------------------------------------
+
+void CGM::ImplComment( sal_uInt32 Level, const char* Description )
+{
+ if ( mpCommentOut )
+ {
+ if ( Level == CGM_DESCRIPTION )
+ {
+ *mpCommentOut << " " << Description << "\n";
+ }
+ else
+ {
+ sal_Int8 nFirst, nSecond, i, nCount = 0;
+ if ( mnActCount < 10000 )
+ nCount++;
+ if ( mnActCount < 1000 )
+ nCount++;
+ if ( mnActCount < 100 )
+ nCount++;
+ if ( mnActCount < 10 )
+ nCount++;
+ for ( i = 0; i <= nCount; i++ )
+ *mpCommentOut << " ";
+ mpCommentOut->WriteNumber( mnActCount );
+
+ switch( Level & 0xff )
+ {
+ case CGM_UNKNOWN_LEVEL :
+ *mpCommentOut << " L?";
+ break;
+ case CGM_UNKNOWN_COMMAND :
+ *mpCommentOut << " UNKNOWN COMMAND";
+ break;
+ case CGM_GDSF_ONLY :
+ *mpCommentOut << " LI";
+ break;
+ default:
+ *mpCommentOut << " L";
+ mpCommentOut->WriteNumber( Level & 0xff );
+ break;
+ }
+ *mpCommentOut << " C";
+ mpCommentOut->WriteNumber( mnElementClass );
+ *mpCommentOut << " ID-0x";
+ nFirst = ( mnElementID > 0x9F ) ? (sal_Int8)( mnElementID >> 4 ) + 'A' - 10: (sal_Int8)( mnElementID >> 4 ) + '0';
+ nSecond = ( ( mnElementID & 15 ) > 9 ) ? (sal_Int8)( mnElementID & 15 ) + 'A' - 10 : (sal_Int8)( mnElementID & 15 ) + '0';
+ *mpCommentOut << nFirst << nSecond;
+ *mpCommentOut << " Size";
+ nCount = 1;
+ if ( mnElementSize < 1000000 )
+ nCount++;
+ if ( mnElementSize < 100000 )
+ nCount++;
+ if ( mnElementSize < 10000 )
+ nCount++;
+ if ( mnElementSize < 1000 )
+ nCount++;
+ if ( mnElementSize < 100 )
+ nCount++;
+ if ( mnElementSize < 10 )
+ nCount++;
+ for ( i = 0; i < nCount; i++ )
+ *mpCommentOut << " ";
+ mpCommentOut->WriteNumber( mnElementSize );
+ *mpCommentOut << " " << Description << "\n";
+ }
+ }
+}
+
+// ---------------------------------------------------------------
+
+CGM::~CGM()
+{
+
+#ifdef CGM_EXPORT_META
+ if ( mpGraphic )
+ {
+ mpGDIMetaFile->Stop();
+ mpGDIMetaFile->SetPrefMapMode( MapMode() );
+ mpGDIMetaFile->SetPrefSize( Size( static_cast< long >( mnOutdx ), static_cast< long >( mnOutdy ) ) );
+ delete mpVirDev;
+ *mpGraphic = Graphic( *mpGDIMetaFile );
+ }
+#endif
+ sal_Int8* pBuf = (sal_Int8*)maDefRepList.First();
+ while( pBuf )
+ {
+ delete pBuf;
+ pBuf = (sal_Int8*)maDefRepList.Next();
+ }
+ maDefRepList.Clear();
+ delete mpBitmapInUse;
+ delete mpCommentOut;
+ delete mpChart;
+ delete mpOutAct;
+ delete pCopyOfE;
+ delete pElement;
+ delete [] mpBuf;
+};
+
+// ---------------------------------------------------------------
+
+sal_uInt32 CGM::GetBackGroundColor()
+{
+ return ( pElement ) ? pElement->aColorTable[ 0 ] : 0;
+}
+
+// ---------------------------------------------------------------
+
+sal_uInt32 CGM::ImplGetUI16( sal_uInt32 /*nAlign*/ )
+{
+ sal_uInt8* pSource = mpSource + mnParaSize;
+ mnParaSize += 2;
+ return ( pSource[ 0 ] << 8 ) + pSource[ 1 ];
+};
+
+// ---------------------------------------------------------------
+
+sal_uInt8 CGM::ImplGetByte( sal_uInt32 nSource, sal_uInt32 nPrecision )
+{
+ return (sal_uInt8)( nSource >> ( ( nPrecision - 1 ) << 3 ) );
+};
+
+// ---------------------------------------------------------------
+
+long CGM::ImplGetI( sal_uInt32 nPrecision )
+{
+ sal_uInt8* pSource = mpSource + mnParaSize;
+ mnParaSize += nPrecision;
+ switch( nPrecision )
+ {
+ case 1 :
+ {
+ return (char)*pSource;
+ }
+
+ case 2 :
+ {
+ return (sal_Int16)( ( pSource[ 0 ] << 8 ) | pSource[ 1 ] );
+ }
+
+ case 3 :
+ {
+ return ( ( pSource[ 0 ] << 24 ) | ( pSource[ 1 ] << 16 ) | pSource[ 2 ] << 8 ) >> 8;
+ }
+ case 4:
+ {
+ return (sal_Int32)( ( pSource[ 0 ] << 24 ) | ( pSource[ 1 ] << 16 ) | ( pSource[ 2 ] << 8 ) | ( pSource[ 3 ] ) );
+ }
+ default:
+ mbStatus = sal_False;
+ return 0;
+ }
+}
+
+// ---------------------------------------------------------------
+
+sal_uInt32 CGM::ImplGetUI( sal_uInt32 nPrecision )
+{
+ sal_uInt8* pSource = mpSource + mnParaSize;
+ mnParaSize += nPrecision;
+ switch( nPrecision )
+ {
+ case 1 :
+ return (sal_Int8)*pSource;
+ case 2 :
+ {
+ return (sal_uInt16)( ( pSource[ 0 ] << 8 ) | pSource[ 1 ] );
+ }
+ case 3 :
+ {
+ return ( pSource[ 0 ] << 16 ) | ( pSource[ 1 ] << 8 ) | pSource[ 2 ];
+ }
+ case 4:
+ {
+ return (sal_uInt32)( ( pSource[ 0 ] << 24 ) | ( pSource[ 1 ] << 16 ) | ( pSource[ 2 ] << 8 ) | ( pSource[ 3 ] ) );
+ }
+ default:
+ mbStatus = sal_False;
+ return 0;
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplGetSwitch4( sal_uInt8* pSource, sal_uInt8* pDest )
+{
+ for ( int i = 0; i < 4; i++ )
+ {
+ pDest[ i ] = pSource[ i ^ 3 ]; // Little Endian <-> Big Endian switch
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplGetSwitch8( sal_uInt8* pSource, sal_uInt8* pDest )
+{
+ for ( int i = 0; i < 8; i++ )
+ {
+ pDest[ i ] = pSource[ i ^ 7 ]; // Little Endian <-> Big Endian switch
+ }
+}
+
+// ---------------------------------------------------------------
+
+double CGM::ImplGetFloat( RealPrecision eRealPrecision, sal_uInt32 nRealSize )
+{
+ void* pPtr;
+ sal_uInt8 aBuf[8];
+ sal_Bool bCompatible;
+ double nRetValue;
+ double fDoubleBuf;
+ float fFloatBuf;
+
+#ifdef OSL_BIGENDIAN
+ bCompatible = sal_True;
+#else
+ bCompatible = sal_False;
+#endif
+ if ( bCompatible )
+ pPtr = mpSource + mnParaSize;
+ else
+ {
+ if ( nRealSize == 4 )
+ ImplGetSwitch4( mpSource + mnParaSize, &aBuf[0] );
+ else
+ ImplGetSwitch8( mpSource + mnParaSize, &aBuf[0] );
+ pPtr = &aBuf;
+ }
+ if ( eRealPrecision == RP_FLOAT )
+ {
+ if ( nRealSize == 4 )
+ {
+ memcpy( (void*)&fFloatBuf, pPtr, 4 );
+ nRetValue = (double)fFloatBuf;
+ }
+ else
+ {
+ memcpy( (void*)&fDoubleBuf, pPtr, 8 );
+ nRetValue = fDoubleBuf;
+ }
+ }
+ else // ->RP_FIXED
+ {
+ long nVal;
+ int nSwitch = ( bCompatible ) ? 0 : 1 ;
+ if ( nRealSize == 4 )
+ {
+ sal_uInt16* pShort = (sal_uInt16*)pPtr;
+ nVal = pShort[ nSwitch ];
+ nVal <<= 16;
+ nVal |= pShort[ nSwitch ^ 1 ];
+ nRetValue = (double)nVal;
+ nRetValue /= 65536;
+ }
+ else
+ {
+ long* pLong = (long*)pPtr;
+ nRetValue = (double)abs( pLong[ nSwitch ] );
+ nRetValue *= 65536;
+ nVal = (sal_uInt32)( pLong[ nSwitch ^ 1 ] );
+ nVal >>= 16;
+ nRetValue += (double)nVal;
+ if ( pLong[ nSwitch ] < 0 )
+ {
+ nRetValue -= nRetValue;
+ }
+ nRetValue /= 65536;
+ }
+ }
+ mnParaSize += nRealSize;
+ return nRetValue;
+}
+
+// ---------------------------------------------------------------
+
+sal_uInt32 CGM::ImplGetPointSize()
+{
+ if ( pElement->eVDCType == VDC_INTEGER )
+ return pElement->nVDCIntegerPrecision << 1;
+ else
+ return pElement->nVDCRealSize << 1;
+}
+
+// ---------------------------------------------------------------
+
+inline double CGM::ImplGetIX()
+{
+ return ( ( ImplGetI( pElement->nVDCIntegerPrecision ) + mnVDCXadd ) * mnVDCXmul );
+}
+
+// ---------------------------------------------------------------
+
+inline double CGM::ImplGetFX()
+{
+ return ( ( ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize ) + mnVDCXadd ) * mnVDCXmul );
+}
+
+// ---------------------------------------------------------------
+
+inline double CGM::ImplGetIY()
+{
+ return ( ( ImplGetI( pElement->nVDCIntegerPrecision ) + mnVDCYadd ) * mnVDCYmul );
+}
+
+// ---------------------------------------------------------------
+
+inline double CGM::ImplGetFY()
+{
+ return ( ( ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize ) + mnVDCYadd ) * mnVDCYmul );
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplGetPoint( FloatPoint& rFloatPoint, sal_Bool bMap )
+{
+ if ( pElement->eVDCType == VDC_INTEGER )
+ {
+ rFloatPoint.X = ImplGetIX();
+ rFloatPoint.Y = ImplGetIY();
+ }
+ else // ->floating points
+ {
+ rFloatPoint.X = ImplGetFX();
+ rFloatPoint.Y = ImplGetFY();
+ }
+ if ( bMap )
+ ImplMapPoint( rFloatPoint );
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplGetRectangle( FloatRect& rFloatRect, sal_Bool bMap )
+{
+ if ( pElement->eVDCType == VDC_INTEGER )
+ {
+ rFloatRect.Left = ImplGetIX();
+ rFloatRect.Bottom = ImplGetIY();
+ rFloatRect.Right = ImplGetIX();
+ rFloatRect.Top = ImplGetIY();
+ }
+ else // ->floating points
+ {
+ rFloatRect.Left = ImplGetFX();
+ rFloatRect.Bottom = ImplGetFY();
+ rFloatRect.Right = ImplGetFX();
+ rFloatRect.Top = ImplGetFY();
+ }
+ if ( bMap )
+ {
+ ImplMapX( rFloatRect.Left );
+ ImplMapX( rFloatRect.Right );
+ ImplMapY( rFloatRect.Top );
+ ImplMapY( rFloatRect.Bottom );
+ rFloatRect.Justify();
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplGetRectangleNS( FloatRect& rFloatRect )
+{
+ if ( pElement->eVDCType == VDC_INTEGER )
+ {
+ rFloatRect.Left = ImplGetI( pElement->nVDCIntegerPrecision );
+ rFloatRect.Bottom = ImplGetI( pElement->nVDCIntegerPrecision );
+ rFloatRect.Right = ImplGetI( pElement->nVDCIntegerPrecision );
+ rFloatRect.Top = ImplGetI( pElement->nVDCIntegerPrecision );
+ }
+ else // ->floating points
+ {
+ rFloatRect.Left = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ rFloatRect.Bottom = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ rFloatRect.Right = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ rFloatRect.Top = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ }
+}
+
+// ---------------------------------------------------------------
+
+sal_uInt32 CGM::ImplGetBitmapColor( sal_Bool bDirect )
+{
+ // the background color is always a direct color
+
+ sal_uInt32 nTmp;
+ if ( ( pElement->eColorSelectionMode == CSM_DIRECT ) || bDirect )
+ {
+ sal_uInt32 nColor = ImplGetByte( ImplGetUI( pElement->nColorPrecision ), 1 );
+ sal_uInt32 nDiff = pElement->nColorValueExtent[ 3 ] - pElement->nColorValueExtent[ 0 ] + 1;
+
+ if ( !nDiff )
+ nDiff++;
+ nColor = ( ( nColor - pElement->nColorValueExtent[ 0 ] ) << 8 ) / nDiff;
+ nTmp = nColor << 16 & 0xff0000;
+
+ nColor = ImplGetByte( ImplGetUI( pElement->nColorPrecision ), 1 );
+ nDiff = pElement->nColorValueExtent[ 4 ] - pElement->nColorValueExtent[ 1 ] + 1;
+ if ( !nDiff )
+ nDiff++;
+ nColor = ( ( nColor - pElement->nColorValueExtent[ 1 ] ) << 8 ) / nDiff;
+ nTmp |= nColor << 8 & 0xff00;
+
+ nColor = ImplGetByte( ImplGetUI( pElement->nColorPrecision ), 1 );
+ nDiff = pElement->nColorValueExtent[ 5 ] - pElement->nColorValueExtent[ 2 ] + 1;
+ if ( !nDiff )
+ nDiff++;
+ nColor = ( ( nColor - pElement->nColorValueExtent[ 2 ] ) << 8 ) / nDiff;
+ nTmp |= (sal_uInt8)nColor;
+ }
+ else
+ {
+ sal_uInt32 nIndex = ImplGetUI( pElement->nColorIndexPrecision );
+ nTmp = pElement->aColorTable[ (sal_uInt8)( nIndex ) ] ;
+ }
+ return nTmp;
+}
+
+// ---------------------------------------------------------------
+
+// call this function each time after the mapmode settings has been changed
+void CGM::ImplSetMapMode()
+{
+ int nAngReverse = 1;
+ mnVDCdx = pElement->aVDCExtent.Right - pElement->aVDCExtent.Left;
+
+ mnVDCXadd = -pElement->aVDCExtent.Left;
+ mnVDCXmul = 1;
+ if ( mnVDCdx < 0 )
+ {
+ nAngReverse ^= 1;
+ mnVDCdx = -mnVDCdx;
+ mnVDCXmul = -1;
+ }
+
+ mnVDCdy = pElement->aVDCExtent.Bottom - pElement->aVDCExtent.Top;
+ mnVDCYadd = -pElement->aVDCExtent.Top;
+ mnVDCYmul = 1;
+ if ( mnVDCdy < 0 )
+ {
+ nAngReverse ^= 1;
+ mnVDCdy = -mnVDCdy;
+ mnVDCYmul = -1;
+ }
+ if ( nAngReverse )
+ mbAngReverse = sal_True;
+ else
+ mbAngReverse = sal_False;
+
+ double fQuo1 = mnVDCdx / mnVDCdy;
+ double fQuo2 = mnOutdx / mnOutdy;
+ if ( fQuo2 < fQuo1 )
+ {
+ mnXFraction = mnOutdx / mnVDCdx;
+ mnYFraction = mnOutdy * ( fQuo2 / fQuo1 ) / mnVDCdy;
+ }
+ else
+ {
+ mnXFraction = mnOutdx * ( fQuo1 / fQuo2 ) / mnVDCdx;
+ mnYFraction = mnOutdy / mnVDCdy;
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplMapDouble( double& nNumb )
+{
+ if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
+ {
+ // point is 1mm * ScalingFactor
+ switch ( pElement->eDeviceViewPortMode )
+ {
+ case DVPM_FRACTION :
+ {
+ nNumb *= ( mnXFraction + mnYFraction ) / 2;
+ }
+ break;
+
+ case DVPM_METRIC :
+ {
+// nNumb *= ( 100 * pElement->nDeviceViewPortScale );
+ nNumb *= ( mnXFraction + mnYFraction ) / 2;
+ if ( pElement->nDeviceViewPortScale < 0 )
+ nNumb = -nNumb;
+ }
+ break;
+
+ case DVPM_DEVICE :
+ {
+
+ }
+ break;
+
+ default:
+
+ break;
+ }
+ }
+ else
+ {
+
+
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplMapX( double& nNumb )
+{
+ if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
+ {
+ // point is 1mm * ScalingFactor
+ switch ( pElement->eDeviceViewPortMode )
+ {
+ case DVPM_FRACTION :
+ {
+ nNumb *= mnXFraction;
+ }
+ break;
+
+ case DVPM_METRIC :
+ {
+// nNumb *= ( 100 * pElement->nDeviceViewPortScale );
+ nNumb *= mnXFraction;
+ if ( pElement->nDeviceViewPortScale < 0 )
+ nNumb = -nNumb;
+ }
+ break;
+
+ case DVPM_DEVICE :
+ {
+
+ }
+ break;
+
+ default:
+
+ break;
+ }
+ }
+ else
+ {
+
+
+ }
+}
+
+
+// ---------------------------------------------------------------
+
+void CGM::ImplMapY( double& nNumb )
+{
+ if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
+ {
+ // point is 1mm * ScalingFactor
+ switch ( pElement->eDeviceViewPortMode )
+ {
+ case DVPM_FRACTION :
+ {
+ nNumb *= mnYFraction;
+ }
+ break;
+
+ case DVPM_METRIC :
+ {
+// nNumb *= ( 100 * pElement->nDeviceViewPortScale );
+ nNumb *= mnYFraction;
+ if ( pElement->nDeviceViewPortScale < 0 )
+ nNumb = -nNumb;
+ }
+ break;
+
+ case DVPM_DEVICE :
+ {
+
+ }
+ break;
+
+ default:
+
+ break;
+ }
+ }
+ else
+ {
+
+
+ }
+}
+
+
+// ---------------------------------------------------------------
+
+// convert a point to the current VC mapmode (1/100TH mm)
+void CGM::ImplMapPoint( FloatPoint& rFloatPoint )
+{
+ if ( pElement->eDeviceViewPortMap == DVPM_FORCED )
+ {
+ // point is 1mm * ScalingFactor
+ switch ( pElement->eDeviceViewPortMode )
+ {
+ case DVPM_FRACTION :
+ {
+ rFloatPoint.X *= mnXFraction;
+ rFloatPoint.Y *= mnYFraction;
+ }
+ break;
+
+ case DVPM_METRIC :
+ {
+ rFloatPoint.X *= mnXFraction;
+ rFloatPoint.Y *= mnYFraction;
+ if ( pElement->nDeviceViewPortScale < 0 )
+ {
+ rFloatPoint.X = -rFloatPoint.X;
+ rFloatPoint.Y = -rFloatPoint.Y;
+ }
+ }
+ break;
+
+ case DVPM_DEVICE :
+ {
+
+ }
+ break;
+
+ default:
+
+ break;
+ }
+ }
+ else
+ {
+
+
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass()
+{
+#ifdef CGM_USER_BREAKPOINT
+#ifdef WNT
+ if ( mnActCount == CGM_BREAK_ACTION )
+ _asm int 0x3;
+#endif
+#endif
+ switch ( mnElementClass )
+ {
+ case 0 : ImplDoClass0(); break;
+ case 1 : ImplDoClass1(); break;
+ case 2 : ImplDoClass2(); break;
+ case 3 : ImplDoClass3(); break;
+ case 4 :
+ {
+ ImplDoClass4();
+ mnAct4PostReset = 0;
+ }
+ break;
+ case 5 : ImplDoClass5(); break;
+ case 6 : ImplDoClass6(); break;
+ case 7 : ImplDoClass7(); break;
+ case 8 : ImplDoClass8(); break;
+ case 9 : ImplDoClass9(); break;
+ case 15 :ImplDoClass15(); break;
+ default : ComOut( CGM_UNKNOWN_COMMAND, "" ); break;
+ }
+ mnActCount++;
+};
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDefaultReplacement()
+{
+ sal_uInt8* pBuf = (sal_uInt8*)maDefRepList.First();
+ if ( pBuf )
+ {
+ sal_uInt32 nElementSize = (sal_uInt32)(sal_uIntPtr)maDefRepSizeList.First();
+ sal_uInt32 nOldEscape = mnEscape;
+ sal_uInt32 nOldElementClass = mnElementClass;
+ sal_uInt32 nOldElementID = mnElementID;
+ sal_uInt32 nOldElementSize = mnElementSize;
+ sal_uInt8* pOldBuf = mpSource;
+ while( pBuf )
+ {
+ sal_uInt32 nCount = 0;
+ while ( mbStatus && ( nCount < nElementSize ) )
+ {
+ mpSource = pBuf + nCount;
+ mnParaSize = 0;
+ mnEscape = ImplGetUI16();
+ mnElementClass = mnEscape >> 12;
+ mnElementID = ( mnEscape & 0x0fe0 ) >> 5;
+ mnElementSize = mnEscape & 0x1f;
+ if ( mnElementSize == 31 )
+ {
+ mnElementSize = ImplGetUI16();
+ }
+ nCount += mnParaSize;
+ mnParaSize = 0;
+ mpSource = pBuf + nCount;
+ if ( mnElementSize & 1 )
+ nCount++;
+ nCount += mnElementSize;
+ if ( ( mnElementClass != 1 ) || ( mnElementID != 0xc ) ) // rekursion hier nicht moeglich!!
+ ImplDoClass();
+ }
+ nElementSize = (sal_uInt32)(sal_uIntPtr)maDefRepSizeList.Next();
+ pBuf = (sal_uInt8*)maDefRepList.Next();
+ }
+ mnEscape = nOldEscape;
+ mnElementClass = nOldElementClass;
+ mnElementID = nOldElementID;
+ mnParaSize = mnElementSize = nOldElementSize;
+ mpSource = pOldBuf;
+ }
+}
+
+// ---------------------------------------------------------------
+
+sal_Bool CGM::Write( SvStream& rIStm )
+{
+ if ( !mpBuf )
+ mpBuf = new sal_uInt8[ 0xffff ];
+
+ mnParaSize = 0;
+ mpSource = mpBuf;
+ rIStm.Read( mpSource, 2 );
+ mnEscape = ImplGetUI16();
+ mnElementClass = mnEscape >> 12;
+ mnElementID = ( mnEscape & 0x0fe0 ) >> 5;
+ mnElementSize = mnEscape & 0x1f;
+
+ if ( mnElementSize == 31 )
+ {
+ rIStm.Read( mpSource + mnParaSize, 2 );
+ mnElementSize = ImplGetUI16();
+ }
+ mnParaSize = 0;
+ if ( mnElementSize )
+ rIStm.Read( mpSource + mnParaSize, mnElementSize );
+
+ if ( mnElementSize & 1 )
+ rIStm.SeekRel( 1 );
+ ImplDoClass();
+
+
+#ifdef CGM_USER_BREAKPOINT
+#ifdef WNT
+ if ( !mbStatus || mnParaSize && ( mnElementSize != mnParaSize ) )
+ _asm int 0x3;
+#endif
+#endif
+
+ return mbStatus;
+};
+
+// ---------------------------------------------------------------
+
+SvStream& operator>>( SvStream& rOStm, CGM& /*rCGM*/ )
+{
+
+ return rOStm;
+};
+
+// ---------------------------------------------------------------
+
+
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" sal_uInt32 __LOADONCALLAPI ImportCGM( String& rFileName, uno::Reference< frame::XModel > & rXModel, sal_uInt32 nMode, void* pProgressBar )
+{
+
+ sal_uInt32 nStatus = 0; // retvalue == 0 -> ERROR
+ // == 0xffrrggbb -> background color in the lower 24 bits
+ sal_Bool bProgressBar = sal_False;
+
+ if( rXModel.is() )
+ {
+ CGM* pCGM= NULL;
+
+ try
+ {
+ pCGM = new CGM( nMode, rXModel );
+ if ( pCGM && pCGM->IsValid() )
+ {
+ if ( nMode & CGM_IMPORT_CGM )
+ {
+ SvStream* pIn = ::utl::UcbStreamHelper::CreateStream( rFileName, STREAM_READ );
+ if ( pIn )
+ {
+ pIn->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+ pIn->Seek( STREAM_SEEK_TO_END );
+ sal_uInt32 nInSize = pIn->Tell();
+ pIn->Seek( 0 );
+
+#ifdef CGM_EXPORT_IMPRESS
+ uno::Reference< task::XStatusIndicator > aXStatInd;
+ sal_uInt32 nNext = 0;
+ sal_uInt32 nAdd = nInSize / 20;
+ if ( pProgressBar )
+ aXStatInd = *(uno::Reference< task::XStatusIndicator > *)pProgressBar;
+ bProgressBar = aXStatInd.is();
+ if ( bProgressBar )
+ aXStatInd->start( rtl::OUString::createFromAscii("CGM Import"), nInSize );
+#endif
+
+ while ( pCGM->IsValid() && ( pIn->Tell() < nInSize ) && !pCGM->IsFinished() )
+ {
+
+#ifdef CGM_EXPORT_IMPRESS
+
+
+ if ( bProgressBar )
+ {
+ sal_uInt32 nCurrentPos = pIn->Tell();
+ if ( nCurrentPos >= nNext )
+ {
+ aXStatInd->setValue( nCurrentPos );
+ nNext = nCurrentPos + nAdd;
+ }
+ }
+#endif
+
+ if ( pCGM->Write( *pIn ) == sal_False )
+ break;
+ }
+ if ( pCGM->IsValid() )
+ {
+ nStatus = pCGM->GetBackGroundColor() | 0xff000000;
+ }
+#ifdef CGM_EXPORT_IMPRESS
+ if ( bProgressBar )
+ aXStatInd->end();
+#endif
+ delete pIn;
+ }
+ }
+ }
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ nStatus = 0;
+ }
+ delete pCGM;
+ }
+ return nStatus;
+}
diff --git a/filter/source/graphicfilter/icgm/cgm.hxx b/filter/source/graphicfilter/icgm/cgm.hxx
new file mode 100644
index 000000000000..980fc93fb34e
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/cgm.hxx
@@ -0,0 +1,178 @@
+/*************************************************************************
+ *
+ * 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 CGM_HXX_
+#define CGM_HXX_
+
+#include <com/sun/star/frame/XModel.hpp>
+
+// ---------------------------------------------------------------
+#undef CGM_USER_BREAKPOINT
+
+#define CGM_IMPORT_CGM 0x00000001
+
+#define CGM_EXPORT_IMPRESS 0x00000100
+#define CGM_EXPORT_META 0x00000200
+//#define CGM_EXPORT_COMMENT 0x00000400
+
+// ---------------------------------------------------------------
+
+#include <tools/solar.h>
+#include <rtl/ustring.hxx>
+#include <tools/list.hxx>
+#include "cgmtypes.hxx"
+
+// ---------------------------------------------------------------
+
+class List;
+class Bundle;
+class Graphic;
+class SvStream;
+class CGMChart;
+class CGMBitmap;
+class CGMOutAct;
+class CGMElements;
+class BitmapColor;
+class GDIMetaFile;
+class VirtualDevice;
+class CGMBitmapDescriptor;
+
+class CGM
+{
+ friend class CGMChart;
+ friend class CGMBitmap;
+ friend class CGMElements;
+ friend class CGMOutAct;
+ friend class CGMImpressOutAct;
+
+ double mnOutdx; // Ausgabe Groesse in 1/100TH mm
+ double mnOutdy; // auf das gemappt wird
+ double mnVDCXadd;
+ double mnVDCYadd;
+ double mnVDCXmul;
+ double mnVDCYmul;
+ double mnVDCdx;
+ double mnVDCdy;
+ double mnXFraction;
+ double mnYFraction;
+ sal_Bool mbAngReverse; // AngularDirection
+
+ Graphic* mpGraphic; // ifdef CGM_EXPORT_META
+ SvStream* mpCommentOut; // ifdef CGM_EXPORT_COMMENT
+
+ sal_Bool mbStatus;
+ sal_Bool mbMetaFile;
+ sal_Bool mbIsFinished;
+ sal_Bool mbPicture;
+ sal_Bool mbPictureBody;
+ sal_Bool mbFigure;
+ sal_Bool mbFirstOutPut;
+ sal_uInt32 mnAct4PostReset;
+ CGMBitmap* mpBitmapInUse;
+ CGMChart* mpChart; // if sal_True->"SHWSLIDEREC"
+ // otherwise "BEGINPIC" commands
+ // controlls page inserting
+ CGMElements* pElement;
+ CGMElements* pCopyOfE;
+ CGMOutAct* mpOutAct;
+ List maDefRepList;
+ List maDefRepSizeList;
+
+ sal_uInt8* mpSource; // source buffer that is not increased
+ // ( instead use mnParaCount to index )
+ sal_uInt32 mnParaSize; // actual parameter size which has been done so far
+ sal_uInt32 mnActCount; // increased by each action
+ sal_uInt8* mpBuf; // source stream operation -> then this is allocated for
+ // the temp input buffer
+
+ sal_uInt32 mnMode; // source description
+ sal_uInt32 mnEscape; //
+ sal_uInt32 mnElementClass; //
+ sal_uInt32 mnElementID; //
+ sal_uInt32 mnElementSize; // full parameter size for the latest action
+
+ void ImplCGMInit();
+ sal_uInt32 ImplGetUI16( sal_uInt32 nAlign = 0 );
+ sal_uInt8 ImplGetByte( sal_uInt32 nSource, sal_uInt32 nPrecision );
+ long ImplGetI( sal_uInt32 nPrecision );
+ sal_uInt32 ImplGetUI( sal_uInt32 nPrecision );
+ void ImplGetSwitch4( sal_uInt8* pSource, sal_uInt8* pDest );
+ void ImplGetSwitch8( sal_uInt8* pSource, sal_uInt8* pDest );
+ double ImplGetFloat( RealPrecision, sal_uInt32 nRealSize );
+ sal_uInt32 ImplGetBitmapColor( sal_Bool bDirectColor = sal_False );
+ void ImplSetMapMode();
+ void ImplMapDouble( double& );
+ void ImplMapX( double& );
+ void ImplMapY( double& );
+ void ImplMapPoint( FloatPoint& );
+ inline double ImplGetIY();
+ inline double ImplGetFY();
+ inline double ImplGetIX();
+ inline double ImplGetFX();
+ sal_uInt32 ImplGetPointSize();
+ void ImplGetPoint( FloatPoint& rFloatPoint, sal_Bool bMap = sal_False );
+ void ImplGetRectangle( FloatRect&, sal_Bool bMap = sal_False );
+ void ImplGetRectangleNS( FloatRect& );
+ void ImplGetVector( double* );
+ double ImplGetOrientation( FloatPoint& rCenter, FloatPoint& rPoint );
+ void ImplSwitchStartEndAngle( double& rStartAngle, double& rEndAngle );
+ sal_Bool ImplGetEllipse( FloatPoint& rCenter, FloatPoint& rRadius, double& rOrientation );
+
+ void ImplDefaultReplacement();
+ void ImplDoClass();
+ void ImplDoClass0();
+ void ImplDoClass1();
+ void ImplDoClass2();
+ void ImplDoClass3();
+ void ImplDoClass4();
+ void ImplDoClass5();
+ void ImplDoClass6();
+ void ImplDoClass7();
+ void ImplDoClass8();
+ void ImplDoClass9();
+ void ImplDoClass15();
+
+ public:
+
+ ~CGM();
+
+ CGM( sal_uInt32 nMode, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rModel );
+#ifdef CGM_EXPORT_META
+ VirtualDevice* mpVirDev;
+ GDIMetaFile* mpGDIMetaFile;
+#endif
+ void ImplComment( sal_uInt32, const char* );
+ sal_uInt32 GetBackGroundColor();
+ sal_Bool IsValid() { return mbStatus; };
+ sal_Bool IsFinished() { return mbIsFinished; };
+ sal_Bool Write( SvStream& rIStm );
+
+ friend SvStream& operator>>( SvStream& rOStm, CGM& rCGM );
+
+};
+#endif
+
diff --git a/filter/source/graphicfilter/icgm/cgmres.hrc b/filter/source/graphicfilter/icgm/cgmres.hrc
new file mode 100644
index 000000000000..420f1ff8fe1b
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/cgmres.hrc
@@ -0,0 +1,28 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#define MB_CGM 1
+#define MID_TEST 1
diff --git a/filter/source/graphicfilter/icgm/cgmtypes.hxx b/filter/source/graphicfilter/icgm/cgmtypes.hxx
new file mode 100644
index 000000000000..a3541d786e34
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/cgmtypes.hxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * 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 CGM_TYPES_HXX_
+#define CGM_TYPES_HXX_
+
+struct FloatPoint
+{
+ double X;
+ double Y;
+ FloatPoint(){};
+ FloatPoint( const double& rX, const double& rY ) { X = rX, Y = rY; };
+};
+
+struct FloatRect
+{
+ double Left;
+ double Top;
+ double Right;
+ double Bottom;
+ FloatRect(){};
+ FloatRect( const FloatPoint& rTopLeft, const FloatPoint& rBottomRight )
+ {
+ Left = rTopLeft.X;
+ Top = rTopLeft.Y;
+ Right = rBottomRight.X;
+ Bottom = rBottomRight.Y;
+ }
+ void Justify()
+ {
+ double fTemp;
+ if ( Left > Right )
+ {
+ fTemp = Left;
+ Left = Right;
+ Right = fTemp;
+ }
+ if ( Top > Bottom )
+ {
+ fTemp = Top;
+ Top = Bottom;
+ Bottom = fTemp;
+ }
+ }
+};
+
+struct HatchEntry
+{
+ int HatchStyle;
+ long HatchDistance;
+ long HatchAngle;
+};
+
+#define ASF_LINETYPE 0x00000001UL
+#define ASF_LINEWIDTH 0x00000002UL
+#define ASF_LINECOLOR 0x00000004UL
+#define ASF_MARKERTYPE 0x00000008UL
+#define ASF_MARKERSIZE 0x00000010UL
+#define ASF_MARKERCOLOR 0x00000020UL // NS
+#define ASF_FILLINTERIORSTYLE 0x00000040UL
+#define ASF_HATCHINDEX 0x00000080UL
+#define ASF_PATTERNINDEX 0x00000100UL
+#define ASF_BITMAPINDEX 0x00000200UL // NS
+#define ASF_FILLCOLOR 0x00000400UL
+#define ASF_EDGETYPE 0x00000800UL
+#define ASF_EDGEWIDTH 0x00001000UL
+#define ASF_EDGECOLOR 0x00002000UL
+#define ASF_TEXTFONTINDEX 0x00004000UL
+#define ASF_TEXTPRECISION 0x00008000UL
+#define ASF_CHARACTEREXPANSION 0x00010000UL
+#define ASF_CHARACTERSPACING 0x00020000UL
+#define ASF_TEXTCOLOR 0x00040000UL
+
+#define ACT4_GRADIENT_ACTION 0x00000001UL
+
+enum RealPrecision { RP_FLOAT = 0, RP_FIXED = 1 };
+
+enum ScalingMode { SM_ABSTRACT = 0, SM_METRIC = 1 };
+
+enum VDCType { VDC_INTEGER = 0, VDC_REAL = 1 };
+enum DeviceViewPortMode { DVPM_FRACTION = 0, DVPM_METRIC = 1, DVPM_DEVICE = 2 };
+enum DeviceViewPortMap { DVPM_NOT_FORCED = 0, DVPM_FORCED = 1 };
+enum DeviceViewPortMapH { DVPMH_LEFT = 0, DVPMH_CENTER = 1, CVPMH_RIGHT = 2 };
+enum DeviceViewPortMapV { DVPMV_BOTTOM = 0, DVPMV_CENTER = 1, DVPMV_TOP = 2 };
+
+enum ClipIndicator { CI_OFF = 0, CI_ON = 1 };
+
+enum ColorSelectionMode { CSM_INDEXED = 0, CSM_DIRECT = 1 };
+enum ColorModel { CM_RGB = 0, CM_CYMK = 1 };
+
+enum CharacterCodingA { CCA_BASIC_7 = 0, CCA_BASIC_8 = 1, CCA_EXT_7 = 2, CCA_EXT_8 = 3 };
+enum CharSetType { CST_CBYTE_94 = 0, CST_CBYTE_96 = 1, CST_MULT94 = 2, CST_MULT96 = 3, CST_CCOMPLETE = 4 };
+enum TextPrecision { TPR_STRING = 0, TPR_CHARACTER = 1, TPR_STROKE = 2, TPR_UNDEFINED = 0xffff };
+enum TextPath { TPR_RIGHT = 0, TPR_LEFT = 1, TPR_UP = 2, TPR_DOWN = 3 };
+enum TextAlignmentH { TAH_NORMAL = 0, TAH_LEFT = 1, TAH_CENTER = 2, TAH_RIGHT = 3, TAH_CONT = 4 };
+enum TextAlignmentV { TAV_NORMAL = 0, TAV_TOP = 1, TAV_CAP = 2, TAV_HALF = 3, TAV_BASE = 4, TAV_BOTTOM = 5, TAV_CONT = 6 };
+enum UnderlineMode { UM_OFF = 0, UM_LOW = 1, UM_HIGH = 2, UM_STRIKEOUT = 4, UM_OVERSCORE = 8 };
+enum FinalFlag { FF_NOT_FINAL = 0, FF_FINAL = 1 };
+
+enum LineType { LT_SOLID = 1, LT_DASH = 2, LT_DOT = 3, LT_DASHDOT = 4, LT_DASHDOTDOT = 5, // Standart
+ LT_NONE = -4, LT_DOTDOTSPACE = -3, LT_LONGDASH = -2, LT_DASHDASHDOT = -1 }; // GDSF Styles
+enum SpecMode { SM_ABSOLUTE = 0, SM_SCALED = 1 };
+enum LineCapType { LCT_BUTT = 0, LCT_ROUND = 1, LCT_SQUARE = 2, LCT_TRIANGLE = 3, LCT_ARROW = 4, LCT_NONE = -1 };
+enum LineJoinType { LJT_MITER = 0, LJT_ROUND = 1, LJT_BEVEL = 2, LJT_NONE = -1 };
+
+
+enum EdgeType { ET_SOLID = 1, ET_DASH = 2, ET_DOT = 3, ET_DASHDOT = 4, ET_DASHDOTDOT = 5, // Standart
+ ET_NONE = -4, ET_DOTDOTSPACE = -3, ET_LONGDASH = -2, ET_DASHDASHDOT = -1 }; // GDSF Styles
+enum EdgeVisibility { EV_OFF = 0, EV_ON = 1 };
+
+enum MarkerType { MT_POINT = 1, MT_PLUS = 2, MT_STAR = 3, MT_CIRCLE = 4, MT_CROSS = 5 };
+
+enum Transparency { T_OFF = 0, T_ON = 1 };
+
+enum FillInteriorStyle { FIS_HOLLOW = 0, FIS_SOLID = 1, FIS_PATTERN = 2, FIS_HATCH = 3, FIS_EMPTY = 4, FIS_GEOPATTERN = 5,
+ FIS_INTERPOLATED = 6, FIS_GRADIENT = 7 };
+
+
+
+
+#endif
diff --git a/filter/source/graphicfilter/icgm/chart.cxx b/filter/source/graphicfilter/icgm/chart.cxx
new file mode 100644
index 000000000000..f62c62028e11
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/chart.cxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+#include <chart.hxx>
+
+// ---------------------------------------------------------------
+
+CGMChart::CGMChart( CGM& rCGM ) :
+ mpCGM ( &rCGM )
+{
+ for ( sal_Int8 i = 0; i < 7; i++ )
+ {
+ mDataNode[ i ].nBoxX1 = mDataNode[ i ].nBoxY1 = 0 ;
+ mDataNode[ i ].nBoxX2 = mDataNode[ i ].nBoxY2 = 0 ;
+
+ mDataNode[ i ].nZoneEnum = i;
+ }
+};
+
+// ---------------------------------------------------------------
+
+CGMChart::~CGMChart()
+{
+ // delete the whole textentry structure
+
+ TextEntry* pTextEntry;
+ while( ( pTextEntry = (TextEntry*)maTextEntryList.First() ) != NULL )
+ {
+ DeleteTextEntry( pTextEntry );
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMChart::DeleteTextEntry( TextEntry* pTextEntry )
+{
+ if ( pTextEntry )
+ {
+ delete pTextEntry->pText;
+ for ( TextAttribute* pTAttr = pTextEntry->pAttribute; pTAttr != NULL ; )
+ {
+ TextAttribute* pTempTAttr = pTAttr;
+ pTAttr = pTAttr->pNextAttribute;
+ delete pTempTAttr;
+ }
+ delete pTextEntry;
+ maTextEntryList.Remove( pTextEntry );
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGMChart::InsertTextEntry( TextEntry* pTextEntry )
+{
+ maTextEntryList.Insert( pTextEntry );
+};
+
+// ---------------------------------------------------------------
+
+// ---------------------------------------------------------------
+void CGMChart::ResetAnnotation()
+{
+ mDataNode[ 0 ].nZoneEnum = 0;
+}
+
+// ---------------------------------------------------------------
+
+sal_Bool CGMChart::IsAnnotation()
+{
+ return ( mDataNode[ 0 ].nZoneEnum == 0 );
+};
+
diff --git a/filter/source/graphicfilter/icgm/chart.hxx b/filter/source/graphicfilter/icgm/chart.hxx
new file mode 100644
index 000000000000..b1b5e53d81eb
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/chart.hxx
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * 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 CGM_CHART_HXX_
+#define CGM_CHART_HXX_
+
+#include <tools/list.hxx>
+
+/* FILE TYPE CONSTANTS: */
+#define NOCHART 0 /* Undefined chart. */
+#define XYCHART 1 /* Standard XY chart. */
+#define PIECHART 21 /* Standard pie chart file. */
+#define ORGCHART 26 /* Standard org chart file. */
+#define TTLCHART 31 /* Title chart file. */
+#define BULCHART 32 /* Bullet chart file. */
+#define TABCHART 33 /* Table chart file. */
+#define DRWCHART 41 /* Chart with drawings only.*/
+#define MLTCHART 42 /* Multiple chart file. */
+#define LASTCHART 45 /* The largest chart type. */
+#define SHWFILE 46 /* Slide show file. */
+#define SYMFILE 47 /* Symbol file. */
+/* the following were added although SPC doesn't have a #define */
+/* for them... */
+#define AUTOTTLCHT 95 /* Autobuild TTL CHT */
+#define AUTOBULCHT 96 /* Autobuild BUL CHT */
+#define AUTOTABCHT 97 /* Autobuild TAB CHT */
+
+/* FNC 10/11/93: for the chart stream, ALLCHART was added. */
+/* It is used specifically by PPT in its Template to let */
+/* us know that the template applies to all charts, not to */
+/* one specific chart type. */
+#define ALLCHART 127 /* Applies to all chart types */
+#define ALLCHART_TPL 255 /* Applies to all chart types */
+
+#define IOC_CHTTITLE 1 /* Title for any chart. */
+#define IOC_CHTFOOTNOTE 2 /* ::com::sun::star::text::Footnote for any chart. */
+#define IOC_XYAXIS 3 /* Axis title for XY charts. */
+#define IOC_XYSERIESLEGEND 4 /* Series legend titles for XY charts. */
+#define IOC_PIETITLE 5 /* Title for pie charts. */
+#define IOC_TABLEBODY 6 /* Table chart text element. */
+#define IOC_TITLEBODY 7 /* Title chart text element. */
+#define IOC_BULLETBODY 8 /* Bullet chart text element. */
+#define IOC_XYLEGENDTITLE 9 /* Legend title for XY charts. */
+#define IOC_PIELEGENDTITLE 10 /* Legend title for pie charts. */
+#define IOC_TABLEGENDTITLE 11 /* Legend title for table charts. */
+
+typedef struct TextAttribute
+{
+ sal_uInt16 nTextAttribCount;
+ sal_Int8 nTextColorIndex;
+ sal_Int8 nTextColorRed;
+ sal_Int8 nTextColorGreen;
+ sal_Int8 nTextColorBlue;
+ sal_Int8 nShadowColorIndex;
+ sal_Int8 nShadowColorRed;
+ sal_Int8 nShadowColorGreen;
+ sal_Int8 nShadowColorBlue;
+ float nTextAttribSize;
+ sal_uInt16 nTextAttribBits;
+ sal_Int8 nTextFontType; // font identifiers
+ sal_Int8 nTextCharPage;
+ sal_uInt16 nTextFontFamily;
+ sal_Int8 nTextFontMemberID;
+ sal_Int8 nTextFontVendorID;
+ TextAttribute* pNextAttribute; // zero or pointer to next TextAttribute
+} TextAttribute;
+
+typedef struct TextEntry
+{
+ sal_uInt16 nTypeOfText;
+ sal_uInt16 nRowOrLineNum;
+ sal_uInt16 nColumnNum;
+ sal_uInt16 nZoneSize; // textzone attributes
+ sal_uInt16 nLineType;
+ sal_uInt16 nAttributes;
+ char* pText; // null terminated text
+ TextAttribute* pAttribute;
+} TextEntry;
+
+typedef struct ZoneOption
+{
+ char nOverTitle;
+ char nOverBody;
+ char nOverFoot;
+ char nFStyle_Title;
+ char nFStyle_Body;
+ char nFStyle_Foot;
+ char nFOutc_Title;
+ char nFOutc_Body;
+ char nFOutc_Foot;
+ char nFFillc_Title;
+ char nFFillc_Body;
+ char nFFillc_Foot;
+} ZoneOption;
+
+typedef struct BulletOption
+{
+ char nBType;
+ char nBSize;
+ char nBColor;
+ sal_Int16 nBStart;
+ double nTMargin;
+ double nBSpace;
+ char nCPlace;
+} BulletOption;
+
+typedef struct BulDef
+{
+ char btype;
+ char bsize;
+ char bcolor;
+ char bnumber;
+} BulDef;
+
+typedef struct BulletLines
+{
+ BulDef nBulDef[ 48 ];
+} BulletLines;
+
+typedef struct IntSettings
+{
+ sal_uInt16 nCountry;
+ sal_uInt16 nDateFormat;
+ sal_uInt16 nDateSep;
+ sal_uInt16 nTimeFormat;
+ sal_uInt16 nTimeSep;
+ sal_uInt16 nNumSeps;
+ sal_uInt16 nCurrencyFormat;
+ char nCurrencySymbol[ 5 ];
+} IntSettings;
+
+typedef struct PageOrientDim
+{
+ char nOrientation;
+ char nDimension;
+ float nPageX;
+ float nPageY;
+} PageOrientDim;
+
+typedef struct DataNode
+{
+ sal_Int16 nBoxX1;
+ sal_Int16 nBoxY1;
+ sal_Int16 nBoxX2;
+ sal_Int16 nBoxY2;
+ sal_Int8 nZoneEnum;
+} DataNode;
+
+typedef struct ChartZone
+{
+ sal_Int16 nMinX;
+ sal_Int16 nMinY;
+ sal_Int16 nMaxX;
+ sal_Int16 nMaxY;
+ char nUserDef;
+ char nPad1;
+} ChartZone;
+
+class CGM;
+class CGMImpressOutAct;
+class CGMChart
+{
+ friend class CGM;
+ friend class CGMImpressOutAct;
+
+ protected:
+ CGM* mpCGM;
+ sal_Int8 mnCurrentFileType;
+ List maTextEntryList;
+ DataNode mDataNode[ 7 ];
+ ChartZone mChartZone;
+ PageOrientDim mPageOrientDim;
+ BulletOption mBulletOption;
+ BulletLines mBulletLines;
+ ZoneOption mZoneOption;
+ IntSettings mIntSettings;
+
+ public:
+ CGMChart( CGM& rCGM );
+ ~CGMChart();
+
+ void DeleteTextEntry( TextEntry* );
+ void InsertTextEntry( TextEntry* );
+
+ void ResetAnnotation();
+ sal_Bool IsAnnotation();
+};
+
+#endif
+
diff --git a/filter/source/graphicfilter/icgm/class0.cxx b/filter/source/graphicfilter/icgm/class0.cxx
new file mode 100644
index 000000000000..8ec31f03258c
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class0.cxx
@@ -0,0 +1,138 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <main.hxx>
+#include <outact.hxx>
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass0()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "Begin Metafile" )
+ {
+ ImplSetMapMode();
+ mbMetaFile = sal_True;
+ }
+ break;
+ case 0x02 : ComOut( CGM_LEVEL1, "End MetaFile" )
+ {
+ if ( mpBitmapInUse ) // vorhandene grafik verarbeiten,
+ {
+ CGMBitmapDescriptor* pBmpDesc = mpBitmapInUse->GetBitmap();
+ // irgendetwas mit der Bitmap anfangen
+ mpOutAct->DrawBitmap( pBmpDesc );
+ delete mpBitmapInUse;
+ mpBitmapInUse = NULL;
+ }
+ mbIsFinished = sal_True;
+ mbPictureBody = sal_False;
+ mbMetaFile = sal_False;
+ }
+ break;
+ case 0x03 : ComOut( CGM_LEVEL1, "Begin Picture" )
+ {
+ ImplDefaultReplacement();
+ ImplSetMapMode();
+ if ( mbPicture )
+ mbStatus = sal_False;
+ else
+ {
+ *pCopyOfE = *pElement;
+ mbPicture = mbFirstOutPut = sal_True;
+ mbFigure = sal_False;
+ mnAct4PostReset = 0;
+ if ( mpChart == NULL ) // normal CGM Files determines "BeginPic"
+ mpOutAct->InsertPage(); // as the next slide
+ }
+ }
+ break;
+ case 0x04 : ComOut( CGM_LEVEL1, "Begin Picture Body" )
+ mbPictureBody = sal_True;
+ break;
+ case 0x05 : ComOut( CGM_LEVEL1, " End Picture" )
+ {
+ if ( mbPicture )
+ {
+ if ( mpBitmapInUse ) // vorhandene grafik verarbeiten,
+ {
+ CGMBitmapDescriptor* pBmpDesc = mpBitmapInUse->GetBitmap();
+ // irgendetwas mit der Bitmap anfangen
+ mpOutAct->DrawBitmap( pBmpDesc );
+ delete mpBitmapInUse;
+ mpBitmapInUse = NULL;
+ }
+ mpOutAct->EndFigure(); // eventuelle figuren schliessen
+ mpOutAct->EndGrouping(); // eventuelle gruppierungen noch abschliessen
+ *pElement = *pCopyOfE;
+ mbFigure = mbFirstOutPut = mbPicture = mbPictureBody = sal_False;
+ }
+ else
+ mbStatus = sal_False;
+ }
+ break;
+ case 0x06 : ComOut( CGM_LEVEL2, "Begin Segment" )
+ pElement->bSegmentCount = sal_True;
+ break;
+ case 0x07 : ComOut( CGM_LEVEL2, "End Segment" )
+ pElement->bSegmentCount = sal_True;
+ break;
+ case 0x08 : ComOut( CGM_LEVEL2, "Begin Figure" )
+ mbFigure = sal_True;
+ mpOutAct->BeginFigure();
+ break;
+ case 0x09 : ComOut( CGM_LEVEL2, "End Figure" )
+ mpOutAct->EndFigure();
+ mbFigure = sal_False;
+ break;
+ case 0x0d : ComOut( CGM_LEVEL3, "Begin Protection Region" ) break;
+ case 0x0e : ComOut( CGM_LEVEL3, "End Protection Region" ) break;
+ case 0x0f : ComOut( CGM_LEVEL3, "Begin Compound Line" ) break;
+ case 0x10 : ComOut( CGM_LEVEL3, "End Compound Line" ) break;
+ case 0x11 : ComOut( CGM_LEVEL3, "Begin Compound Text Path" ) break;
+ case 0x12 : ComOut( CGM_LEVEL3, "End Compound Text Path" ) break;
+ case 0x13 : ComOut( CGM_LEVEL3, "Begin Tile Array" ) break; // NS
+ case 0x14 : ComOut( CGM_LEVEL3, "End Tile Array" ) break; // NS
+ case 0xff : ComOut( CGM_GDSF_ONLY, "Filter Setup" ) break;
+ case 0xfe : ComOut( CGM_GDSF_ONLY, "Begin Block Text Region" ) break;
+ case 0xfd : ComOut( CGM_GDSF_ONLY, "End Block Text Region" ) break;
+ case 0xfc : ComOut( CGM_GDSF_ONLY, "Begin Group" )
+ mpOutAct->BeginGroup();
+ break;
+ case 0xfb : ComOut( CGM_GDSF_ONLY, "End Group" )
+ mpOutAct->EndGroup();
+ break;
+ case 0xfa : ComOut( CGM_GDSF_ONLY, "Begin Patch" ) break;
+ case 0xf9 : ComOut( CGM_GDSF_ONLY, "Begin Patch" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+
diff --git a/filter/source/graphicfilter/icgm/class1.cxx b/filter/source/graphicfilter/icgm/class1.cxx
new file mode 100644
index 000000000000..33c62f5e2c6e
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class1.cxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass1()
+{
+ long nInteger, nI0, nI1;
+ sal_uInt32 nUInteger;
+
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "Metafile Version" )
+ pElement->nMetaFileVersion = ImplGetI( pElement->nIntegerPrecision );
+ break;
+ case 0x02 : ComOut( CGM_LEVEL1, "Metafile Description" ) break;
+ case 0x03 : ComOut( CGM_LEVEL1, "VDC Type" )
+ {
+ nUInteger = ImplGetUI16();
+ switch( nUInteger )
+ {
+ case 0 : pElement->eVDCType = VDC_INTEGER; break;
+ case 1 : pElement->eVDCType = VDC_REAL; break;
+ default: mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x04 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Integer Precision" )
+ {
+ nInteger = ImplGetI( pElement->nIntegerPrecision );
+ switch ( nInteger )
+ {
+ case 32 :
+ case 24 :
+ case 16 :
+ case 8 : pElement->nIntegerPrecision = nInteger >> 3; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x05 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Real Precision" )
+ {
+ nUInteger = ImplGetUI16( 4 );
+ nI0 = ImplGetI( pElement->nIntegerPrecision ); // exponent
+ nI1 = ImplGetI( pElement->nIntegerPrecision ); // mantisse
+ switch( nUInteger )
+ {
+ case 0 :
+ pElement->eRealPrecision = RP_FLOAT;
+ switch ( nI0 )
+ {
+ case 9 :
+ if ( nI1 != 23 )
+ mbStatus = sal_False;
+ pElement->nRealSize = 4;
+ break;
+ case 12 :
+ if ( nI1 != 52 )
+ mbStatus =sal_False;
+ pElement->nRealSize = 8;
+ break;
+ default:
+ mbStatus = sal_False;
+ break;
+ }
+ break;
+ case 1 :
+ pElement->eRealPrecision = RP_FIXED;
+ if ( nI0 != nI1 )
+ mbStatus = sal_False;
+ if ( nI0 == 16 )
+ pElement->nRealSize = 4;
+ else if ( nI0 == 32 )
+ pElement->nRealSize = 8;
+ else
+ mbStatus = sal_False;
+ break;
+ default :
+ mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x06 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Index Precision" )
+ {
+ nInteger = ImplGetI( pElement->nIntegerPrecision );
+ switch ( nInteger )
+ {
+ case 32 :
+ case 24 :
+ case 16 :
+ case 8 : pElement->nIndexPrecision = nInteger >> 3; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x07 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Color Precision" )
+ {
+ nInteger = ImplGetI( pElement->nIntegerPrecision );
+ switch ( nInteger )
+ {
+ case 32 :
+ case 24 :
+ case 16 :
+ case 8 : pElement->nColorPrecision = nInteger >> 3; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x08 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Color Index Precision" )
+ {
+ nInteger = ImplGetI( pElement->nIntegerPrecision );
+ switch ( nInteger )
+ {
+ case 32 :
+ case 24 :
+ case 16 :
+ case 8 : pElement->nColorIndexPrecision = nInteger >> 3; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x09 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Maximum Colour Index" )
+ {
+ pElement->nColorMaximumIndex = ImplGetUI( pElement->nColorIndexPrecision );
+ if ( ( pElement->nColorMaximumIndex > 256 /*255*/ ) || ( pElement->nColorMaximumIndex == 0 ) )
+ mbStatus = sal_False;
+ }
+ break;
+ case 0x0a : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Color Value Extent" )
+ {
+ if ( pElement->eColorModel == CM_RGB )
+ nI1 = 6;
+ else
+ {
+ nI1 = 8;
+ mbStatus = sal_False; // CMYK is not supported
+ }
+ for ( nI0 = 0; nI0 < nI1; nI0++ )
+ {
+ pElement->nColorValueExtent[ nI0 ] = (sal_uInt8)ImplGetUI( pElement->nColorPrecision );
+ }
+ }
+ break;
+ case 0x0b : ComOut( CGM_LEVEL1, "MetaFile Element List" ) break;
+ case 0x0c : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "MetaFile Default Replacement" )
+ {
+ if ( mnElementSize > 1 )
+ {
+ sal_Int8* pBuf = new sal_Int8[ mnElementSize ];
+ if ( pBuf )
+ {
+ memcpy( pBuf, mpSource, mnElementSize );
+ maDefRepList.Insert( pBuf, LIST_APPEND );
+ maDefRepSizeList.Insert( (void*)mnElementSize, LIST_APPEND );
+ }
+ }
+ mnParaSize = mnElementSize;
+ }
+ break;
+ case 0x0d : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Font List" )
+ {
+ while ( mnParaSize < mnElementSize )
+ {
+ sal_uInt32 nSize;
+ nSize = ImplGetUI( 1 );
+ pElement->aFontList.InsertName( mpSource + mnParaSize, nSize );
+ mnParaSize += nSize;
+ }
+ }
+ break;
+ case 0x0e : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Character Set List" )
+ {
+ while ( mnParaSize < mnElementSize )
+ {
+ sal_uInt32 nCharSetType;
+ sal_uInt32 nSize;
+ nCharSetType = ImplGetUI16();
+ nSize = ImplGetUI( 1 );
+ pElement->aFontList.InsertCharSet( (CharSetType)nCharSetType, mpSource + mnParaSize, nSize );
+ mnParaSize += nSize;
+ }
+ }
+ break;
+ case 0x0f : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Character Coding Announcer" )
+ pElement->eCharacterCodingA = (CharacterCodingA)ImplGetUI16();
+ break;
+ case 0x10 : ComOut( CGM_LEVEL2, "Name Precision" ) break; // NS
+ case 0x11 : ComOut( CGM_LEVEL2, "Maximum VDC Extent" ) break; // NS
+ case 0x12 : ComOut( CGM_LEVEL2, "Segment Priority Extent" ) break; // NS
+ case 0x13 : ComOut( CGM_LEVEL3, "Color Model" ) break; // NS
+ case 0x14 : ComOut( CGM_LEVEL3, "Color Calibration" ) break; // NS
+ case 0x15 : ComOut( CGM_LEVEL3, "Font Properties" ) break; // NS
+ case 0x16 : ComOut( CGM_LEVEL3, "Glyph Mapping" ) break; // NS
+ case 0x17 : ComOut( CGM_LEVEL3, "Symbol Library List" ) break; // NS
+ case 0xfc : ComOut( CGM_GDSF_ONLY, "Inquire Function Support" ) break;
+ case 0xfa : ComOut( CGM_GDSF_ONLY, "End Metafile Defaults Replacement" ) break;
+ case 0xf8 : ComOut( CGM_GDSF_ONLY, "Set Color Value Desc Extent" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+
diff --git a/filter/source/graphicfilter/icgm/class2.cxx b/filter/source/graphicfilter/icgm/class2.cxx
new file mode 100644
index 000000000000..8b4722b0f19c
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class2.cxx
@@ -0,0 +1,227 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass2()
+{
+ sal_uInt32 nUInteger;
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Scaling Mode" )
+ {
+ if ( mnElementSize ) // HACK (NASA.CGM)
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eScalingMode = SM_ABSTRACT; break;
+ case 1 : pElement->eScalingMode = SM_METRIC; break;
+ default : mbStatus = sal_False; break;
+ }
+ pElement->nScalingFactor = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ ImplSetMapMode();
+ }
+ }
+ break;
+ case 0x02 : ComOut( CGM_LEVEL1, "Color Selection Mode" )
+ {
+ nUInteger = ImplGetUI16();
+ switch( nUInteger )
+ {
+ case 0 : pElement->eColorSelectionMode = CSM_INDEXED; break;
+ case 1 : pElement->eColorSelectionMode = CSM_DIRECT; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x03 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Line Width Specification Mode" )
+ {
+ nUInteger = ImplGetUI16();
+ switch( nUInteger )
+ {
+ case 0 : pElement->eLineWidthSpecMode = SM_ABSOLUTE; break;
+ case 1 : pElement->eLineWidthSpecMode = SM_SCALED; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x04 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Marker Size Specification Mode" )
+ {
+ nUInteger = ImplGetUI16();
+ switch( nUInteger )
+ {
+ case 0 : pElement->eMarkerSizeSpecMode = SM_ABSOLUTE; break;
+ case 1 : pElement->eMarkerSizeSpecMode = SM_SCALED; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x05 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Edge Width Specification Mode" )
+ {
+ nUInteger = ImplGetUI16();
+ switch( nUInteger )
+ {
+ case 0 : pElement->eEdgeWidthSpecMode = SM_ABSOLUTE; break;
+ case 1 : pElement->eEdgeWidthSpecMode = SM_SCALED; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x06 : ComOut( CGM_LEVEL1, "VDC Extent" )
+ {
+ ImplGetRectangleNS( pElement->aVDCExtent );
+ ImplSetMapMode();
+ }
+ break;
+ case 0x07 : ComOut( CGM_LEVEL1, "Background Color" )
+ pElement->nBackGroundColor = ImplGetBitmapColor( sal_True );
+ break;
+ case 0x08 : ComOut( CGM_LEVEL2, "Device Viewport" )
+ {
+ if ( pElement->eVDCType == VDC_INTEGER )
+ ImplGetRectangle( pElement->aDeviceViewPort );
+ ImplSetMapMode();
+ }
+ break;
+ case 0x09 : ComOut( CGM_LEVEL2, "Device Viewport Specification Mode" )
+ {
+ nUInteger = ImplGetUI16( 8 );
+ switch( nUInteger )
+ {
+ case 0 : pElement->eDeviceViewPortMode = DVPM_FRACTION; break;
+ case 1 : pElement->eDeviceViewPortMode = DVPM_METRIC; break;
+ case 2 : pElement->eDeviceViewPortMode = DVPM_DEVICE; break;
+ default : mbStatus = sal_False; break;
+ }
+ pElement->nDeviceViewPortScale = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ ImplSetMapMode();
+ }
+ break;
+ case 0x0a : ComOut( CGM_LEVEL2, "Device Viewport Mapping" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eDeviceViewPortMap = DVPM_NOT_FORCED; break;
+ case 1 : pElement->eDeviceViewPortMap = DVPM_FORCED; break;
+ default : mbStatus = sal_False; break;
+ }
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eDeviceViewPortMapH = DVPMH_LEFT; break;
+ case 1 : pElement->eDeviceViewPortMapH = DVPMH_CENTER; break;
+ case 2 : pElement->eDeviceViewPortMapH = CVPMH_RIGHT; break;
+ default : mbStatus = sal_False; break;
+ }
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eDeviceViewPortMapV = DVPMV_BOTTOM; break;
+ case 1 : pElement->eDeviceViewPortMapV = DVPMV_CENTER; break;
+ case 2 : pElement->eDeviceViewPortMapV = DVPMV_TOP; break;
+ default : mbStatus = sal_False; break;
+ }
+ ImplSetMapMode();
+ }
+ break;
+ case 0x0b : ComOut( CGM_LEVEL2, "Line Representation" )
+ {
+ LineBundle aTempLineBundle;
+ aTempLineBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
+ aTempLineBundle.eLineType = (LineType)ImplGetI( pElement->nIndexPrecision );
+ aTempLineBundle.nLineWidth = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ aTempLineBundle.SetColor( ImplGetBitmapColor() );
+ pElement->InsertBundle( pElement->aLineList, aTempLineBundle );
+ }
+ break;
+ case 0x0c : ComOut( CGM_LEVEL2, "Marker Representation" )
+ {
+ MarkerBundle aTempMarkerBundle;
+ aTempMarkerBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
+ aTempMarkerBundle.eMarkerType = (MarkerType)ImplGetI( pElement->nIndexPrecision );
+ aTempMarkerBundle.nMarkerSize = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ aTempMarkerBundle.SetColor( ImplGetBitmapColor() );
+ pElement->InsertBundle( pElement->aMarkerList, aTempMarkerBundle );
+ }
+ break;
+ case 0x0d : ComOut( CGM_LEVEL2, "Text Representation" )
+ {
+ TextBundle aTempTextBundle;
+ aTempTextBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
+ aTempTextBundle.nTextFontIndex = ImplGetI( pElement->nIndexPrecision );
+ aTempTextBundle.eTextPrecision = (TextPrecision)ImplGetI( pElement->nIndexPrecision );
+ aTempTextBundle.nCharacterSpacing = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ aTempTextBundle.nCharacterExpansion = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ aTempTextBundle.SetColor( ImplGetBitmapColor() );
+ pElement->InsertBundle( pElement->aTextList, aTempTextBundle );
+ }
+ break;
+ case 0x0e : ComOut( CGM_LEVEL2, "Fill Representation" )
+ {
+ FillBundle aTempFillBundle;
+ aTempFillBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
+ aTempFillBundle.eFillInteriorStyle = (FillInteriorStyle)ImplGetI( pElement->nIndexPrecision );
+ aTempFillBundle.SetColor( ImplGetBitmapColor() );
+ aTempFillBundle.nFillPatternIndex = ImplGetI( pElement->nIndexPrecision );
+ aTempFillBundle.nFillHatchIndex = ImplGetI( pElement->nIndexPrecision );
+ pElement->InsertBundle( pElement->aFillList, aTempFillBundle );
+ }
+ break;
+ case 0x0f : ComOut( CGM_LEVEL2, "Edge Representation" )
+ {
+ EdgeBundle aTempEdgeBundle;
+ aTempEdgeBundle.SetIndex( ImplGetI( pElement->nIndexPrecision ) );
+ aTempEdgeBundle.eEdgeType = (EdgeType)ImplGetI( pElement->nIndexPrecision );
+ aTempEdgeBundle.nEdgeWidth = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ aTempEdgeBundle.SetColor( ImplGetBitmapColor() );
+ pElement->InsertBundle( pElement->aEdgeList, aTempEdgeBundle );
+ }
+ break;
+ case 0x10 : ComOut( CGM_LEVEL3, "Interior Style Specification Mode" ) break; // NS
+ case 0x11 : ComOut( CGM_LEVEL3, "Line and Edge Type Definition" ) break;
+ case 0x12 : ComOut( CGM_LEVEL3, "Hatch Style Definition" ) break; // NS
+ case 0x13 : ComOut( CGM_LEVEL3, "Geometric Pattern Definition" ) break; // NS
+ case 0xff : ComOut( CGM_GDSF_ONLY, "inquire VDC EXTENT" ) break;
+ case 0xfe : ComOut( CGM_GDSF_ONLY, "inquire Background Color" ) break;
+ case 0xfd : ComOut( CGM_GDSF_ONLY, "inquire Device Viewport" ) break;
+ case 0xfc : ComOut( CGM_GDSF_ONLY, "set Font Selection Mode" ) break;
+ case 0xfb : ComOut( CGM_GDSF_ONLY, "inquire Color Selection Mode" ) break;
+ case 0xfa : ComOut( CGM_GDSF_ONLY, "inquire Font Selection Mode" ) break;
+ case 0xf9 : ComOut( CGM_GDSF_ONLY, "set Char Height Spec Mode" )
+ {
+ ImplGetUI16(); // -Wall is this really needed?
+ }
+ break;
+ case 0xf8 : ComOut( CGM_GDSF_ONLY, "set Background Style" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+
diff --git a/filter/source/graphicfilter/icgm/class3.cxx b/filter/source/graphicfilter/icgm/class3.cxx
new file mode 100644
index 000000000000..d64b3456624c
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class3.cxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+#include <outact.hxx>
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass3()
+{
+ sal_uInt32 nUInteger;
+ long nI0, nI1;
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "VDC Integer Precision" )
+ {
+ switch( ImplGetI( pElement->nIntegerPrecision ) )
+ {
+ case 16 : pElement->nVDCIntegerPrecision = 2; break;
+ case 32 : pElement->nVDCIntegerPrecision = 4; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x02 : ComOut( CGM_LEVEL1, "VDC Real Precision" )
+ {
+ nUInteger = ImplGetUI16();
+ nI0 = ImplGetI( pElement->nIntegerPrecision ); // exponent
+ nI1 = ImplGetI( pElement->nIntegerPrecision ); // mantisse
+ switch( nUInteger )
+ {
+ case 0 :
+ pElement->eVDCRealPrecision = RP_FLOAT;
+ switch ( nI0 )
+ {
+ case 9 :
+ if ( nI1 != 23 )
+ mbStatus = sal_False;
+ pElement->nVDCRealSize = 4;
+ break;
+ case 12 :
+ if ( nI1 != 52 )
+ mbStatus =sal_False;
+ pElement->nVDCRealSize = 8;
+ break;
+ default:
+ mbStatus = sal_False;
+ break;
+ }
+ break;
+ case 1 :
+ pElement->eVDCRealPrecision = RP_FIXED;
+ if ( nI0 != nI1 )
+ mbStatus = sal_False;
+ if ( nI0 == 16 )
+ pElement->nVDCRealSize = 4;
+ else if ( nI0 == 32 )
+ pElement->nVDCRealSize = 8;
+ else
+ mbStatus = sal_False;
+ break;
+ default :
+ mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x03 : ComOut( CGM_LEVEL1, "Auxiliary Colour" )
+ {
+ pElement->nAuxiliaryColor = ImplGetBitmapColor();
+ }
+ break;
+ case 0x04 : ComOut( CGM_LEVEL1, "Transparency" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eTransparency = T_OFF; break;
+ case 1 : pElement->eTransparency = T_ON; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x05 : ComOut( CGM_LEVEL1, "Clip Rectangle" )
+ ImplGetRectangle( pElement->aClipRect );
+ break;
+ case 0x06 : ComOut( CGM_LEVEL1, "Clip Indicator" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eClipIndicator = CI_OFF; break;
+ case 1 : pElement->eClipIndicator = CI_ON; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x07 : ComOut( CGM_LEVEL2, "Line Clipping Mode" ) break; // NS
+ case 0x08 : ComOut( CGM_LEVEL2, "Marker Clipping Mode" ) break; // NS
+ case 0x09 : ComOut( CGM_LEVEL2, "Edge Clipping Mode" ) break; // NS
+ case 0x0a : ComOut( CGM_LEVEL2, "New Region" )
+ mpOutAct->NewRegion();
+ break;
+ case 0x0b : ComOut( CGM_LEVEL2, "Save Primitive Context" ) break; // NS
+ case 0x0c : ComOut( CGM_LEVEL2, "Restore Primitive Context" ) break; // NS
+ case 0x11 : ComOut( CGM_LEVEL3, "Protection Region Indicator" ) break;
+ case 0x12 : ComOut( CGM_LEVEL3, "Generalized Text Path Mode" ) break; // NS
+ case 0x13 : ComOut( CGM_LEVEL3, "Mitre Limit" )
+ pElement->nMitreLimit = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ break; // NS
+ case 0x14 : ComOut( CGM_LEVEL3, "Transparent Cell Color" ) break; // NS
+ case 0xfc : ComOut( CGM_GDSF_ONLY, "Text Path Alignment Modes" ) break;
+ case 0xfd : ComOut( CGM_GDSF_ONLY, "Pop Transformation Stack" ) break;
+ case 0xfe : ComOut( CGM_GDSF_ONLY, "Push Transformation Stack" ) break;
+ case 0xff : ComOut( CGM_GDSF_ONLY, "Set Patch ID" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+
diff --git a/filter/source/graphicfilter/icgm/class4.cxx b/filter/source/graphicfilter/icgm/class4.cxx
new file mode 100644
index 000000000000..ee8aaef531d5
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class4.cxx
@@ -0,0 +1,861 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+#include <chart.hxx>
+#include <outact.hxx>
+#include <math.h>
+
+using namespace ::com::sun::star;
+
+double CGM::ImplGetOrientation( FloatPoint& rCenter, FloatPoint& rPoint )
+{
+ double fOrientation;
+
+ double nX = rPoint.X - rCenter.X;
+ double nY = rPoint.Y - rCenter.Y;
+
+ fOrientation = acos( nX / sqrt( nX * nX + nY * nY ) ) * 57.29577951308;
+ if ( nY > 0 )
+ fOrientation = 360 - fOrientation;
+
+ return fOrientation;
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplSwitchStartEndAngle( double& rStartAngle, double& rEndAngle )
+{
+ double nTemp;
+ nTemp = rStartAngle;
+ rStartAngle = rEndAngle;
+ rEndAngle = nTemp;
+}
+
+// ---------------------------------------------------------------
+
+void CGM::ImplGetVector( double* pVector )
+{
+ if ( pElement->eVDCType == VDC_REAL )
+ {
+ for ( sal_uInt32 i = 0; i < 4; i++ )
+ {
+ pVector[ i ] = (double)ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ }
+ }
+ else
+ {
+ for ( sal_uInt32 i = 0; i < 4; i++ )
+ {
+ pVector[ i ] = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ }
+ }
+ pVector[ 0 ] *= mnVDCXmul;
+ pVector[ 2 ] *= mnVDCXmul;
+ pVector[ 1 ] *= mnVDCYmul;
+ pVector[ 3 ] *= mnVDCYmul;
+}
+
+// ---------------------------------------------------------------
+sal_Bool CGM::ImplGetEllipse( FloatPoint& rCenter, FloatPoint& rRadius, double& rAngle )
+{
+ FloatPoint aPoint1, aPoint2;
+ double fRot1, fRot2;
+ ImplGetPoint( rCenter, sal_True );
+ ImplGetPoint( aPoint1, sal_True );
+ ImplGetPoint( aPoint2, sal_True );
+ fRot1 = ImplGetOrientation( rCenter, aPoint1 );
+ fRot2 = ImplGetOrientation( rCenter, aPoint2 );
+ rAngle = ImplGetOrientation( rCenter, aPoint1 );
+ aPoint1.X -= rCenter.X;
+ aPoint1.Y -= rCenter.Y;
+ rRadius.X = sqrt( aPoint1.X * aPoint1.X + aPoint1.Y * aPoint1.Y );
+ aPoint2.X -= rCenter.X;
+ aPoint2.Y -= rCenter.Y;
+ rRadius.Y = sqrt( aPoint2.X * aPoint2.X + aPoint2.Y * aPoint2.Y );
+
+ if ( fRot1 > fRot2 )
+ {
+ if ( ( fRot1 - fRot2 ) < 180 )
+ return sal_False;
+ }
+ else
+ {
+ if ( ( fRot2 - fRot1 ) > 180 )
+ return sal_False;
+ }
+ return sal_True;
+}
+
+void CGM::ImplDoClass4()
+{
+ if ( mbFirstOutPut )
+ mpOutAct->FirstOutPut();
+
+ if ( mpBitmapInUse && ( mnElementID != 9 ) ) // vorhandene grafik verarbeiten,
+ { // da jetzt nicht bitmap actions anstehen
+ CGMBitmapDescriptor* pBmpDesc = mpBitmapInUse->GetBitmap();
+ // irgendetwas mit der Bitmap anfangen
+ mpOutAct->DrawBitmap( pBmpDesc );
+ delete mpBitmapInUse;
+ mpBitmapInUse = NULL;
+ }
+
+ if ( ( mpChart == NULL ) || mpChart->IsAnnotation() )
+ {
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "PolyLine" )
+ {
+ sal_uInt32 nPoints = mnElementSize / ImplGetPointSize();
+ Polygon aPolygon( (sal_uInt16)nPoints );
+ for ( sal_uInt16 i = 0; i < nPoints; i++)
+ {
+ FloatPoint aFloatPoint;
+ ImplGetPoint( aFloatPoint, sal_True );
+ aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), i );
+ }
+ if ( mbFigure )
+ mpOutAct->RegPolyLine( aPolygon );
+ else
+ mpOutAct->DrawPolyLine( aPolygon );
+ }
+ break;
+
+ case 0x02 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Disjoint PolyLine" )
+ {
+ USHORT nPoints = sal::static_int_cast< USHORT >(
+ mnElementSize / ImplGetPointSize());
+ if ( ! ( nPoints & 1 ) )
+ {
+ nPoints >>= 1;
+ FloatPoint aFloatPoint;
+ if ( mbFigure )
+ {
+ Polygon aPolygon( nPoints );
+ for ( sal_uInt16 i = 0; i < nPoints; i++ )
+ {
+ ImplGetPoint( aFloatPoint, sal_True );
+ aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), 0 );
+ }
+ mpOutAct->RegPolyLine( aPolygon );
+ }
+ else
+ {
+ mpOutAct->BeginGroup();
+ Polygon aPolygon( (sal_uInt16)2 );
+ for ( sal_uInt16 i = 0; i < nPoints; i++ )
+ {
+ ImplGetPoint( aFloatPoint, sal_True );
+ aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), 0 );
+ ImplGetPoint( aFloatPoint, sal_True );
+ aPolygon.SetPoint( Point( (long)aFloatPoint.X, (long)aFloatPoint.Y ), 1);
+ mpOutAct->DrawPolyLine( aPolygon );
+ }
+ mpOutAct->EndGroup();
+ }
+ }
+ }
+ break;
+
+ case 0x03 : ComOut( CGM_LEVEL1, "PolyMarker" ) break;
+ case 0x04 : ComOut( CGM_LEVEL1, "Text" )
+ {
+ FloatPoint aFloatPoint;
+ sal_uInt32 nType, nSize;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ ImplGetPoint ( aFloatPoint, sal_True );
+ nType = ImplGetUI16( 4 );
+ nSize = ImplGetUI( 1 );
+ mpSource[ mnParaSize + nSize ] = 0;
+
+ ComOut( CGM_DESCRIPTION, (char*)mpSource + mnParaSize );
+
+ awt::Size aSize;
+ awt::Point aPoint( (long)aFloatPoint.X, (long)aFloatPoint.Y );
+ mpOutAct->DrawText( aPoint, aSize,
+ (char*)mpSource + mnParaSize, nSize, (FinalFlag)nType );
+// mnParaSize += nSize;
+ mnParaSize = mnElementSize;
+ }
+ break;
+
+ case 0x05 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Restricted Text" )
+ {
+ double dx, dy;
+ FloatPoint aFloatPoint;
+ sal_uInt32 nType, nSize;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ if ( pElement->eVDCType == VDC_REAL )
+ {
+ dx = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ dy = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ }
+ else
+ {
+ dx = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ dy = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ }
+ ImplMapDouble( dx );
+ ImplMapDouble( dy );
+
+ ImplGetPoint ( aFloatPoint, sal_True );
+ nType = ImplGetUI16( 4 );
+ nSize = ImplGetUI( 1 );
+
+ mpSource[ mnParaSize + nSize ] = 0;
+
+ ComOut( CGM_DESCRIPTION, (char*)mpSource + mnParaSize );
+
+ awt::Point aPoint( (long)aFloatPoint.X, (long)aFloatPoint.Y );
+ awt::Size aSize((long)dx, (long)dy);
+ mpOutAct->DrawText( aPoint, aSize ,
+ (char*)mpSource + mnParaSize, nSize, (FinalFlag)nType );
+// mnParaSize += nSize;
+ mnParaSize = mnElementSize;
+ }
+ break;
+
+ case 0x06 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Append Text" )
+ {
+ sal_uInt32 nSize;
+ sal_uInt32 nType = ImplGetUI16( 4 );
+
+ nSize = ImplGetUI( 1 );
+ mpSource[ mnParaSize + nSize ] = 0;
+
+ ComOut( CGM_DESCRIPTION, (char*)mpSource + mnParaSize );
+
+ mpOutAct->AppendText( (char*)mpSource + mnParaSize, nSize, (FinalFlag)nType );
+// mnParaSize += nSize;
+ mnParaSize = mnElementSize;
+ }
+ break;
+
+ case 0x07 : ComOut( CGM_LEVEL1, "Polygon" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ USHORT nPoints = sal::static_int_cast< USHORT >(
+ mnElementSize / ImplGetPointSize());
+ Polygon aPolygon( nPoints );
+ for ( USHORT i = 0; i < nPoints; i++)
+ {
+ FloatPoint aFloatPoint;
+ ImplGetPoint( aFloatPoint, sal_True );
+ aPolygon.SetPoint( Point ( (long)( aFloatPoint.X ), (long)( aFloatPoint.Y ) ), i );
+ }
+ mpOutAct->DrawPolygon( aPolygon );
+ }
+ break;
+
+ case 0x08 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Polygon Set" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ USHORT nPoints = 0;
+ Point* pPoints = new Point[ 0x4000 ];
+
+ PolyPolygon aPolyPolygon;
+ FloatPoint aFloatPoint;
+ sal_uInt32 nEdgeFlag;
+ while ( mnParaSize < mnElementSize )
+ {
+ ImplGetPoint( aFloatPoint, sal_True );
+ nEdgeFlag = ImplGetUI16();
+ pPoints[ nPoints++ ] = Point( (long)aFloatPoint.X, (long)aFloatPoint.Y );
+ if ( ( nEdgeFlag & 2 ) || ( mnParaSize == mnElementSize ) )
+ {
+ Polygon aPolygon( nPoints );
+ for ( USHORT i = 0; i < nPoints; i++ )
+ {
+ aPolygon.SetPoint( pPoints[ i ], i );
+ }
+ aPolyPolygon.Insert( aPolygon, POLYPOLY_APPEND );
+ nPoints = 0;
+ }
+ }
+ delete[] pPoints;
+ mpOutAct->DrawPolyPolygon( aPolyPolygon );
+ }
+ break;
+
+ case 0x09 : ComOut( CGM_LEVEL1, "Cell Array" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ if ( mpBitmapInUse )
+ {
+ CGMBitmap* pBmpDesc = mpBitmapInUse->GetNext();
+ if ( pBmpDesc ) // eventuell bekommen wir eine bitmap zurck, die nicht
+ { // zur vorherigen pat -> diese mssen wir dann auch lschen
+ mpOutAct->DrawBitmap( pBmpDesc->GetBitmap() );
+ delete pBmpDesc;
+ }
+ }
+ else
+ {
+ mpBitmapInUse = new CGMBitmap( *this );
+ }
+ }
+ break;
+
+ case 0x0a : ComOut( CGM_LEVEL1, "Generalized Drawing Primitive" )
+ {
+ ImplGetI( pElement->nIntegerPrecision ); //-Wall is this needed
+ ImplGetUI( pElement->nIntegerPrecision ); //-Wall is this needed
+ mnParaSize = mnElementSize;
+ }
+ break;
+
+ case 0x0b : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Rectangle" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ FloatRect aFloatRect;
+ ImplGetRectangle( aFloatRect, sal_True );
+ mpOutAct->DrawRectangle( aFloatRect );
+ }
+ break;
+
+ case 0x0c : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circle" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ double fRotation = 0;
+ FloatPoint aCenter, aRadius;
+ ImplGetPoint( aCenter, sal_True );
+ if ( pElement->eVDCType == VDC_REAL )
+ aRadius.X = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ else
+ aRadius.X = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ ImplMapDouble( aRadius.X );
+ aRadius.Y = aRadius.X;
+ mpOutAct->DrawEllipse( aCenter, aRadius, fRotation );
+ }
+ break;
+
+ case 0x0d : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc 3 Point" )
+ {
+ int nSwitch = 0;
+
+ FloatPoint aStartingPoint, aIntermediatePoint, aEndingPoint, aCenterPoint;
+ ImplGetPoint( aStartingPoint, sal_True );
+ ImplGetPoint( aIntermediatePoint, sal_True );
+ ImplGetPoint( aEndingPoint, sal_True );
+
+ double fA = aIntermediatePoint.X - aStartingPoint.X;
+ double fB = aIntermediatePoint.Y - aStartingPoint.Y;
+ double fC = aEndingPoint.X - aStartingPoint.X;
+ double fD = aEndingPoint.Y - aStartingPoint.Y;
+
+ double fE = fA * ( aStartingPoint.X + aIntermediatePoint.X ) + fB * ( aStartingPoint.Y + aIntermediatePoint.Y );
+ double fF = fC * ( aStartingPoint.X + aEndingPoint.X ) + fD * ( aStartingPoint.Y + aEndingPoint.Y );
+
+ double fG = 2.0 * ( fA * ( aEndingPoint.Y - aIntermediatePoint.Y ) - fB * ( aEndingPoint.X - aIntermediatePoint.X ) );
+
+ aCenterPoint.X = ( fD * fE - fB * fF ) / fG;
+ aCenterPoint.Y = ( fA * fF - fC * fE ) / fG;
+
+ if ( fG != 0 )
+ {
+ double fStartAngle = ImplGetOrientation( aCenterPoint, aStartingPoint );
+ double fInterAngle = ImplGetOrientation( aCenterPoint, aIntermediatePoint );
+ double fEndAngle = ImplGetOrientation( aCenterPoint, aEndingPoint );
+
+ if ( fStartAngle > fEndAngle )
+ {
+ nSwitch ^=1;
+ aIntermediatePoint = aEndingPoint;
+ aEndingPoint = aStartingPoint;
+ aStartingPoint = aIntermediatePoint;
+ fG = fStartAngle;
+ fStartAngle = fEndAngle;
+ fEndAngle = fG;
+ }
+ if ( ! ( fInterAngle > fStartAngle ) && ( fInterAngle < fEndAngle ) )
+ {
+ nSwitch ^=1;
+ aIntermediatePoint = aEndingPoint;
+ aEndingPoint = aStartingPoint;
+ aStartingPoint = aIntermediatePoint;
+ fG = fStartAngle;
+ fStartAngle = fEndAngle;
+ fEndAngle = fG;
+ }
+ double fRadius = sqrt( pow( ( aStartingPoint.X - aCenterPoint.X ), 2 ) + pow( ( aStartingPoint.Y - aCenterPoint.Y ), 2 ) ) ;
+
+ if ( mbFigure )
+ {
+ Rectangle aBoundingBox( Point( (long)( aCenterPoint.X - fRadius ), long( aCenterPoint.Y - fRadius ) ),
+ Size( ( static_cast< long >( 2 * fRadius ) ), (long)( 2 * fRadius) ) );
+ Polygon aPolygon( aBoundingBox, Point( (long)aStartingPoint.X, (long)aStartingPoint.Y ) ,Point( (long)aEndingPoint.X, (long)aEndingPoint.Y ), POLY_ARC );
+ if ( nSwitch )
+ mpOutAct->RegPolyLine( aPolygon, sal_True );
+ else
+ mpOutAct->RegPolyLine( aPolygon );
+ }
+ else
+ {
+ fG = 0;
+ FloatPoint aRadius;
+ aRadius.X = aRadius.Y = fRadius;
+ mpOutAct->DrawEllipticalArc( aCenterPoint, aRadius, fG, 2, fStartAngle, fEndAngle );
+ }
+ }
+ }
+ break;
+
+ case 0x0e : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc 3 Point Close" )
+ {
+ int nSwitch = 0;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ FloatPoint aStartingPoint, aIntermediatePoint, aEndingPoint, aCenterPoint;
+ ImplGetPoint( aStartingPoint );
+ ImplGetPoint( aIntermediatePoint );
+ ImplGetPoint( aEndingPoint );
+
+ double fA = aIntermediatePoint.X - aStartingPoint.X;
+ double fB = aIntermediatePoint.Y - aStartingPoint.Y;
+ double fC = aEndingPoint.X - aStartingPoint.X;
+ double fD = aEndingPoint.Y - aStartingPoint.Y;
+
+ double fE = fA * ( aStartingPoint.X + aIntermediatePoint.X ) + fB * ( aStartingPoint.Y + aIntermediatePoint.Y );
+ double fF = fC * ( aStartingPoint.X + aEndingPoint.X ) + fD * ( aStartingPoint.Y + aEndingPoint.Y );
+
+ double fG = 2.0 * ( fA * ( aEndingPoint.Y - aIntermediatePoint.Y ) - fB * ( aEndingPoint.X - aIntermediatePoint.X ) );
+
+ aCenterPoint.X = ( fD * fE - fB * fF ) / fG;
+ aCenterPoint.Y = ( fA * fF - fC * fE ) / fG;
+
+ if ( fG != 0 )
+ {
+ double fStartAngle = ImplGetOrientation( aCenterPoint, aStartingPoint );
+ double fInterAngle = ImplGetOrientation( aCenterPoint, aIntermediatePoint );
+ double fEndAngle = ImplGetOrientation( aCenterPoint, aEndingPoint );
+
+ if ( fStartAngle > fEndAngle )
+ {
+ nSwitch ^=1;
+ aIntermediatePoint = aEndingPoint;
+ aEndingPoint = aStartingPoint;
+ aStartingPoint = aIntermediatePoint;
+ fG = fStartAngle;
+ fStartAngle = fEndAngle;
+ fEndAngle = fG;
+ }
+ if ( ! ( fInterAngle > fStartAngle ) && ( fInterAngle < fEndAngle ) )
+ {
+ nSwitch ^=1;
+ aIntermediatePoint = aEndingPoint;
+ aEndingPoint = aStartingPoint;
+ aStartingPoint = aIntermediatePoint;
+ fG = fStartAngle;
+ fStartAngle = fEndAngle;
+ fEndAngle = fG;
+ }
+ FloatPoint fRadius;
+ fRadius.Y = fRadius.X = sqrt( pow( ( aStartingPoint.X - aCenterPoint.X ), 2 ) + pow( ( aStartingPoint.Y - aCenterPoint.Y ), 2 ) ) ;
+
+ sal_uInt32 nType = ImplGetUI16();
+ if ( nType == 0 )
+ nType = 0; // is PIE
+ else
+ nType = 1; // is CHORD
+
+ double fOrientation = 0;
+ mpOutAct->DrawEllipticalArc( aCenterPoint, fRadius, fOrientation, nType, fStartAngle, fEndAngle );
+ }
+ }
+ break;
+
+ case 0x0f : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc Centre" )
+ {
+ double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
+ FloatPoint aCenter, aRadius;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ ImplGetPoint( aCenter, sal_True );
+ ImplGetVector( &vector[ 0 ] );
+
+ if ( pElement->eVDCType == VDC_REAL )
+ {
+ aRadius.X = (double)ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ }
+ else
+ {
+ aRadius.X = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ }
+
+ ImplMapDouble( aRadius.X );
+ aRadius.Y = aRadius.X;
+
+ fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
+ fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
+
+ if ( vector[ 1 ] > 0 )
+ fStartAngle = 360 - fStartAngle;
+ if ( vector[ 3 ] > 0 )
+ fEndAngle = 360 - fEndAngle;
+
+ if ( mbAngReverse )
+ ImplSwitchStartEndAngle( fStartAngle, fEndAngle );
+
+ if ( mbFigure )
+ {
+ Rectangle aBoundingBox(
+ Point( (long)( aCenter.X - aRadius.X ), long( aCenter.Y - aRadius.X ) ),
+ Size( static_cast< long >( 2 * aRadius.X ), (long)( 2 * aRadius.X ) ) );
+ Polygon aPolygon( aBoundingBox,
+ Point( (long)vector[ 0 ], (long)vector[ 1 ] ),
+ Point( (long)vector[ 2 ], (long)vector[ 3 ] ), POLY_ARC );
+ mpOutAct->RegPolyLine( aPolygon );
+ }
+ else
+ {
+ fOrientation = 0;
+ mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation, 2, fStartAngle, fEndAngle );
+ }
+ mnParaSize = mnElementSize;
+
+ }
+ break;
+
+ case 0x10 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Circular Arc Centre Close" )
+ {
+ double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
+ FloatPoint aCenter, aRadius;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ ImplGetPoint( aCenter, sal_True );
+ ImplGetVector( &vector[ 0 ] );
+ if ( pElement->eVDCType == VDC_REAL )
+ {
+ aRadius.X = (double)ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ }
+ else
+ {
+ aRadius.X = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ }
+ ImplMapDouble( aRadius.X );
+ aRadius.Y = aRadius.X;
+ fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
+ fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
+
+ if ( vector[ 1 ] > 0 )
+ fStartAngle = 360 - fStartAngle;
+ if ( vector[ 3 ] > 0 )
+ fEndAngle = 360 - fEndAngle;
+
+ if ( mbAngReverse )
+ ImplSwitchStartEndAngle( fStartAngle, fEndAngle );
+
+
+ sal_uInt32 nType = ImplGetUI16();
+ if ( nType == 0 )
+ nType = 0; // is PIE
+ else
+ nType = 1; // is CHORD
+ fOrientation = 0;
+
+ mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
+ nType, fStartAngle, fEndAngle );
+ mnParaSize = mnElementSize;
+ }
+ break;
+
+ case 0x11 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Ellipse" )
+ {
+ double fOrientation;
+ FloatPoint aCenter, aRadius;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ ImplGetEllipse( aCenter, aRadius, fOrientation ) ;
+ mpOutAct->DrawEllipse( aCenter, aRadius, fOrientation ) ;
+ }
+ break;
+
+ case 0x12 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Elliptical Arc" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
+ FloatPoint aCenter, aRadius;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ sal_Bool bDirection = ImplGetEllipse( aCenter, aRadius, fOrientation );
+ ImplGetVector( &vector[ 0 ] );
+
+ fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
+ fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
+
+ if ( vector[ 1 ] > 0 )
+ fStartAngle = 360 - fStartAngle;
+ if ( vector[ 3 ] > 0 )
+ fEndAngle = 360 - fEndAngle;
+
+ if ( bDirection )
+ mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
+ 2, fStartAngle, fEndAngle );
+ else
+ mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
+ 2, fEndAngle, fStartAngle);
+ }
+ break;
+
+ case 0x13 : ComOut( CGM_LEVEL1 | CGM_EXTENDED_PRIMITIVES_SET, "Elliptical Arc Close" )
+ {
+ double fOrientation, fStartAngle, fEndAngle, vector[ 4 ];
+ FloatPoint aCenter, aRadius;
+
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+
+ sal_Bool bDirection = ImplGetEllipse( aCenter, aRadius, fOrientation );
+ ImplGetVector( &vector[ 0 ] );
+
+ fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308;
+ fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308;
+
+ if ( vector[ 1 ] > 0 )
+ fStartAngle = 360 - fStartAngle;
+ if ( vector[ 3 ] > 0 )
+ fEndAngle = 360 - fEndAngle;
+
+ sal_uInt32 nType = ImplGetUI16();
+ if ( nType == 0 )
+ nType = 0; // is PIE
+ else
+ nType = 1; // is CHORD
+
+ if ( bDirection )
+ mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
+ nType, fStartAngle, fEndAngle );
+ else
+ mpOutAct->DrawEllipticalArc( aCenter, aRadius, fOrientation,
+ nType, fEndAngle, fStartAngle);
+ }
+ break;
+ case 0x14 : ComOut( CGM_LEVEL2, "Circular Arc Centre Reversed" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x15 : ComOut( CGM_LEVEL2, "Connection Edge" ) // NS
+ {
+// if ( mbFigure )
+// mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x16 : ComOut( CGM_LEVEL3, "Hyperbolic Arc" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x17 : ComOut( CGM_LEVEL3, "Parabolic Arc" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x18 : ComOut( CGM_LEVEL3, "Non Uniform B-Spline" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x19 : ComOut( CGM_LEVEL3, "Non Uniform Rational B-Spline" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x1a : ComOut( CGM_LEVEL3, "Polybezier" )
+ {
+ sal_uInt32 nOrder = ImplGetI( pElement->nIntegerPrecision );
+
+ USHORT nNumberOfPoints = sal::static_int_cast< USHORT >(( mnElementSize - pElement->nIntegerPrecision ) / ImplGetPointSize());
+
+ Polygon aPolygon( nNumberOfPoints );
+
+ for ( USHORT i = 0; i < nNumberOfPoints; i++)
+ {
+ FloatPoint aFloatPoint;
+ ImplGetPoint( aFloatPoint, sal_True );
+ aPolygon.SetPoint( Point ( (long)( aFloatPoint.X ), (long)( aFloatPoint.Y ) ), i );
+ }
+ if ( nOrder & 4 )
+ {
+ for ( USHORT i = 0; i < nNumberOfPoints; i++ )
+ {
+ if ( ( i % 3 ) == 0 )
+ aPolygon.SetFlags( i, POLY_NORMAL );
+ else
+ aPolygon.SetFlags( i, POLY_CONTROL );
+ }
+ }
+ else
+ {
+ for ( USHORT i = 0; i < nNumberOfPoints; i++ )
+ {
+ switch ( i & 3 )
+ {
+ case 0 :
+ case 3 : aPolygon.SetFlags( i, POLY_NORMAL ); break;
+ default : aPolygon.SetFlags( i, POLY_CONTROL ); break;
+ }
+ }
+ }
+ if ( mbFigure )
+ mpOutAct->RegPolyLine( aPolygon );
+ else
+ mpOutAct->DrawPolybezier( aPolygon );
+ mnParaSize = mnElementSize;
+ }
+ break;
+
+ case 0x1b : ComOut( CGM_LEVEL3, "Polysymbol" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x1c : ComOut( CGM_LEVEL3, "Bitonal Tile" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x1d : ComOut( CGM_LEVEL3, "Tile" ) // NS
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0x1e : ComOut( CGM_UNKNOWN_LEVEL, "Insert Object" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xff : ComOut( CGM_GDSF_ONLY, "Polybezier" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xfe : ComOut( CGM_GDSF_ONLY, "Sharp Polybezier" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xfd : ComOut( CGM_GDSF_ONLY, "Polyspline" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xfc : ComOut( CGM_GDSF_ONLY, "Reounded Rectangle" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xfb : ComOut( CGM_GDSF_ONLY, "Begin Cell Array" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xfa : ComOut( CGM_GDSF_ONLY, "End Cell Array" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xf9 : ComOut( CGM_GDSF_ONLY, "Insert File" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xf8 : ComOut( CGM_GDSF_ONLY, "Block Text" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xf7 : ComOut( CGM_GDSF_ONLY, "Variable Width Polyline" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xf6 : ComOut( CGM_GDSF_ONLY, "Elliptical Arc 3 Point" )
+ {
+ if ( mbFigure )
+ mpOutAct->CloseRegion();
+ }
+ break;
+ case 0xf1 : ComOut( CGM_GDSF_ONLY, "Hyperlink Definition" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+ }
+ else
+ mnParaSize = mnElementSize;
+};
+
+
diff --git a/filter/source/graphicfilter/icgm/class5.cxx b/filter/source/graphicfilter/icgm/class5.cxx
new file mode 100644
index 000000000000..6d570a0b7baf
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class5.cxx
@@ -0,0 +1,524 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+//#define VCL_NEED_BASETSD
+
+#include <main.hxx>
+#include <outact.hxx>
+
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass5()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "Line Bundle Index" )
+ pElement->pLineBundle = (LineBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aLineList, pElement->aLineBundle );
+ break;
+ case 0x02 : ComOut( CGM_LEVEL1, "Line Type" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_LINETYPE )
+ pElement->pLineBundle->eLineType = (LineType)ImplGetI( pElement->nIndexPrecision );
+ else
+ pElement->aLineBundle.eLineType = (LineType)ImplGetI( pElement->nIndexPrecision );
+ }
+ break;
+ case 0x03 : ComOut( CGM_LEVEL1, "Line Width" )
+ {
+ double nWidth;
+ if ( pElement->eLineWidthSpecMode == SM_ABSOLUTE )
+ {
+ if ( pElement->eVDCType == VDC_REAL )
+ nWidth = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ else
+ nWidth = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+
+ ImplMapDouble( nWidth );
+ }
+ else
+ nWidth = (sal_uInt32)ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ) * 25; // scaling in 1/4 mm
+
+ ( pElement->nAspectSourceFlags & ASF_LINEWIDTH )
+ ? pElement->aLineBundle.nLineWidth = nWidth
+ : pElement->aLineBundle.nLineWidth = nWidth;
+ }
+ break;
+ case 0x04 : ComOut( CGM_LEVEL1, "Line Color" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_LINECOLOR )
+ pElement->pLineBundle->SetColor( ImplGetBitmapColor() );
+ else
+ pElement->aLineBundle.SetColor( ImplGetBitmapColor() );
+ }
+ break;
+ case 0x05 : ComOut( CGM_LEVEL1, "Marker Bundle Index" )
+ pElement->pMarkerBundle = (MarkerBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aMarkerList, pElement->aMarkerBundle );
+ break;
+ case 0x06 : ComOut( CGM_LEVEL1, "Marker Type" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_MARKERTYPE )
+ pElement->pMarkerBundle->eMarkerType = (MarkerType)ImplGetI( pElement->nIndexPrecision );
+ else
+ pElement->aMarkerBundle.eMarkerType = (MarkerType)ImplGetI( pElement->nIndexPrecision );
+ }
+ break;
+ case 0x07 : ComOut( CGM_LEVEL1, "Marker Size" )
+ {
+ double nWidth;
+ if ( pElement->eMarkerSizeSpecMode == SM_ABSOLUTE )
+ {
+ if ( pElement->eVDCType == VDC_REAL )
+ nWidth = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ else
+ nWidth = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+ ImplMapDouble( nWidth );
+ }
+ else
+ nWidth = (sal_uInt32)ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ) * 25;
+ ( pElement->nAspectSourceFlags & ASF_MARKERSIZE )
+ ? pElement->aMarkerBundle.nMarkerSize = nWidth
+ : pElement->aMarkerBundle.nMarkerSize = nWidth;
+ }
+ break;
+ case 0x08 : ComOut( CGM_LEVEL1, "Marker Color" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_MARKERCOLOR )
+ pElement->pMarkerBundle->SetColor( ImplGetBitmapColor() );
+ else
+ pElement->aMarkerBundle.SetColor( ImplGetBitmapColor() );
+ }
+ break;
+ case 0x09 : ComOut( CGM_LEVEL1, "Text Bundle Index" )
+ pElement->pTextBundle = (TextBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aTextList, pElement->aTextBundle );
+ break;
+ case 0x0a : ComOut( CGM_LEVEL1, "Text Font Index" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_TEXTFONTINDEX )
+ pElement->pTextBundle->nTextFontIndex = ImplGetI( pElement->nIndexPrecision );
+ else
+ pElement->aTextBundle.nTextFontIndex = ImplGetI( pElement->nIndexPrecision );
+ }
+ break;
+ case 0x0b : ComOut( CGM_LEVEL1, "Text Precision" )
+ {
+ TextBundle* pBundle;
+ if ( pElement->nAspectSourceFlags & ASF_TEXTPRECISION )
+ pBundle = pElement->pTextBundle;
+ else
+ pBundle = &pElement->aTextBundle;
+ switch( ImplGetUI16() )
+ {
+ case 0 : pBundle->eTextPrecision = TPR_STRING; break;
+ case 1 : pBundle->eTextPrecision = TPR_CHARACTER; break;
+ case 2 : pBundle->eTextPrecision = TPR_STROKE; break;
+ default : pBundle->eTextPrecision = TPR_UNDEFINED; break;
+ }
+ }
+ break;
+ case 0x0c : ComOut( CGM_LEVEL1, "Character Expansion Factor" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_CHARACTEREXPANSION )
+ pElement->pTextBundle->nCharacterExpansion = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ else
+ pElement->aTextBundle.nCharacterExpansion = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ }
+ break;
+ case 0x0d : ComOut( CGM_LEVEL1, "Character Spacing" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_CHARACTERSPACING )
+ pElement->pTextBundle->nCharacterSpacing = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ else
+ pElement->aTextBundle.nCharacterSpacing = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ }
+ break;
+ case 0x0e : ComOut( CGM_LEVEL1, "Text Color" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_TEXTCOLOR )
+ pElement->pTextBundle->SetColor( ImplGetBitmapColor() );
+ else
+ pElement->aTextBundle.SetColor( ImplGetBitmapColor() );
+ }
+ break;
+ case 0x0f : ComOut( CGM_LEVEL1, "Character Height" )
+ {
+ if ( pElement->eVDCType == VDC_INTEGER )
+ pElement->nCharacterHeight = ImplGetI( pElement->nVDCIntegerPrecision );
+ else // ->floating points
+ pElement->nCharacterHeight = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ ImplMapDouble( pElement->nCharacterHeight );
+ pElement->nCharacterHeight /= 18.0;
+ }
+ break;
+ case 0x10 : ComOut( CGM_LEVEL1, "Character Orientation" )
+ {
+ if ( pElement->eVDCType == VDC_INTEGER )
+ {
+ pElement->nCharacterOrientation[0] = ImplGetI( pElement->nVDCIntegerPrecision );
+ pElement->nCharacterOrientation[1] = ImplGetI( pElement->nVDCIntegerPrecision );
+ pElement->nCharacterOrientation[2] = ImplGetI( pElement->nVDCIntegerPrecision );
+ pElement->nCharacterOrientation[3] = ImplGetI( pElement->nVDCIntegerPrecision );
+ }
+ else // ->floating points
+ {
+ pElement->nCharacterOrientation[0] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ pElement->nCharacterOrientation[1] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ pElement->nCharacterOrientation[2] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ pElement->nCharacterOrientation[3] = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ }
+ }
+ break;
+ case 0x11 : ComOut( CGM_LEVEL1, "Text Path" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eTextPath = TPR_RIGHT; break;
+ case 1 : pElement->eTextPath = TPR_LEFT; break;
+ case 2 : pElement->eTextPath = TPR_UP; break;
+ case 3 : pElement->eTextPath = TPR_DOWN; break;
+ default : mbStatus = sal_False; break;
+ }
+ }
+ break;
+ case 0x12 : ComOut( CGM_LEVEL1, "Text Alignment" )
+ {
+ pElement->eTextAlignmentH = (TextAlignmentH)ImplGetUI16();
+ pElement->eTextAlignmentV = (TextAlignmentV)ImplGetUI16( 8 );
+ pElement->nTextAlignmentHCont = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ pElement->nTextAlignmentVCont = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ }
+ break;
+ case 0x13 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Character Set Index" )
+ pElement->nCharacterSetIndex = ImplGetI( pElement->nIndexPrecision );
+ break;
+ case 0x14 : ComOut( CGM_LEVEL1 | CGM_DRAWING_PLUS_CONTROL_SET, "Alternate Character Set Index" )
+ pElement->nAlternateCharacterSetIndex = ImplGetI( pElement->nIndexPrecision );
+ break;
+ case 0x15 : ComOut( CGM_LEVEL1, "Fill Bundle Index" )
+ pElement->pFillBundle = (FillBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aFillList, pElement->aFillBundle );
+ break;
+ case 0x16 : ComOut( CGM_LEVEL1, "Fill Interior Style" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_FILLINTERIORSTYLE )
+ pElement->pFillBundle->eFillInteriorStyle = (FillInteriorStyle)ImplGetUI16();
+ else
+ pElement->aFillBundle.eFillInteriorStyle = (FillInteriorStyle)ImplGetUI16();
+ }
+ break;
+ case 0x17 : ComOut( CGM_LEVEL1, "Fill Color" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_FILLCOLOR )
+ pElement->pFillBundle->SetColor( ImplGetBitmapColor() );
+ else
+ pElement->aFillBundle.SetColor( ImplGetBitmapColor() );
+ }
+ break;
+ case 0x18 : ComOut( CGM_LEVEL1, "Fill Hatch Index" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_HATCHINDEX )
+ pElement->pFillBundle->nFillHatchIndex = ImplGetI( pElement->nIndexPrecision );
+ else
+ pElement->aFillBundle.nFillHatchIndex = ImplGetI( pElement->nIndexPrecision );
+ }
+ break;
+ case 0x19 : ComOut( CGM_LEVEL1, "Fill Pattern Index" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_PATTERNINDEX )
+ pElement->pFillBundle->nFillPatternIndex = ImplGetI( pElement->nIndexPrecision );
+ else
+ pElement->aFillBundle.nFillPatternIndex = ImplGetI( pElement->nIndexPrecision );
+ }
+ break;
+ case 0x1a : ComOut( CGM_LEVEL1, "Edge Bundle Index" )
+ pElement->pEdgeBundle = (EdgeBundle*)pElement->GetBundleIndex( ImplGetI( pElement->nIndexPrecision ), pElement->aEdgeList, pElement->aEdgeBundle );
+ break;
+ case 0x1b : ComOut( CGM_LEVEL1, "Edge Type" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_EDGETYPE )
+ pElement->pEdgeBundle->eEdgeType = (EdgeType)ImplGetI( pElement->nIndexPrecision );
+ else
+ pElement->aEdgeBundle.eEdgeType = (EdgeType)ImplGetI( pElement->nIndexPrecision );
+ }
+ break;
+ case 0x1c : ComOut( CGM_LEVEL1, "Edge Width" )
+ {
+ double nWidth;
+ if ( pElement->eEdgeWidthSpecMode == SM_ABSOLUTE )
+ {
+ if ( pElement->eVDCType == VDC_REAL )
+ nWidth = ImplGetFloat( pElement->eVDCRealPrecision, pElement->nVDCRealSize );
+ else
+ nWidth = (double)ImplGetI( pElement->nVDCIntegerPrecision );
+
+ ImplMapDouble( nWidth );
+ }
+ else
+ nWidth = (sal_uInt32)ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ) * 25;
+ ( pElement->nAspectSourceFlags & ASF_EDGEWIDTH )
+ ? pElement->aEdgeBundle.nEdgeWidth = nWidth
+ : pElement->aEdgeBundle.nEdgeWidth = nWidth;
+ }
+ break;
+ case 0x1d : ComOut( CGM_LEVEL1, "Edge Color" )
+ {
+ if ( pElement->nAspectSourceFlags & ASF_EDGECOLOR )
+ pElement->pEdgeBundle->SetColor( ImplGetBitmapColor() );
+ else
+ pElement->aEdgeBundle.SetColor( ImplGetBitmapColor() );
+ }
+ break;
+ case 0x1e : ComOut( CGM_LEVEL1, "Edge Visibility" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eEdgeVisibility = EV_OFF; break;
+ case 1 : pElement->eEdgeVisibility = EV_ON; break;
+ default : mbStatus = sal_False;
+ }
+ }
+ break;
+ case 0x1f : ComOut( CGM_LEVEL1, "Fill Reference Point" )
+ ImplGetPoint( pElement->aFillRefPoint );
+ break;
+ case 0x20 : ComOut( CGM_LEVEL1, "Pattern Table" ) break;
+ case 0x21 : ComOut( CGM_LEVEL1, "Pattern Size" ) break;
+ case 0x22 : ComOut( CGM_LEVEL1, "Color Table" )
+ {
+ sal_uInt32 nColorStartIndex = ImplGetUI( pElement->nColorIndexPrecision );
+ if ( ( nColorStartIndex > 255 ) ||
+ ( ( ( mnElementSize - pElement->nColorIndexPrecision ) % ( pElement->nColorPrecision * 3 ) ) != 0 ) )
+ {
+ mbStatus = sal_False;
+ }
+ else
+ {
+ sal_uInt32 nColors = ( mnElementSize - pElement->nColorIndexPrecision ) / ( 3 * pElement->nColorPrecision );
+ if ( nColors )
+ {
+ sal_uInt32 nMaxColorIndex = nColorStartIndex + nColors - 1;
+ sal_uInt32 nIndex;
+ if ( nMaxColorIndex > 255 )
+ {
+ mbStatus = sal_False;
+ }
+ else
+ {
+ if ( pElement->nLatestColorMaximumIndex < nMaxColorIndex )
+ pElement->nLatestColorMaximumIndex = nMaxColorIndex;
+
+ for ( nIndex = nColorStartIndex; nIndex <= nMaxColorIndex; nIndex++ )
+ {
+ pElement->aLatestColorTable[ nIndex ] = ImplGetBitmapColor( sal_True );
+ }
+ }
+ pElement->nColorMaximumIndex = pElement->nLatestColorMaximumIndex;
+ for ( nIndex = nColorStartIndex; nIndex <= nMaxColorIndex; nIndex++ )
+ {
+ if ( !pElement->aColorTableEntryIs[ nIndex ] )
+ {
+ pElement->aColorTableEntryIs[ nIndex ] = 1;
+ pElement->aColorTable[ nIndex ] = pElement->aLatestColorTable[ nIndex ];
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 0x23 : ComOut( CGM_LEVEL1, "Aspect Source Flags" )
+ {
+ int nFlags = mnElementSize >> 2;
+ while ( nFlags-- > 0 )
+ {
+ sal_uInt32 nFlag = 0;
+ switch( ImplGetUI16() )
+ {
+ case 0 : nFlag = ASF_LINETYPE; break;
+ case 1 : nFlag = ASF_LINEWIDTH; break;
+ case 2 : nFlag = ASF_LINECOLOR; break;
+ case 3 : nFlag = ASF_MARKERTYPE; break;
+ case 4 : nFlag = ASF_MARKERSIZE; break;
+ case 5 : nFlag = ASF_MARKERCOLOR; break;
+ case 6 : nFlag = ASF_FILLINTERIORSTYLE; break;
+ case 7 : nFlag = ASF_HATCHINDEX; break;
+ case 8 : nFlag = ASF_PATTERNINDEX; break;
+ case 9 : nFlag = ASF_BITMAPINDEX; break;
+ case 10 : nFlag = ASF_FILLCOLOR; break;
+ case 11 : nFlag = ASF_EDGETYPE; break;
+ case 12 : nFlag = ASF_EDGEWIDTH; break;
+ case 13 : nFlag = ASF_EDGECOLOR; break;
+ case 14 : nFlag = ASF_TEXTFONTINDEX; break;
+ case 15 : nFlag = ASF_TEXTPRECISION; break;
+ case 16 : nFlag = ASF_CHARACTEREXPANSION; break;
+ case 17 : nFlag = ASF_CHARACTERSPACING; break;
+ case 18 : nFlag = ASF_TEXTCOLOR; break;
+ default : mbStatus = sal_False; break;
+ }
+ sal_uInt32 nASF = ImplGetUI16();
+ switch ( nASF )
+ {
+ case 0 : pElement->nAspectSourceFlags &= ~nFlag; break; // INDIVIDUAL
+ case 1 : pElement->nAspectSourceFlags |= nFlag; break; // BUNDLED
+ default : mbStatus = sal_False; break;
+ }
+ }
+ }
+ break;
+ case 0x24 : ComOut( CGM_LEVEL2, "Pick Identifier" ) break;
+ case 0x25 : ComOut( CGM_LEVEL3, "Line Cap" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eLineCapType = LCT_BUTT; break;
+ case 1 : pElement->eLineCapType = LCT_ROUND; break;
+ case 2 : pElement->eLineCapType = LCT_SQUARE; break;
+ case 3 : pElement->eLineCapType = LCT_TRIANGLE; break;
+ case 4 : pElement->eLineCapType = LCT_ARROW; break;
+ default : pElement->eLineCapType = LCT_NONE; break;
+ }
+ }
+ break;
+ case 0x26 : ComOut( CGM_LEVEL3, "Line Join" )
+ {
+ switch( ImplGetUI16() )
+ {
+ case 0 : pElement->eLineJoinType = LJT_MITER; break;
+ case 1 : pElement->eLineJoinType = LJT_ROUND; break;
+ case 2 : pElement->eLineJoinType = LJT_BEVEL; break;
+ default : pElement->eLineJoinType = LJT_NONE; break;
+ }
+ }
+ break;
+ case 0x27 : ComOut( CGM_LEVEL3, "Line Type Continuation" ) break; // NS
+ case 0x28 : ComOut( CGM_LEVEL3, "Line Type Initial Offset" ) break; // NS
+ case 0x29 : ComOut( CGM_LEVEL3, "Text Score Type" ) break;
+ case 0x2a : ComOut( CGM_LEVEL3, "Restricted Text Type" ) break;
+ case 0x2b : ComOut( CGM_LEVEL3, "Interpolated interior" ) break;
+ case 0x2c : ComOut( CGM_LEVEL3, "Edge Cap" ) break; // NS
+ case 0x2d : ComOut( CGM_LEVEL3, "Edge Join" ) break;
+ case 0x2e : ComOut( CGM_LEVEL3, "Edge Type Continuation" ) break; // NS
+ case 0x2f : ComOut( CGM_LEVEL3, "Edge Type Initial Offset" ) break; // NS
+ case 0x30 : ComOut( CGM_LEVEL3, "Symbol Library Index" ) break; // NS
+ case 0x31 : ComOut( CGM_LEVEL3, "Symbol Color" ) break; // NS
+ case 0x32 : ComOut( CGM_LEVEL3, "Symbol Size" ) break; // NS
+ case 0x33 : ComOut( CGM_LEVEL3, "Symbol Orientation" ) break; // NS
+ case 0x50 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Region Margins" ) break;
+ case 0x51 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Region Expansion" ) break;
+ case 0x52 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Region Anchor" ) break;
+ case 0x53 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Horizontal Alignment" ) break;
+ case 0x54 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Vertical Alignment" ) break;
+ case 0x55 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Line Flow" ) break;
+ case 0x60 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Spacing" ) break;
+ case 0x61 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Indent" ) break;
+ case 0x62 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Tabs" ) break;
+ case 0x63 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Bullets" ) break;
+ case 0x64 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Bullet Level" ) break;
+ case 0x65 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Line Horizontal Alignment" ) break;
+ case 0x66 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Line Vertical Alignment" ) break;
+ case 0x67 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragragh Line Spacing" ) break;
+ case 0x68 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Paragraph Word Wrap" ) break;
+ case 0x70 : ComOut( CGM_UNKNOWN_LEVEL, "Block Text Forward Advance Distance" ) break;
+ case 0x71 : ComOut( CGM_UNKNOWN_LEVEL, "Word Spacing" ) break;
+ case 0x72 : ComOut( CGM_UNKNOWN_LEVEL, "External Leading" ) break;
+ case 0x7a : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Offset" )
+ {
+ long nHorzOffset = ImplGetI( pElement->nIndexPrecision );
+ long nVertOffset = ImplGetI( pElement->nIndexPrecision );
+ sal_uInt32 nType = ImplGetUI16();
+ mpOutAct->SetGradientOffset( nHorzOffset, nVertOffset, nType );
+ mnAct4PostReset |= ACT4_GRADIENT_ACTION;
+ }
+ break;
+ case 0x7b : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Edge" )
+ {
+ mnAct4PostReset |= ACT4_GRADIENT_ACTION;
+ }
+ break;
+ case 0x7c : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Angle" )
+ {
+ mpOutAct->SetGradientAngle( ImplGetI( pElement->nIndexPrecision ) );
+ mnAct4PostReset |= ACT4_GRADIENT_ACTION;
+ }
+ break;
+ case 0x7d : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Description" )
+ {
+ ImplGetI( pElement->nIndexPrecision ); // -Wall is this needed?
+ sal_uInt32 nNumberOfStages = ImplGetI( pElement->nIndexPrecision );
+ sal_uInt32 i, nColorFrom = 0;
+ sal_uInt32 nColorTo = 0xffffff;
+
+ //FIXME, does this loop actually do anything?
+ for ( i = 0; i < nNumberOfStages; i++ )
+ {
+ ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ); // -Wall is this needed
+ }
+
+ for ( i = 0; i <= nNumberOfStages; i++ )
+ {
+ sal_uInt32 nPara = mnParaSize + 24;
+ if ( i == 0 )
+ {
+ nColorTo = ImplGetBitmapColor();
+ nColorFrom = nColorTo ^ 0xffffff;
+ }
+ else if ( i == 1 )
+ nColorFrom = ImplGetBitmapColor();
+ mnParaSize = nPara;
+ }
+ if ( nNumberOfStages > 1 )
+ mpOutAct->SetGradientStyle( 0xff, 1 );
+
+ mpOutAct->SetGradientDescriptor( nColorFrom, nColorTo );
+ mnAct4PostReset |= ACT4_GRADIENT_ACTION;
+ }
+ break;
+ case 0x7e : ComOut( CGM_UNKNOWN_LEVEL, "set Gradient Style" )
+ {
+ sal_uInt32 nStyle = ImplGetUI16( 8 );
+ double fRatio = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
+ mpOutAct->SetGradientStyle( nStyle, fRatio );
+ mnAct4PostReset |= ACT4_GRADIENT_ACTION;
+ }
+ break;
+ case 0xff : ComOut( CGM_GDSF_ONLY, "inquire Font metrics" ) break;
+ case 0xfe : ComOut( CGM_GDSF_ONLY, "inquire character widths" ) break;
+ case 0xfd : ComOut( CGM_GDSF_ONLY, "set Text Font" ) break;
+ case 0xfc : ComOut( CGM_GDSF_ONLY, "set current position" ) break;
+ case 0xfb : ComOut( CGM_GDSF_ONLY, "set current position mode" ) break;
+ case 0xfa : ComOut( CGM_GDSF_ONLY, "set character height mode" ) break;
+ case 0xf9 : ComOut( CGM_GDSF_ONLY, "set Transform matrix 2D" ) break;
+ case 0xf8 : ComOut( CGM_GDSF_ONLY, "set Transform matrix 3D" ) break;
+ case 0xf7 : ComOut( CGM_GDSF_ONLY, "pop transformation state" ) break;
+ case 0xf6 : ComOut( CGM_GDSF_ONLY, "clear transformation state" ) break;
+ case 0xf5 : ComOut( CGM_GDSF_ONLY, "set character widths" ) break;
+ case 0xf4 : ComOut( CGM_GDSF_ONLY, "set color name - for Pantone support" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+
diff --git a/filter/source/graphicfilter/icgm/class7.cxx b/filter/source/graphicfilter/icgm/class7.cxx
new file mode 100644
index 000000000000..21c67bf9c161
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/class7.cxx
@@ -0,0 +1,237 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+#include <chart.hxx>
+#include <outact.hxx>
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass7()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "Message" ) break;
+ case 0x02 :
+ {
+ sal_uInt8* pAppData = mpSource + 12;
+ sal_uInt16* pTemp = (sal_uInt16*)mpSource;
+ sal_uInt16 nOpcode = pTemp[ 4 ];
+
+ if ( mpChart || ( nOpcode == 0 ) )
+ {
+ switch ( nOpcode )
+ {
+ case 0x000 : ComOut( CGM_LEVEL1, "AppData - Beginning of File Opcodes" )
+ {
+ if ( mpChart == NULL )
+ mpChart = new CGMChart( *this );
+ mpChart->mnCurrentFileType = pAppData[ 3 ];
+ }
+ break;
+ case 0x001 : ComOut( CGM_LEVEL1, "AppData - End of File Opcodes" ) break;
+ case 0x190 : ComOut( CGM_LEVEL1, "AppData - FDESC" ) break;
+ case 0x192 : ComOut( CGM_LEVEL1, "AppData - FNOTES" ) break;
+ case 0x1F4 : ComOut( CGM_LEVEL1, "AppData - BOGENFILE" ) break;
+ case 0x1F5 : ComOut( CGM_LEVEL1, "AppData - EOGENFILE" ) break;
+ case 0x1F8 : ComOut( CGM_LEVEL1, "AppData - BOCHTGROUP" ) break;
+ case 0x1F9 : ComOut( CGM_LEVEL1, "AppData - EOCHTGROUP" ) break;
+ case 0x1FC : ComOut( CGM_LEVEL1, "AppData - BOCHTDATA" ) break;
+ case 0x1FD : ComOut( CGM_LEVEL1, "AppData - EOCHTDATA" )
+ {
+ mpOutAct->DrawChart();
+ }
+ break;
+ case 0x200 : ComOut( CGM_LEVEL1, "AppData - BOSYMGROUP" ) break;
+ case 0x201 : ComOut( CGM_LEVEL1, "AppData - EOSYMGROUP" ) break;
+ case 0x204 : ComOut( CGM_LEVEL1, "AppData - BEGSYMBOL" ) break;
+ case 0x205 : ComOut( CGM_LEVEL1, "AppData - ENDSYMBOL" ) break;
+ case 0x208 : ComOut( CGM_LEVEL1, "AppData - BOSHWGROUP" ) break;
+ case 0x209 : ComOut( CGM_LEVEL1, "AppData - EOSHWGROUP" ) break;
+ case 0x260 : ComOut( CGM_LEVEL1, "AppData - BEGGROUP" ) break;
+ case 0x262 : ComOut( CGM_LEVEL1, "AppData - ENDGROUP" ) break;
+ case 0x264 : ComOut( CGM_LEVEL1, "AppData - DATANODE" )
+ {
+ mpChart->mDataNode[ 0 ] = *(DataNode*)( pAppData );
+ sal_Int8 nZoneEnum = mpChart->mDataNode[ 0 ].nZoneEnum;
+ if ( nZoneEnum && ( nZoneEnum <= 6 ) )
+ mpChart->mDataNode[ nZoneEnum ] = *(DataNode*)( pAppData );
+ }
+ break;
+ case 0x2BE : ComOut( CGM_LEVEL1, "AppData - SHWSLIDEREC" )
+ {
+ if ( mnMode & CGM_EXPORT_IMPRESS )
+ {
+ if ( pAppData[ 16 ] == 0 ) // a blank template ?
+ {
+ if ( pAppData[ 2 ] == 46 )
+ {
+ // this starts the document -> maybe we could insert a new document
+ }
+ else if ( pAppData[ 2 ] & 0x80 )
+ {
+ // this is a template
+ }
+ else
+ {
+ mpOutAct->InsertPage();
+ }
+ }
+ mpChart->ResetAnnotation();
+ }
+ }
+ break;
+ case 0x2C0 : ComOut( CGM_LEVEL1, "AppData - SHWKEYTABLE" ) break;
+ case 0x2C2 : ComOut( CGM_LEVEL1, "AppData - SHWBUTTONTAB" ) break;
+ case 0x2C4 : ComOut( CGM_LEVEL1, "AppData - SHWGLOBAL" ) break;
+ case 0x2C6 : ComOut( CGM_LEVEL1, "AppData - SHWTITLE" ) break;
+ case 0x2CA : ComOut( CGM_LEVEL1, "AppData - SHWAPP" ) break;
+ case 0x320 : ComOut( CGM_LEVEL1, "AppData - TEXT" )
+ {
+ TextEntry* pTextEntry = new TextEntry;
+ pTextEntry->nTypeOfText = *((sal_uInt16*)( pAppData ) );
+ pTextEntry->nRowOrLineNum = *((sal_uInt16*)( pAppData + 2 ) );
+ pTextEntry->nColumnNum = *((sal_uInt16*)( pAppData + 4 ) );
+ sal_uInt16 nAttributes = *( (sal_uInt16*)( pAppData + 6 ) );
+ pTextEntry->nZoneSize = nAttributes & 0xff;
+ pTextEntry->nLineType = ( nAttributes >> 8 ) & 0xf;
+ nAttributes >>= 12;
+ pTextEntry->nAttributes = nAttributes;
+ pAppData += 8;
+ sal_uInt32 nLen = strlen( (char*)( pAppData ) ) + 1;
+ pTextEntry->pText = new char[ nLen ];
+ memcpy( pTextEntry->pText, pAppData, nLen );
+ pAppData += nLen;
+
+ TextAttribute* pTextOld = 0;
+ for ( sal_uInt16 i = 0; i < nAttributes; i++ )
+ {
+ TextAttribute* pTextAttr = new TextAttribute;
+
+ *pTextAttr = *(TextAttribute*)( pAppData );
+
+ pTextAttr->pNextAttribute = NULL;
+ if ( i == 0 )
+ pTextEntry->pAttribute = pTextAttr;
+ else
+ pTextOld->pNextAttribute = pTextAttr;
+
+ pAppData += sizeof( TextAttribute ) - 4;
+ pTextOld = pTextAttr;
+ }
+ mpChart->InsertTextEntry( pTextEntry );
+ }
+ break;
+ case 0x321 : ComOut( CGM_LEVEL1, "AppData - IOC_TABS" ) break;
+ case 0x322 : ComOut( CGM_LEVEL1, "AppData - CHARTZONE" )
+ {
+ mpChart->mChartZone = *( ChartZone* )( pAppData );
+ }
+ break;
+ case 0x324 : ComOut( CGM_LEVEL1, "AppData - TITLEZONE" ) break;
+ case 0x328 : ComOut( CGM_LEVEL1, "AppData - FOOTNOTEZONE" ) break;
+ case 0x32A : ComOut( CGM_LEVEL1, "AppData - LEGENDZONE" ) break;
+ case 0x330 : ComOut( CGM_LEVEL1, "AppData - PAGEORIENTDIM" )
+ {
+ mpChart->mPageOrientDim = *( PageOrientDim*)( pAppData );
+ }
+ break;
+ case 0x334 : ComOut( CGM_LEVEL1, "AppData - CHTZONEOPTN" )
+ {
+ mpChart->mZoneOption = *( ZoneOption*)( pAppData );
+ }
+ break;
+ case 0x336 : ComOut( CGM_LEVEL1, "AppData - CHTINTL" )
+ {
+ mpChart->mIntSettings = *( IntSettings*)( pAppData );
+ }
+ break;
+ case 0x338 : ComOut( CGM_LEVEL1, "AppData - CHTLINESPC" ) break;
+ case 0x384 : ComOut( CGM_LEVEL1, "AppData - ORGGRIDSTATE" ) break;
+ case 0x386 : ComOut( CGM_LEVEL1, "AppData - ORGSCRSTATE" ) break;
+ case 0x388 : ComOut( CGM_LEVEL1, "AppData - ORGTREESTATE" ) break;
+ case 0x38A : ComOut( CGM_LEVEL1, "AppData - ORGTEXTOPTN" ) break;
+ case 0x38E : ComOut( CGM_LEVEL1, "AppData - ORGBOXOPTN" ) break;
+ case 0x390 : ComOut( CGM_LEVEL1, "AppData - ORGBOXDIM" ) break;
+ case 0x392 : ComOut( CGM_LEVEL1, "AppData - ORGBOX" ) break;
+ case 0x3EA : ComOut( CGM_LEVEL1, "AppData - TTLTEXTOPTN" ) break;
+ case 0x3EE : ComOut( CGM_LEVEL1, "AppData - TTLAUTOBUILD" ) break;
+ case 0x44E : ComOut( CGM_LEVEL1, "AppData - BULTEXTOPTN" ) break;
+ case 0x452 : ComOut( CGM_LEVEL1, "AppData - BULLETOPTN" )
+ {
+ mpChart->mBulletOption = *( BulletOption*)( pAppData );
+ }
+ break;
+ case 0x454 : ComOut( CGM_LEVEL1, "AppData - BULLETLINES" )
+ {
+ mpChart->mBulletLines = *( BulletLines*)( pAppData );
+ }
+ break;
+ case 0x456 : ComOut( CGM_LEVEL1, "AppData - BULAUTOBUILD" ) break;
+ case 0x4B2 : ComOut( CGM_LEVEL1, "AppData - TBLTEXTOPTN" ) break;
+ case 0x4B6 : ComOut( CGM_LEVEL1, "AppData - TBLOPTN" ) break;
+ case 0x4B8 : ComOut( CGM_LEVEL1, "AppData - TBLCOLOPTN" ) break;
+ case 0x4BA : ComOut( CGM_LEVEL1, "AppData - TBLLEGENDOPTN" ) break;
+ case 0x4BC : ComOut( CGM_LEVEL1, "AppData - TBLRANGEOPTN" ) break;
+ case 0x4BE : ComOut( CGM_LEVEL1, "AppData - TBLROWOPTN" ) break;
+ case 0x4C0 : ComOut( CGM_LEVEL1, "AppData - TBLAUTOBUILD" ) break;
+ case 0x518 : ComOut( CGM_LEVEL1, "AppData - PIECHARTOPTN" ) break;
+ case 0x51A : ComOut( CGM_LEVEL1, "AppData - PIELEGENDOPTN" ) break;
+ case 0x51C : ComOut( CGM_LEVEL1, "AppData - PIETEXTOPTN" ) break;
+ case 0x51E : ComOut( CGM_LEVEL1, "AppData - PIEOPTN" ) break;
+ case 0x520 : ComOut( CGM_LEVEL1, "AppData - PIEPCTLABOPTN" ) break;
+ case 0x522 : ComOut( CGM_LEVEL1, "AppData - PIEVALLABOPTN" ) break;
+ case 0x524 : ComOut( CGM_LEVEL1, "AppData - PIESLICE" ) break;
+ case 0x57A : ComOut( CGM_LEVEL1, "AppData - XYAXISOPTN" ) break;
+ case 0x57C : ComOut( CGM_LEVEL1, "AppData - XYGRIDOPTN" ) break;
+ case 0x57D : ComOut( CGM_LEVEL1, "AppData - XYGRIDSHOWFILL" ) break;
+ case 0x57E : ComOut( CGM_LEVEL1, "AppData - XYSERIESOPTN" ) break;
+ case 0x580 : ComOut( CGM_LEVEL1, "AppData - XYSTYLEOPTN" ) break;
+ case 0x582 : ComOut( CGM_LEVEL1, "AppData - XYTABLEOPTN" ) break;
+ case 0x584 : ComOut( CGM_LEVEL1, "AppData - XYTEXTOPTN" ) break;
+ case 0x586 : ComOut( CGM_LEVEL1, "AppData - XYDATAOPTN" ) break;
+ case 0x58A : ComOut( CGM_LEVEL1, "AppData - XYLEGENDOPN" ) break;
+ case 0x58C : ComOut( CGM_LEVEL1, "AppData - XYCALCULATION" ) break;
+ case 0x58E : ComOut( CGM_LEVEL1, "AppData - XYXVALUE" ) break;
+ case 0x590 : ComOut( CGM_LEVEL1, "AppData - XYYVALUE" ) break;
+ case 0x592 : ComOut( CGM_LEVEL1, "AppData - XYXEXTVALUE" ) break;
+ case 0x618 : ComOut( CGM_LEVEL1, "AppData - IOC_CHTCOLRTAB" ) break;
+ case 0x619 : ComOut( CGM_LEVEL1, "AppData - IOC_CHTFONTTAB" ) break;
+ case 0x1fff : ComOut( CGM_LEVEL1, "AppData - 0x1fff" ) break;
+ default : ComOut( CGM_LEVEL1, "UNKNOWN Application Data" ) break;
+ }
+ }
+ mnParaSize = mnElementSize;
+ break;
+ }
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
diff --git a/filter/source/graphicfilter/icgm/classx.cxx b/filter/source/graphicfilter/icgm/classx.cxx
new file mode 100644
index 000000000000..a63c41d545b9
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/classx.cxx
@@ -0,0 +1,262 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <main.hxx>
+#include <outact.hxx>
+
+// ---------------------------------------------------------------
+
+#define ImplSetUnderlineMode() \
+ \
+ sal_uInt32 nMode = ImplGetUI16(); \
+ switch ( nMode ) \
+ { \
+ case 1 : pElement->eUnderlineMode = UM_LOW; break; \
+ case 2 : pElement->eUnderlineMode = UM_HIGH; break; \
+ case 4 : pElement->eUnderlineMode = UM_STRIKEOUT; break;\
+ case 8 : pElement->eUnderlineMode = UM_OVERSCORE; break;\
+ default: pElement->eUnderlineMode = UM_OFF; break; \
+ } \
+ pElement->nUnderlineColor = ImplGetBitmapColor();
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass6()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL1, "Escape" )
+ {
+ long nIdentifier = ImplGetI( pElement->nIntegerPrecision );
+ switch ( nIdentifier )
+ {
+ case 0 : ComOut( CGM_DESCRIPTION, "inquire function support" ) break;
+ case -1 : ComOut( CGM_DESCRIPTION, "set underline mode" )
+ {
+ ImplSetUnderlineMode()
+ }
+ break;
+ case -2 : ComOut( CGM_DESCRIPTION, "set script mode" ) break;
+ case -3 : ComOut( CGM_DESCRIPTION, "set shadow mode" ) break;
+ case -6 : ComOut( CGM_DESCRIPTION, "inquire origin offset" ) break;
+ case -8 : ComOut( CGM_DESCRIPTION, "set media size" ) break;
+ case -10 : ComOut( CGM_DESCRIPTION, "set character mode" ) break;
+ case -14 : ComOut( CGM_DESCRIPTION, "resolution mode" ) break;
+ case -17 : ComOut( CGM_DESCRIPTION, "line cap" ) break;
+ case -18 : ComOut( CGM_DESCRIPTION, "line join" ) break;
+ case -19 : ComOut( CGM_DESCRIPTION, "edge join" ) break;
+ case -30 : ComOut( CGM_DESCRIPTION, "media type" ) break;
+ case -31 : ComOut( CGM_DESCRIPTION, "number of copies" ) break;
+ case -32 : ComOut( CGM_DESCRIPTION, "orientation" ) break;
+ case -33 : ComOut( CGM_DESCRIPTION, "device color representation" ) break;
+ case -34 : ComOut( CGM_DESCRIPTION, "device font list" ) break;
+ case -35 : ComOut( CGM_DESCRIPTION, "color reversal mode" ) break;
+ case -36 : ComOut( CGM_DESCRIPTION, "line cap attributes" ) break;
+ case -37 : ComOut( CGM_DESCRIPTION, "begin effect" ) break;
+ case -38 : ComOut( CGM_DESCRIPTION, "end effect" ) break;
+ case -39 : ComOut( CGM_DESCRIPTION, "begin effect definition" ) break;
+ case -40 : ComOut( CGM_DESCRIPTION, "end effect definition" ) break;
+ case -41 : ComOut( CGM_DESCRIPTION, "end style definition" ) break;
+ case -42 : ComOut( CGM_DESCRIPTION, "begin eps data" ) break;
+ case -43 : ComOut( CGM_DESCRIPTION, "eps data" ) break;
+ case -44 : ComOut( CGM_DESCRIPTION, "end eps data" ) break;
+ case -45 : ComOut( CGM_DESCRIPTION, "set background style" ) break;
+ case -46 : ComOut( CGM_DESCRIPTION, "set eps mode" ) break;
+ case -47 : ComOut( CGM_DESCRIPTION, "fill mode" ) break;
+ case -48 : ComOut( CGM_DESCRIPTION, "begin symbol" ) break;
+ case -49 : ComOut( CGM_DESCRIPTION, "end symbol" ) break;
+ case -50 : ComOut( CGM_DESCRIPTION, "begin layer" ) break;
+ case -51 : ComOut( CGM_DESCRIPTION, "end layer" ) break;
+ case -52 : ComOut( CGM_DESCRIPTION, "layer visibility" ) break;
+ case -53 : ComOut( CGM_DESCRIPTION, "inquire foreign data" ) break;
+ case -54 : ComOut( CGM_DESCRIPTION, "set text offset" ) break;
+ case -55 : ComOut( CGM_DESCRIPTION, "begin group" ) break;
+ case -56 : ComOut( CGM_DESCRIPTION, "end group" ) break;
+ case -100 : ComOut( CGM_DESCRIPTION, "begin patch" ) break;
+ case -101 : ComOut( CGM_DESCRIPTION, "end patch" ) break;
+ case -102 : ComOut( CGM_DESCRIPTION, "begin block text region" ) break;
+ case -103 : ComOut( CGM_DESCRIPTION, "end block text region" ) break;
+ case -120 : ComOut( CGM_DESCRIPTION, "region margins" ) break;
+ case -121 : ComOut( CGM_DESCRIPTION, "region expansions" ) break;
+ case -122 : ComOut( CGM_DESCRIPTION, "region anchor" ) break;
+ case -123 : ComOut( CGM_DESCRIPTION, "paragraph horizontal align" ) break;
+ case -124 : ComOut( CGM_DESCRIPTION, "paragraph vertical align" ) break;
+ case -125 : ComOut( CGM_DESCRIPTION, "region line flow" ) break;
+ case -130 : ComOut( CGM_DESCRIPTION, "paragraph spacing" ) break;
+ case -131 : ComOut( CGM_DESCRIPTION, "paragraph identation" ) break;
+ case -132 : ComOut( CGM_DESCRIPTION, "paragraph tabs" ) break;
+ case -133 : ComOut( CGM_DESCRIPTION, "paragraph bullet" ) break;
+ case -134 : ComOut( CGM_DESCRIPTION, "paragraph bulet level" ) break;
+ case -135 : ComOut( CGM_DESCRIPTION, "line horuzontal align" ) break;
+ case -136 : ComOut( CGM_DESCRIPTION, "line vertical align" ) break;
+ case -137 : ComOut( CGM_DESCRIPTION, "line spacing" ) break;
+ case -138 : ComOut( CGM_DESCRIPTION, "word wrap" ) break;
+ case -150 : ComOut( CGM_DESCRIPTION, "forward advance distance" ) break;
+ case -151 : ComOut( CGM_DESCRIPTION, "word spacing" ) break;
+ case -152 : ComOut( CGM_DESCRIPTION, "external leading" ) break;
+ case -160 : ComOut( CGM_DESCRIPTION, "set gradient offset" ) break;
+ case -161 : ComOut( CGM_DESCRIPTION, "set gradient edge" ) break;
+ case -162 : ComOut( CGM_DESCRIPTION, "set gradient angle" ) break;
+ case -163 : ComOut( CGM_DESCRIPTION, "set gradient description" ) break;
+ case -164 : ComOut( CGM_DESCRIPTION, "set gradient style" ) break;
+ case -165 : ComOut( CGM_DESCRIPTION, "set back ground style" ) break;
+ case -170 : ComOut( CGM_DESCRIPTION, "geometric pattern draw style" ) break;
+ case -190 : ComOut( CGM_DESCRIPTION, "set character width" ) break;
+ case -191 : ComOut( CGM_DESCRIPTION, "hyperlink definitions" ) break;
+ case -192 : ComOut( CGM_DESCRIPTION, "set color name for pantone" ) break;
+ case -32746 : ComOut( CGM_DESCRIPTION, "set text font" ) break;
+ case -32747 : ComOut( CGM_DESCRIPTION, "font selection mode" ) break;
+ case -32752 : ComOut( CGM_DESCRIPTION, "connecting edge" ) break;
+ case -32753 : ComOut( CGM_DESCRIPTION, "set drawing mode" ) break;
+ case -32754 : ComOut( CGM_DESCRIPTION, "inquire clip rectangle" ) break;
+ case -32755 : ComOut( CGM_DESCRIPTION, "protection region indicator" ) break;
+ case -32756 : ComOut( CGM_DESCRIPTION, "end protection region" ) break;
+ case -32757 : ComOut( CGM_DESCRIPTION, "begin protection region" ) break;
+ case -32758 : ComOut( CGM_DESCRIPTION, "geometric pattern definition" ) break;
+ case -32759 : ComOut( CGM_DESCRIPTION, "hatch style definition" ) break;
+ case -32760 : ComOut( CGM_DESCRIPTION, "close figure" ) break;
+ case -32761 : ComOut( CGM_DESCRIPTION, "end figure" )
+ {
+ mpOutAct->EndFigure();
+ mbFigure = sal_False;
+ }
+ break;
+ case -32762 : ComOut( CGM_DESCRIPTION, "begin figure" )
+ {
+ mbFigure = sal_True;
+ mpOutAct->BeginFigure();
+ }
+ break;
+ case -32763 : ComOut( CGM_DESCRIPTION, "pop transformatin" ) break;
+ case -32764 : ComOut( CGM_DESCRIPTION, "push transformation" ) break;
+ case -32765 : ComOut( CGM_DESCRIPTION, "copy segment" ) break;
+ case -32766 : ComOut( CGM_DESCRIPTION, "endseg" ) break;
+ case -32767 : ComOut( CGM_DESCRIPTION, "begin segment" ) break;
+ default : ComOut( CGM_DESCRIPTION, "????????????????????????????????" ) break;
+ }
+ mnParaSize = mnElementSize;
+ }
+ break;
+ case 0x02 : ComOut( CGM_LEVEL1, "Get Escape" ) break;
+ case 0x11 : ComOut( CGM_GDSF_ONLY, "Set Underline Mode" )
+ {
+ ImplSetUnderlineMode();
+ }
+ break;
+ case 0x12 : ComOut( CGM_GDSF_ONLY, "Set Script Mode" ) break;
+ case 0x13 : ComOut( CGM_GDSF_ONLY, "Set Shadow Mode" ) break;
+ case 0x18 : ComOut( CGM_GDSF_ONLY, "Set Media Size" ) break;
+ case 0x20 : ComOut( CGM_GDSF_ONLY, "Set Character Mode" ) break;
+ case 0x24 : ComOut( CGM_GDSF_ONLY, "Resolution Mode" ) break;
+ case 0x27 : ComOut( CGM_GDSF_ONLY, "Line Cap" ) break;
+ case 0x28 : ComOut( CGM_GDSF_ONLY, "Line Join" ) break;
+ case 0x29 : ComOut( CGM_GDSF_ONLY, "Edge Join" ) break;
+ case 0x40 : ComOut( CGM_GDSF_ONLY, "Media Type" ) break;
+ case 0x41 : ComOut( CGM_GDSF_ONLY, "Number of Copies" ) break;
+ case 0x42 : ComOut( CGM_GDSF_ONLY, "Origin" ) break;
+ case 0x45 : ComOut( CGM_GDSF_ONLY, "Color Reversal Mode" ) break;
+ case 0x46 : ComOut( CGM_GDSF_ONLY, "Line Cap Attributes" ) break;
+ case 0x49 : ComOut( CGM_GDSF_ONLY, "Begin Effect Definition" ) break;
+ case 0x50 : ComOut( CGM_GDSF_ONLY, "End Effect Definition" ) break;
+ case 0x51 : ComOut( CGM_GDSF_ONLY, "Line End Style Attributes" ) break;
+ case 0x52 : ComOut( CGM_GDSF_ONLY, "Begin Data" ) break;
+ case 0x53 : ComOut( CGM_GDSF_ONLY, "Data" ) break;
+ case 0x54 : ComOut( CGM_GDSF_ONLY, "End Data" ) break;
+ case 0x55 : ComOut( CGM_GDSF_ONLY, "Set Background Style" ) break;
+ case 0x56 : ComOut( CGM_GDSF_ONLY, "Set EPS Mode" ) break;
+ case 0x57 : ComOut( CGM_GDSF_ONLY, "Fill Mode" ) break;
+ case 0x58 : ComOut( CGM_GDSF_ONLY, "Begin Symbol" ) break;
+ case 0x59 : ComOut( CGM_GDSF_ONLY, "End Symbol" ) break;
+ case 0x60 : ComOut( CGM_GDSF_ONLY, "Begin Layer" ) break;
+ case 0x61 : ComOut( CGM_GDSF_ONLY, "End Layer" ) break;
+ case 0x62 : ComOut( CGM_GDSF_ONLY, "Layer Visibility" ) break;
+ case 0x64 : ComOut( CGM_GDSF_ONLY, "Set Text Offset" ) break;
+ case 0xFF : ComOut( CGM_GDSF_ONLY, "Inquire Function Support" ) break;
+ case 0xFE : ComOut( CGM_GDSF_ONLY, "Inquire Origin" ) break;
+ case 0xFD : ComOut( CGM_GDSF_ONLY, "Inquire Foreign Data Mode" ) break;
+ case 0xFC : ComOut( CGM_GDSF_ONLY, "Inquire Text Extent" ) break;
+ case 0xFB : ComOut( CGM_GDSF_ONLY, "Inquire DPI" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass8()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_LEVEL2, "Copy Segment" ) break; // NS
+ case 0x02 : ComOut( CGM_LEVEL2, "Inheritance Filter" ) break; // NS
+ case 0x03 : ComOut( CGM_LEVEL2, "Clip Inheritance" ) break; // NS
+ case 0x04 : ComOut( CGM_LEVEL2, "Segment Transformation" ) break;
+ case 0x05 : ComOut( CGM_LEVEL2, "Segment HighLighting" ) break; // NS
+ case 0x06 : ComOut( CGM_LEVEL2, "Segment Display Priority" ) break; // NS
+ case 0x07 : ComOut( CGM_LEVEL2, "Segment Pick Priority" ) break; // NS
+ case 0xfe : ComOut( CGM_GDSF_ONLY, "INQ Current Position" ) break;
+ case 0xff : ComOut( CGM_GDSF_ONLY, "INQ Inserted Object Extent" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break; // NS
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass9()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_UNKNOWN_LEVEL, "Pixel Array" ) break; // NS
+ case 0x02 : ComOut( CGM_UNKNOWN_LEVEL, "Create Bitmap" ) break; // NS
+ case 0x03 : ComOut( CGM_UNKNOWN_LEVEL, "Delete Bitmap" ) break; // NS
+ case 0x04 : ComOut( CGM_UNKNOWN_LEVEL, "Select Drawing Bitmap" ) break; // NS
+ case 0x05 : ComOut( CGM_UNKNOWN_LEVEL, "Display Bitmap" ) break; // NS
+ case 0x06 : ComOut( CGM_UNKNOWN_LEVEL, "Drawing Mode" ) break;
+ case 0x07 : ComOut( CGM_UNKNOWN_LEVEL, "Mapped Bitmap ForeGrnd Color" ) break; // NS
+ case 0x08 : ComOut( CGM_UNKNOWN_LEVEL, "Fill Bitmap" ) break; // NS
+ case 0x09 : ComOut( CGM_UNKNOWN_LEVEL, "Two Operand BitBlt" ) break; // NS
+ case 0x0a : ComOut( CGM_UNKNOWN_LEVEL, "Three Operand BitBlt" ) break; // NS
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+// ---------------------------------------------------------------
+
+void CGM::ImplDoClass15()
+{
+ switch ( mnElementID )
+ {
+ case 0x01 : ComOut( CGM_UNKNOWN_LEVEL, "Inquire Error Stack" ) break;
+ case 0x02 : ComOut( CGM_UNKNOWN_LEVEL, "Pop Error Stack" ) break;
+ case 0x03 : ComOut( CGM_UNKNOWN_LEVEL, "Empty Error Stack" ) break;
+ default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
+ }
+};
+
+// ---------------------------------------------------------------
diff --git a/filter/source/graphicfilter/icgm/elements.cxx b/filter/source/graphicfilter/icgm/elements.cxx
new file mode 100644
index 000000000000..305ca1d73834
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/elements.cxx
@@ -0,0 +1,395 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include "elements.hxx"
+
+// ---------------------------------------------------------------
+
+
+CGMElements::CGMElements( CGM& rCGM ) :
+ mpCGM ( &rCGM )
+{
+ Init();
+};
+
+// ---------------------------------------------------------------
+
+CGMElements::~CGMElements()
+{
+ DeleteTable( aHatchTable );
+ DeleteAllBundles( aLineList );
+ DeleteAllBundles( aMarkerList );
+ DeleteAllBundles( aEdgeList );
+ DeleteAllBundles( aTextList );
+ DeleteAllBundles( aFillList );
+}
+
+// ---------------------------------------------------------------
+
+CGMElements& CGMElements::operator=( CGMElements& rSource )
+{
+ sal_uInt32 nIndex;
+
+ nVDCIntegerPrecision = rSource.nVDCIntegerPrecision;
+ nIntegerPrecision = rSource.nIntegerPrecision;
+ eRealPrecision = rSource.eRealPrecision;
+ nRealSize = rSource.nRealSize;
+ nIndexPrecision = rSource.nIndexPrecision;
+ nColorPrecision = rSource.nColorPrecision;
+ nColorIndexPrecision = rSource.nColorIndexPrecision;
+
+ nMetaFileVersion = rSource.nMetaFileVersion;
+ eScalingMode = rSource.eScalingMode;
+ nScalingFactor = rSource.nScalingFactor;
+ eVDCType = rSource.eVDCType;
+ eVDCRealPrecision = rSource.eVDCRealPrecision;
+ nVDCRealSize = rSource.nVDCRealSize;
+ aVDCExtent = rSource.aVDCExtent;
+ aVDCExtentMaximum = rSource.aVDCExtentMaximum;
+ eDeviceViewPortMode = rSource.eDeviceViewPortMode;
+ nDeviceViewPortScale = rSource.nDeviceViewPortScale;
+ eDeviceViewPortMap = rSource.eDeviceViewPortMap;
+ eDeviceViewPortMapH = rSource.eDeviceViewPortMapH;
+ eDeviceViewPortMapV = rSource.eDeviceViewPortMapV;
+ aDeviceViewPort = rSource.aDeviceViewPort;
+ nMitreLimit = rSource.nMitreLimit;
+ eClipIndicator = rSource.eClipIndicator;
+ aClipRect = rSource.aClipRect;
+ eColorSelectionMode = rSource.eColorSelectionMode;
+ eColorModel = rSource.eColorModel;
+ nColorMaximumIndex = rSource.nColorMaximumIndex;
+ nLatestColorMaximumIndex = rSource.nLatestColorMaximumIndex;
+
+ for ( nIndex = 1; nIndex < 256; nIndex++ ) // do not overwrite the background color
+ {
+ aColorTableEntryIs[ nIndex ] = rSource.aColorTableEntryIs[ nIndex ];
+ aColorTable[ nIndex ] = rSource.aColorTable[ nIndex ];
+ aLatestColorTable[ nIndex ] = rSource.aColorTable[ nIndex ];
+ }
+
+ for ( nIndex = 0; nIndex < 8; nIndex++ )
+ {
+ nColorValueExtent[ nIndex ] = rSource.nColorValueExtent[ nIndex ];
+ }
+ nAspectSourceFlags = rSource.nAspectSourceFlags;
+
+ CopyAllBundles( rSource.aLineList, aLineList );
+ aLineBundle = rSource.aLineBundle;
+ pLineBundle = (LineBundle*)GetBundle( aLineList, rSource.pLineBundle->GetIndex() );
+ eLineWidthSpecMode = rSource.eLineWidthSpecMode;
+ eLineCapType = rSource.eLineCapType;
+ eLineJoinType = rSource.eLineJoinType;
+
+ CopyAllBundles( rSource.aMarkerList, aMarkerList );
+ aMarkerBundle = rSource.aMarkerBundle;
+ pMarkerBundle = (MarkerBundle*)GetBundle( aMarkerList, rSource.pMarkerBundle->GetIndex() );
+ eMarkerSizeSpecMode = rSource.eMarkerSizeSpecMode;
+
+ CopyAllBundles( rSource.aEdgeList, aEdgeList );
+ aEdgeBundle = rSource.aEdgeBundle;
+ pEdgeBundle = (EdgeBundle*)GetBundle( aEdgeList, rSource.pEdgeBundle->GetIndex() );
+ eEdgeVisibility = rSource.eEdgeVisibility;
+ eEdgeWidthSpecMode = rSource.eEdgeWidthSpecMode;
+
+ CopyAllBundles( rSource.aTextList, aTextList );
+ aTextBundle = rSource.aTextBundle;
+ pTextBundle = (TextBundle*)GetBundle( aTextList, rSource.pTextBundle->GetIndex() );
+ nCharacterHeight = rSource.nCharacterHeight;
+ nCharacterOrientation[ 0 ] = rSource.nCharacterOrientation[ 0 ];
+ nCharacterOrientation[ 1 ] = rSource.nCharacterOrientation[ 1 ];
+ nCharacterOrientation[ 2 ] = rSource.nCharacterOrientation[ 2 ];
+ nCharacterOrientation[ 3 ] = rSource.nCharacterOrientation[ 3 ];
+ eUnderlineMode = rSource.eUnderlineMode;
+ nUnderlineColor = rSource.nUnderlineColor;
+ eTextPath = rSource.eTextPath;
+ eTextAlignmentH = rSource.eTextAlignmentH;
+ eTextAlignmentV = rSource.eTextAlignmentV;
+ nTextAlignmentHCont = rSource.nTextAlignmentHCont;
+ nTextAlignmentVCont = rSource.nTextAlignmentVCont;
+ nCharacterSetIndex = rSource.nCharacterSetIndex;
+ nAlternateCharacterSetIndex = rSource.nAlternateCharacterSetIndex;
+ aFontList = rSource.aFontList;
+ eCharacterCodingA = rSource.eCharacterCodingA;
+
+ CopyAllBundles( rSource.aFillList, aFillList );
+ aFillBundle = rSource.aFillBundle;
+ pFillBundle = (FillBundle*)GetBundle( aFillList, rSource.pFillBundle->GetIndex() );
+ aFillRefPoint = rSource.aFillRefPoint;
+ eTransparency = rSource.eTransparency;
+ nAuxiliaryColor = rSource.nAuxiliaryColor;
+
+ DeleteTable( aHatchTable );
+ HatchEntry* pSource = (HatchEntry*)rSource.aHatchTable.First();
+ while ( pSource )
+ {
+ sal_uInt32 nKey = rSource.aHatchTable.GetKey( pSource );
+ aHatchTable.Insert( nKey, new HatchEntry( *pSource ) );
+ pSource = (HatchEntry*)rSource.aHatchTable.Next();
+ }
+ bSegmentCount = rSource.bSegmentCount;
+ return (*this);
+}
+
+// ---------------------------------------------------------------
+
+void CGMElements::Init()
+{
+
+ nIntegerPrecision = nIndexPrecision = 2;
+ nRealSize = nVDCRealSize = 4;
+ nColorIndexPrecision = 1;
+ nColorPrecision = 1;
+ nVDCIntegerPrecision = 2;
+ eRealPrecision = eVDCRealPrecision = RP_FIXED; //RP_FLOAT;
+
+ nMetaFileVersion = 1;
+ eScalingMode = SM_ABSTRACT;
+ eVDCType = VDC_INTEGER;
+ aVDCExtent.Left = aVDCExtent.Bottom = 0;
+// aVDCExtent.Right = aVDCExtent.Top = 32767;
+ aVDCExtent.Right = aVDCExtent.Top = 1.0;
+ aVDCExtentMaximum.Left = aVDCExtentMaximum.Bottom = 0;
+// aVDCExtentMaximum.Right = aVDCExtentMaximum.Top = 32767;
+ aVDCExtentMaximum.Right = aVDCExtentMaximum.Top = 1.0;
+
+ eDeviceViewPortMode = DVPM_FRACTION;
+ nDeviceViewPortScale = 1;
+ eDeviceViewPortMap = DVPM_FORCED;
+ eDeviceViewPortMapH = DVPMH_LEFT;
+ eDeviceViewPortMapV = DVPMV_BOTTOM;
+ aDeviceViewPort.Left = 0;
+ aDeviceViewPort.Top = 1;
+ aDeviceViewPort.Right = 0;
+ aDeviceViewPort.Bottom = 1;
+
+ nMitreLimit = 32767;
+ eClipIndicator = CI_ON;
+ aClipRect = aVDCExtent;
+
+ eColorSelectionMode = CSM_INDEXED;
+ eColorModel = CM_RGB;
+ nColorMaximumIndex = 63;
+ int i;
+ for ( i = 0; i < 256; aColorTableEntryIs[ i++ ] = 0 ) ;
+ aColorTable[ 0 ] = 0;
+ for ( i = 1; i < 256; aColorTable[ i++ ] = 0xffffff ) ;
+ nLatestColorMaximumIndex = 63;
+ aLatestColorTable[ 0 ] = 0;
+ for ( i = 1; i < 256; aLatestColorTable[ i++ ] = 0xffffff ) ;
+ nColorValueExtent[ 0 ] = nColorValueExtent[ 1 ] = nColorValueExtent[ 2 ] = 0;
+ nColorValueExtent[ 3 ] = nColorValueExtent[ 4 ] = nColorValueExtent[ 5 ] = 255;
+
+ nAspectSourceFlags = 0; // all flags are individual
+
+ eLineWidthSpecMode = SM_SCALED; // line parameter
+ eLineCapType = LCT_NONE;
+ eLineJoinType = LJT_NONE;
+ pLineBundle = &aLineBundle; // line bundle parameter
+ aLineBundle.SetIndex( 1 );
+ aLineBundle.eLineType = LT_SOLID;
+ aLineBundle.nLineWidth = 1;
+ aLineBundle.SetColor( 0xffffff );
+ InsertBundle( aLineList, aLineBundle );
+
+ eMarkerSizeSpecMode = SM_SCALED; // marker parameter
+ pMarkerBundle = &aMarkerBundle; // marker bundle parameter
+ aMarkerBundle.SetIndex( 1 );
+ aMarkerBundle.eMarkerType = MT_STAR;
+ aMarkerBundle.nMarkerSize = 1;
+ aMarkerBundle.SetColor( 0xffffff );
+ InsertBundle( aMarkerList, aMarkerBundle );
+
+ eEdgeVisibility = EV_OFF; // edge parameter
+ eEdgeWidthSpecMode = SM_SCALED;
+ pEdgeBundle = &aEdgeBundle; // edge bundle parameter
+ aEdgeBundle.SetIndex( 1 );
+ aEdgeBundle.eEdgeType = ET_SOLID;
+ aEdgeBundle.nEdgeWidth = 1;
+ aEdgeBundle.SetColor( 0xffffff );
+ InsertBundle( aEdgeList, aEdgeBundle );
+
+ nCharacterHeight = 327; // text parameter
+ nCharacterOrientation[0] = 0;
+ nCharacterOrientation[1] = 1;
+ nCharacterOrientation[2] = 1;
+ nCharacterOrientation[3] = 0;
+ eUnderlineMode = UM_OFF;
+ nUnderlineColor = 0xffffff;
+ eTextPath = TPR_RIGHT;
+ eTextAlignmentH = TAH_NORMAL;
+ eTextAlignmentV = TAV_NORMAL;
+ nCharacterSetIndex = nAlternateCharacterSetIndex = 1;
+ eCharacterCodingA = CCA_BASIC_7;
+ pTextBundle = &aTextBundle; // text bundle parameter
+ aTextBundle.SetIndex( 1 );
+ aTextBundle.nTextFontIndex = 1;
+ aTextBundle.eTextPrecision = TPR_STRING;
+ aTextBundle.nCharacterExpansion = 1;
+ aTextBundle.nCharacterSpacing = 0;
+ aTextBundle.SetColor( 0xffffff );
+ InsertBundle( aTextList, aTextBundle );
+
+ pFillBundle = &aFillBundle; // fill bundle parameter
+ aFillBundle.SetIndex( 1 );
+ aFillBundle.eFillInteriorStyle = FIS_HOLLOW;
+ aFillBundle.nFillHatchIndex = 1;
+ aFillBundle.nFillPatternIndex = 1;
+ aFillBundle.SetColor( 0xffffff );
+ InsertBundle( aFillList, aFillBundle );
+
+ ImplInsertHatch( 0, 0, 0, 0 );
+ ImplInsertHatch( 1, 0, 125, 0 );
+ ImplInsertHatch( 2, 0, 125, 900 );
+ ImplInsertHatch( 3, 0, 125, 450 );
+ ImplInsertHatch( 4, 0, 125, 1350 );
+ ImplInsertHatch( 5, 1, 125, 0 );
+ ImplInsertHatch( 6, 1, 125, 450 );
+ ImplInsertHatch( -1, 0, 75, 0 );
+ ImplInsertHatch( -2, 0, 75, 900 );
+ ImplInsertHatch( -3, 0, 75, 450 );
+ ImplInsertHatch( -4, 0, 75, 1350 );
+ ImplInsertHatch( -5, 1, 75, 0 );
+ ImplInsertHatch( -6, 1, 75, 450 );
+ ImplInsertHatch( -7, 2, 125, 0 );
+ ImplInsertHatch( -8, 2, 125, 900 );
+ ImplInsertHatch( -9, 2, 125, 450 );
+ ImplInsertHatch( -10, 2, 125, 1350 );
+ ImplInsertHatch( -11, 0, 40, 0 );
+ ImplInsertHatch( -12, 0, 40, 900 );
+ ImplInsertHatch( -13, 0, 40, 450 );
+ ImplInsertHatch( -14, 0, 40, 1350 );
+ ImplInsertHatch( -15, 1, 40, 0 );
+ ImplInsertHatch( -16, 1, 40, 900 );
+ ImplInsertHatch( -21, 0, 250, 0 );
+ ImplInsertHatch( -22, 0, 250, 900 );
+ ImplInsertHatch( -23, 0, 250, 450 );
+ ImplInsertHatch( -24, 0, 250, 1350 );
+ ImplInsertHatch( -25, 1, 250, 0 );
+ ImplInsertHatch( -26, 1, 250, 450 );
+
+ eTransparency = T_ON;
+
+ nBackGroundColor = nAuxiliaryColor = 0;
+
+ bSegmentCount = sal_False;
+}
+
+// ---------------------------------------------------------------
+
+void CGMElements::ImplInsertHatch( sal_Int32 nKey, int nStyle, long nDistance, long nAngle )
+{
+ HatchEntry* pHatchEntry;
+ pHatchEntry = new HatchEntry;
+ aHatchTable.Insert( (sal_uInt32)nKey, pHatchEntry );
+ pHatchEntry->HatchStyle = nStyle;
+ pHatchEntry->HatchDistance = nDistance;
+ pHatchEntry->HatchAngle = nAngle;
+}
+
+// ---------------------------------------------------------------
+
+void CGMElements::DeleteTable( Table& rTable )
+{
+ HatchEntry* pPtr = (HatchEntry*)rTable.First();
+ while ( pPtr )
+ {
+ delete pPtr;
+ pPtr = (HatchEntry*)rTable.Next();
+ }
+ rTable.Clear();
+}
+
+// ---------------------------------------------------------------
+
+void CGMElements::DeleteAllBundles( List& rList )
+{
+ void* pPtr = rList.First();
+ while( pPtr )
+ {
+ delete (Bundle*)pPtr;
+ pPtr = rList.Next();
+ }
+};
+
+
+// ---------------------------------------------------------------
+
+void CGMElements::CopyAllBundles( List& rSource, List& rDest )
+{
+ DeleteAllBundles( rDest );
+ rDest.Clear();
+
+ void* pPtr = rSource.First();
+ while( pPtr )
+ {
+ Bundle* pTempBundle = ( (Bundle*)pPtr)->Clone();
+ rDest.Insert( pTempBundle, LIST_APPEND );
+ pPtr = rSource.Next();
+ }
+};
+
+// ---------------------------------------------------------------
+
+Bundle* CGMElements::GetBundleIndex( sal_uInt32 nIndex, List& rList, Bundle& rBundle )
+{
+ rBundle.SetIndex( nIndex );
+ Bundle* pBundle = GetBundle( rList, nIndex );
+ if ( !pBundle )
+ pBundle = InsertBundle( rList, rBundle );
+ return pBundle;
+}
+
+// ---------------------------------------------------------------
+
+Bundle* CGMElements::GetBundle( List& rList, long nIndex )
+{
+ Bundle* pBundle = (Bundle*)rList.First();
+ while( pBundle && ( pBundle->GetIndex() != nIndex ) )
+ {
+ pBundle = (Bundle*)rList.Next();
+ }
+ return pBundle;
+}
+
+// ---------------------------------------------------------------
+
+Bundle* CGMElements::InsertBundle( List& rList, Bundle& rBundle )
+{
+ Bundle* pBundle = GetBundle( rList, rBundle.GetIndex() );
+ if ( pBundle )
+ {
+ rList.Remove( pBundle );
+ delete pBundle;
+ }
+ pBundle = rBundle.Clone();
+ rList.Insert( pBundle, LIST_APPEND );
+ return pBundle;
+};
+
diff --git a/filter/source/graphicfilter/icgm/elements.hxx b/filter/source/graphicfilter/icgm/elements.hxx
new file mode 100644
index 000000000000..32614ef2590e
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/elements.hxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * 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 CGM_ELEMENTS_HXX_
+#define CGM_ELEMENTS_HXX_
+
+#include "main.hxx"
+#include <tools/table.hxx>
+
+#define nBackGroundColor aColorTable[ 0 ]
+
+class CGMElements
+{
+ void ImplInsertHatch( sal_Int32 Key, int Style, long Distance, long Angle );
+ public:
+ CGM* mpCGM;
+ long nMetaFileVersion;
+
+ sal_uInt32 nIntegerPrecision; // maybe 1, 2, 4 Bytes
+ sal_uInt32 nIndexPrecision; // " " "
+ RealPrecision eRealPrecision;
+ sal_uInt32 nRealSize; // maybe 4 or 8 bytes
+ sal_uInt32 nColorPrecision; // " " "
+ sal_uInt32 nColorIndexPrecision;// " " "
+
+ ScalingMode eScalingMode;
+ double nScalingFactor;
+
+ VDCType eVDCType; // Integer / Real
+ sal_uInt32 nVDCIntegerPrecision;
+ RealPrecision eVDCRealPrecision;
+ sal_uInt32 nVDCRealSize;
+ FloatRect aVDCExtent;
+ FloatRect aVDCExtentMaximum;
+
+ DeviceViewPortMode eDeviceViewPortMode;
+ double nDeviceViewPortScale;
+ DeviceViewPortMap eDeviceViewPortMap;
+ DeviceViewPortMapH eDeviceViewPortMapH;
+ DeviceViewPortMapV eDeviceViewPortMapV;
+ FloatRect aDeviceViewPort;
+
+ double nMitreLimit;
+
+ ClipIndicator eClipIndicator;
+ FloatRect aClipRect;
+
+ ColorSelectionMode eColorSelectionMode;
+ ColorModel eColorModel;
+ sal_uInt32 nColorMaximumIndex; // default 63
+ sal_uInt32 nLatestColorMaximumIndex; // default 63
+ sal_Int8 aColorTableEntryIs[ 256 ];
+ sal_uInt32 aColorTable[ 256 ];
+ sal_uInt32 aLatestColorTable[ 256 ];
+ sal_uInt32 nColorValueExtent[ 8 ]; // RGB, CMYK
+
+ // ASPECT SOURCE FLAGS
+ sal_uInt32 nAspectSourceFlags; // bit = 0 -> INDIVIDUAL
+ // 1 -> BUNDLED
+
+ LineBundle* pLineBundle; // Pointer to the current LineBundleIndex
+ LineBundle aLineBundle;
+ List aLineList;
+ SpecMode eLineWidthSpecMode;
+ LineCapType eLineCapType;
+ LineJoinType eLineJoinType;
+
+ MarkerBundle* pMarkerBundle; // Pointer to the current MarkerBundleIndex
+ MarkerBundle aMarkerBundle;
+ List aMarkerList;
+ SpecMode eMarkerSizeSpecMode;
+
+ EdgeBundle* pEdgeBundle; // Pointer to the current EdgeBundleIndex
+ EdgeBundle aEdgeBundle;
+ List aEdgeList;
+ EdgeVisibility eEdgeVisibility;
+ SpecMode eEdgeWidthSpecMode;
+
+ TextBundle* pTextBundle; // Pointer to the current TextBundleIndex
+ TextBundle aTextBundle;
+ List aTextList;
+ double nCharacterHeight;
+ double nCharacterOrientation[ 4 ];
+ UnderlineMode eUnderlineMode;
+ sal_uInt32 nUnderlineColor;
+ TextPath eTextPath;
+ TextAlignmentH eTextAlignmentH;
+ TextAlignmentV eTextAlignmentV;
+ double nTextAlignmentHCont;
+ double nTextAlignmentVCont;
+ long nCharacterSetIndex;
+ long nAlternateCharacterSetIndex;
+ CharacterCodingA eCharacterCodingA;
+ CGMFList aFontList;
+
+ FillBundle* pFillBundle; // Pointer to the current EdgeBundleIndex
+ FillBundle aFillBundle;
+ List aFillList;
+ FloatPoint aFillRefPoint;
+ Table aHatchTable;
+
+ Transparency eTransparency;
+
+ sal_uInt32 nAuxiliaryColor;
+
+ // Delimiter Counts -> which will be increased by each 'begin' operation
+ // and decreased by each 'end' operation
+ sal_Bool bSegmentCount;
+ CGMElements( CGM& rCGM );
+ ~CGMElements();
+ CGMElements& operator=( CGMElements& );
+ void Init();
+ void DeleteTable( Table& );
+ Bundle* GetBundleIndex( sal_uInt32 nIndex, List&, Bundle& );
+ Bundle* GetBundle( List& rList, long nIndex );
+ Bundle* InsertBundle( List&, Bundle& );
+ void DeleteAllBundles( List& );
+ void CopyAllBundles( List& Source, List& Dest );
+};
+
+#endif
+
diff --git a/filter/source/graphicfilter/icgm/exports.map b/filter/source/graphicfilter/icgm/exports.map
new file mode 100644
index 000000000000..eaa1db885d5e
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/exports.map
@@ -0,0 +1,7 @@
+CGMIMPORTER_1_0 {
+ global:
+ ImportCGM;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/icgm/main.hxx b/filter/source/graphicfilter/icgm/main.hxx
new file mode 100644
index 000000000000..675d7149d12e
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/main.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * 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 CGM_MAIN_HXX
+#define CGM_MAIN_HXX
+
+#include "cgm.hxx"
+
+// ---------------------------------------------------------------
+
+#define CGM_LEVEL1 0x0001 // VERSION 1 METAFILE
+#define CGM_LEVEL2 0x0002
+#define CGM_LEVEL3 0x0003
+#define CGM_GDSF_ONLY 0x00F0
+#define CGM_UNKNOWN_LEVEL 0x00F1
+#define CGM_UNKNOWN_COMMAND 0x00F2
+#define CGM_DESCRIPTION 0x00F3
+
+#define CGM_EXTENDED_PRIMITIVES_SET 0x0100 // INDICATES PRIMITIVES WHICH ARE AVAILABLE IN
+ // LEVEL 1 BUT ARE NOT DEFINED IN ISO 7942(GKS)
+#define CGM_DRAWING_PLUS_CONTROL_SET 0x0200 // INDICATES THAT THIS IS AN ADDITIONAL LEVEL 1
+ // ELEMENT
+#define ComOut( Level, Description ) if ( mpCommentOut ) ImplComment( Level, Description );
+
+#define BMCOL( _col ) BitmapColor( (sal_Int8)(_col >> 16 ), (sal_Int8)( _col >> 8 ), (sal_Int8)_col )
+#define ALIGN2( _nElementSize ) { _nElementSize = ( _nElementSize + 1 ) & ~1; }
+#define ALIGN4( _nElementSize ) { _nElementSize = ( _nElementSize + 3 ) & ~3; }
+#define ALIGN8( _nElementSize ) { _nElementSize = ( _nElementSize + 7 ) & ~7; }
+
+#include <vcl/salbtype.hxx>
+#include <tools/stream.hxx>
+#include <tools/list.hxx>
+#include "bundles.hxx"
+#include "bitmap.hxx"
+#include "elements.hxx"
+
+
+#endif
+
diff --git a/filter/source/graphicfilter/icgm/makefile.mk b/filter/source/graphicfilter/icgm/makefile.mk
new file mode 100644
index 000000000000..f8dc889086f5
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/makefile.mk
@@ -0,0 +1,80 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+PRJNAME=filter
+TARGET=icgm
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/cgm.obj \
+ $(SLO)$/chart.obj \
+ $(SLO)$/class0.obj \
+ $(SLO)$/class1.obj \
+ $(SLO)$/class2.obj \
+ $(SLO)$/class3.obj \
+ $(SLO)$/class4.obj \
+ $(SLO)$/class5.obj \
+ $(SLO)$/class7.obj \
+ $(SLO)$/classx.obj \
+ $(SLO)$/outact.obj \
+ $(SLO)$/actimpr.obj \
+ $(SLO)$/bundles.obj \
+ $(SLO)$/bitmap.obj \
+ $(SLO)$/elements.obj
+# $(SLO)$/svdem.obj
+
+SHL1TARGET = icg$(DLLPOSTFIX)
+SHL1IMPLIB = icgm
+SHL1VERSIONMAP=exports.map
+SHL1DEF = $(MISC)$/$(SHL1TARGET).def
+SHL1LIBS = $(SLB)$/icgm.lib
+
+DEF1NAME=$(SHL1TARGET)
+
+.IF "$(GUI)"=="OS2"
+SHL1OBJS = $(SLO)$/class0.obj
+.ENDIF
+
+SHL1STDLIBS = \
+ $(TKLIB) \
+ $(VCLLIB) \
+ $(UNOTOOLSLIB) \
+ $(TOOLSLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+.ENDIF
+
+# --- Targets --------------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/filter/source/graphicfilter/icgm/outact.cxx b/filter/source/graphicfilter/icgm/outact.cxx
new file mode 100644
index 000000000000..6e7e9959a4c7
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/outact.cxx
@@ -0,0 +1,200 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <outact.hxx>
+#include <vcl/gradient.hxx>
+
+using namespace ::com::sun::star;
+
+// ---------------------------------------------------------------
+
+CGMOutAct::CGMOutAct( CGM& rCGM )
+{
+ mpCGM = &rCGM;
+ mnCurrentPage = 0;
+ mnGroupActCount = mnGroupLevel = 0;
+ mpGroupLevel = new sal_uInt32[ CGM_OUTACT_MAX_GROUP_LEVEL ];
+ mpPoints = (Point*)new sal_Int8[ 0x2000 * sizeof( Point ) ];
+ mpFlags = new BYTE[ 0x2000 ];
+
+ mnIndex = 0;
+ mpGradient = NULL;
+};
+
+// ---------------------------------------------------------------
+
+CGMOutAct::~CGMOutAct()
+{
+ delete[] (sal_Int8*) mpPoints;
+ delete[] mpFlags;
+ delete[] mpGroupLevel;
+
+ if ( mpGradient )
+ delete mpGradient;
+};
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::BeginFigure()
+{
+ if ( mnIndex )
+ EndFigure();
+
+ BeginGroup();
+ mnIndex = 0;
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::CloseRegion()
+{
+ if ( mnIndex > 2 )
+ {
+ NewRegion();
+ DrawPolyPolygon( maPolyPolygon );
+ maPolyPolygon.Clear();
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::NewRegion()
+{
+ if ( mnIndex > 2 )
+ {
+ Polygon aPolygon( mnIndex, mpPoints, mpFlags );
+ maPolyPolygon.Insert( aPolygon );
+ }
+ mnIndex = 0;
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::EndFigure()
+{
+ NewRegion();
+ DrawPolyPolygon( maPolyPolygon );
+ maPolyPolygon.Clear();
+ EndGroup();
+ mnIndex = 0;
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::RegPolyLine( Polygon& rPolygon, sal_Bool bReverse )
+{
+ USHORT nPoints = rPolygon.GetSize();
+ if ( nPoints )
+ {
+ if ( bReverse )
+ {
+ for ( USHORT i = 0; i < nPoints; i++ )
+ {
+ mpPoints[ mnIndex + i ] = rPolygon.GetPoint( nPoints - i - 1 );
+ mpFlags[ mnIndex + i ] = (sal_Int8)rPolygon.GetFlags( nPoints - i - 1 );
+ }
+ }
+ else
+ {
+ for ( USHORT i = 0; i < nPoints; i++ )
+ {
+ mpPoints[ mnIndex + i ] = rPolygon.GetPoint( i );
+ mpFlags[ mnIndex + i ] = (sal_Int8)rPolygon.GetFlags( i );
+ }
+ }
+ mnIndex = mnIndex + nPoints;
+ }
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::SetGradientOffset( long nHorzOfs, long nVertOfs, sal_uInt32 /*nType*/ )
+{
+ if ( !mpGradient )
+ mpGradient = new awt::Gradient;
+ mpGradient->XOffset = ( (sal_uInt16)nHorzOfs & 0x7f );
+ mpGradient->YOffset = ( (sal_uInt16)nVertOfs & 0x7f );
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::SetGradientAngle( long nAngle )
+{
+ if ( !mpGradient )
+ mpGradient = new awt::Gradient;
+ mpGradient->Angle = sal::static_int_cast< sal_Int16 >(nAngle);
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::SetGradientDescriptor( sal_uInt32 nColorFrom, sal_uInt32 nColorTo )
+{
+ if ( !mpGradient )
+ mpGradient = new awt::Gradient;
+ mpGradient->StartColor = nColorFrom;
+ mpGradient->EndColor = nColorTo;
+}
+
+// ---------------------------------------------------------------
+
+void CGMOutAct::SetGradientStyle( sal_uInt32 nStyle, double /*fRatio*/ )
+{
+ if ( !mpGradient )
+ mpGradient = new awt::Gradient;
+ switch ( nStyle )
+ {
+ case 0xff :
+ {
+ mpGradient->Style = awt::GradientStyle_AXIAL;
+ }
+ break;
+ case 4 :
+ {
+ mpGradient->Style = awt::GradientStyle_RADIAL; // CONICAL
+ }
+ break;
+ case 3 :
+ {
+ mpGradient->Style = awt::GradientStyle_RECT;
+ }
+ break;
+ case 2 :
+ {
+ mpGradient->Style = awt::GradientStyle_ELLIPTICAL;
+ }
+ break;
+ default :
+ {
+ mpGradient->Style = awt::GradientStyle_LINEAR;
+ }
+ }
+}
+
+
diff --git a/filter/source/graphicfilter/icgm/outact.hxx b/filter/source/graphicfilter/icgm/outact.hxx
new file mode 100644
index 000000000000..10c47dd14906
--- /dev/null
+++ b/filter/source/graphicfilter/icgm/outact.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * 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 CGM_OUTACT_HXX_
+#define CGM_OUTACT_HXX_
+
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/drawing/XDrawPages.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+
+
+#define CGM_OUTACT_MAX_GROUP_LEVEL 64
+
+#include "cgm.hxx"
+#include <chart.hxx>
+#include <tools/poly.hxx>
+
+typedef struct NodeFrameSet
+{
+ Point nTopLeft;
+ Point nBottomRight;
+ ::com::sun::star::awt::Size nSize;
+} NodeFrameSet;
+
+class CGM;
+class VclGradient;
+class CGMOutAct
+{
+ protected:
+ sal_uInt16 mnCurrentPage; // defaulted to zero
+
+ sal_uInt32 mnGroupActCount; // grouping
+ sal_uInt32 mnGroupLevel;
+ sal_uInt32* mpGroupLevel;
+
+ USHORT mnIndex; // figure
+ BYTE* mpFlags;
+ Point* mpPoints;
+ PolyPolygon maPolyPolygon;
+ ::com::sun::star::awt::Gradient* mpGradient;
+
+ CGM* mpCGM;
+
+ public:
+ CGMOutAct( CGM& rCGM );
+ virtual ~CGMOutAct();
+ virtual void FirstOutPut() { mpCGM->mbFirstOutPut = sal_False; } ;
+ virtual void InsertPage() { mnCurrentPage++; } ;
+ virtual void BeginGroup() {} ;
+ virtual void EndGroup() {};
+ virtual void EndGrouping() {} ;
+ void BeginFigure() ;
+ void CloseRegion() ;
+ void NewRegion() ;
+ void EndFigure() ;
+ void RegPolyLine( Polygon&, sal_Bool bReverse = sal_False ) ;
+ void SetGradientOffset( long nHorzOfs, long nVertOfs, sal_uInt32 nType );
+ void SetGradientAngle( long nAngle );
+ void SetGradientDescriptor( sal_uInt32 nColorFrom, sal_uInt32 nColorTo );
+ void SetGradientStyle( sal_uInt32 nStyle, double fRatio );
+ virtual void DrawRectangle( FloatRect& ) {} ;
+ virtual void DrawEllipse( FloatPoint&, FloatPoint&, double& ) {} ;
+ virtual void DrawEllipticalArc( FloatPoint&, FloatPoint&, double&,
+ sal_uInt32, double&, double&) {} ;
+ virtual void DrawBitmap( CGMBitmapDescriptor* ) {} ;
+ virtual void DrawPolygon( Polygon& ) {} ;
+ virtual void DrawPolyLine( Polygon& ) {} ;
+ virtual void DrawPolybezier( Polygon& ) {} ;
+ virtual void DrawPolyPolygon( PolyPolygon& ) {} ;
+ virtual void DrawText( ::com::sun::star::awt::Point&, ::com::sun::star::awt::Size&, char*, sal_uInt32, FinalFlag ) {} ;
+ virtual void AppendText( char*, sal_uInt32, FinalFlag ) {} ;
+ virtual sal_uInt32 DrawText( TextEntry*, NodeFrameSet&, sal_uInt32 ) { return 0; } ;
+ virtual void DrawChart(){} ;
+};
+
+class CGMImpressOutAct : public CGMOutAct
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > maXDrawPages;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > maXDrawPage;
+
+// ::com::sun::star::uno::Reference< XServiceRegistry > maXServiceRegistry;
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > maXMultiServiceFactory;
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > maXServiceManagerSC;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > maXShape;
+ sal_Bool ImplCreateShape( const ::rtl::OUString& rType );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > maXPropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > maXShapes;
+
+ sal_uInt32 nFinalTextCount;
+
+ sal_Bool ImplInitPage();
+ void ImplSetOrientation( FloatPoint& RefPoint, double& Orientation ) ;
+ void ImplSetLineBundle() ;
+ void ImplSetFillBundle() ;
+ void ImplSetTextBundle( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & ) ;
+public:
+ CGMImpressOutAct( CGM&, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & ) ;
+ ~CGMImpressOutAct() {} ;
+ virtual void InsertPage() ;
+ virtual void BeginGroup() ;
+ virtual void EndGroup() ;
+ virtual void EndGrouping() ;
+ virtual void DrawRectangle( FloatRect& ) ;
+ virtual void DrawEllipse( FloatPoint& center, FloatPoint&, double& Orientation ) ;
+ virtual void DrawEllipticalArc( FloatPoint& center, FloatPoint& size, double& orientation,
+ sal_uInt32 etype, double& startangle, double& endangle ) ;
+ virtual void DrawBitmap( CGMBitmapDescriptor* ) ;
+ virtual void DrawPolygon( Polygon& ) ;
+ virtual void DrawPolyLine( Polygon& ) ;
+ virtual void DrawPolybezier( Polygon& ) ;
+ virtual void DrawPolyPolygon( PolyPolygon& ) ;
+ virtual void DrawText( ::com::sun::star::awt::Point& TextRectPos, ::com::sun::star::awt::Size& TextRectSize, char* String, sal_uInt32 StringSize, FinalFlag ) ;
+ virtual void AppendText( char* String, sal_uInt32 StringSize, FinalFlag ) ;
+ virtual sal_uInt32 DrawText( TextEntry*, NodeFrameSet&, sal_uInt32 ) ;
+ virtual void DrawChart();
+};
+
+
+#endif
+
diff --git a/filter/source/graphicfilter/idxf/dxf2mtf.cxx b/filter/source/graphicfilter/idxf/dxf2mtf.cxx
new file mode 100644
index 000000000000..11e82f97b328
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxf2mtf.cxx
@@ -0,0 +1,980 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <vcl/gdimtf.hxx>
+#include <vcl/virdev.hxx>
+#include <tools/poly.hxx>
+#include "dxf2mtf.hxx"
+
+#include <math.h>
+
+
+ULONG DXF2GDIMetaFile::CountEntities(const DXFEntities & rEntities)
+{
+ const DXFBasicEntity * pBE;
+ ULONG nRes;
+
+ nRes=0;
+ for (pBE=rEntities.pFirst; pBE!=NULL; pBE=pBE->pSucc) nRes++;
+ return nRes;
+}
+
+
+void DXF2GDIMetaFile::MayCallback(ULONG /*nMainEntitiesProcessed*/)
+{
+ // ULONG nPercent;
+/*
+ if (pCallback!=NULL && nMainEntitiesCount!=0) {
+ nPercent=nMinPercent+(nMaxPercent-nMinPercent)*nMainEntitiesProcessed/nMainEntitiesCount;
+ if (nPercent>=nLastPercent+4) {
+ if (((*pCallback)(pCallerData,(USHORT)nPercent))==TRUE) bStatus=FALSE;
+ nLastPercent=nPercent;
+ }
+ }
+*/
+}
+
+Color DXF2GDIMetaFile::ConvertColor(BYTE nColor)
+{
+ return Color(
+ pDXF->aPalette.GetRed( nColor ),
+ pDXF->aPalette.GetGreen( nColor ),
+ pDXF->aPalette.GetBlue( nColor ) );
+}
+
+long DXF2GDIMetaFile::GetEntityColor(const DXFBasicEntity & rE)
+{
+ long nColor;
+ const DXFLayer * pLayer;
+
+ nColor=rE.nColor;
+ if (nColor==256) {
+ if (rE.sLayer[0]=='0' && rE.sLayer[1]==0) nColor=nParentLayerColor;
+ else {
+ pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
+ if (pLayer!=NULL) nColor=pLayer->nColor;
+ else nColor=nParentLayerColor;
+ }
+ }
+ else if (nColor==0) nColor=nBlockColor;
+ return nColor;
+}
+
+DXFLineInfo DXF2GDIMetaFile::LTypeToDXFLineInfo(const char * sLineType)
+{
+ const DXFLType * pLT;
+ DXFLineInfo aDXFLineInfo;
+
+ pLT=pDXF->aTables.SearchLType(sLineType);
+ if (pLT==NULL || pLT->nDashCount == 0) {
+ aDXFLineInfo.eStyle = LINE_SOLID;
+ }
+ else {
+ sal_Int32 i;
+ double x;
+ aDXFLineInfo.eStyle = LINE_DASH;
+ for (i=0; i < (pLT->nDashCount); i++) {
+ x = pLT->fDash[i] * pDXF->getGlobalLineTypeScale();
+// ####
+ // x = (sal_Int32) rTransform.TransLineWidth( pLT->fDash[i] * pDXF->getGlobalLineTypeScale() );
+ if ( x >= 0.0 ) {
+ if ( aDXFLineInfo.nDotCount == 0 ) {
+ aDXFLineInfo.nDotCount ++;
+ aDXFLineInfo.fDotLen = x;
+ }
+ else if ( aDXFLineInfo.fDotLen == x ) {
+ aDXFLineInfo.nDotCount ++;
+ }
+ else if ( aDXFLineInfo.nDashCount == 0 ) {
+ aDXFLineInfo.nDashCount ++;
+ aDXFLineInfo.fDashLen = x;
+ }
+ else if ( aDXFLineInfo.fDashLen == x ) {
+ aDXFLineInfo.nDashCount ++;
+ }
+ else {
+ // It is impossible to be converted.
+ }
+ }
+ else {
+ if ( aDXFLineInfo.fDistance == 0 ) {
+ aDXFLineInfo.fDistance = -1 * x;
+ }
+ else {
+ // It is impossible to be converted.
+ }
+ }
+
+ }
+ }
+
+#if 0
+ if (aDXFLineInfo.DashCount > 0 && aDXFLineInfo.DashLen == 0.0)
+ aDXFLineInfo.DashLen ( 1 );
+ if (aDXFLineInfo.DotCount > 0 && aDXFLineInfo.DotLen() == 0.0)
+ aDXFLineInfo.SetDotLen( 1 );
+ if (aDXFLineInfo.GetDashCount > 0 || aDXFLineInfo.GetDotCount > 0)
+ if (aDXFLineInfo.GetDistance() == 0)
+ aDXFLineInfo.SetDistance( 1 );
+#endif
+
+ return aDXFLineInfo;
+}
+
+DXFLineInfo DXF2GDIMetaFile::GetEntityDXFLineInfo(const DXFBasicEntity & rE)
+{
+ DXFLineInfo aDXFLineInfo;
+ const DXFLayer * pLayer;
+
+ aDXFLineInfo.eStyle = LINE_SOLID;
+ aDXFLineInfo.fWidth = 0;
+ aDXFLineInfo.nDashCount = 0;
+ aDXFLineInfo.fDashLen = 0;
+ aDXFLineInfo.nDotCount = 0;
+ aDXFLineInfo.fDotLen = 0;
+ aDXFLineInfo.fDistance = 0;
+
+ if (strcmp(rE.sLineType,"BYLAYER")==0) {
+ if (rE.sLayer[0]=='0' && rE.sLayer[1]==0) aDXFLineInfo=aParentLayerDXFLineInfo;
+ else {
+ pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
+ if (pLayer!=NULL) aDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
+ else aDXFLineInfo=aParentLayerDXFLineInfo;
+ }
+ }
+ else if (strcmp(rE.sLineType,"BYBLOCK")==0) {
+ aDXFLineInfo=aBlockDXFLineInfo;
+ }
+ else aDXFLineInfo=LTypeToDXFLineInfo(rE.sLineType);
+ return aDXFLineInfo;
+}
+
+
+BOOL DXF2GDIMetaFile::SetLineAttribute(const DXFBasicEntity & rE, ULONG /*nWidth*/)
+{
+ long nColor;
+ Color aColor;
+
+ nColor=GetEntityColor(rE);
+ if (nColor<0) return FALSE;
+ aColor=ConvertColor((BYTE)nColor);
+
+ if (aActLineColor!=aColor) {
+ pVirDev->SetLineColor( aActLineColor = aColor );
+ }
+
+ if (aActFillColor!=Color( COL_TRANSPARENT )) {
+ pVirDev->SetFillColor(aActFillColor = Color( COL_TRANSPARENT ));
+ }
+ return TRUE;
+}
+
+
+BOOL DXF2GDIMetaFile::SetAreaAttribute(const DXFBasicEntity & rE)
+{
+ long nColor;
+ Color aColor;
+
+ nColor=GetEntityColor(rE);
+ if (nColor<0) return FALSE;
+ aColor=ConvertColor((BYTE)nColor);
+
+ if (aActLineColor!=aColor) {
+ pVirDev->SetLineColor( aActLineColor = aColor );
+ }
+
+ if ( aActFillColor == Color( COL_TRANSPARENT ) || aActFillColor != aColor) {
+ pVirDev->SetFillColor( aActFillColor = aColor );
+ }
+ return TRUE;
+}
+
+
+BOOL DXF2GDIMetaFile::SetFontAttribute(const DXFBasicEntity & rE, short nAngle, USHORT nHeight, double /*fWidthScale*/)
+{
+ long nColor;
+ Color aColor;
+ Font aFont;
+
+ nAngle=-nAngle;
+ while (nAngle>3600) nAngle-=3600;
+ while (nAngle<0) nAngle+=3600;
+
+ nColor=GetEntityColor(rE);
+ if (nColor<0) return FALSE;
+ aColor=ConvertColor((BYTE)nColor);
+
+ aFont.SetColor(aColor);
+ aFont.SetTransparent(TRUE);
+ aFont.SetFamily(FAMILY_SWISS);
+ aFont.SetSize(Size(0,nHeight));
+ aFont.SetAlign(ALIGN_BASELINE);
+ aFont.SetOrientation(nAngle);
+ if (aActFont!=aFont) {
+ aActFont=aFont;
+ pVirDev->SetFont(aActFont);
+ }
+
+ return TRUE;
+}
+
+
+void DXF2GDIMetaFile::DrawLineEntity(const DXFLineEntity & rE, const DXFTransform & rTransform)
+{
+ if (SetLineAttribute(rE)) {
+ Point aP0,aP1;
+ rTransform.Transform(rE.aP0,aP0);
+ rTransform.Transform(rE.aP1,aP1);
+
+ DXFLineInfo aDXFLineInfo;
+ aDXFLineInfo=GetEntityDXFLineInfo(rE);
+ LineInfo aLineInfo;
+ aLineInfo = rTransform.Transform(aDXFLineInfo);
+
+#if 0
+ printf("%f\n", rTransform.TransLineWidth(1000.0));
+
+ // LINE_NONE = 0, LINE_SOLID = 1, LINE_DASH = 2, LineStyle_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
+ aLineInfo.SetStyle( LINE_DASH );
+ aLineInfo.SetWidth( 300 );
+ aLineInfo.SetDashCount( 2 );
+ aLineInfo.SetDashLen( 100 );
+ aLineInfo.SetDotCount( 1 );
+ aLineInfo.SetDotLen( 0 );
+ aLineInfo.SetDistance( 500 );
+#endif
+
+ pVirDev->DrawLine(aP0,aP1,aLineInfo);
+ if (rE.fThickness!=0) {
+ Point aP2,aP3;
+ rTransform.Transform(rE.aP0+DXFVector(0,0,rE.fThickness),aP2);
+ rTransform.Transform(rE.aP1+DXFVector(0,0,rE.fThickness),aP3);
+ pVirDev->DrawLine(aP2,aP3);
+ pVirDev->DrawLine(aP0,aP2);
+ pVirDev->DrawLine(aP1,aP3);
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawPointEntity(const DXFPointEntity & rE, const DXFTransform & rTransform)
+{
+
+ if (SetLineAttribute(rE)) {
+ Point aP0;
+ rTransform.Transform(rE.aP0,aP0);
+ if (rE.fThickness==0) pVirDev->DrawPixel(aP0);
+ else {
+ Point aP1;
+ rTransform.Transform(rE.aP0+DXFVector(0,0,rE.fThickness),aP1);
+ pVirDev->DrawLine(aP0,aP1);
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawCircleEntity(const DXFCircleEntity & rE, const DXFTransform & rTransform)
+{
+ double frx,fry,fAng;
+ USHORT nPoints,i;
+ DXFVector aC;
+
+ if (SetLineAttribute(rE)==FALSE) return;
+ rTransform.Transform(rE.aP0,aC);
+ if (rE.fThickness==0 && rTransform.TransCircleToEllipse(rE.fRadius,frx,fry)==TRUE) {
+ pVirDev->DrawEllipse(
+ Rectangle((long)(aC.fx-frx+0.5),(long)(aC.fy-fry+0.5),
+ (long)(aC.fx+frx+0.5),(long)(aC.fy+fry+0.5)));
+ }
+ else {
+ nPoints=OptPointsPerCircle;
+ Polygon aPoly(nPoints);
+ for (i=0; i<nPoints; i++) {
+ fAng=2*3.14159265359/(double)(nPoints-1)*(double)i;
+ rTransform.Transform(
+ rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),0),
+ aPoly[i]
+ );
+ }
+ pVirDev->DrawPolyLine(aPoly);
+ if (rE.fThickness!=0) {
+ Polygon aPoly2(nPoints);
+ for (i=0; i<nPoints; i++) {
+ fAng=2*3.14159265359/(double)(nPoints-1)*(double)i;
+ rTransform.Transform(
+ rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),rE.fThickness),
+ aPoly2[i]
+ );
+
+ }
+ pVirDev->DrawPolyLine(aPoly2);
+ for (i=0; i<nPoints-1; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawArcEntity(const DXFArcEntity & rE, const DXFTransform & rTransform)
+{
+ double frx,fry,fA1,fdA,fAng;
+ USHORT nPoints,i;
+ DXFVector aC;
+ Point aPS,aPE;
+
+ if (SetLineAttribute(rE)==FALSE) return;
+ fA1=rE.fStart;
+ fdA=rE.fEnd-fA1;
+ while (fdA>=360.0) fdA-=360.0;
+ while (fdA<=0) fdA+=360.0;
+ rTransform.Transform(rE.aP0,aC);
+ if (rE.fThickness==0 && fdA>5.0 && rTransform.TransCircleToEllipse(rE.fRadius,frx,fry)==TRUE) {
+ DXFVector aVS(cos(fA1/180.0*3.14159265359),sin(fA1/180.0*3.14159265359),0.0);
+ aVS*=rE.fRadius;
+ aVS+=rE.aP0;
+ DXFVector aVE(cos((fA1+fdA)/180.0*3.14159265359),sin((fA1+fdA)/180.0*3.14159265359),0.0);
+ aVE*=rE.fRadius;
+ aVE+=rE.aP0;
+ if (rTransform.Mirror()==TRUE) {
+ rTransform.Transform(aVS,aPS);
+ rTransform.Transform(aVE,aPE);
+ }
+ else {
+ rTransform.Transform(aVS,aPE);
+ rTransform.Transform(aVE,aPS);
+ }
+ pVirDev->DrawArc(
+ Rectangle((long)(aC.fx-frx+0.5),(long)(aC.fy-fry+0.5),
+ (long)(aC.fx+frx+0.5),(long)(aC.fy+fry+0.5)),
+ aPS,aPE
+ );
+ }
+ else {
+ nPoints=(USHORT)(fdA/360.0*(double)OptPointsPerCircle+0.5);
+ if (nPoints<2) nPoints=2;
+ Polygon aPoly(nPoints);
+ for (i=0; i<nPoints; i++) {
+ fAng=3.14159265359/180.0 * ( fA1 + fdA/(double)(nPoints-1)*(double)i );
+ rTransform.Transform(
+ rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),0),
+ aPoly[i]
+ );
+ }
+ pVirDev->DrawPolyLine(aPoly);
+ if (rE.fThickness!=0) {
+ Polygon aPoly2(nPoints);
+ for (i=0; i<nPoints; i++) {
+ fAng=3.14159265359/180.0 * ( fA1 + fdA/(double)(nPoints-1)*(double)i );
+ rTransform.Transform(
+ rE.aP0+DXFVector(rE.fRadius*cos(fAng),rE.fRadius*sin(fAng),rE.fThickness),
+ aPoly2[i]
+ );
+ }
+ pVirDev->DrawPolyLine(aPoly2);
+ for (i=0; i<nPoints; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawTraceEntity(const DXFTraceEntity & rE, const DXFTransform & rTransform)
+{
+ if (SetLineAttribute(rE)) {
+ Polygon aPoly(4);
+ rTransform.Transform(rE.aP0,aPoly[0]);
+ rTransform.Transform(rE.aP1,aPoly[1]);
+ rTransform.Transform(rE.aP3,aPoly[2]);
+ rTransform.Transform(rE.aP2,aPoly[3]);
+ pVirDev->DrawPolygon(aPoly);
+ if (rE.fThickness!=0) {
+ USHORT i;
+ Polygon aPoly2(4);
+ DXFVector aVAdd(0,0,rE.fThickness);
+ rTransform.Transform(rE.aP0+aVAdd,aPoly2[0]);
+ rTransform.Transform(rE.aP1+aVAdd,aPoly2[1]);
+ rTransform.Transform(rE.aP3+aVAdd,aPoly2[2]);
+ rTransform.Transform(rE.aP2+aVAdd,aPoly2[3]);
+ pVirDev->DrawPolygon(aPoly2);
+ for (i=0; i<4; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawSolidEntity(const DXFSolidEntity & rE, const DXFTransform & rTransform)
+{
+ if (SetAreaAttribute(rE)) {
+ USHORT nN;
+ if (rE.aP2==rE.aP3) nN=3; else nN=4;
+ Polygon aPoly(nN);
+ rTransform.Transform(rE.aP0,aPoly[0]);
+ rTransform.Transform(rE.aP1,aPoly[1]);
+ rTransform.Transform(rE.aP3,aPoly[2]);
+ if (nN>3) rTransform.Transform(rE.aP2,aPoly[3]);
+ pVirDev->DrawPolygon(aPoly);
+ if (rE.fThickness!=0) {
+ Polygon aPoly2(nN);
+ DXFVector aVAdd(0,0,rE.fThickness);
+ rTransform.Transform(rE.aP0+aVAdd,aPoly2[0]);
+ rTransform.Transform(rE.aP1+aVAdd,aPoly2[1]);
+ rTransform.Transform(rE.aP3+aVAdd,aPoly2[2]);
+ if (nN>3) rTransform.Transform(rE.aP2+aVAdd,aPoly2[3]);
+ pVirDev->DrawPolygon(aPoly2);
+ if (SetLineAttribute(rE)) {
+ USHORT i;
+ for (i=0; i<nN; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
+ }
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawTextEntity(const DXFTextEntity & rE, const DXFTransform & rTransform)
+{
+ DXFVector aV;
+ Point aPt;
+ double fA;
+ USHORT nHeight;
+ short nAng;
+ ByteString aStr( rE.sText );
+ DXFTransform aT( DXFTransform(rE.fXScale,rE.fHeight,1.0,rE.fRotAngle,rE.aP0), rTransform );
+ aT.TransDir(DXFVector(0,1,0),aV);
+ nHeight=(USHORT)(aV.Abs()+0.5);
+ fA=aT.CalcRotAngle();
+ nAng=(short)(fA*10.0+0.5);
+ aT.TransDir(DXFVector(1,0,0),aV);
+ if ( SetFontAttribute( rE,nAng, nHeight, aV. Abs() ) )
+ {
+ String aUString( aStr, pDXF->getTextEncoding() );
+ aT.Transform( DXFVector( 0, 0, 0 ), aPt );
+ pVirDev->DrawText( aPt, aUString );
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawInsertEntity(const DXFInsertEntity & rE, const DXFTransform & rTransform)
+{
+ const DXFBlock * pB;
+ pB=pDXF->aBlocks.Search(rE.sName);
+ if (pB!=NULL) {
+ DXFTransform aDXFTransform1(1.0,1.0,1.0,DXFVector(0.0,0.0,0.0)-pB->aBasePoint);
+ DXFTransform aDXFTransform2(rE.fXScale,rE.fYScale,rE.fZScale,rE.fRotAngle,rE.aP0);
+ DXFTransform aT(
+ DXFTransform( aDXFTransform1, aDXFTransform2 ),
+ rTransform
+ );
+ long nSavedBlockColor, nSavedParentLayerColor;
+ DXFLineInfo aSavedBlockDXFLineInfo, aSavedParentLayerDXFLineInfo;
+ nSavedBlockColor=nBlockColor;
+ nSavedParentLayerColor=nParentLayerColor;
+ aSavedBlockDXFLineInfo=aBlockDXFLineInfo;
+ aSavedParentLayerDXFLineInfo=aParentLayerDXFLineInfo;
+ nBlockColor=GetEntityColor(rE);
+ aBlockDXFLineInfo=GetEntityDXFLineInfo(rE);
+ if (rE.sLayer[0]!='0' || rE.sLayer[1]!=0) {
+ DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
+ if (pLayer!=NULL) {
+ nParentLayerColor=pLayer->nColor;
+ aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
+ }
+ }
+ DrawEntities(*pB,aT,FALSE);
+ aBlockDXFLineInfo=aSavedBlockDXFLineInfo;
+ aParentLayerDXFLineInfo=aSavedParentLayerDXFLineInfo;
+ nBlockColor=nSavedBlockColor;
+ nParentLayerColor=nSavedParentLayerColor;
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawAttribEntity(const DXFAttribEntity & rE, const DXFTransform & rTransform)
+{
+ if ((rE.nAttrFlags&1)==0) {
+ DXFVector aV;
+ Point aPt;
+ double fA;
+ USHORT nHeight;
+ short nAng;
+ ByteString aStr( rE.sText );
+ DXFTransform aT( DXFTransform( rE.fXScale, rE.fHeight, 1.0, rE.fRotAngle, rE.aP0 ), rTransform );
+ aT.TransDir(DXFVector(0,1,0),aV);
+ nHeight=(USHORT)(aV.Abs()+0.5);
+ fA=aT.CalcRotAngle();
+ nAng=(short)(fA*10.0+0.5);
+ aT.TransDir(DXFVector(1,0,0),aV);
+ if (SetFontAttribute(rE,nAng,nHeight,aV.Abs()))
+ {
+ String aUString( aStr, pDXF->getTextEncoding() );
+ aT.Transform( DXFVector( 0, 0, 0 ), aPt );
+ pVirDev->DrawText( aPt, aUString );
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawPolyLineEntity(const DXFPolyLineEntity & rE, const DXFTransform & rTransform)
+{
+ USHORT i,nPolySize;
+ double fW;
+ const DXFBasicEntity * pBE;
+
+ nPolySize=0;
+ pBE=rE.pSucc;
+ while (pBE!=NULL && pBE->eType==DXF_VERTEX) {
+ nPolySize++;
+ pBE=pBE->pSucc;
+ }
+ if (nPolySize<2) return;
+ Polygon aPoly(nPolySize);
+ fW=0.0;
+ pBE=rE.pSucc;
+ for (i=0; i<nPolySize; i++) {
+ rTransform.Transform(((DXFVertexEntity*)pBE)->aP0,aPoly[i]);
+ if (i+1<nPolySize || (rE.nFlags&1)!=0) {
+ if (((DXFVertexEntity*)pBE)->fSWidth>=0.0) fW+=((DXFVertexEntity*)pBE)->fSWidth;
+ else fW+=rE.fSWidth;
+ if (((DXFVertexEntity*)pBE)->fEWidth>=0.0) fW+=((DXFVertexEntity*)pBE)->fEWidth;
+ else fW+=rE.fEWidth;
+ }
+ pBE=pBE->pSucc;
+ }
+ fW/=2.0;
+ if ((rE.nFlags&1)!=0) fW/=(double)nPolySize;
+ else fW/=(double)(nPolySize-1);
+ if (SetLineAttribute(rE,rTransform.TransLineWidth(fW))) {
+ if ((rE.nFlags&1)!=0) pVirDev->DrawPolygon(aPoly);
+ else pVirDev->DrawPolyLine(aPoly);
+ if (rE.fThickness!=0) {
+ Polygon aPoly2(nPolySize);
+ pBE=rE.pSucc;
+ for (i=0; i<nPolySize; i++) {
+ rTransform.Transform(
+ (((DXFVertexEntity*)pBE)->aP0)+DXFVector(0,0,rE.fThickness),
+ aPoly2[i]
+ );
+ pBE=pBE->pSucc;
+ }
+ if ((rE.nFlags&1)!=0) pVirDev->DrawPolygon(aPoly2);
+ else pVirDev->DrawPolyLine(aPoly2);
+ for (i=0; i<nPolySize; i++) pVirDev->DrawLine(aPoly[i],aPoly2[i]);
+ }
+ }
+}
+
+void DXF2GDIMetaFile::DrawLWPolyLineEntity(const DXFLWPolyLineEntity & rE, const DXFTransform & rTransform )
+{
+ sal_Int32 i, nPolySize = rE.nCount;
+ if ( nPolySize && rE.pP )
+ {
+ Polygon aPoly( (sal_uInt16)nPolySize);
+ for ( i = 0; i < nPolySize; i++ )
+ {
+ rTransform.Transform( rE.pP[ (sal_uInt16)i ], aPoly[ (sal_uInt16)i ] );
+ }
+ double fW = rE.fConstantWidth;
+ if ( SetLineAttribute( rE, rTransform.TransLineWidth( fW ) ) )
+ {
+ if ( ( rE.nFlags & 1 ) != 0 )
+ pVirDev->DrawPolygon( aPoly );
+ else
+ pVirDev->DrawPolyLine( aPoly );
+ // ####
+ //pVirDev->DrawPolyLine( aPoly, aDXFLineInfo );
+ }
+ }
+}
+
+void DXF2GDIMetaFile::DrawHatchEntity(const DXFHatchEntity & rE, const DXFTransform & rTransform )
+{
+ if ( rE.nBoundaryPathCount )
+ {
+ SetAreaAttribute( rE );
+ sal_Int32 j = 0;
+ PolyPolygon aPolyPoly;
+ for ( j = 0; j < rE.nBoundaryPathCount; j++ )
+ {
+ DXFPointArray aPtAry;
+ const DXFBoundaryPathData& rPathData = rE.pBoundaryPathData[ j ];
+ if ( rPathData.bIsPolyLine )
+ {
+ sal_Int32 i;
+ for( i = 0; i < rPathData.nPointCount; i++ )
+ {
+ Point aPt;
+ rTransform.Transform( rPathData.pP[ i ], aPt );
+ aPtAry.push_back( aPt );
+ }
+ }
+ else
+ {
+ sal_uInt32 i;
+ for ( i = 0; i < rPathData.aEdges.size(); i++ )
+ {
+ const DXFEdgeType* pEdge = rPathData.aEdges[ i ];
+ switch( pEdge->nEdgeType )
+ {
+ case 1 :
+ {
+ Point aPt;
+ rTransform.Transform( ((DXFEdgeTypeLine*)pEdge)->aStartPoint, aPt );
+ aPtAry.push_back( aPt );
+ rTransform.Transform( ((DXFEdgeTypeLine*)pEdge)->aEndPoint, aPt );
+ aPtAry.push_back( aPt );
+ }
+ break;
+ case 2 :
+ {
+/*
+ double frx,fry,fA1,fdA,fAng;
+ USHORT nPoints,i;
+ DXFVector aC;
+ Point aPS,aPE;
+ fA1=((DXFEdgeTypeCircularArc*)pEdge)->fStartAngle;
+ fdA=((DXFEdgeTypeCircularArc*)pEdge)->fEndAngle - fA1;
+ while ( fdA >= 360.0 )
+ fdA -= 360.0;
+ while ( fdA <= 0 )
+ fdA += 360.0;
+ rTransform.Transform(((DXFEdgeTypeCircularArc*)pEdge)->aCenter, aC);
+ if ( fdA > 5.0 && rTransform.TransCircleToEllipse(((DXFEdgeTypeCircularArc*)pEdge)->fRadius,frx,fry ) == TRUE )
+ {
+ DXFVector aVS(cos(fA1/180.0*3.14159265359),sin(fA1/180.0*3.14159265359),0.0);
+ aVS*=((DXFEdgeTypeCircularArc*)pEdge)->fRadius;
+ aVS+=((DXFEdgeTypeCircularArc*)pEdge)->aCenter;
+ DXFVector aVE(cos((fA1+fdA)/180.0*3.14159265359),sin((fA1+fdA)/180.0*3.14159265359),0.0);
+ aVE*=((DXFEdgeTypeCircularArc*)pEdge)->fRadius;
+ aVE+=((DXFEdgeTypeCircularArc*)pEdge)->aCenter;
+ if ( rTransform.Mirror() == TRUE )
+ {
+ rTransform.Transform(aVS,aPS);
+ rTransform.Transform(aVE,aPE);
+ }
+ else
+ {
+ rTransform.Transform(aVS,aPE);
+ rTransform.Transform(aVE,aPS);
+ }
+ pVirDev->DrawArc(
+ Rectangle((long)(aC.fx-frx+0.5),(long)(aC.fy-fry+0.5),
+ (long)(aC.fx+frx+0.5),(long)(aC.fy+fry+0.5)),
+ aPS,aPE
+ );
+ }
+*/
+ }
+ break;
+ case 3 :
+ case 4 :
+ break;
+ }
+ }
+ }
+ sal_uInt16 i, nSize = (sal_uInt16)aPtAry.size();
+ if ( nSize )
+ {
+ Polygon aPoly( nSize );
+ for ( i = 0; i < nSize; i++ )
+ aPoly[ i ] = aPtAry[ i ];
+ aPolyPoly.Insert( aPoly, POLYPOLY_APPEND );
+ }
+ }
+ if ( aPolyPoly.Count() )
+ pVirDev->DrawPolyPolygon( aPolyPoly );
+ }
+}
+
+void DXF2GDIMetaFile::Draw3DFaceEntity(const DXF3DFaceEntity & rE, const DXFTransform & rTransform)
+{
+ USHORT nN,i;
+ if (SetLineAttribute(rE)) {
+ if (rE.aP2==rE.aP3) nN=3; else nN=4;
+ Polygon aPoly(nN);
+ rTransform.Transform(rE.aP0,aPoly[0]);
+ rTransform.Transform(rE.aP1,aPoly[1]);
+ rTransform.Transform(rE.aP2,aPoly[2]);
+ if (nN>3) rTransform.Transform(rE.aP3,aPoly[3]);
+ if ((rE.nIEFlags&0x0f)==0) pVirDev->DrawPolygon(aPoly);
+ else {
+ for (i=0; i<nN; i++) {
+ if ( (rE.nIEFlags & (1<<i)) == 0 ) {
+ pVirDev->DrawLine(aPoly[i],aPoly[(i+1)%nN]);
+ }
+ }
+ }
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawDimensionEntity(const DXFDimensionEntity & rE, const DXFTransform & rTransform)
+{
+ const DXFBlock * pB;
+ pB=pDXF->aBlocks.Search(rE.sPseudoBlock);
+ if (pB!=NULL) {
+ DXFTransform aT(
+ DXFTransform(1.0,1.0,1.0,DXFVector(0.0,0.0,0.0)-pB->aBasePoint),
+ rTransform
+ );
+ long nSavedBlockColor, nSavedParentLayerColor;
+ DXFLineInfo aSavedBlockDXFLineInfo, aSavedParentLayerDXFLineInfo;
+ nSavedBlockColor=nBlockColor;
+ nSavedParentLayerColor=nParentLayerColor;
+ aSavedBlockDXFLineInfo=aBlockDXFLineInfo;
+ aSavedParentLayerDXFLineInfo=aParentLayerDXFLineInfo;
+ nBlockColor=GetEntityColor(rE);
+ aBlockDXFLineInfo=GetEntityDXFLineInfo(rE);
+ if (rE.sLayer[0]!='0' || rE.sLayer[1]!=0) {
+ DXFLayer * pLayer=pDXF->aTables.SearchLayer(rE.sLayer);
+ if (pLayer!=NULL) {
+ nParentLayerColor=pLayer->nColor;
+ aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
+ }
+ }
+ DrawEntities(*pB,aT,FALSE);
+ aBlockDXFLineInfo=aSavedBlockDXFLineInfo;
+ aParentLayerDXFLineInfo=aSavedParentLayerDXFLineInfo;
+ nBlockColor=nSavedBlockColor;
+ nParentLayerColor=nSavedParentLayerColor;
+ }
+}
+
+
+void DXF2GDIMetaFile::DrawEntities(const DXFEntities & rEntities,
+ const DXFTransform & rTransform,
+ BOOL bTopEntities)
+{
+ ULONG nCount=0;
+ DXFTransform aET;
+ const DXFTransform * pT;
+
+ const DXFBasicEntity * pE=rEntities.pFirst;
+
+ while (pE!=NULL && bStatus==TRUE) {
+ if (pE->nSpace==0) {
+ if (pE->aExtrusion.fz==1.0) {
+ pT=&rTransform;
+ }
+ else {
+ aET=DXFTransform(DXFTransform(pE->aExtrusion),rTransform);
+ pT=&aET;
+ }
+ switch (pE->eType) {
+ case DXF_LINE:
+ DrawLineEntity((DXFLineEntity&)*pE,*pT);
+ break;
+ case DXF_POINT:
+ DrawPointEntity((DXFPointEntity&)*pE,*pT);
+ break;
+ case DXF_CIRCLE:
+ DrawCircleEntity((DXFCircleEntity&)*pE,*pT);
+ break;
+ case DXF_ARC:
+ DrawArcEntity((DXFArcEntity&)*pE,*pT);
+ break;
+ case DXF_TRACE:
+ DrawTraceEntity((DXFTraceEntity&)*pE,*pT);
+ break;
+ case DXF_SOLID:
+ DrawSolidEntity((DXFSolidEntity&)*pE,*pT);
+ break;
+ case DXF_TEXT:
+ DrawTextEntity((DXFTextEntity&)*pE,*pT);
+ break;
+ case DXF_INSERT:
+ DrawInsertEntity((DXFInsertEntity&)*pE,*pT);
+ break;
+ case DXF_ATTRIB:
+ DrawAttribEntity((DXFAttribEntity&)*pE,*pT);
+ break;
+ case DXF_POLYLINE:
+ DrawPolyLineEntity((DXFPolyLineEntity&)*pE,*pT);
+ break;
+ case DXF_LWPOLYLINE :
+ DrawLWPolyLineEntity((DXFLWPolyLineEntity&)*pE, *pT);
+ break;
+ case DXF_HATCH :
+ DrawHatchEntity((DXFHatchEntity&)*pE, *pT);
+ break;
+ case DXF_3DFACE:
+ Draw3DFaceEntity((DXF3DFaceEntity&)*pE,*pT);
+ break;
+ case DXF_DIMENSION:
+ DrawDimensionEntity((DXFDimensionEntity&)*pE,*pT);
+ break;
+ default:
+ break; // four other values not handled -Wall
+ }
+ }
+ pE=pE->pSucc;
+ nCount++;
+ if (bTopEntities) MayCallback(nCount);
+ }
+}
+
+
+DXF2GDIMetaFile::DXF2GDIMetaFile()
+{
+}
+
+
+DXF2GDIMetaFile::~DXF2GDIMetaFile()
+{
+}
+
+
+BOOL DXF2GDIMetaFile::Convert(const DXFRepresentation & rDXF, GDIMetaFile & rMTF, USHORT nminpercent, USHORT nmaxpercent)
+{
+ double fWidth,fHeight,fScale;
+ DXFTransform aTransform;
+ Size aPrefSize;
+ const DXFLayer * pLayer;
+ const DXFVPort * pVPort;
+
+ pVirDev = new VirtualDevice;
+ pDXF = &rDXF;
+ bStatus = TRUE;
+
+ OptPointsPerCircle=50;
+
+ nMinPercent=(ULONG)nminpercent;
+ nMaxPercent=(ULONG)nmaxpercent;
+ nLastPercent=nMinPercent;
+ nMainEntitiesCount=CountEntities(pDXF->aEntities);
+
+ nBlockColor=7;
+ aBlockDXFLineInfo.eStyle = LINE_SOLID;
+ aBlockDXFLineInfo.fWidth = 0;
+ aBlockDXFLineInfo.nDashCount = 0;
+ aBlockDXFLineInfo.fDashLen = 0;
+ aBlockDXFLineInfo.nDotCount = 0;
+ aBlockDXFLineInfo.fDotLen = 0;
+ aBlockDXFLineInfo.fDistance = 0;
+
+ pLayer=pDXF->aTables.SearchLayer("0");
+ if (pLayer!=NULL) {
+ nParentLayerColor=pLayer->nColor & 0xff;
+ aParentLayerDXFLineInfo=LTypeToDXFLineInfo(pLayer->sLineType);
+ }
+ else {
+ nParentLayerColor=7;
+ aParentLayerDXFLineInfo.eStyle = LINE_SOLID;
+ aParentLayerDXFLineInfo.fWidth = 0;
+ aParentLayerDXFLineInfo.nDashCount = 0;
+ aParentLayerDXFLineInfo.fDashLen = 0;
+ aParentLayerDXFLineInfo.nDotCount = 0;
+ aParentLayerDXFLineInfo.fDotLen = 0;
+ aParentLayerDXFLineInfo.fDistance = 0;
+ }
+
+ pVirDev->EnableOutput(FALSE);
+ rMTF.Record(pVirDev);
+
+ aActLineColor = pVirDev->GetLineColor();
+ aActFillColor = pVirDev->GetFillColor();
+ aActFont = pVirDev->GetFont();
+
+ pVPort=pDXF->aTables.SearchVPort("*ACTIVE");
+ if (pVPort!=NULL) {
+ if (pVPort->aDirection.fx==0 && pVPort->aDirection.fy==0)
+ pVPort=NULL;
+ }
+
+ if (pVPort==NULL) {
+ if (pDXF->aBoundingBox.bEmpty==TRUE)
+ bStatus=FALSE;
+ else {
+ fWidth=pDXF->aBoundingBox.fMaxX-pDXF->aBoundingBox.fMinX;
+ fHeight=pDXF->aBoundingBox.fMaxY-pDXF->aBoundingBox.fMinY;
+ if (fWidth<=0 || fHeight<=0) {
+ bStatus=FALSE;
+ fScale = 0; // -Wall added this...
+ }
+ else {
+// if (fWidth<500.0 || fHeight<500.0 || fWidth>32767.0 || fHeight>32767.0) {
+ if (fWidth>fHeight)
+ fScale=10000.0/fWidth;
+ else
+ fScale=10000.0/fHeight;
+// }
+// else
+// fScale=1.0;
+ aTransform=DXFTransform(fScale,-fScale,fScale,
+ DXFVector(-pDXF->aBoundingBox.fMinX*fScale,
+ pDXF->aBoundingBox.fMaxY*fScale,
+ -pDXF->aBoundingBox.fMinZ*fScale));
+ }
+ aPrefSize.Width() =(long)(fWidth*fScale+1.5);
+ aPrefSize.Height()=(long)(fHeight*fScale+1.5);
+ }
+ }
+ else {
+ fHeight=pVPort->fHeight;
+ fWidth=fHeight*pVPort->fAspectRatio;
+// if (fWidth<500.0 || fHeight<500.0 || fWidth>32767.0 || fHeight>32767.0) {
+ if (fWidth>fHeight)
+ fScale=10000.0/fWidth;
+ else
+ fScale=10000.0/fHeight;
+// }
+// else
+// fScale=1.0;
+ aTransform=DXFTransform(
+ DXFTransform(pVPort->aDirection,pVPort->aTarget),
+ DXFTransform(
+ DXFTransform(1.0,-1.0,1.0,DXFVector(fWidth/2-pVPort->fCenterX,fHeight/2+pVPort->fCenterY,0)),
+ DXFTransform(fScale,fScale,fScale,DXFVector(0,0,0))
+ )
+ );
+ aPrefSize.Width() =(long)(fWidth*fScale+1.5);
+ aPrefSize.Height()=(long)(fHeight*fScale+1.5);
+ }
+
+ if (bStatus==TRUE)
+ DrawEntities(pDXF->aEntities,aTransform,TRUE);
+
+ rMTF.Stop();
+
+ if ( bStatus==TRUE )
+ {
+ rMTF.SetPrefSize( aPrefSize );
+
+ // MapMode einfach, falls Grafik dann nicht zu klein wird (<0,5cm),
+ // auf 1/100-mm (1/10-mm) setzen
+ if( ( aPrefSize.Width() < 500 ) && ( aPrefSize.Height() < 500 ) )
+ rMTF.SetPrefMapMode( MapMode( MAP_10TH_MM ) );
+ else
+ rMTF.SetPrefMapMode( MapMode( MAP_100TH_MM ) );
+ }
+
+ delete pVirDev;
+ return bStatus;
+}
+
+
+
diff --git a/filter/source/graphicfilter/idxf/dxf2mtf.hxx b/filter/source/graphicfilter/idxf/dxf2mtf.hxx
new file mode 100644
index 000000000000..cb03c47429fc
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxf2mtf.hxx
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * 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 _DXF2MTF_HXX
+#define _DXF2MTF_HXX
+
+#include "dxfreprd.hxx"
+#include <vcl/font.hxx>
+#include <vcl/lineinfo.hxx>
+
+// MT: NOOLDSV, someone should change the code...
+enum PenStyle { PEN_NULL, PEN_SOLID, PEN_DOT, PEN_DASH, PEN_DASHDOT };
+enum BrushStyle { BRUSH_NULL, BRUSH_SOLID, BRUSH_HORZ, BRUSH_VERT,
+ BRUSH_CROSS, BRUSH_DIAGCROSS, BRUSH_UPDIAG, BRUSH_DOWNDIAG,
+ BRUSH_25, BRUSH_50, BRUSH_75,
+ BRUSH_BITMAP };
+
+
+class DXF2GDIMetaFile {
+private:
+
+ VirtualDevice * pVirDev;
+ const DXFRepresentation * pDXF;
+ BOOL bStatus;
+
+ USHORT OptPointsPerCircle;
+
+ ULONG nMinPercent;
+ ULONG nMaxPercent;
+ ULONG nLastPercent;
+ ULONG nMainEntitiesCount;
+
+ long nBlockColor;
+ DXFLineInfo aBlockDXFLineInfo;
+ long nParentLayerColor;
+ DXFLineInfo aParentLayerDXFLineInfo;
+ Color aActLineColor;
+ Color aActFillColor;
+ Font aActFont;
+
+ ULONG CountEntities(const DXFEntities & rEntities);
+
+ void MayCallback(ULONG nMainEntitiesProcessed);
+
+ Color ConvertColor(BYTE nColor);
+
+ long GetEntityColor(const DXFBasicEntity & rE);
+
+ DXFLineInfo LTypeToDXFLineInfo(const char * sLineType);
+
+ DXFLineInfo GetEntityDXFLineInfo(const DXFBasicEntity & rE);
+
+ BOOL SetLineAttribute(const DXFBasicEntity & rE, ULONG nWidth=0);
+
+ BOOL SetAreaAttribute(const DXFBasicEntity & rE);
+
+ BOOL SetFontAttribute(const DXFBasicEntity & rE, short nAngle,
+ USHORT nHeight, double fWidthScale);
+
+ void DrawLineEntity(const DXFLineEntity & rE, const DXFTransform & rTransform);
+
+ void DrawPointEntity(const DXFPointEntity & rE, const DXFTransform & rTransform);
+
+ void DrawCircleEntity(const DXFCircleEntity & rE, const DXFTransform & rTransform);
+
+ void DrawArcEntity(const DXFArcEntity & rE, const DXFTransform & rTransform);
+
+ void DrawTraceEntity(const DXFTraceEntity & rE, const DXFTransform & rTransform);
+
+ void DrawSolidEntity(const DXFSolidEntity & rE, const DXFTransform & rTransform);
+
+ void DrawTextEntity(const DXFTextEntity & rE, const DXFTransform & rTransform);
+
+ void DrawInsertEntity(const DXFInsertEntity & rE, const DXFTransform & rTransform);
+
+ void DrawAttribEntity(const DXFAttribEntity & rE, const DXFTransform & rTransform);
+
+ void DrawPolyLineEntity(const DXFPolyLineEntity & rE, const DXFTransform & rTransform);
+
+ void Draw3DFaceEntity(const DXF3DFaceEntity & rE, const DXFTransform & rTransform);
+
+ void DrawDimensionEntity(const DXFDimensionEntity & rE, const DXFTransform & rTransform);
+
+ void DrawLWPolyLineEntity( const DXFLWPolyLineEntity & rE, const DXFTransform & rTransform );
+
+ void DrawHatchEntity( const DXFHatchEntity & rE, const DXFTransform & rTransform );
+
+ void DrawEntities(const DXFEntities & rEntities,
+ const DXFTransform & rTransform,
+ BOOL bTopEntities);
+
+public:
+
+ DXF2GDIMetaFile();
+ ~DXF2GDIMetaFile();
+
+ BOOL Convert( const DXFRepresentation & rDXF, GDIMetaFile & rMTF, USHORT nMinPercent, USHORT nMaxPercent);
+
+};
+
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfblkrd.cxx b/filter/source/graphicfilter/idxf/dxfblkrd.cxx
new file mode 100644
index 000000000000..da7753615bf3
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfblkrd.cxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <dxfblkrd.hxx>
+
+
+//----------------------------------------------------------------------------
+//---------------- DXFBlock --------------------------------------------------
+//----------------------------------------------------------------------------
+
+
+DXFBlock::DXFBlock()
+{
+ pSucc=NULL;
+}
+
+
+DXFBlock::~DXFBlock()
+{
+}
+
+
+void DXFBlock::Read(DXFGroupReader & rDGR)
+{
+ sName[0]=0;
+ sAlsoName[0]=0;
+ aBasePoint.fx=0.0;
+ aBasePoint.fy=0.0;
+ aBasePoint.fz=0.0;
+ nFlags=0;
+ sXRef[0]=0;
+
+ while (rDGR.Read()!=0)
+ {
+ switch (rDGR.GetG())
+ {
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 3: strncpy( sAlsoName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 10: aBasePoint.fx=rDGR.GetF(); break;
+ case 20: aBasePoint.fy=rDGR.GetF(); break;
+ case 30: aBasePoint.fz=rDGR.GetF(); break;
+ case 1: strncpy( sXRef, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ }
+ }
+ DXFEntities::Read(rDGR);
+}
+
+
+//----------------------------------------------------------------------------
+//---------------- DXFBlocks -------------------------------------------------
+//----------------------------------------------------------------------------
+
+
+DXFBlocks::DXFBlocks()
+{
+ pFirst=NULL;
+}
+
+
+DXFBlocks::~DXFBlocks()
+{
+ Clear();
+}
+
+
+void DXFBlocks::Read(DXFGroupReader & rDGR)
+{
+ DXFBlock * pB, * * ppSucc;
+
+ ppSucc=&pFirst;
+ while (*ppSucc!=NULL) ppSucc=&((*ppSucc)->pSucc);
+
+ for (;;) {
+ while (rDGR.GetG()!=0) rDGR.Read();
+ if (strcmp(rDGR.GetS(),"ENDSEC")==0 ||
+ strcmp(rDGR.GetS(),"EOF")==0) break;
+ if (strcmp(rDGR.GetS(),"BLOCK")==0) {
+ pB=new DXFBlock;
+ pB->Read(rDGR);
+ *ppSucc=pB;
+ ppSucc=&(pB->pSucc);
+ }
+ else rDGR.Read();
+ }
+}
+
+
+DXFBlock * DXFBlocks::Search(const char * sName) const
+{
+ DXFBlock * pB;
+ for (pB=pFirst; pB!=NULL; pB=pB->pSucc) {
+ if (strcmp(sName,pB->sName)==0) break;
+ }
+ return pB;
+}
+
+
+void DXFBlocks::Clear()
+{
+ DXFBlock * ptmp;
+
+ while (pFirst!=NULL) {
+ ptmp=pFirst;
+ pFirst=ptmp->pSucc;
+ delete ptmp;
+ }
+}
+
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfblkrd.hxx b/filter/source/graphicfilter/idxf/dxfblkrd.hxx
new file mode 100644
index 000000000000..9f0d92e3fa6d
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfblkrd.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * 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 _DXFBLKRD_HXX
+#define _DXFBLKRD_HXX
+
+#include <dxfentrd.hxx>
+
+//----------------------------------------------------------------------------
+//---------------- Ein Block (= Menge von Entities) --------------------------
+//----------------------------------------------------------------------------
+
+class DXFBlock : public DXFEntities {
+
+public:
+
+ DXFBlock * pSucc;
+ // Zeiger auf naechsten Block in der Liste DXFBlocks::pFirst
+
+ // Eigenschaften des Blocks, durch Gruppencodes kommentiert:
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ char sAlsoName[DXF_MAX_STRING_LEN+1]; // 3
+ long nFlags; // 70
+ DXFVector aBasePoint; // 10,20,30
+ char sXRef[DXF_MAX_STRING_LEN+1]; // 1
+
+ DXFBlock();
+ ~DXFBlock();
+
+ void Read(DXFGroupReader & rDGR);
+ // Liest den Block (einschliesslich der Entities) per rGDR
+ // aus einer DXF-Datei bis zu einem ENDBLK, ENDSEC oder EOF.
+};
+
+
+//----------------------------------------------------------------------------
+//---------------- Eine Menge von Bloecken -----------------------------------
+//----------------------------------------------------------------------------
+
+class DXFBlocks {
+
+public:
+
+ DXFBlock * pFirst;
+ // Liste der Bloecke, READ ONLY!
+
+ DXFBlocks();
+ ~DXFBlocks();
+
+ void Read(DXFGroupReader & rDGR);
+ // Liesst alle Bloecke per rDGR bis zu einem ENDSEC oder EOF.
+
+ DXFBlock * Search(const char * sName) const;
+ // Sucht einen Block mit dem Namen, liefert NULL bei Misserfolg.
+
+ void Clear();
+ // Loescht alle Bloecke;
+
+};
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfentrd.cxx b/filter/source/graphicfilter/idxf/dxfentrd.cxx
new file mode 100644
index 000000000000..990594a90731
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfentrd.cxx
@@ -0,0 +1,871 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <dxfentrd.hxx>
+
+//--------------------------DXFBasicEntity--------------------------------------
+
+DXFBasicEntity::DXFBasicEntity(DXFEntityType eThisType)
+{
+ eType=eThisType;
+ pSucc=NULL;
+ strncpy(sLayer,"0", 2 );
+ strncpy(sLineType,"BYLAYER", 8 );
+ fElevation=0;
+ fThickness=0;
+ nColor=256;
+ nSpace=0;
+ aExtrusion.fx=0.0;
+ aExtrusion.fy=0.0;
+ aExtrusion.fz=1.0;
+}
+
+void DXFBasicEntity::Read(DXFGroupReader & rDGR)
+{
+ while (rDGR.Read()!=0) EvaluateGroup(rDGR);
+}
+
+void DXFBasicEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG())
+ {
+ case 8: strncpy( sLayer, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 6: strncpy( sLineType, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 38: fElevation=rDGR.GetF(); break;
+ case 39: fThickness=rDGR.GetF(); break;
+ case 62: nColor=rDGR.GetI(); break;
+ case 67: nSpace=rDGR.GetI(); break;
+ case 210: aExtrusion.fx=rDGR.GetF(); break;
+ case 220: aExtrusion.fy=rDGR.GetF(); break;
+ case 230: aExtrusion.fz=rDGR.GetF(); break;
+ }
+}
+
+DXFBasicEntity::~DXFBasicEntity()
+{
+}
+
+//--------------------------DXFLineEntity---------------------------------------
+
+DXFLineEntity::DXFLineEntity() : DXFBasicEntity(DXF_LINE)
+{
+}
+
+void DXFLineEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 11: aP1.fx=rDGR.GetF(); break;
+ case 21: aP1.fy=rDGR.GetF(); break;
+ case 31: aP1.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFPointEntity--------------------------------------
+
+DXFPointEntity::DXFPointEntity() : DXFBasicEntity(DXF_POINT)
+{
+}
+
+void DXFPointEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFCircleEntity-------------------------------------
+
+DXFCircleEntity::DXFCircleEntity() : DXFBasicEntity(DXF_CIRCLE)
+{
+ fRadius=1.0;
+}
+
+void DXFCircleEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fRadius=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFArcEntity----------------------------------------
+
+DXFArcEntity::DXFArcEntity() : DXFBasicEntity(DXF_ARC)
+{
+ fRadius=1.0;
+ fStart=0;
+ fEnd=360.0;
+}
+
+void DXFArcEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fRadius=rDGR.GetF(); break;
+ case 50: fStart=rDGR.GetF(); break;
+ case 51: fEnd=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFTraceEntity--------------------------------------
+
+DXFTraceEntity::DXFTraceEntity() : DXFBasicEntity(DXF_TRACE)
+{
+}
+
+void DXFTraceEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 11: aP1.fx=rDGR.GetF(); break;
+ case 21: aP1.fy=rDGR.GetF(); break;
+ case 31: aP1.fz=rDGR.GetF(); break;
+ case 12: aP2.fx=rDGR.GetF(); break;
+ case 22: aP2.fy=rDGR.GetF(); break;
+ case 32: aP2.fz=rDGR.GetF(); break;
+ case 13: aP3.fx=rDGR.GetF(); break;
+ case 23: aP3.fy=rDGR.GetF(); break;
+ case 33: aP3.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFSolidEntity--------------------------------------
+
+DXFSolidEntity::DXFSolidEntity() : DXFBasicEntity(DXF_SOLID)
+{
+}
+
+void DXFSolidEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 11: aP1.fx=rDGR.GetF(); break;
+ case 21: aP1.fy=rDGR.GetF(); break;
+ case 31: aP1.fz=rDGR.GetF(); break;
+ case 12: aP2.fx=rDGR.GetF(); break;
+ case 22: aP2.fy=rDGR.GetF(); break;
+ case 32: aP2.fz=rDGR.GetF(); break;
+ case 13: aP3.fx=rDGR.GetF(); break;
+ case 23: aP3.fy=rDGR.GetF(); break;
+ case 33: aP3.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFTextEntity---------------------------------------
+
+DXFTextEntity::DXFTextEntity() : DXFBasicEntity(DXF_TEXT)
+{
+ fHeight=1.0;
+ sText[0]=0;
+ fRotAngle=0.0;
+ fXScale=1.0;
+ fOblAngle=0.0;
+ strncpy( sStyle, "STANDARD", 9 );
+ nGenFlags=0;
+ nHorzJust=0;
+ nVertJust=0;
+}
+
+void DXFTextEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fHeight=rDGR.GetF(); break;
+ case 1: strncpy( sText, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 50: fRotAngle=rDGR.GetF(); break;
+ case 41: fXScale=rDGR.GetF(); break;
+ case 42: fOblAngle=rDGR.GetF(); break;
+ case 7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 71: nGenFlags=rDGR.GetI(); break;
+ case 72: nHorzJust=rDGR.GetI(); break;
+ case 73: nVertJust=rDGR.GetI(); break;
+ case 11: aAlign.fx=rDGR.GetF(); break;
+ case 21: aAlign.fy=rDGR.GetF(); break;
+ case 31: aAlign.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFShapeEntity--------------------------------------
+
+DXFShapeEntity::DXFShapeEntity() : DXFBasicEntity(DXF_SHAPE)
+{
+ fSize=1.0;
+ sName[0]=0;
+ fRotAngle=0;
+ fXScale=1.0;
+ fOblAngle=0;
+}
+
+void DXFShapeEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fSize=rDGR.GetF(); break;
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 50: fRotAngle=rDGR.GetF(); break;
+ case 41: fXScale=rDGR.GetF(); break;
+ case 51: fOblAngle=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFInsertEntity-------------------------------------
+
+DXFInsertEntity::DXFInsertEntity() : DXFBasicEntity(DXF_INSERT)
+{
+ nAttrFlag=0;
+ sName[0]=0;
+ fXScale=1.0;
+ fYScale=1.0;
+ fZScale=1.0;
+ fRotAngle=0.0;
+ nColCount=1;
+ nRowCount=1;
+ fColSpace=0.0;
+ fRowSpace=0.0;
+}
+
+void DXFInsertEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 66: nAttrFlag=rDGR.GetI(); break;
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 41: fXScale=rDGR.GetF(); break;
+ case 42: fYScale=rDGR.GetF(); break;
+ case 43: fZScale=rDGR.GetF(); break;
+ case 50: fRotAngle=rDGR.GetF(); break;
+ case 70: nColCount=rDGR.GetI(); break;
+ case 71: nRowCount=rDGR.GetI(); break;
+ case 44: fColSpace=rDGR.GetF(); break;
+ case 45: fRowSpace=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFAttDefEntity-------------------------------------
+
+DXFAttDefEntity::DXFAttDefEntity() : DXFBasicEntity(DXF_ATTDEF)
+{
+ fHeight=1.0;
+ sDefVal[0]=0;
+ sPrompt[0]=0;
+ sTagStr[0]=0;
+ nAttrFlags=0;
+ nFieldLen=0;
+ fRotAngle=0.0;
+ fXScale=1.0;
+ fOblAngle=0.0;
+ strncpy( sStyle, "STANDARD", 9 );
+ nGenFlags=0;
+ nHorzJust=0;
+ nVertJust=0;
+}
+
+void DXFAttDefEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fHeight=rDGR.GetF(); break;
+ case 1: strncpy( sDefVal, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 3: strncpy( sPrompt, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 2: strncpy( sTagStr, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 70: nAttrFlags=rDGR.GetI(); break;
+ case 73: nFieldLen=rDGR.GetI(); break;
+ case 50: fRotAngle=rDGR.GetF(); break;
+ case 41: fXScale=rDGR.GetF(); break;
+ case 51: fOblAngle=rDGR.GetF(); break;
+ case 7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 71: nGenFlags=rDGR.GetI(); break;
+ case 72: nHorzJust=rDGR.GetI(); break;
+ case 74: nVertJust=rDGR.GetI(); break;
+ case 11: aAlign.fx=rDGR.GetF(); break;
+ case 21: aAlign.fy=rDGR.GetF(); break;
+ case 31: aAlign.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFAttribEntity-------------------------------------
+
+DXFAttribEntity::DXFAttribEntity() : DXFBasicEntity(DXF_ATTRIB)
+{
+ fHeight=1.0;
+ sText[0]=0;
+ sTagStr[0]=0;
+ nAttrFlags=0;
+ nFieldLen=0;
+ fRotAngle=0.0;
+ fXScale=1.0;
+ fOblAngle=0.0;
+ strncpy( sStyle, "STANDARD", 9 );
+ nGenFlags=0;
+ nHorzJust=0;
+ nVertJust=0;
+}
+
+void DXFAttribEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fHeight=rDGR.GetF(); break;
+ case 1: strncpy( sText, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 2: strncpy( sTagStr, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 70: nAttrFlags=rDGR.GetI(); break;
+ case 73: nFieldLen=rDGR.GetI(); break;
+ case 50: fRotAngle=rDGR.GetF(); break;
+ case 41: fXScale=rDGR.GetF(); break;
+ case 51: fOblAngle=rDGR.GetF(); break;
+ case 7: strncpy( sStyle, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 71: nGenFlags=rDGR.GetI(); break;
+ case 72: nHorzJust=rDGR.GetI(); break;
+ case 74: nVertJust=rDGR.GetI(); break;
+ case 11: aAlign.fx=rDGR.GetF(); break;
+ case 21: aAlign.fy=rDGR.GetF(); break;
+ case 31: aAlign.fz=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFPolyLine-----------------------------------------
+
+DXFPolyLineEntity::DXFPolyLineEntity() : DXFBasicEntity(DXF_POLYLINE)
+{
+ fElevation=0.0;
+ nFlags=0;
+ fSWidth=0.0;
+ fEWidth=0.0;
+ nMeshMCount=0;
+ nMeshNCount=0;
+ nMDensity=0;
+ nNDensity=0;
+ nCSSType=0;
+}
+
+void DXFPolyLineEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 30: fElevation=rDGR.GetF(); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 40: fSWidth=rDGR.GetF(); break;
+ case 41: fEWidth=rDGR.GetF(); break;
+ case 71: nMeshMCount=rDGR.GetI(); break;
+ case 72: nMeshNCount=rDGR.GetI(); break;
+ case 73: nMDensity=rDGR.GetI(); break;
+ case 74: nNDensity=rDGR.GetI(); break;
+ case 75: nCSSType=rDGR.GetI(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFLWPolyLine---------------------------------------
+
+DXFLWPolyLineEntity::DXFLWPolyLineEntity() :
+ DXFBasicEntity( DXF_LWPOLYLINE ),
+ nIndex( 0 ),
+ nCount( 0 ),
+ nFlags( 0 ),
+ fConstantWidth( 0.0 ),
+ fStartWidth( 0.0 ),
+ fEndWidth( 0.0 ),
+ pP( NULL )
+{
+}
+
+void DXFLWPolyLineEntity::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ switch ( rDGR.GetG() )
+ {
+ case 90 :
+ {
+ nCount = rDGR.GetI();
+ if ( nCount )
+ pP = new DXFVector[ nCount ];
+ }
+ break;
+ case 70: nFlags = rDGR.GetI(); break;
+ case 43: fConstantWidth = rDGR.GetF(); break;
+ case 40: fStartWidth = rDGR.GetF(); break;
+ case 41: fEndWidth = rDGR.GetF(); break;
+ case 10:
+ {
+ if ( pP && ( nIndex < nCount ) )
+ pP[ nIndex ].fx = rDGR.GetF();
+ }
+ break;
+ case 20:
+ {
+ if ( pP && ( nIndex < nCount ) )
+ pP[ nIndex++ ].fy = rDGR.GetF();
+ }
+ break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+DXFLWPolyLineEntity::~DXFLWPolyLineEntity()
+{
+ delete[] pP;
+}
+
+//--------------------------DXFHatchEntity-------------------------------------
+
+DXFEdgeTypeLine::DXFEdgeTypeLine() :
+ DXFEdgeType( 1 )
+{
+
+}
+DXFEdgeTypeLine::~DXFEdgeTypeLine()
+{
+
+}
+sal_Bool DXFEdgeTypeLine::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ sal_Bool bExecutingGroupCode = sal_True;
+ switch ( rDGR.GetG() )
+ {
+ case 10 : aStartPoint.fx = rDGR.GetF(); break;
+ case 20 : aStartPoint.fy = rDGR.GetF(); break;
+ case 11 : aEndPoint.fx = rDGR.GetF(); break;
+ case 21 : aEndPoint.fy = rDGR.GetF(); break;
+ default : bExecutingGroupCode = sal_False; break;
+ }
+ return bExecutingGroupCode;
+}
+
+DXFEdgeTypeCircularArc::DXFEdgeTypeCircularArc() :
+ DXFEdgeType( 2 ),
+ fRadius( 0.0 ),
+ fStartAngle( 0.0 ),
+ fEndAngle( 0.0 ),
+ nIsCounterClockwiseFlag( 0 )
+{
+}
+DXFEdgeTypeCircularArc::~DXFEdgeTypeCircularArc()
+{
+}
+sal_Bool DXFEdgeTypeCircularArc::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ sal_Bool bExecutingGroupCode = sal_True;
+ switch ( rDGR.GetG() )
+ {
+ case 10 : aCenter.fx = rDGR.GetF(); break;
+ case 20 : aCenter.fy = rDGR.GetF(); break;
+ case 40 : fRadius = rDGR.GetF(); break;
+ case 50 : fStartAngle = rDGR.GetF(); break;
+ case 51 : fEndAngle = rDGR.GetF(); break;
+ case 73 : nIsCounterClockwiseFlag = rDGR.GetI(); break;
+ default : bExecutingGroupCode = sal_False; break;
+ }
+ return bExecutingGroupCode;
+}
+
+DXFEdgeTypeEllipticalArc::DXFEdgeTypeEllipticalArc() :
+ DXFEdgeType( 3 ),
+ fLength( 0.0 ),
+ fStartAngle( 0.0 ),
+ fEndAngle( 0.0 ),
+ nIsCounterClockwiseFlag( 0 )
+{
+}
+DXFEdgeTypeEllipticalArc::~DXFEdgeTypeEllipticalArc()
+{
+
+}
+sal_Bool DXFEdgeTypeEllipticalArc::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ sal_Bool bExecutingGroupCode = sal_True;
+ switch( rDGR.GetG() )
+ {
+ case 10 : aCenter.fx = rDGR.GetF(); break;
+ case 20 : aCenter.fy = rDGR.GetF(); break;
+ case 11 : aEndPoint.fx = rDGR.GetF(); break;
+ case 21 : aEndPoint.fy = rDGR.GetF(); break;
+ case 40 : fLength = rDGR.GetF(); break;
+ case 50 : fStartAngle = rDGR.GetF(); break;
+ case 51 : fEndAngle = rDGR.GetF(); break;
+ case 73 : nIsCounterClockwiseFlag = rDGR.GetI(); break;
+ default : bExecutingGroupCode = sal_False; break;
+ }
+ return bExecutingGroupCode;
+}
+
+DXFEdgeTypeSpline::DXFEdgeTypeSpline() :
+ DXFEdgeType( 4 ),
+ nDegree( 0 ),
+ nRational( 0 ),
+ nPeriodic( 0 ),
+ nKnotCount( 0 ),
+ nControlCount( 0 )
+{
+}
+DXFEdgeTypeSpline::~DXFEdgeTypeSpline()
+{
+
+}
+sal_Bool DXFEdgeTypeSpline::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ sal_Bool bExecutingGroupCode = sal_True;
+ switch ( rDGR.GetG() )
+ {
+ case 94 : nDegree = rDGR.GetI(); break;
+ case 73 : nRational = rDGR.GetI(); break;
+ case 74 : nPeriodic = rDGR.GetI(); break;
+ case 95 : nKnotCount = rDGR.GetI(); break;
+ case 96 : nControlCount = rDGR.GetI(); break;
+ default : bExecutingGroupCode = sal_False; break;
+ }
+ return bExecutingGroupCode;
+}
+
+DXFBoundaryPathData::DXFBoundaryPathData() :
+ nFlags( 0 ),
+ nHasBulgeFlag( 0 ),
+ nIsClosedFlag( 0 ),
+ nPointCount( 0 ),
+ fBulge( 0.0 ),
+ nSourceBoundaryObjects( 0 ),
+ nEdgeCount( 0 ),
+ bIsPolyLine( sal_True ),
+ nPointIndex( 0 ),
+ pP( NULL )
+{
+}
+
+DXFBoundaryPathData::~DXFBoundaryPathData()
+{
+ sal_uInt32 i = 0;
+ for ( i = 0; i < aEdges.size(); i++ )
+ delete aEdges[ i ];
+ delete[] pP;
+}
+
+sal_Bool DXFBoundaryPathData::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ sal_Bool bExecutingGroupCode = sal_True;
+ if ( bIsPolyLine )
+ {
+ switch( rDGR.GetG() )
+ {
+ case 92 :
+ {
+ nFlags = rDGR.GetI();
+ if ( ( nFlags & 2 ) == 0 )
+ bIsPolyLine = sal_False;
+ }
+ break;
+ case 93 :
+ {
+ nPointCount = rDGR.GetI();
+ if ( nPointCount )
+ pP = new DXFVector[ nPointCount ];
+ }
+ break;
+ case 72 : nHasBulgeFlag = rDGR.GetI(); break;
+ case 73 : nIsClosedFlag = rDGR.GetI(); break;
+ case 97 : nSourceBoundaryObjects = rDGR.GetI(); break;
+ case 42 : fBulge = rDGR.GetF(); break;
+ case 10:
+ {
+ if ( pP && ( nPointIndex < nPointCount ) )
+ pP[ nPointIndex ].fx = rDGR.GetF();
+ }
+ break;
+ case 20:
+ {
+ if ( pP && ( nPointIndex < nPointCount ) )
+ pP[ nPointIndex++ ].fy = rDGR.GetF();
+ }
+ break;
+
+ default : bExecutingGroupCode = sal_False; break;
+ }
+ }
+ else
+ {
+ if ( rDGR.GetG() == 93 )
+ nEdgeCount = rDGR.GetI();
+ else if ( rDGR.GetG() == 72 )
+ {
+ sal_Int32 nEdgeType = rDGR.GetI();
+ switch( nEdgeType )
+ {
+ case 1 : aEdges.push_back( new DXFEdgeTypeLine() ); break;
+ case 2 : aEdges.push_back( new DXFEdgeTypeCircularArc() ); break;
+ case 3 : aEdges.push_back( new DXFEdgeTypeEllipticalArc() ); break;
+ case 4 : aEdges.push_back( new DXFEdgeTypeSpline() ); break;
+ }
+ }
+ else if ( aEdges.size() )
+ aEdges[ aEdges.size() - 1 ]->EvaluateGroup( rDGR );
+ else
+ bExecutingGroupCode = sal_False;
+ }
+ return bExecutingGroupCode;
+}
+
+DXFHatchEntity::DXFHatchEntity() :
+ DXFBasicEntity( DXF_HATCH ),
+ bIsInBoundaryPathContext( sal_False ),
+ nCurrentBoundaryPathIndex( -1 ),
+ nFlags( 0 ),
+ nAssociativityFlag( 0 ),
+ nBoundaryPathCount( 0 ),
+ nHatchStyle( 0 ),
+ nHatchPatternType( 0 ),
+ fHatchPatternAngle( 0.0 ),
+ fHatchPatternScale( 1.0 ),
+ nHatchDoubleFlag( 0 ),
+ nHatchPatternDefinitionLines( 0 ),
+ fPixelSize( 1.0 ),
+ nNumberOfSeedPoints( 0 ),
+ pBoundaryPathData( NULL )
+{
+}
+
+void DXFHatchEntity::EvaluateGroup( DXFGroupReader & rDGR )
+{
+ switch ( rDGR.GetG() )
+ {
+// case 10 : aElevationPoint.fx = rDGR.GetF(); break;
+// case 20 : aElevationPoint.fy = rDGR.GetF(); break;
+// case 30 : aElevationPoint.fz = rDGR.GetF(); break;
+ case 70 : nFlags = rDGR.GetI(); break;
+ case 71 : nAssociativityFlag = rDGR.GetI(); break;
+ case 91 :
+ {
+ bIsInBoundaryPathContext = sal_True;
+ nBoundaryPathCount = rDGR.GetI();
+ if ( nBoundaryPathCount )
+ pBoundaryPathData = new DXFBoundaryPathData[ nBoundaryPathCount ];
+ }
+ break;
+ case 75 :
+ {
+ nHatchStyle = rDGR.GetI();
+ bIsInBoundaryPathContext = sal_False;
+ }
+ break;
+ case 76 : nHatchPatternType = rDGR.GetI(); break;
+ case 52 : fHatchPatternAngle = rDGR.GetF(); break;
+ case 41 : fHatchPatternScale = rDGR.GetF(); break;
+ case 77 : nHatchDoubleFlag = rDGR.GetI(); break;
+ case 78 : nHatchPatternDefinitionLines = rDGR.GetI(); break;
+ case 47 : fPixelSize = rDGR.GetF(); break;
+ case 98 : nNumberOfSeedPoints = rDGR.GetI(); break;
+
+ //!! passthrough !!
+ case 92 : nCurrentBoundaryPathIndex++;
+ default:
+ {
+ sal_Bool bExecutingGroupCode = sal_False;
+ if ( bIsInBoundaryPathContext )
+ {
+ if ( ( nCurrentBoundaryPathIndex >= 0 ) &&
+ ( nCurrentBoundaryPathIndex < nBoundaryPathCount ) )
+ bExecutingGroupCode = pBoundaryPathData[ nCurrentBoundaryPathIndex ].EvaluateGroup( rDGR );
+ }
+ if ( bExecutingGroupCode == sal_False )
+ DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+ break;
+ }
+}
+
+DXFHatchEntity::~DXFHatchEntity()
+{
+ delete[] pBoundaryPathData;
+}
+
+//--------------------------DXFVertexEntity-------------------------------------
+
+DXFVertexEntity::DXFVertexEntity() : DXFBasicEntity(DXF_VERTEX)
+{
+ fSWidth=-1.0;
+ fEWidth=-1.0;
+ fBulge=0.0;
+ nFlags=0;
+ fCFTDir=0.0;
+
+}
+
+void DXFVertexEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 40: fSWidth=rDGR.GetF(); break;
+ case 41: fEWidth=rDGR.GetF(); break;
+ case 42: fBulge=rDGR.GetF(); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 50: fCFTDir=rDGR.GetF(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//--------------------------DXFSeqEndEntity-------------------------------------
+
+DXFSeqEndEntity::DXFSeqEndEntity() : DXFBasicEntity(DXF_SEQEND)
+{
+}
+
+//--------------------------DXF3DFace-------------------------------------------
+
+DXF3DFaceEntity::DXF3DFaceEntity() : DXFBasicEntity(DXF_3DFACE)
+{
+ nIEFlags=0;
+}
+
+void DXF3DFaceEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 10: aP0.fx=rDGR.GetF(); break;
+ case 20: aP0.fy=rDGR.GetF(); break;
+ case 30: aP0.fz=rDGR.GetF(); break;
+ case 11: aP1.fx=rDGR.GetF(); break;
+ case 21: aP1.fy=rDGR.GetF(); break;
+ case 31: aP1.fz=rDGR.GetF(); break;
+ case 12: aP2.fx=rDGR.GetF(); break;
+ case 22: aP2.fy=rDGR.GetF(); break;
+ case 32: aP2.fz=rDGR.GetF(); break;
+ case 13: aP3.fx=rDGR.GetF(); break;
+ case 23: aP3.fy=rDGR.GetF(); break;
+ case 33: aP3.fz=rDGR.GetF(); break;
+ case 70: nIEFlags=rDGR.GetI(); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+
+//--------------------------DXFDimensionEntity----------------------------------
+
+DXFDimensionEntity::DXFDimensionEntity() : DXFBasicEntity(DXF_DIMENSION)
+{
+ sPseudoBlock[0]=0;
+}
+
+void DXFDimensionEntity::EvaluateGroup(DXFGroupReader & rDGR)
+{
+ switch (rDGR.GetG()) {
+ case 2: strncpy( sPseudoBlock, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ default: DXFBasicEntity::EvaluateGroup(rDGR);
+ }
+}
+
+//---------------------------- DXFEntites --------------------------------------
+
+void DXFEntities::Read(DXFGroupReader & rDGR)
+{
+ DXFBasicEntity * pE, * * ppSucc;
+
+ ppSucc=&pFirst;
+ while (*ppSucc!=NULL) ppSucc=&((*ppSucc)->pSucc);
+
+ while (rDGR.GetG()!=0) rDGR.Read();
+
+ while (strcmp(rDGR.GetS(),"ENDBLK")!=0 &&
+ strcmp(rDGR.GetS(),"ENDSEC")!=0 &&
+ strcmp(rDGR.GetS(),"EOF")!=0 )
+ {
+
+ if (strcmp(rDGR.GetS(),"LINE" )==0) pE=new DXFLineEntity;
+ else if (strcmp(rDGR.GetS(),"POINT" )==0) pE=new DXFPointEntity;
+ else if (strcmp(rDGR.GetS(),"CIRCLE" )==0) pE=new DXFCircleEntity;
+ else if (strcmp(rDGR.GetS(),"ARC" )==0) pE=new DXFArcEntity;
+ else if (strcmp(rDGR.GetS(),"TRACE" )==0) pE=new DXFTraceEntity;
+ else if (strcmp(rDGR.GetS(),"SOLID" )==0) pE=new DXFSolidEntity;
+ else if (strcmp(rDGR.GetS(),"TEXT" )==0) pE=new DXFTextEntity;
+ else if (strcmp(rDGR.GetS(),"SHAPE" )==0) pE=new DXFShapeEntity;
+ else if (strcmp(rDGR.GetS(),"INSERT" )==0) pE=new DXFInsertEntity;
+ else if (strcmp(rDGR.GetS(),"ATTDEF" )==0) pE=new DXFAttDefEntity;
+ else if (strcmp(rDGR.GetS(),"ATTRIB" )==0) pE=new DXFAttribEntity;
+ else if (strcmp(rDGR.GetS(),"POLYLINE" )==0) pE=new DXFPolyLineEntity;
+ else if (strcmp(rDGR.GetS(),"LWPOLYLINE")==0) pE=new DXFLWPolyLineEntity;
+ else if (strcmp(rDGR.GetS(),"VERTEX" )==0) pE=new DXFVertexEntity;
+ else if (strcmp(rDGR.GetS(),"SEQEND" )==0) pE=new DXFSeqEndEntity;
+ else if (strcmp(rDGR.GetS(),"3DFACE" )==0) pE=new DXF3DFaceEntity;
+ else if (strcmp(rDGR.GetS(),"DIMENSION" )==0) pE=new DXFDimensionEntity;
+ else if (strcmp(rDGR.GetS(),"HATCH" )==0) pE=new DXFHatchEntity;
+ else
+ {
+ do {
+ rDGR.Read();
+ } while (rDGR.GetG()!=0);
+ continue;
+ }
+ *ppSucc=pE;
+ ppSucc=&(pE->pSucc);
+ pE->Read(rDGR);
+ }
+}
+
+void DXFEntities::Clear()
+{
+ DXFBasicEntity * ptmp;
+
+ while (pFirst!=NULL) {
+ ptmp=pFirst;
+ pFirst=ptmp->pSucc;
+ delete ptmp;
+ }
+}
+
diff --git a/filter/source/graphicfilter/idxf/dxfentrd.hxx b/filter/source/graphicfilter/idxf/dxfentrd.hxx
new file mode 100644
index 000000000000..3ddcc8f3d7ea
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfentrd.hxx
@@ -0,0 +1,602 @@
+/*************************************************************************
+ *
+ * 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 _DXFENTRD_HXX
+#define _DXFENTRD_HXX
+
+#include <dxfgrprd.hxx>
+#include <dxfvec.hxx>
+
+#include <deque>
+
+typedef std::deque< Point > DXFPointArray;
+
+//------------------------------------------------------------------------------
+//------------------------- Art eines Entity -----------------------------------
+//------------------------------------------------------------------------------
+
+enum DXFEntityType {
+ DXF_LINE,
+ DXF_POINT,
+ DXF_CIRCLE,
+ DXF_ARC,
+ DXF_TRACE,
+ DXF_SOLID,
+ DXF_TEXT,
+ DXF_SHAPE,
+ DXF_INSERT,
+ DXF_ATTDEF,
+ DXF_ATTRIB,
+ DXF_POLYLINE,
+ DXF_VERTEX,
+ DXF_SEQEND,
+ DXF_3DFACE,
+ DXF_DIMENSION,
+ DXF_LWPOLYLINE,
+ DXF_HATCH
+};
+
+//------------------------------------------------------------------------------
+//---------------------- Basisklasse fuer ein Entity ---------------------------
+//------------------------------------------------------------------------------
+
+class DXFBasicEntity {
+
+public:
+
+ DXFBasicEntity * pSucc;
+ // Zeiger auf naechstes Entity (in der Liste DXFEntities.pFirst)
+
+ DXFEntityType eType;
+ // Art des Entitys (Linie oder Kreis oder was)
+
+ // Eigenschaftenm, die alle Entities besitzen, jeweils
+ // durch den Gruppencode kommentiert:
+ char sLayer[DXF_MAX_STRING_LEN+1]; // 8
+ char sLineType[DXF_MAX_STRING_LEN+1]; // 6
+ double fElevation; // 38
+ double fThickness; // 39
+ long nColor; // 62
+ long nSpace; // 67
+ DXFVector aExtrusion; // 210,220,230
+
+protected:
+
+ DXFBasicEntity(DXFEntityType eThisType);
+ // Konstruktoren der Entities initialiseren immer mit Defaultwerten.
+
+public:
+
+ virtual ~DXFBasicEntity();
+ virtual void Read(DXFGroupReader & rDGR);
+ // Liest die Prameter ein, bis zur naechten 0-Gruppe
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+ // Diese Methode wird durch Read() fuer jeden Parameter (bzw. fuer jede
+ // Gruppe) aufgerufen.
+ // Sofern der Gruppencode dem Entity bekannt ist, wird der entsprechende
+ // Parameter geholt.
+
+};
+
+//------------------------------------------------------------------------------
+//---------------- die verschiedenen Arten von Entyties ------------------------
+//------------------------------------------------------------------------------
+
+//--------------------------Line------------------------------------------------
+
+class DXFLineEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ DXFVector aP1; // 11,21,31
+
+ DXFLineEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Point-----------------------------------------------
+
+class DXFPointEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+
+ DXFPointEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Circle----------------------------------------------
+
+class DXFCircleEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fRadius; // 40
+
+ DXFCircleEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Arc-------------------------------------------------
+
+class DXFArcEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fRadius; // 40
+ double fStart; // 50
+ double fEnd; // 51
+
+ DXFArcEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Trace-----------------------------------------------
+
+class DXFTraceEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ DXFVector aP1; // 11,21,31
+ DXFVector aP2; // 12,22,32
+ DXFVector aP3; // 13,23,33
+
+ DXFTraceEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Solid-----------------------------------------------
+
+class DXFSolidEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ DXFVector aP1; // 11,21,31
+ DXFVector aP2; // 12,22,32
+ DXFVector aP3; // 13,23,33
+
+ DXFSolidEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Text------------------------------------------------
+
+class DXFTextEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fHeight; // 40
+ char sText[DXF_MAX_STRING_LEN+1]; // 1
+ double fRotAngle; // 50
+ double fXScale; // 41
+ double fOblAngle; // 42
+ char sStyle[DXF_MAX_STRING_LEN+1]; // 7
+ long nGenFlags; // 71
+ long nHorzJust; // 72
+ long nVertJust; // 73
+ DXFVector aAlign; // 11,21,31
+
+ DXFTextEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Shape-----------------------------------------------
+
+class DXFShapeEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fSize; // 40
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ double fRotAngle; // 50
+ double fXScale; // 41
+ double fOblAngle; // 51
+
+ DXFShapeEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Insert----------------------------------------------
+
+class DXFInsertEntity : public DXFBasicEntity {
+
+public:
+
+ long nAttrFlag; // 66
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ DXFVector aP0; // 10,20,30
+ double fXScale; // 41
+ double fYScale; // 42
+ double fZScale; // 43
+ double fRotAngle; // 50
+ long nColCount; // 70
+ long nRowCount; // 71
+ double fColSpace; // 44
+ double fRowSpace; // 45
+
+ DXFInsertEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------AttDef----------------------------------------------
+
+class DXFAttDefEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fHeight; // 40
+ char sDefVal[DXF_MAX_STRING_LEN+1]; // 1
+ char sPrompt[DXF_MAX_STRING_LEN+1]; // 3
+ char sTagStr[DXF_MAX_STRING_LEN+1]; // 2
+ long nAttrFlags; // 70
+ long nFieldLen; // 73
+ double fRotAngle; // 50
+ double fXScale; // 41
+ double fOblAngle; // 51
+ char sStyle[DXF_MAX_STRING_LEN+1]; // 7
+ long nGenFlags; // 71
+ long nHorzJust; // 72
+ long nVertJust; // 74
+ DXFVector aAlign; // 11,21,31
+
+ DXFAttDefEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Attrib----------------------------------------------
+
+class DXFAttribEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fHeight; // 40
+ char sText[DXF_MAX_STRING_LEN+1]; // 1
+ char sTagStr[DXF_MAX_STRING_LEN+1]; // 2
+ long nAttrFlags; // 70
+ long nFieldLen; // 73
+ double fRotAngle; // 50
+ double fXScale; // 41
+ double fOblAngle; // 51
+ char sStyle[DXF_MAX_STRING_LEN+1]; // 7
+ long nGenFlags; // 71
+ long nHorzJust; // 72
+ long nVertJust; // 74
+ DXFVector aAlign; // 11,21,31
+
+ DXFAttribEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------PolyLine--------------------------------------------
+
+class DXFPolyLineEntity : public DXFBasicEntity {
+
+public:
+
+ double fElevation; // 30
+ long nFlags; // 70
+ double fSWidth; // 40
+ double fEWidth; // 41
+ long nMeshMCount; // 71
+ long nMeshNCount; // 72
+ long nMDensity; // 73
+ long nNDensity; // 74
+ long nCSSType; // 75
+
+ DXFPolyLineEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+class DXFLWPolyLineEntity : public DXFBasicEntity
+{
+ sal_Int32 nIndex;
+
+ public :
+
+ sal_Int32 nCount; // 90
+ sal_Int32 nFlags; // 70 1 = closed, 128 = plinegen
+ double fConstantWidth; // 43 (optional - default: 0, not used if fStartWidth and/or fEndWidth is used)
+ double fStartWidth; // 40
+ double fEndWidth; // 41
+
+ DXFVector* pP;
+
+ DXFLWPolyLineEntity();
+ ~DXFLWPolyLineEntity();
+
+ protected :
+
+ virtual void EvaluateGroup( DXFGroupReader & rDGR );
+
+};
+
+//-------------------------- Hatch ---------------------------------------------
+
+struct DXFEdgeType
+{
+ sal_Int32 nEdgeType;
+
+ virtual ~DXFEdgeType(){};
+ virtual sal_Bool EvaluateGroup( DXFGroupReader & /*rDGR*/ ){ return sal_True; };
+
+ protected :
+
+ DXFEdgeType( sal_Int32 EdgeType ):nEdgeType(EdgeType){};
+};
+struct DXFEdgeTypeLine : public DXFEdgeType
+{
+ DXFVector aStartPoint; // 10,20
+ DXFVector aEndPoint; // 11,21
+ DXFEdgeTypeLine();
+ virtual ~DXFEdgeTypeLine();
+ virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
+};
+struct DXFEdgeTypeCircularArc : public DXFEdgeType
+{
+ DXFVector aCenter; // 10,20
+ double fRadius; // 40
+ double fStartAngle; // 50
+ double fEndAngle; // 51
+ sal_Int32 nIsCounterClockwiseFlag; // 73
+ DXFEdgeTypeCircularArc();
+ virtual ~DXFEdgeTypeCircularArc();
+ virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
+};
+struct DXFEdgeTypeEllipticalArc : public DXFEdgeType
+{
+ DXFVector aCenter; // 10,20
+ DXFVector aEndPoint; // 11,21
+ double fLength; // 40
+ double fStartAngle; // 50
+ double fEndAngle; // 51
+ sal_Int32 nIsCounterClockwiseFlag; // 73
+
+ DXFEdgeTypeEllipticalArc();
+ virtual ~DXFEdgeTypeEllipticalArc();
+ virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
+};
+struct DXFEdgeTypeSpline : public DXFEdgeType
+{
+ sal_Int32 nDegree; // 94
+ sal_Int32 nRational; // 73
+ sal_Int32 nPeriodic; // 74
+ sal_Int32 nKnotCount; // 75
+ sal_Int32 nControlCount; // 76
+
+ DXFEdgeTypeSpline();
+ virtual ~DXFEdgeTypeSpline();
+ virtual sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
+};
+
+typedef std::deque< DXFEdgeType* > DXFEdgeTypeArray;
+
+struct DXFBoundaryPathData
+{
+ sal_Int32 nFlags; // 92
+ sal_Int32 nHasBulgeFlag; // 72
+ sal_Int32 nIsClosedFlag; // 73
+ sal_Int32 nPointCount; // 93
+ double fBulge; // 42
+ sal_Int32 nSourceBoundaryObjects; // 97
+ sal_Int32 nEdgeCount; // 93
+
+ sal_Bool bIsPolyLine;
+ sal_Int32 nPointIndex;
+
+ DXFVector* pP;
+ DXFEdgeTypeArray aEdges;
+
+ DXFBoundaryPathData();
+ ~DXFBoundaryPathData();
+
+ sal_Bool EvaluateGroup( DXFGroupReader & rDGR );
+};
+
+class DXFHatchEntity : public DXFBasicEntity
+{
+ sal_Bool bIsInBoundaryPathContext;
+ sal_Int32 nCurrentBoundaryPathIndex;
+
+ public :
+
+ DXFVector aElevationPoint;
+ sal_Int32 nFlags; // 70 (solid fill = 1, pattern fill = 0)
+ sal_Int32 nAssociativityFlag; // 71 (assoiciative = 1, non-associative = 0)
+ sal_Int32 nBoundaryPathCount; // 91
+ sal_Int32 nHatchStyle; // 75 (odd parity = 0, outmost area = 1, entire area = 2 )
+ sal_Int32 nHatchPatternType; // 76 (user defined = 0, predefined = 1, custom = 2)
+ double fHatchPatternAngle; // 52 (pattern fill only)
+ double fHatchPatternScale; // 41 (pattern fill only:scale or spacing)
+ sal_Int32 nHatchDoubleFlag; // 77 (pattern fill only:double = 1, not double = 0)
+ sal_Int32 nHatchPatternDefinitionLines; // 78
+ double fPixelSize; // 47
+ sal_Int32 nNumberOfSeedPoints; // 98
+
+ DXFBoundaryPathData* pBoundaryPathData;
+
+ DXFHatchEntity();
+ ~DXFHatchEntity();
+
+ protected :
+
+ virtual void EvaluateGroup( DXFGroupReader & rDGR );
+};
+
+
+//--------------------------Vertex----------------------------------------------
+
+class DXFVertexEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ double fSWidth; // 40 (Wenn <0.0, dann gilt DXFPolyLine::fSWidth)
+ double fEWidth; // 41 (Wenn <0.0, dann gilt DXFPolyLine::fEWidth)
+ double fBulge; // 42
+ long nFlags; // 70
+ double fCFTDir; // 50
+
+ DXFVertexEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------SeqEnd----------------------------------------------
+
+class DXFSeqEndEntity : public DXFBasicEntity {
+
+public:
+
+ DXFSeqEndEntity();
+};
+
+//--------------------------3DFace----------------------------------------------
+
+class DXF3DFaceEntity : public DXFBasicEntity {
+
+public:
+
+ DXFVector aP0; // 10,20,30
+ DXFVector aP1; // 11,21,31
+ DXFVector aP2; // 12,22,32
+ DXFVector aP3; // 13,23,33
+ long nIEFlags; // 70
+
+ DXF3DFaceEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//--------------------------Dimension-------------------------------------------
+
+class DXFDimensionEntity : public DXFBasicEntity {
+
+public:
+
+ char sPseudoBlock[DXF_MAX_STRING_LEN+1]; // 2
+
+ DXFDimensionEntity();
+
+protected:
+
+ virtual void EvaluateGroup(DXFGroupReader & rDGR);
+};
+
+//------------------------------------------------------------------------------
+//----------- Eine Menge von Entities lesen und repraesentieren ----------------
+//------------------------------------------------------------------------------
+
+class DXFEntities {
+
+public:
+
+ DXFEntities();
+ ~DXFEntities();
+
+ DXFBasicEntity * pFirst; // Liste von Entities, READ ONLY!
+
+ void Read(DXFGroupReader & rDGR);
+ // Liest Entitis per rGDR aus einer DXF-Datei bis zu
+ // einem ENDBLK, ENDSEC oder EOF (der Gruppe 0).
+ // (Alle unbekannten Dinge werden uebersprungen)
+
+ void Clear();
+ // Loescht alle Entities
+};
+
+//------------------------------------------------------------------------------
+//--------------------------------- inlines ------------------------------------
+//------------------------------------------------------------------------------
+
+inline DXFEntities::DXFEntities()
+{
+ pFirst=NULL;
+}
+
+
+inline DXFEntities::~DXFEntities()
+{
+ Clear();
+}
+
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfgrprd.cxx b/filter/source/graphicfilter/idxf/dxfgrprd.cxx
new file mode 100644
index 000000000000..f09b17e80635
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfgrprd.cxx
@@ -0,0 +1,361 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <stdlib.h>
+#include <tools/stream.hxx>
+#include "dxfgrprd.hxx"
+
+// ----------------------------------------------------------------------------
+
+// we use an own ReadLine function, because Stream::ReadLine stops if
+// a 0-sign occurs; this functions converts 0-signs to blanks and reads
+// a complete line until a cr/lf is found
+
+BOOL DXFReadLine( SvStream& rIStm, ByteString& rStr )
+{
+ char buf[256 + 1];
+ BOOL bEnd = FALSE;
+ ULONG nOldFilePos = rIStm.Tell();
+ char c = 0;
+
+ rStr.Erase();
+
+ while( !bEnd && !rIStm.GetError() ) // !!! nicht auf EOF testen,
+ // !!! weil wir blockweise
+ // !!! lesen
+ {
+ USHORT nLen = (USHORT)rIStm.Read( buf, sizeof(buf)-1 );
+ if( !nLen )
+ {
+ if( rStr.Len() == 0 )
+ return FALSE;
+ else
+ break;
+ }
+
+ for( USHORT n = 0; n < nLen ; n++ )
+ {
+ c = buf[n];
+ if( c != '\n' && c != '\r' )
+ {
+ if( !c )
+ c = ' ';
+ rStr += c;
+ }
+ else
+ {
+ bEnd = TRUE;
+ break;
+ }
+ }
+ }
+
+ if( !bEnd && !rIStm.GetError() && rStr.Len() )
+ bEnd = TRUE;
+
+ nOldFilePos += rStr.Len();
+ if( rIStm.Tell() > nOldFilePos )
+ nOldFilePos++;
+ rIStm.Seek( nOldFilePos ); // seeken wg. obigem BlockRead!
+
+ if( bEnd && (c=='\r' || c=='\n')) // Sonderbehandlung DOS-Dateien
+ {
+ char cTemp;
+ rIStm.Read((char*)&cTemp , sizeof(cTemp) );
+ if( cTemp == c || (cTemp != '\n' && cTemp != '\r') )
+ rIStm.Seek( nOldFilePos );
+ }
+
+ return bEnd;
+}
+
+// ------------------
+
+DXFGroupReader::DXFGroupReader(SvStream & rIStream, USHORT nminpercent, USHORT nmaxpercent ) :
+ rIS(rIStream)
+{
+ USHORT i;
+
+ nIBuffPos=0;
+ nIBuffSize=0;
+ bStatus=TRUE;
+ nLastG=0;
+ nGCount=0;
+
+ nMinPercent=(ULONG)nminpercent;
+ nMaxPercent=(ULONG)nmaxpercent;
+ nLastPercent=nMinPercent;
+
+ rIS.Seek(STREAM_SEEK_TO_END);
+ nFileSize=rIS.Tell();
+ rIS.Seek(0);
+
+ for (i=0; i<10; i++) S0_9[i][0]=0;
+ S100[ 0 ] = S102[ 0 ] = 0;
+ for (i=0; i<50; i++) F10_59[i]=0.0;
+ for (i=0; i<20; i++) I60_79[i]=0;
+ for (i=0; i<10; i++) I90_99[i]=0;
+ for (i=0; i< 8; i++) F140_147[i]=0.0;
+ for (i=0; i< 6; i++) I170_175[i]=0;
+ for (i=0; i<30; i++) F210_239[i]=0.0;
+ for (i=0; i<11; i++) S999_1009[i][0]=0;
+ for (i=0; i<50; i++) F1010_1059[i]=0.0;
+ for (i=0; i<20; i++) I1060_1079[i]=0;
+
+}
+
+
+USHORT DXFGroupReader::Read()
+{
+ sal_uInt16 nG = 0;
+ if ( bStatus )
+ {
+ nGCount++;
+ nG = (sal_uInt16)ReadI();
+ if ( bStatus )
+ {
+ char aTmp[ DXF_MAX_STRING_LEN + 1 ];
+
+ if (nG< 10) ReadS(S0_9[nG]);
+ else if (nG< 60) F10_59[nG-10]=ReadF();
+ else if (nG< 80) I60_79[nG-60]=ReadI();
+ else if (nG< 90) ReadS( aTmp );
+ else if (nG< 99) I90_99[nG-90]=ReadI();
+ else if (nG==100) ReadS(S100);
+ else if (nG==102) ReadS(S102);
+ else if (nG==105) ReadS( aTmp );
+ else if (nG< 140) ReadS( aTmp );
+ else if (nG< 148) F140_147[nG-140]=ReadF();
+ else if (nG< 170) ReadS( aTmp );
+ else if (nG< 176) I170_175[nG-175]=ReadI();
+ else if (nG< 180) ReadI();
+ else if (nG< 210) ReadS( aTmp );
+ else if (nG< 240) F210_239[nG-210]=ReadF();
+ else if (nG<=369) ReadS( aTmp );
+ else if (nG< 999) ReadS( aTmp );
+ else if (nG<1010) ReadS(S999_1009[nG-999]);
+ else if (nG<1060) F1010_1059[nG-1010]=ReadF();
+ else if (nG<1080) I1060_1079[nG-1060]=ReadI();
+ else bStatus = sal_False;
+ }
+ }
+ if ( bStatus )
+ nLastG = nG;
+ else
+ {
+ nG = 0;
+ SetS( 0, "EOF" );
+ if ( nGCount != 0xffffffff )
+ {
+ // InfoBox(NULL,String("Fehler ab Gruppe Nr ")+String(nGCount)).Execute();
+ nGCount=0xffffffff;
+ }
+ }
+ nLastG = nG;
+ return nG;
+}
+
+
+long DXFGroupReader::GetI(USHORT nG)
+{
+ sal_Int32 nRetValue = 0;
+ if ( ( nG >= 60 ) && ( nG <= 79 ) )
+ nRetValue = I60_79[ nG - 60 ];
+ else if ( ( nG >= 90 ) && ( nG <= 99 ) )
+ nRetValue = I90_99[ nG - 90 ];
+ else if ( ( nG >= 170 ) && ( nG <= 175 ) )
+ nRetValue = I170_175[ nG - 170 ];
+ else if ( ( nG >= 1060 ) && ( nG <= 1079 ) )
+ nRetValue = I1060_1079[ nG - 1060 ];
+ return nRetValue;
+}
+
+double DXFGroupReader::GetF(USHORT nG)
+{
+ nG-=10;
+ if (nG<50) return F10_59[nG];
+ else {
+ nG-=130;
+ if (nG<8) return F140_147[nG];
+ else {
+ nG-=70;
+ if (nG<30) return F210_239[nG];
+ else {
+ nG-=800;
+ if (nG<50) return F1010_1059[nG];
+ else return 0;
+ }
+ }
+ }
+}
+
+const char * DXFGroupReader::GetS(USHORT nG)
+{
+ if (nG<10) return S0_9[nG];
+ else if ( nG == 100 )
+ return S100;
+ else if ( nG == 102 )
+ return S102;
+ else
+ {
+ nG-=999;
+ if (nG<11) return S999_1009[nG];
+ else return NULL;
+ }
+}
+
+void DXFGroupReader::SetF(USHORT nG, double fF)
+{
+ nG-=10;
+ if (nG<50) F10_59[nG]=fF;
+ else {
+ nG-=130;
+ if (nG<8) F140_147[nG]=fF;
+ else {
+ nG-=70;
+ if (nG<30) F210_239[nG]=fF;
+ else {
+ nG-=800;
+ if (nG<50) F1010_1059[nG]=fF;
+ }
+ }
+ }
+}
+
+
+void DXFGroupReader::SetS(USHORT nG, const char * sS)
+{
+ char* pPtr = NULL;
+ if ( nG < 10 )
+ pPtr = S0_9[ nG ];
+ else if ( nG == 100 )
+ pPtr = S100;
+ else if ( nG == 102 )
+ pPtr = S102;
+ else
+ {
+ nG -= 999;
+ if ( nG < 11 )
+ pPtr = S999_1009[ nG ];
+ }
+ if ( pPtr )
+ strncpy( pPtr, sS, DXF_MAX_STRING_LEN + 1 );
+}
+
+
+void DXFGroupReader::ReadLine(char * ptgt)
+{
+ ByteString aStr;
+ ULONG nLen;
+
+ DXFReadLine( rIS, aStr );
+
+ nLen = aStr.Len();
+ if ( nLen > DXF_MAX_STRING_LEN )
+ nLen = DXF_MAX_STRING_LEN;
+
+ memcpy( ptgt, aStr.GetBuffer(), nLen );
+ ptgt[ nLen ] = 0x00;
+/*
+ if ( pCallback )
+ {
+ const ULONG nPercent= nMinPercent + (nMaxPercent-nMinPercent)*rIS.Tell() / nFileSize;
+
+ if ( nPercent >= nLastPercent + 4 )
+ {
+ nLastPercent=nPercent;
+ if (((*pCallback)(pCallerData,(USHORT)nPercent))==TRUE)
+ bStatus=FALSE;
+ }
+ }
+*/
+}
+
+
+long DXFGroupReader::ReadI()
+{
+ char sl[DXF_MAX_STRING_LEN+1],*p;
+ long res,nv;
+
+ ReadLine(sl);
+
+ p=sl;
+
+ while(*p==0x20) p++;
+
+ if ((*p<'0' || *p>'9') && *p!='-') {
+ bStatus=FALSE;
+ return 0;
+ }
+
+ if (*p=='-') {
+ nv=-1;
+ p++;
+ }
+ else nv=1;
+
+ res=0;
+ do {
+ res=res*10+(long)(*p-'0');
+ p++;
+ } while (*p>='0' && *p<='9');
+
+ while (*p==0x20) p++;
+ if (*p!=0) {
+ bStatus=FALSE;
+ return 0;
+ }
+
+ return res*nv;
+}
+
+
+double DXFGroupReader::ReadF()
+{
+ char sl[DXF_MAX_STRING_LEN+1],*p;
+
+ ReadLine(sl);
+ p=sl;
+ while(*p==0x20) p++;
+ if ((*p<'0' || *p>'9') && *p!='.' && *p!='-') {
+ bStatus=FALSE;
+ return 0.0;
+ }
+ return atof(p);
+}
+
+
+void DXFGroupReader::ReadS(char * ptgt)
+{
+ ReadLine(ptgt);
+}
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfgrprd.hxx b/filter/source/graphicfilter/idxf/dxfgrprd.hxx
new file mode 100644
index 000000000000..0b9a40ff6bf8
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfgrprd.hxx
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * 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 _DXFGRPRD_HXX
+#define _DXFGRPRD_HXX
+
+#include <svtools/fltcall.hxx>
+
+#define DXF_MAX_STRING_LEN 256 // Max Stringlaenge (ohne die 0)
+
+
+class DXFGroupReader
+{
+
+public:
+
+ // Anmerkkung:
+ // sizeof(DXFGroupReader) ist gross, also nur dynamisch anlegen!
+
+ DXFGroupReader( SvStream & rIStream, USHORT nMinPercent, USHORT nMaxPercent );
+
+ BOOL GetStatus();
+
+ void SetError();
+
+ USHORT Read();
+ // Liesst die naechste Gruppe ein und liefert den Gruppencode zurueck.
+ // Im Falle eines Fehlers liefert GetStatus() FALSE, Gruppencode wird 0
+ // gesetzt, und es wird SetS(0,"EOF") ausgefuehrt.
+
+ USHORT GetG();
+ // Liefert den letzten Gruppencode (also was Read() zuletzt lieferte)
+
+ long GetI();
+ // Liefert den Integer-Wert zur Gruppe, die vorher mit Read() gelesen wurde.
+ // Dabei muss es sich um einen Gruppencode fuer den Datentyp Integer
+ // gehandelt haben, wenn nicht, wird 0 gelieferet.
+
+ double GetF();
+ // Liefert den Floatingpoint-Wert zur Gruppe, die vorher mit Read() gelesen wurde.
+ // Dabei muss es sich um einen Gruppencode fuer den Datentyp Floatingpoint
+ // gehandelt haben, wenn nicht, wird 0 geliefert.
+
+ const char * GetS();
+ // Liefert den String zur Gruppe, die vorher mit Read() gelesen wurde.
+ // Dabei muss es sich um einen Gruppencode fuer den Datentyp String
+ // gehandelt haben, wenn nicht, wird NULL geliefert.
+
+ // Folgende drei Methoden arbeiten wie die obigen, nur kann auch ein anderer als der
+ // aktuelle Gruppencode angegeben werden. (DXFGroupReader speichert die Parameter
+ // zu allen Gruppencodes. Dadurch ist es moeglich, dass zunaechst mit Read() einige
+ // verschiedene Gruppen eingelesen werden, bevor sie ausgewertet werden.)
+ long GetI(USHORT nG);
+ double GetF(USHORT nG);
+ const char * GetS(USHORT nG);
+
+ // Mit folgenden Methoden koennen die aktuell gespeicherten Werte zu den
+ // Gruppencodes veraendert werden. (z.B. um Defaultwerte zu setzen, bevor
+ // 'blind' eine Menge von Gruppen eingelesen wird.)
+ void SetF(USHORT nG, double fF);
+ void SetS(USHORT nG, const char * sS); // (wird kopiert)
+
+private:
+
+ void ReadLine(char * ptgt);
+ long ReadI();
+ double ReadF();
+ void ReadS(char * ptgt);
+
+ SvStream & rIS;
+ char sIBuff[1024];
+ USHORT nIBuffSize,nIBuffPos;
+ BOOL bStatus;
+ USHORT nLastG;
+ ULONG nGCount;
+
+ ULONG nMinPercent;
+ ULONG nMaxPercent;
+ ULONG nLastPercent;
+ ULONG nFileSize;
+
+ char S0_9 [10][DXF_MAX_STRING_LEN+1]; // Strings Gruppencodes 0..9
+ double F10_59 [50]; // Floats Gruppencodes 10..59
+ long I60_79 [20]; // Integers Gruppencodes 60..79
+ long I90_99 [10];
+ char S100 [DXF_MAX_STRING_LEN+1];
+ char S102 [DXF_MAX_STRING_LEN+1];
+ double F140_147 [ 8]; // Floats Gruppencodes 140..147
+ long I170_175 [ 6]; // Integers Gruppencodes 170..175
+ double F210_239 [30]; // Floats Gruppencodes 210..239
+ char S999_1009 [11][DXF_MAX_STRING_LEN+1]; // Strings Gruppencodes 999..1009
+ double F1010_1059[50]; // Floats Gruppencodes 1010..1059
+ long I1060_1079[20]; // Integers Gruppencodes 1060..1079
+
+};
+
+
+inline BOOL DXFGroupReader::GetStatus()
+{
+ return bStatus;
+}
+
+
+inline void DXFGroupReader::SetError()
+{
+ bStatus=FALSE;
+}
+
+inline USHORT DXFGroupReader::GetG()
+{
+ return nLastG;
+}
+
+inline long DXFGroupReader::GetI()
+{
+ return GetI(nLastG);
+}
+
+inline double DXFGroupReader::GetF()
+{
+ return GetF(nLastG);
+}
+
+inline const char * DXFGroupReader::GetS()
+{
+ return GetS(nLastG);
+}
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfreprd.cxx b/filter/source/graphicfilter/idxf/dxfreprd.cxx
new file mode 100644
index 000000000000..9d6494b87f9d
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfreprd.cxx
@@ -0,0 +1,385 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <dxfreprd.hxx>
+
+
+//------------------DXFBoundingBox--------------------------------------------
+
+
+void DXFBoundingBox::Union(const DXFVector & rVector)
+{
+ if (bEmpty==TRUE) {
+ fMinX=rVector.fx;
+ fMinY=rVector.fy;
+ fMinZ=rVector.fz;
+ fMaxX=rVector.fx;
+ fMaxY=rVector.fy;
+ fMaxZ=rVector.fz;
+ bEmpty=FALSE;
+ }
+ else {
+ if (fMinX>rVector.fx) fMinX=rVector.fx;
+ if (fMinY>rVector.fy) fMinY=rVector.fy;
+ if (fMinZ>rVector.fz) fMinZ=rVector.fz;
+ if (fMaxX<rVector.fx) fMaxX=rVector.fx;
+ if (fMaxY<rVector.fy) fMaxY=rVector.fy;
+ if (fMaxZ<rVector.fz) fMaxZ=rVector.fz;
+ }
+}
+
+
+//------------------DXFPalette------------------------------------------------
+
+
+DXFPalette::DXFPalette()
+{
+ short i,j,nHue,nNSat,nVal,nC[3],nmax,nmed,nmin;
+ BYTE nV;
+
+ pRed =new BYTE[256];
+ pGreen=new BYTE[256];
+ pBlue =new BYTE[256];
+
+ // Farben 0 - 9 (normale Farben)
+ SetColor(0, 0x00, 0x00, 0x00); // eigentlich nie benutzt
+ SetColor(1, 0xff, 0x00, 0x00);
+ SetColor(2, 0xff, 0xff, 0x00);
+ SetColor(3, 0x00, 0xff, 0x00);
+ SetColor(4, 0x00, 0xff, 0xff);
+ SetColor(5, 0x00, 0x00, 0xff);
+ SetColor(6, 0xff, 0x00, 0xff);
+ SetColor(7, 0x0f, 0x0f, 0x0f); // eigentlich weiss ???
+ SetColor(8, 0x80, 0x80, 0x80);
+ SetColor(9, 0xc0, 0xc0, 0xc0);
+
+ // Farben 10 - 249
+ // (Universal-Palette: 24 Farbtoene * 5 Helligkeiten * 2 Saettigungen )
+ i=10;
+ for (nHue=0; nHue<24; nHue++) {
+ for (nVal=5; nVal>=1; nVal--) {
+ for (nNSat=0; nNSat<2; nNSat++) {
+ nmax=((nHue+3)>>3)%3;
+ j=nHue-(nmax<<3); if (j>4) j=j-24;
+ if (j>=0) {
+ nmed=(nmax+1)%3;
+ nmin=(nmax+2)%3;
+ }
+ else {
+ nmed=(nmax+2)%3;
+ nmin=(nmax+1)%3;
+ j=-j;
+ }
+ nC[nmin]=0;
+ nC[nmed]=255*j/4;
+ nC[nmax]=255;
+ if (nNSat!=0) {
+ for (j=0; j<3; j++) nC[j]=(nC[j]>>1)+128;
+ }
+ for (j=0; j<3; j++) nC[j]=nC[j]*nVal/5;
+ SetColor((BYTE)(i++),(BYTE)nC[0],(BYTE)nC[1],(BYTE)nC[2]);
+ }
+ }
+ }
+
+ // Farben 250 - 255 (Grautoenne)
+ for (i=0; i<6; i++) {
+ nV=(BYTE)(i*38+65);
+ SetColor((BYTE)(250+i),nV,nV,nV);
+ }
+}
+
+
+DXFPalette::~DXFPalette()
+{
+ delete[] pBlue;
+ delete[] pGreen;
+ delete[] pRed;
+}
+
+
+void DXFPalette::SetColor(BYTE nIndex, BYTE nRed, BYTE nGreen, BYTE nBlue)
+{
+ pRed[nIndex]=nRed;
+ pGreen[nIndex]=nGreen;
+ pBlue[nIndex]=nBlue;
+}
+
+
+//------------------DXFRepresentation-----------------------------------------
+
+
+DXFRepresentation::DXFRepresentation()
+{
+ setTextEncoding(RTL_TEXTENCODING_IBM_437);
+ setGlobalLineTypeScale(1.0);
+}
+
+
+DXFRepresentation::~DXFRepresentation()
+{
+}
+
+
+BOOL DXFRepresentation::Read( SvStream & rIStream, USHORT nMinPercent, USHORT nMaxPercent)
+{
+ DXFGroupReader * pDGR;
+ BOOL bRes;
+
+ aTables.Clear();
+ aBlocks.Clear();
+ aEntities.Clear();
+
+ pDGR = new DXFGroupReader( rIStream, nMinPercent, nMaxPercent );
+
+ pDGR->Read();
+ while (pDGR->GetG()!=0 || strcmp(pDGR->GetS(),"EOF")!=0) {
+ if (pDGR->GetG()==0 && strcmp(pDGR->GetS(),"SECTION")==0) {
+ if (pDGR->Read()!=2) {
+ pDGR->SetError();
+ break;
+ }
+ if (strcmp(pDGR->GetS(),"HEADER" )==0) ReadHeader(*pDGR);
+ else if (strcmp(pDGR->GetS(),"TABLES" )==0) aTables.Read(*pDGR);
+ else if (strcmp(pDGR->GetS(),"BLOCKS" )==0) aBlocks.Read(*pDGR);
+ else if (strcmp(pDGR->GetS(),"ENTITIES")==0) aEntities.Read(*pDGR);
+ else pDGR->Read();
+ }
+ else pDGR->Read();
+ }
+
+ bRes=pDGR->GetStatus();
+
+ delete pDGR;
+
+ if (bRes==TRUE && aBoundingBox.bEmpty==TRUE)
+ CalcBoundingBox(aEntities,aBoundingBox);
+
+ return bRes;
+}
+
+
+void DXFRepresentation::ReadHeader(DXFGroupReader & rDGR)
+{
+
+ while (rDGR.GetG()!=0 || (strcmp(rDGR.GetS(),"EOF")!=0 && strcmp(rDGR.GetS(),"ENDSEC")!=0) )
+ {
+ if (rDGR.GetG()==9) {
+ if (strcmp(rDGR.GetS(),"$EXTMIN")==0 ||
+ strcmp(rDGR.GetS(),"$EXTMAX")==0)
+ {
+ DXFVector aVector;
+ rDGR.SetF(10,0.0);
+ rDGR.SetF(20,0.0);
+ rDGR.SetF(30,0.0);
+ do {
+ rDGR.Read();
+ } while (rDGR.GetG()!=9 && rDGR.GetG()!=0);
+ aVector.fx=rDGR.GetF(10);
+ aVector.fy=rDGR.GetF(20);
+ aVector.fz=rDGR.GetF(30);
+ aBoundingBox.Union(aVector);
+ } else {
+ if (strcmp(rDGR.GetS(),"$DWGCODEPAGE")==0)
+ {
+ rDGR.Read();
+
+ // FIXME: we really need a whole table of
+ // $DWGCODEPAGE to encodings mappings
+ if ( (strcmp(rDGR.GetS(),"ANSI_932")==0) ||
+ (strcmp(rDGR.GetS(),"ansi_932")==0) ||
+ (strcmp(rDGR.GetS(),"DOS932")==0) ||
+ (strcmp(rDGR.GetS(),"dos932")==0) )
+ {
+ setTextEncoding(RTL_TEXTENCODING_MS_932);
+ }
+ }
+ else if (strcmp(rDGR.GetS(),"$LTSCALE")==0)
+ {
+ rDGR.Read();
+ setGlobalLineTypeScale(getGlobalLineTypeScale() * rDGR.GetF());
+ }
+ else rDGR.Read();
+ }
+ }
+ else rDGR.Read();
+ }
+}
+
+
+void DXFRepresentation::CalcBoundingBox(const DXFEntities & rEntities,
+ DXFBoundingBox & rBox)
+{
+ DXFBasicEntity * pBE=rEntities.pFirst;
+ while (pBE!=NULL) {
+ switch (pBE->eType) {
+ case DXF_LINE: {
+ const DXFLineEntity * pE = (DXFLineEntity*)pBE;
+ rBox.Union(pE->aP0);
+ rBox.Union(pE->aP1);
+ break;
+ }
+ case DXF_POINT: {
+ const DXFPointEntity * pE = (DXFPointEntity*)pBE;
+ rBox.Union(pE->aP0);
+ break;
+ }
+ case DXF_CIRCLE: {
+ const DXFCircleEntity * pE = (DXFCircleEntity*)pBE;
+ DXFVector aP;
+ aP=pE->aP0;
+ aP.fx-=pE->fRadius;
+ aP.fy-=pE->fRadius;
+ rBox.Union(aP);
+ aP=pE->aP0;
+ aP.fx+=pE->fRadius;
+ aP.fy+=pE->fRadius;
+ rBox.Union(aP);
+ break;
+ }
+ case DXF_ARC: {
+ const DXFArcEntity * pE = (DXFArcEntity*)pBE;
+ DXFVector aP;
+ aP=pE->aP0;
+ aP.fx-=pE->fRadius;
+ aP.fy-=pE->fRadius;
+ rBox.Union(aP);
+ aP=pE->aP0;
+ aP.fx+=pE->fRadius;
+ aP.fy+=pE->fRadius;
+ rBox.Union(aP);
+ break;
+ }
+ case DXF_TRACE: {
+ const DXFTraceEntity * pE = (DXFTraceEntity*)pBE;
+ rBox.Union(pE->aP0);
+ rBox.Union(pE->aP1);
+ rBox.Union(pE->aP2);
+ rBox.Union(pE->aP3);
+ break;
+ }
+ case DXF_SOLID: {
+ const DXFSolidEntity * pE = (DXFSolidEntity*)pBE;
+ rBox.Union(pE->aP0);
+ rBox.Union(pE->aP1);
+ rBox.Union(pE->aP2);
+ rBox.Union(pE->aP3);
+ break;
+ }
+ case DXF_TEXT: {
+ //const DXFTextEntity * pE = (DXFTextEntity*)pBE;
+ //???
+ break;
+ }
+ case DXF_SHAPE: {
+ //const DXFShapeEntity * pE = (DXFShapeEntity*)pBE;
+ //???
+ break;
+ }
+ case DXF_INSERT: {
+ const DXFInsertEntity * pE = (DXFInsertEntity*)pBE;
+ DXFBlock * pB;
+ DXFBoundingBox aBox;
+ DXFVector aP;
+ pB=aBlocks.Search(pE->sName);
+ if (pB==NULL) break;
+ CalcBoundingBox(*pB,aBox);
+ if (aBox.bEmpty==TRUE) break;
+ aP.fx=(aBox.fMinX-pB->aBasePoint.fx)*pE->fXScale+pE->aP0.fx;
+ aP.fy=(aBox.fMinY-pB->aBasePoint.fy)*pE->fYScale+pE->aP0.fy;
+ aP.fz=(aBox.fMinZ-pB->aBasePoint.fz)*pE->fZScale+pE->aP0.fz;
+ rBox.Union(aP);
+ aP.fx=(aBox.fMaxX-pB->aBasePoint.fx)*pE->fXScale+pE->aP0.fx;
+ aP.fy=(aBox.fMaxY-pB->aBasePoint.fy)*pE->fYScale+pE->aP0.fy;
+ aP.fz=(aBox.fMaxZ-pB->aBasePoint.fz)*pE->fZScale+pE->aP0.fz;
+ rBox.Union(aP);
+ break;
+ }
+ case DXF_ATTDEF: {
+ //const DXFAttDefEntity * pE = (DXFAttDefEntity*)pBE;
+ //???
+ break;
+ }
+ case DXF_ATTRIB: {
+ //const DXFAttribEntity * pE = (DXFAttribEntity*)pBE;
+ //???
+ break;
+ }
+ case DXF_VERTEX: {
+ const DXFVertexEntity * pE = (DXFVertexEntity*)pBE;
+ rBox.Union(pE->aP0);
+ break;
+ }
+ case DXF_3DFACE: {
+ const DXF3DFaceEntity * pE = (DXF3DFaceEntity*)pBE;
+ rBox.Union(pE->aP0);
+ rBox.Union(pE->aP1);
+ rBox.Union(pE->aP2);
+ rBox.Union(pE->aP3);
+ break;
+ }
+ case DXF_DIMENSION: {
+ const DXFDimensionEntity * pE = (DXFDimensionEntity*)pBE;
+ DXFBlock * pB;
+ DXFBoundingBox aBox;
+ DXFVector aP;
+ pB=aBlocks.Search(pE->sPseudoBlock);
+ if (pB==NULL) break;
+ CalcBoundingBox(*pB,aBox);
+ if (aBox.bEmpty==TRUE) break;
+ aP.fx=aBox.fMinX-pB->aBasePoint.fx;
+ aP.fy=aBox.fMinY-pB->aBasePoint.fy;
+ aP.fz=aBox.fMinZ-pB->aBasePoint.fz;
+ rBox.Union(aP);
+ aP.fx=aBox.fMaxX-pB->aBasePoint.fx;
+ aP.fy=aBox.fMaxY-pB->aBasePoint.fy;
+ aP.fz=aBox.fMaxZ-pB->aBasePoint.fz;
+ rBox.Union(aP);
+ break;
+ }
+ case DXF_POLYLINE: {
+ //const DXFAttribEntity * pE = (DXFAttribEntity*)pBE;
+ //???
+ break;
+ }
+ case DXF_SEQEND: {
+ //const DXFAttribEntity * pE = (DXFAttribEntity*)pBE;
+ //???
+ break;
+ }
+ case DXF_HATCH :
+ break;
+ case DXF_LWPOLYLINE :
+ break;
+ }
+ pBE=pBE->pSucc;
+ }
+}
diff --git a/filter/source/graphicfilter/idxf/dxfreprd.hxx b/filter/source/graphicfilter/idxf/dxfreprd.hxx
new file mode 100644
index 000000000000..c95d65cfbe46
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfreprd.hxx
@@ -0,0 +1,138 @@
+/*************************************************************************
+ *
+ * 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 _DXFREPRD_HXX
+#define _DXFREPRD_HXX
+
+#include <dxfblkrd.hxx>
+#include <dxftblrd.hxx>
+
+
+//----------------------------------------------------------------------------
+//--------------------Nebensachen---------------------------------------------
+//----------------------------------------------------------------------------
+
+//-------------------Eine 3D-Min/Max-Box--------------------------------------
+
+class DXFBoundingBox {
+public:
+ BOOL bEmpty;
+ double fMinX;
+ double fMinY;
+ double fMinZ;
+ double fMaxX;
+ double fMaxY;
+ double fMaxZ;
+
+ DXFBoundingBox() { bEmpty=TRUE; }
+ void Union(const DXFVector & rVector);
+};
+
+
+//-------------------Die (konstante) Palette fuer DXF-------------------------
+
+class DXFPalette {
+
+public:
+
+ DXFPalette();
+ ~DXFPalette();
+
+ BYTE GetRed(BYTE nIndex) const;
+ BYTE GetGreen(BYTE nIndex) const;
+ BYTE GetBlue(BYTE nIndex) const;
+
+private:
+ BYTE * pRed;
+ BYTE * pGreen;
+ BYTE * pBlue;
+ void SetColor(BYTE nIndex, BYTE nRed, BYTE nGreen, BYTE nBlue);
+};
+
+
+//----------------------------------------------------------------------------
+//-----------------DXF Datei lesen und repraesentieren------------------------
+//----------------------------------------------------------------------------
+
+class DXFRepresentation {
+
+public:
+
+ DXFPalette aPalette;
+ // Die immer gleiche DXF-Farb-Palette
+
+ DXFBoundingBox aBoundingBox;
+ // Ist gleich den AutoCAD-Variablen EXTMIN, EXTMAX sofern in DXF-Datei
+ // vorhanden, anderenfalls wird die BoundingBox berechnet (in Read()).
+
+ DXFTables aTables;
+ // Die Tabellen der DXF-Datei
+
+ DXFBlocks aBlocks;
+ // Die Bloecke der DXF-Datei
+
+ DXFEntities aEntities;
+ // Die Entities (aus der Entities-Section) der DXF-Datei
+
+ rtl_TextEncoding mEnc; // $DWGCODEPAGE
+
+ double mfGlobalLineTypeScale; // $LTSCALE
+
+ DXFRepresentation();
+ ~DXFRepresentation();
+
+ rtl_TextEncoding getTextEncoding() const;
+ void setTextEncoding(rtl_TextEncoding aEnc);
+
+ double getGlobalLineTypeScale() const;
+ void setGlobalLineTypeScale(double fGlobalLineTypeScale);
+
+ BOOL Read( SvStream & rIStream, USHORT nMinPercent, USHORT nMaxPercent);
+ // Liesst die komplette DXF-Datei ein.
+
+private:
+
+ void ReadHeader(DXFGroupReader & rDGR);
+ void CalcBoundingBox(const DXFEntities & rEntities,
+ DXFBoundingBox & rBox);
+};
+
+//----------------------------------------------------------------------------
+//-------------------inlines--------------------------------------------------
+//----------------------------------------------------------------------------
+
+inline BYTE DXFPalette::GetRed(BYTE nIndex) const { return pRed[nIndex]; }
+inline BYTE DXFPalette::GetGreen(BYTE nIndex) const { return pGreen[nIndex]; }
+inline BYTE DXFPalette::GetBlue(BYTE nIndex) const { return pBlue[nIndex]; }
+inline rtl_TextEncoding DXFRepresentation::getTextEncoding() const { return mEnc; }
+inline void DXFRepresentation::setTextEncoding(rtl_TextEncoding aEnc) { mEnc = aEnc; }
+inline double DXFRepresentation::getGlobalLineTypeScale() const { return mfGlobalLineTypeScale; }
+inline void DXFRepresentation::setGlobalLineTypeScale(double fGlobalLineTypeScale) { mfGlobalLineTypeScale = fGlobalLineTypeScale; }
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/dxftblrd.cxx b/filter/source/graphicfilter/idxf/dxftblrd.cxx
new file mode 100644
index 000000000000..337e43730cb6
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxftblrd.cxx
@@ -0,0 +1,348 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <dxftblrd.hxx>
+
+//----------------------------------DXFLType-----------------------------------
+
+DXFLType::DXFLType()
+{
+ pSucc=NULL;
+ sName[0]=0;
+ nFlags=0;
+ sDescription[0]=0;
+ nDashCount=0;
+}
+
+void DXFLType::Read(DXFGroupReader & rDGR)
+{
+ long nDashIndex=-1;
+
+ while (rDGR.Read()!=0)
+ {
+ switch (rDGR.GetG())
+ {
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 3: strncpy( sDescription, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 73:
+ if (nDashIndex!=-1) {
+ rDGR.SetError();
+ return;
+ }
+ nDashCount=rDGR.GetI();
+ if (nDashCount>DXF_MAX_DASH_COUNT)
+ nDashCount=DXF_MAX_DASH_COUNT;
+ nDashIndex=0;
+ break;
+ case 40: fPatternLength=rDGR.GetF(); break;
+ case 49:
+ if (nDashCount==-1) {
+ rDGR.SetError();
+ return;
+ }
+ if (nDashIndex<nDashCount)
+ fDash[nDashIndex++]=rDGR.GetF();
+ break;
+ }
+ }
+}
+
+//----------------------------------DXFLayer-----------------------------------
+
+DXFLayer::DXFLayer()
+{
+ pSucc=NULL;
+ sName[0]=0;
+ nFlags=0;
+ nColor=-1;
+ sLineType[0]=0;
+}
+
+void DXFLayer::Read(DXFGroupReader & rDGR)
+{
+ while (rDGR.Read()!=0) {
+ switch(rDGR.GetG()) {
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 62: nColor=rDGR.GetI(); break;
+ case 6: strncpy( sLineType, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ }
+ }
+}
+
+//----------------------------------DXFStyle-----------------------------------
+
+DXFStyle::DXFStyle()
+{
+ pSucc=NULL;
+ sName[0]=0;
+ nFlags=0;
+ fHeight=0.0;
+ fWidthFak=1.0;
+ fOblAngle=0.0;
+ nTextGenFlags=0;
+ fLastHeightUsed=0.0;
+ sPrimFontFile[0]=0;
+ sBigFontFile[0]=0;
+}
+
+void DXFStyle::Read(DXFGroupReader & rDGR)
+{
+ while (rDGR.Read()!=0) {
+ switch(rDGR.GetG()) {
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 40: fHeight=rDGR.GetF(); break;
+ case 41: fWidthFak=rDGR.GetF(); break;
+ case 50: fOblAngle=rDGR.GetF(); break;
+ case 71: nTextGenFlags=rDGR.GetI(); break;
+ case 42: fLastHeightUsed=rDGR.GetF(); break;
+ case 3: strncpy( sPrimFontFile, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ case 4: strncpy( sBigFontFile, rDGR.GetS(), DXF_MAX_STRING_LEN + 1 ); break;
+ }
+ }
+}
+
+//----------------------------------DXFVPort-----------------------------------
+
+DXFVPort::DXFVPort()
+{
+ pSucc=NULL;
+
+ sName[0]=0;
+ nFlags=0;
+ fMinX=0;
+ fMinY=0;
+ fMaxX=0;
+ fMaxY=0;
+ fCenterX=0;
+ fCenterY=0;
+ fSnapBaseX=0;
+ fSnapBaseY=0;
+ fSnapSapcingX=0;
+ fSnapSpacingY=0;
+ fGridX=0;
+ fGridY=0;
+ aDirection=DXFVector(0,0,1);
+ aTarget=DXFVector(0,0,0);
+ fHeight=0;
+ fAspectRatio=0;
+ fLensLength=0;
+ fFrontClipPlane=0;
+ fBackClipPlane=0;
+ fTwistAngle=0;
+ nStatus=0;
+ nID=0;
+ nMode=0;
+ nCircleZoomPercent=0;
+ nFastZoom=0;
+ nUCSICON=0;
+ nSnap=0;
+ nGrid=0;
+ nSnapStyle=0;
+ nSnapIsopair=0;
+}
+
+void DXFVPort::Read(DXFGroupReader & rDGR)
+{
+ while (rDGR.Read()!=0) {
+ switch(rDGR.GetG()) {
+ case 2: strncpy( sName, rDGR.GetS(), DXF_MAX_STRING_LEN + 1); break;
+ case 70: nFlags=rDGR.GetI(); break;
+ case 10: fMinX=rDGR.GetF(); break;
+ case 20: fMinY=rDGR.GetF(); break;
+ case 11: fMaxX=rDGR.GetF(); break;
+ case 21: fMaxY=rDGR.GetF(); break;
+ case 12: fCenterX=rDGR.GetF(); break;
+ case 22: fCenterY=rDGR.GetF(); break;
+ case 13: fSnapBaseX=rDGR.GetF(); break;
+ case 23: fSnapBaseY=rDGR.GetF(); break;
+ case 14: fSnapSapcingX=rDGR.GetF(); break;
+ case 24: fSnapSpacingY=rDGR.GetF(); break;
+ case 15: fGridX=rDGR.GetF(); break;
+ case 25: fGridY=rDGR.GetF(); break;
+ case 16: aDirection.fx=rDGR.GetF(); break;
+ case 26: aDirection.fy=rDGR.GetF(); break;
+ case 36: aDirection.fz=rDGR.GetF(); break;
+ case 17: aTarget.fx=rDGR.GetF(); break;
+ case 27: aTarget.fy=rDGR.GetF(); break;
+ case 37: aTarget.fz=rDGR.GetF(); break;
+ case 40: fHeight=rDGR.GetF(); break;
+ case 41: fAspectRatio=rDGR.GetF(); break;
+ case 42: fLensLength=rDGR.GetF(); break;
+ case 43: fFrontClipPlane=rDGR.GetF(); break;
+ case 44: fBackClipPlane=rDGR.GetF(); break;
+ case 51: fTwistAngle=rDGR.GetF(); break;
+ case 68: nStatus=rDGR.GetI(); break;
+ case 69: nID=rDGR.GetI(); break;
+ case 71: nMode=rDGR.GetI(); break;
+ case 72: nCircleZoomPercent=rDGR.GetI(); break;
+ case 73: nFastZoom=rDGR.GetI(); break;
+ case 74: nUCSICON=rDGR.GetI(); break;
+ case 75: nSnap=rDGR.GetI(); break;
+ case 76: nGrid=rDGR.GetI(); break;
+ case 77: nSnapStyle=rDGR.GetI(); break;
+ case 78: nSnapIsopair=rDGR.GetI(); break;
+ }
+ }
+}
+
+//----------------------------------DXFTables----------------------------------
+
+
+DXFTables::DXFTables()
+{
+ pLTypes=NULL;
+ pLayers=NULL;
+ pStyles=NULL;
+ pVPorts=NULL;
+}
+
+
+DXFTables::~DXFTables()
+{
+ Clear();
+}
+
+
+void DXFTables::Read(DXFGroupReader & rDGR)
+{
+ DXFLType * * ppLT, * pLT;
+ DXFLayer * * ppLa, * pLa;
+ DXFStyle * * ppSt, * pSt;
+ DXFVPort * * ppVP, * pVP;
+
+ ppLT=&pLTypes;
+ while(*ppLT!=NULL) ppLT=&((*ppLT)->pSucc);
+
+ ppLa=&pLayers;
+ while(*ppLa!=NULL) ppLa=&((*ppLa)->pSucc);
+
+ ppSt=&pStyles;
+ while(*ppSt!=NULL) ppSt=&((*ppSt)->pSucc);
+
+ ppVP=&pVPorts;
+ while(*ppVP!=NULL) ppVP=&((*ppVP)->pSucc);
+
+ for (;;) {
+ while (rDGR.GetG()!=0) rDGR.Read();
+ if (strcmp(rDGR.GetS(),"EOF")==0 ||
+ strcmp(rDGR.GetS(),"ENDSEC")==0) break;
+ else if (strcmp(rDGR.GetS(),"LTYPE")==0) {
+ pLT=new DXFLType;
+ pLT->Read(rDGR);
+ *ppLT=pLT;
+ ppLT=&(pLT->pSucc);
+ }
+ else if (strcmp(rDGR.GetS(),"LAYER")==0) {
+ pLa=new DXFLayer;
+ pLa->Read(rDGR);
+ *ppLa=pLa;
+ ppLa=&(pLa->pSucc);
+ }
+ else if (strcmp(rDGR.GetS(),"STYLE")==0) {
+ pSt=new DXFStyle;
+ pSt->Read(rDGR);
+ *ppSt=pSt;
+ ppSt=&(pSt->pSucc);
+ }
+ else if (strcmp(rDGR.GetS(),"VPORT")==0) {
+ pVP=new DXFVPort;
+ pVP->Read(rDGR);
+ *ppVP=pVP;
+ ppVP=&(pVP->pSucc);
+ }
+ else rDGR.Read();
+ }
+}
+
+
+void DXFTables::Clear()
+{
+ DXFLType * pLT;
+ DXFLayer * pLa;
+ DXFStyle * pSt;
+ DXFVPort * pVP;
+
+ while (pStyles!=NULL) {
+ pSt=pStyles;
+ pStyles=pSt->pSucc;
+ delete pSt;
+ }
+ while (pLayers!=NULL) {
+ pLa=pLayers;
+ pLayers=pLa->pSucc;
+ delete pLa;
+ }
+ while (pLTypes!=NULL) {
+ pLT=pLTypes;
+ pLTypes=pLT->pSucc;
+ delete pLT;
+ }
+ while (pVPorts!=NULL) {
+ pVP=pVPorts;
+ pVPorts=pVP->pSucc;
+ delete pVP;
+ }
+}
+
+
+DXFLType * DXFTables::SearchLType(const char * pName) const
+{
+ DXFLType * p;
+ for (p=pLTypes; p!=NULL; p=p->pSucc) {
+ if (strcmp(pName,p->sName)==0) break;
+ }
+ return p;
+}
+
+
+DXFLayer * DXFTables::SearchLayer(const char * pName) const
+{
+ DXFLayer * p;
+ for (p=pLayers; p!=NULL; p=p->pSucc) {
+ if (strcmp(pName,p->sName)==0) break;
+ }
+ return p;
+}
+
+
+DXFVPort * DXFTables::SearchVPort(const char * pName) const
+{
+ DXFVPort * p;
+ for (p=pVPorts; p!=NULL; p=p->pSucc) {
+ if (strcmp(pName,p->sName)==0) break;
+ }
+ return p;
+}
+
+
diff --git a/filter/source/graphicfilter/idxf/dxftblrd.hxx b/filter/source/graphicfilter/idxf/dxftblrd.hxx
new file mode 100644
index 000000000000..afa6274bd6cc
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxftblrd.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * 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 _DXFTBLRD_HXX
+#define _DXFTBLRD_HXX
+
+#include <dxfgrprd.hxx>
+#include <dxfvec.hxx>
+
+
+//----------------------------------------------------------------------------
+//------------------ Linien-Typ ----------------------------------------------
+//----------------------------------------------------------------------------
+
+#define DXF_MAX_DASH_COUNT 32
+
+class DXFLType {
+
+public:
+
+ DXFLType * pSucc;
+
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ long nFlags; // 70
+ char sDescription[DXF_MAX_STRING_LEN+1]; // 3
+ long nDashCount; // 73
+ double fPatternLength; // 40
+ double fDash[DXF_MAX_DASH_COUNT]; // 49,49,...
+
+ DXFLType();
+ void Read(DXFGroupReader & rDGR);
+};
+
+
+//----------------------------------------------------------------------------
+//------------------ Layer ---------------------------------------------------
+//----------------------------------------------------------------------------
+
+class DXFLayer {
+
+public:
+
+ DXFLayer * pSucc;
+
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ long nFlags; // 70
+ long nColor; // 62
+ char sLineType[DXF_MAX_STRING_LEN+1]; // 6
+
+ DXFLayer();
+ void Read(DXFGroupReader & rDGR);
+};
+
+
+//----------------------------------------------------------------------------
+//------------------ Style ---------------------------------------------------
+//----------------------------------------------------------------------------
+
+class DXFStyle {
+
+public:
+
+ DXFStyle * pSucc;
+
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ long nFlags; // 70
+ double fHeight; // 40
+ double fWidthFak; // 41
+ double fOblAngle; // 50
+ long nTextGenFlags; // 71
+ double fLastHeightUsed; // 42
+ char sPrimFontFile[DXF_MAX_STRING_LEN+1]; // 3
+ char sBigFontFile[DXF_MAX_STRING_LEN+1]; // 4
+
+ DXFStyle();
+ void Read(DXFGroupReader & rDGR);
+};
+
+
+//----------------------------------------------------------------------------
+//------------------ VPort ---------------------------------------------------
+//----------------------------------------------------------------------------
+
+class DXFVPort {
+
+public:
+
+ DXFVPort * pSucc;
+
+ char sName[DXF_MAX_STRING_LEN+1]; // 2
+ long nFlags; // 70
+ double fMinX; // 10
+ double fMinY; // 20
+ double fMaxX; // 11
+ double fMaxY; // 21
+ double fCenterX; // 12
+ double fCenterY; // 22
+ double fSnapBaseX; // 13
+ double fSnapBaseY; // 23
+ double fSnapSapcingX; // 14
+ double fSnapSpacingY; // 24
+ double fGridX; // 15
+ double fGridY; // 25
+ DXFVector aDirection; // 16,26,36
+ DXFVector aTarget; // 17,27,37
+ double fHeight; // 40
+ double fAspectRatio; // 41
+ double fLensLength; // 42
+ double fFrontClipPlane; // 43
+ double fBackClipPlane; // 44
+ double fTwistAngle; // 51
+ long nStatus; // 68
+ long nID; // 69
+ long nMode; // 71
+ long nCircleZoomPercent; // 72
+ long nFastZoom; // 73
+ long nUCSICON; // 74
+ long nSnap; // 75
+ long nGrid; // 76
+ long nSnapStyle; // 77
+ long nSnapIsopair; // 78
+
+ DXFVPort();
+ void Read(DXFGroupReader & rDGR);
+};
+
+
+//----------------------------------------------------------------------------
+//------------------ Tabellen ------------------------------------------------
+//----------------------------------------------------------------------------
+
+class DXFTables {
+
+public:
+
+ DXFLType * pLTypes; // Liste der Linientypen
+ DXFLayer * pLayers; // Liste der Layers
+ DXFStyle * pStyles; // Liste der Styles
+ DXFVPort * pVPorts; // Liste der Viewports
+
+ DXFTables();
+ ~DXFTables();
+
+ void Read(DXFGroupReader & rDGR);
+ // Liest die Tabellen ein bis zu einem ENDSEC oder EOF
+ // (unbekannte Dinge/Tabellen werden uebersprungen)
+
+ void Clear();
+
+ // Suche nach Tabelleneintraegen:
+ DXFLType * SearchLType(const char * pName) const;
+ DXFLayer * SearchLayer(const char * pName) const;
+ DXFVPort * SearchVPort(const char * pName) const;
+
+};
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/dxfvec.cxx b/filter/source/graphicfilter/idxf/dxfvec.cxx
new file mode 100644
index 000000000000..d71100cdc6b1
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfvec.cxx
@@ -0,0 +1,254 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <math.h>
+#include <dxfvec.hxx>
+
+
+//---------------------------- DXFVector ---------------------------------------
+
+
+double DXFVector::Abs() const
+{
+ return sqrt(SProd(*this));
+}
+
+
+DXFVector DXFVector::Unit() const
+{
+ double flen;
+
+ flen=Abs();
+ if (flen!=0) return (*this)*(1.0/flen);
+ else return DXFVector(1.0,0.0,0.0);
+}
+
+
+//---------------------------- DXFTransform ------------------------------------
+
+
+DXFTransform::DXFTransform() :
+ aMX(1.0, 0.0, 0.0),
+ aMY(0.0, 1.0, 0.0),
+ aMZ(0.0, 0.0, 1.0),
+ aMP(0.0, 0.0, 0.0)
+{
+}
+
+
+DXFTransform::DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
+ const DXFVector & rShift) :
+ aMX(fScaleX, 0.0, 0.0),
+ aMY(0.0, fScaleY, 0.0),
+ aMZ(0.0, 0.0, fScaleZ),
+ aMP(rShift)
+{
+}
+
+
+DXFTransform::DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
+ double fRotAngle,
+ const DXFVector & rShift) :
+ aMX(0.0, 0.0, 0.0),
+ aMY(0.0, 0.0, 0.0),
+ aMZ(0.0, 0.0, fScaleZ),
+ aMP(rShift)
+{
+ aMX.fx=cos(3.14159265359/180.0*fRotAngle);
+ aMX.fy=sin(3.14159265359/180.0*fRotAngle);
+ aMY.fx=-aMX.fy;
+ aMY.fy=aMX.fx;
+ aMX*=fScaleX;
+ aMY*=fScaleY;
+}
+
+
+DXFTransform::DXFTransform(const DXFVector & rExtrusion) :
+ aMX(), aMY(), aMZ(), aMP(0.0, 0.0, 0.0)
+{
+ // 'Arbitrary Axis Algorithm' (siehe DXF-Doku von Autodesk)
+ if ( fabs(rExtrusion.fx) < 1.0/64.0 && fabs(rExtrusion.fy) < 1.0/64.0) {
+ aMX = DXFVector(0.0, 1.0, 0.0) * rExtrusion;
+ }
+ else {
+ aMX = DXFVector(0.0, 0.0, 1.0) * rExtrusion;
+ }
+ aMX=aMX.Unit();
+ aMY=(rExtrusion*aMX).Unit();
+ aMZ=rExtrusion.Unit();
+}
+
+
+DXFTransform::DXFTransform(const DXFVector & rViewDir, const DXFVector & rViewTarget) :
+ aMX(), aMY(), aMZ(), aMP()
+{
+ DXFVector aV;
+
+ aV=rViewDir.Unit();
+ aMX.fz=aV.fx;
+ aMY.fz=aV.fy;
+ aMZ.fz=aV.fz;
+
+ aMZ.fx=0;
+ if (aV.fx==0) aMY.fx=0; else aMY.fx=sqrt(1/(1+aV.fy*aV.fy/(aV.fx*aV.fx)));
+ aMX.fx=sqrt(1-aMY.fx*aMY.fx);
+ if (aV.fx*aV.fy*aMY.fx>0) aMX.fx=-aMX.fx;
+
+ aV=aV*DXFVector(aMX.fx,aMY.fx,aMZ.fx);
+ aMX.fy=aV.fx;
+ aMY.fy=aV.fy;
+ aMZ.fy=aV.fz;
+
+ if (aMZ.fy<0) {
+ aMX.fy=-aMX.fy;
+ aMY.fy=-aMY.fy;
+ aMZ.fy=-aMZ.fy;
+ aMX.fx=-aMX.fx;
+ aMY.fx=-aMY.fx;
+ }
+
+ aV=DXFVector(0,0,0)-rViewTarget;
+ aMP.fx = aV.fx * aMX.fx + aV.fy * aMY.fx + aV.fz * aMZ.fx;
+ aMP.fy = aV.fx * aMX.fy + aV.fy * aMY.fy + aV.fz * aMZ.fy;
+ aMP.fz = aV.fx * aMX.fz + aV.fy * aMY.fz + aV.fz * aMZ.fz;
+}
+
+
+DXFTransform::DXFTransform(const DXFTransform & rT1, const DXFTransform & rT2) :
+ aMX(),aMY(),aMZ(),aMP()
+{
+ rT2.TransDir(rT1.aMX,aMX);
+ rT2.TransDir(rT1.aMY,aMY);
+ rT2.TransDir(rT1.aMZ,aMZ);
+ rT2.Transform(rT1.aMP,aMP);
+}
+
+
+void DXFTransform::Transform(const DXFVector & rSrc, DXFVector & rTgt) const
+{
+ rTgt.fx = rSrc.fx * aMX.fx + rSrc.fy * aMY.fx + rSrc.fz * aMZ.fx + aMP.fx;
+ rTgt.fy = rSrc.fx * aMX.fy + rSrc.fy * aMY.fy + rSrc.fz * aMZ.fy + aMP.fy;
+ rTgt.fz = rSrc.fx * aMX.fz + rSrc.fy * aMY.fz + rSrc.fz * aMZ.fz + aMP.fz;
+}
+
+
+void DXFTransform::Transform(const DXFVector & rSrc, Point & rTgt) const
+{
+ rTgt.X()=(long)( rSrc.fx * aMX.fx + rSrc.fy * aMY.fx + rSrc.fz * aMZ.fx + aMP.fx + 0.5 );
+ rTgt.Y()=(long)( rSrc.fx * aMX.fy + rSrc.fy * aMY.fy + rSrc.fz * aMZ.fy + aMP.fy + 0.5 );
+}
+
+
+void DXFTransform::TransDir(const DXFVector & rSrc, DXFVector & rTgt) const
+{
+ rTgt.fx = rSrc.fx * aMX.fx + rSrc.fy * aMY.fx + rSrc.fz * aMZ.fx;
+ rTgt.fy = rSrc.fx * aMX.fy + rSrc.fy * aMY.fy + rSrc.fz * aMZ.fy;
+ rTgt.fz = rSrc.fx * aMX.fz + rSrc.fy * aMY.fz + rSrc.fz * aMZ.fz;
+}
+
+
+BOOL DXFTransform::TransCircleToEllipse(double fRadius, double & rEx, double & rEy) const
+{
+ double fMXAbs=aMX.Abs();
+ double fMYAbs=aMY.Abs();
+ double fNearNull=(fMXAbs+fMYAbs)*0.001;
+
+ if (fabs(aMX.fy)<=fNearNull && fabs(aMX.fz)<=fNearNull &&
+ fabs(aMY.fx)<=fNearNull && fabs(aMY.fz)<=fNearNull)
+ {
+ rEx=fabs(aMX.fx*fRadius);
+ rEy=fabs(aMY.fy*fRadius);
+ return TRUE;
+ }
+ else if (fabs(aMX.fx)<=fNearNull && fabs(aMX.fz)<=fNearNull &&
+ fabs(aMY.fy)<=fNearNull && fabs(aMY.fz)<=fNearNull)
+ {
+ rEx=fabs(aMY.fx*fRadius);
+ rEy=fabs(aMX.fy*fRadius);
+ return TRUE;
+ }
+ else if (fabs(fMXAbs-fMYAbs)<=fNearNull &&
+ fabs(aMX.fz)<=fNearNull && fabs(aMY.fz)<=fNearNull)
+ {
+ rEx=rEy=fabs(((fMXAbs+fMYAbs)/2)*fRadius);
+ return TRUE;
+ }
+ else return FALSE;
+}
+
+LineInfo DXFTransform::Transform(const DXFLineInfo& aDXFLineInfo) const
+{
+ double fex,fey,scale;
+
+ fex=sqrt(aMX.fx*aMX.fx + aMX.fy*aMX.fy);
+ fey=sqrt(aMY.fx*aMY.fx + aMY.fy*aMY.fy);
+ scale = (fex+fey)/2.0;
+
+ LineInfo aLineInfo;
+
+ aLineInfo.SetStyle( aDXFLineInfo.eStyle );
+ aLineInfo.SetWidth( (sal_Int32) (aDXFLineInfo.fWidth * scale + 0.5) );
+ aLineInfo.SetDashCount( static_cast< USHORT >( aDXFLineInfo.nDashCount ) );
+ aLineInfo.SetDashLen( (sal_Int32) (aDXFLineInfo.fDashLen * scale + 0.5) );
+ aLineInfo.SetDotCount( static_cast< USHORT >( aDXFLineInfo.nDotCount ) );
+ aLineInfo.SetDotLen( (sal_Int32) (aDXFLineInfo.fDotLen * scale + 0.5) );
+ aLineInfo.SetDistance( (sal_Int32) (aDXFLineInfo.fDistance * scale + 0.5) );
+
+ if ( aLineInfo.GetDashCount() > 0 && aLineInfo.GetDashLen() == 0 )
+ aLineInfo.SetDashLen(1);
+
+ if ( aLineInfo.GetDotCount() > 0 && aLineInfo.GetDotLen() == 0 )
+ aLineInfo.SetDotLen(1);
+
+ return aLineInfo;
+}
+
+ULONG DXFTransform::TransLineWidth(double fW) const
+{
+ double fex,fey;
+
+ fex=sqrt(aMX.fx*aMX.fx + aMX.fy*aMX.fy);
+ fey=sqrt(aMY.fx*aMY.fx + aMY.fy*aMY.fy);
+ // ###
+ // printf("fex=%f fey=%f\n", fex, fey);
+ return (ULONG)(fabs(fW)*(fex+fey)/2.0+0.5);
+}
+
+
+double DXFTransform::CalcRotAngle() const
+{
+ return atan2(aMX.fy,aMX.fx)/3.14159265359*180.0;
+}
+
+BOOL DXFTransform::Mirror() const
+{
+ if (aMZ.SProd(aMX*aMY)<0) return TRUE; else return FALSE;
+}
+
diff --git a/filter/source/graphicfilter/idxf/dxfvec.hxx b/filter/source/graphicfilter/idxf/dxfvec.hxx
new file mode 100644
index 000000000000..2f7734e5277f
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/dxfvec.hxx
@@ -0,0 +1,261 @@
+/*************************************************************************
+ *
+ * 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 _DXFVEC_HXX
+#define _DXFVEC_HXX
+
+#include <tools/gen.hxx>
+#include <vcl/lineinfo.hxx>
+
+class DXFLineInfo {
+public:
+ LineStyle eStyle;
+ double fWidth;
+ sal_Int32 nDashCount;
+ double fDashLen;
+ sal_Int32 nDotCount;
+ double fDotLen;
+ double fDistance;
+
+ DXFLineInfo() :
+ eStyle(LINE_SOLID),
+ fWidth(0),
+ nDashCount(0),
+ fDashLen(0),
+ nDotCount(0),
+ fDotLen(0),
+ fDistance(0) {}
+
+ DXFLineInfo(const DXFLineInfo& x) :
+ eStyle(x.eStyle),
+ fWidth(x.fWidth),
+ nDashCount(x.nDashCount),
+ fDashLen(x.fDashLen),
+ nDotCount(x.nDotCount),
+ fDotLen(x.fDotLen),
+ fDistance(x.fDistance) {}
+
+};
+
+
+//------------------------------------------------------------------------------
+//---------------------------- DXFVector ---------------------------------------
+//------------------------------------------------------------------------------
+// Allgemeiner 3D-Vektor mit double
+
+class DXFVector {
+
+public:
+
+ double fx,fy,fz; // public ! - Warum nicht ?
+
+ inline DXFVector(double fX=0.0, double fY=0.0, double fZ=0.0);
+ inline DXFVector(const DXFVector & rV);
+
+ // Addition/Subtraktion:
+ DXFVector & operator += (const DXFVector & rV);
+ DXFVector operator + (const DXFVector & rV) const;
+ DXFVector & operator -= (const DXFVector & rV);
+ DXFVector operator - (const DXFVector & rV) const;
+
+ // Vektorprodukt
+ DXFVector operator * (const DXFVector & rV) const;
+
+ // Skalarprodukt:
+ double SProd(const DXFVector & rV) const;
+
+ // Multiplikation mit Skalar:
+ DXFVector & operator *= (double fs);
+ DXFVector operator * (double fs) const;
+
+ // Laenge:
+ double Abs() const;
+
+ // Vektor gleicher Richtung und der Laenge 1:
+ DXFVector Unit() const;
+
+ // Aequivalenz oder nicht:
+ BOOL operator == (const DXFVector & rV) const;
+ BOOL operator != (const DXFVector & rV) const;
+};
+
+//------------------------------------------------------------------------------
+//---------------------------- DXFTransform ------------------------------------
+//------------------------------------------------------------------------------
+// Eine Transformationsmatrix, spezialisiert auf unser Problem
+
+class DXFTransform {
+
+public:
+
+ DXFTransform();
+ // Zielkoordinate = Quellkoordinate
+
+ DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
+ const DXFVector & rShift);
+ // Zielkoordinate = Verschoben(Skaliert(Quellkoorinate))
+
+ DXFTransform(double fScaleX, double fScaleY, double fScaleZ,
+ double fRotAngle,
+ const DXFVector & rShift);
+ // Zielkoordinate = Verschoben(Gedreht(Skaliert(Quellkoorinate)))
+ // Drehung geshieht um die Z-Achse, fRotAngle in Grad.
+
+ DXFTransform(const DXFVector & rExtrusion);
+ // Transformation "ECS->WCS" per "Entity Extrusion Direction"
+ // und dem "Arbitrary Axis Algorithm"
+ // (Siehe DXF-Docu von AutoDesk)
+
+ DXFTransform(const DXFVector & rViewDir, const DXFVector & rViewTarget);
+ // Transformation Objektraum->Bildraum anhand von Richtung und
+ // Zielpunkt eines ViewPort.
+ // (siehe DXF-Docu von AutoDesk: VPORT)
+
+ DXFTransform(const DXFTransform & rT1, const DXFTransform & rT2);
+ // Zielkoordinate = rT2(rT1(Quellkoorinate))
+
+
+ void Transform(const DXFVector & rSrc, DXFVector & rTgt) const;
+ // Transformation DXFVector nach DXFVector
+
+ void Transform(const DXFVector & rSrc, Point & rTgt) const;
+ // Transformation DXFVector nach SvPoint
+
+ void TransDir(const DXFVector & rSrc, DXFVector & rTgt) const;
+ // Transformation eines relativen Vektors (also kein Verschiebung)
+
+ BOOL TransCircleToEllipse(double fRadius, double & rEx, double & rEy) const;
+ // Versucht, einen Kreis (in der XY-Ebene) zu transformieren, so dass eine
+ // ausgerichtete Ellipse entsteht. Wenn das nicht geht, weil Ellipse
+ // in belibieger Lage entstehen wuerde, wird FALSE geliefert.
+ // (Der Mittelpunkt wird hiermit nicht transformiert, nehme Transform(..))
+
+ ULONG TransLineWidth(double fW) const;
+ // Transformiert die Liniendicke (so gut es geht)
+
+ double CalcRotAngle() const;
+ // Ermittelt den Rotationswinkel um die Z-Achse (in Grad)
+
+ BOOL Mirror() const;
+ // Liefert TRUE, wenn die Matrix ein Linkssystem bildet
+
+ LineInfo Transform(const DXFLineInfo& aDXFLineInfo) const;
+ // Transform to LineInfo
+
+private:
+ DXFVector aMX;
+ DXFVector aMY;
+ DXFVector aMZ;
+ DXFVector aMP;
+};
+
+//------------------------------------------------------------------------------
+//------------------------------- inlines --------------------------------------
+//------------------------------------------------------------------------------
+
+
+inline DXFVector::DXFVector(double fX, double fY, double fZ)
+{
+ fx=fX; fy=fY; fz=fZ;
+}
+
+
+inline DXFVector::DXFVector(const DXFVector & rV)
+{
+ fx=rV.fx; fy=rV.fy; fz=rV.fz;
+}
+
+
+inline DXFVector & DXFVector::operator += (const DXFVector & rV)
+{
+ fx+=rV.fx; fy+=rV.fy; fz+=rV.fz;
+ return *this;
+}
+
+
+inline DXFVector DXFVector::operator + (const DXFVector & rV) const
+{
+ return DXFVector(fx+rV.fx, fy+rV.fy, fz+rV.fz);
+}
+
+
+inline DXFVector & DXFVector::operator -= (const DXFVector & rV)
+{
+ fx-=rV.fx; fy-=rV.fy; fz-=rV.fz;
+ return *this;
+}
+
+
+inline DXFVector DXFVector::operator - (const DXFVector & rV) const
+{
+ return DXFVector(fx-rV.fx, fy-rV.fy, fz-rV.fz);
+}
+
+
+inline DXFVector DXFVector::operator * (const DXFVector & rV) const
+{
+ return DXFVector(
+ fy * rV.fz - fz * rV.fy,
+ fz * rV.fx - fx * rV.fz,
+ fx * rV.fy - fy * rV.fx
+ );
+}
+
+
+inline double DXFVector::SProd(const DXFVector & rV) const
+{
+ return fx*rV.fx + fy*rV.fy + fz*rV.fz;
+}
+
+
+inline DXFVector & DXFVector::operator *= (double fs)
+{
+ fx*=fs; fy*=fs; fz*=fs;
+ return *this;
+}
+
+
+inline DXFVector DXFVector::operator * (double fs) const
+{
+ return DXFVector(fx*fs,fy*fs,fz*fs);
+}
+
+
+inline BOOL DXFVector::operator == (const DXFVector & rV) const
+{
+ if (fx==rV.fx && fy==rV.fy && fz==rV.fz) return TRUE;
+ else return FALSE;
+}
+
+
+inline BOOL DXFVector::operator != (const DXFVector & rV) const
+{
+ if (fx!=rV.fx || fy!=rV.fy || fz!=rV.fz) return TRUE;
+ else return FALSE;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/idxf/exports.map b/filter/source/graphicfilter/idxf/exports.map
new file mode 100644
index 000000000000..d107435568e5
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/exports.map
@@ -0,0 +1,7 @@
+DXFIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/idxf/idxf.cxx b/filter/source/graphicfilter/idxf/idxf.cxx
new file mode 100644
index 000000000000..149f4c2feb78
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/idxf.cxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <vcl/gdimtf.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/virdev.hxx>
+#include "dxf2mtf.hxx"
+#include <math.h>
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ DXFRepresentation aDXF;
+ DXF2GDIMetaFile aConverter;
+ GDIMetaFile aMTF;
+
+ if ( aDXF.Read( rStream, 0, 60 ) == FALSE )
+ return FALSE;
+ if ( aConverter.Convert( aDXF, aMTF, 60, 100 ) == FALSE )
+ return FALSE;
+ rGraphic=Graphic(aMTF);
+
+ return TRUE;
+}
+
+//============================= fuer Windows ==================================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/idxf/makefile.mk b/filter/source/graphicfilter/idxf/makefile.mk
new file mode 100644
index 000000000000..046f0765a74e
--- /dev/null
+++ b/filter/source/graphicfilter/idxf/makefile.mk
@@ -0,0 +1,79 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=idxf
+DEPTARGET=vidxf
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+EXCEPTIONSFILES=\
+ $(SLO)$/dxfentrd.obj \
+ $(SLO)$/dxf2mtf.obj
+
+SLOFILES = $(SLO)$/dxfgrprd.obj \
+ $(SLO)$/dxfvec.obj \
+ $(SLO)$/dxfentrd.obj \
+ $(SLO)$/dxfblkrd.obj \
+ $(SLO)$/dxftblrd.obj \
+ $(SLO)$/dxfreprd.obj \
+ $(SLO)$/dxf2mtf.obj \
+ $(SLO)$/idxf.obj
+
+# ==========================================================================
+
+SHL1TARGET= idx$(DLLPOSTFIX)
+SHL1IMPLIB= idxf
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/idxf.lib # $(LB)$/rtftoken.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/idxf.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/ieps/exports.map b/filter/source/graphicfilter/ieps/exports.map
new file mode 100644
index 000000000000..59406d7255ef
--- /dev/null
+++ b/filter/source/graphicfilter/ieps/exports.map
@@ -0,0 +1,7 @@
+EPSIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ieps/ieps.cxx b/filter/source/graphicfilter/ieps/ieps.cxx
new file mode 100644
index 000000000000..097fc83e35fe
--- /dev/null
+++ b/filter/source/graphicfilter/ieps/ieps.cxx
@@ -0,0 +1,771 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <stdio.h>
+
+//
+#include <vcl/sv.h>
+#include <vcl/svapp.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/animate.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/graph.h>
+#include <vcl/window.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/metaact.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+#include <tools/urlobj.hxx>
+#include <tools/tempfile.hxx>
+#include <osl/process.h>
+#include <osl/file.hxx>
+
+/*************************************************************************
+|*
+|* ImpSearchEntry()
+|*
+|* Beschreibung Prueft ob im Speicherbereich pSource der nComp Bytes
+|* gross ist eine Zeichenkette(pDest) mit der l�nge nSize
+|* liegt. Geprueft wird NON-CASE-SENSITIVE und der Rueck-
+|* gabewert ist die Adresse an der die Zeichekette gefunden
+|* wurde oder NULL
+|*
+|* Ersterstellung SJ 04.03.98 ( und das an meinem Geburtstag )
+|* Letzte Aenderung SJ 04.03.98
+|*
+*************************************************************************/
+
+static BYTE* ImplSearchEntry( BYTE* pSource, BYTE* pDest, ULONG nComp, ULONG nSize )
+{
+ while ( nComp-- >= nSize )
+ {
+ ULONG i;
+ for ( i = 0; i < nSize; i++ )
+ {
+ if ( ( pSource[i]&~0x20 ) != ( pDest[i]&~0x20 ) )
+ break;
+ }
+ if ( i == nSize )
+ return pSource;
+ pSource++;
+ }
+ return NULL;
+}
+
+//--------------------------------------------------------------------------
+// SecurityCount is the buffersize of the buffer in which we will parse for a number
+static long ImplGetNumber( BYTE **pBuf, int& nSecurityCount )
+{
+ BOOL bValid = TRUE;
+ BOOL bNegative = FALSE;
+ long nRetValue = 0;
+ while ( ( --nSecurityCount ) && ( ( **pBuf == ' ' ) || ( **pBuf == 0x9 ) ) )
+ (*pBuf)++;
+ BYTE nByte = **pBuf;
+ while ( nSecurityCount && ( nByte != ' ' ) && ( nByte != 0x9 ) && ( nByte != 0xd ) && ( nByte != 0xa ) )
+ {
+ switch ( nByte )
+ {
+ case '.' :
+ // we'll only use the integer format
+ bValid = FALSE;
+ break;
+ case '-' :
+ bNegative = TRUE;
+ break;
+ default :
+ if ( ( nByte < '0' ) || ( nByte > '9' ) )
+ nSecurityCount = 1; // error parsing the bounding box values
+ else if ( bValid )
+ {
+ nRetValue *= 10;
+ nRetValue += nByte - '0';
+ }
+ break;
+ }
+ nSecurityCount--;
+ nByte = *(++(*pBuf));
+ }
+ if ( bNegative )
+ nRetValue = -nRetValue;
+ return nRetValue;
+}
+
+//--------------------------------------------------------------------------
+
+static int ImplGetLen( BYTE* pBuf, int nMax )
+{
+ int nLen = 0;
+ while( nLen != nMax )
+ {
+ BYTE nDat = *pBuf++;
+ if ( nDat == 0x0a || nDat == 0x25 )
+ break;
+ nLen++;
+ }
+ return nLen;
+}
+
+static void MakeAsMeta(Graphic &rGraphic)
+{
+ VirtualDevice aVDev;
+ GDIMetaFile aMtf;
+ Bitmap aBmp( rGraphic.GetBitmap() );
+ Size aSize = aBmp.GetPrefSize();
+
+ if( !aSize.Width() || !aSize.Height() )
+ aSize = Application::GetDefaultDevice()->PixelToLogic(
+ aBmp.GetSizePixel(), MAP_100TH_MM );
+ else
+ aSize = Application::GetDefaultDevice()->LogicToLogic( aSize,
+ aBmp.GetPrefMapMode(), MAP_100TH_MM );
+
+ aVDev.EnableOutput( FALSE );
+ aMtf.Record( &aVDev );
+ aVDev.DrawBitmap( Point(), aSize, rGraphic.GetBitmap() );
+ aMtf.Stop();
+ aMtf.WindStart();
+ aMtf.SetPrefMapMode( MAP_100TH_MM );
+ aMtf.SetPrefSize( aSize );
+ rGraphic = aMtf;
+}
+
+static oslProcessError runProcessWithPathSearch(const rtl::OUString &rProgName,
+ rtl_uString* pArgs[], sal_uInt32 nArgs, oslProcess *pProcess,
+ oslFileHandle *pIn, oslFileHandle *pOut, oslFileHandle *pErr)
+{
+#ifdef WNT
+ /*
+ * ooo#72096
+ * On Window the underlying SearchPath searches in order of...
+ * The directory from which the application loaded.
+ * The current directory.
+ * The Windows system directory.
+ * The Windows directory.
+ * The directories that are listed in the PATH environment variable.
+ *
+ * Because one of our programs is called "convert" and there is a convert
+ * in the windows system directory, we want to explicitly search the PATH
+ * to avoid picking up on that one if ImageMagick's convert preceeds it in
+ * PATH.
+ *
+ */
+ rtl::OUString url;
+ rtl::OUString path(reinterpret_cast<const sal_Unicode*>(_wgetenv(L"PATH")));
+
+ oslFileError err = osl_searchFileURL(rProgName.pData, path.pData, &url.pData);
+ if (err != osl_File_E_None)
+ return osl_Process_E_NotFound;
+ return osl_executeProcess_WithRedirectedIO(url.pData,
+ pArgs, nArgs, osl_Process_HIDDEN,
+ osl_getCurrentSecurity(), 0, 0, 0, pProcess, pIn, pOut, pErr);
+#else
+ return osl_executeProcess_WithRedirectedIO(rProgName.pData,
+ pArgs, nArgs, osl_Process_SEARCHPATH | osl_Process_HIDDEN,
+ osl_getCurrentSecurity(), 0, 0, 0, pProcess, pIn, pOut, pErr);
+#endif
+}
+
+#if defined(WNT) || defined(OS2)
+# define EXESUFFIX ".exe"
+#else
+# define EXESUFFIX ""
+#endif
+
+static bool RenderAsEMF(const sal_uInt8* pBuf, sal_uInt32 nBytesRead, Graphic &rGraphic)
+{
+ TempFile aTemp;
+ aTemp.EnableKillingFile();
+ rtl::OUString fileName =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pstoedit"EXESUFFIX));
+ rtl::OUString arg1 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-f"));
+ rtl::OUString arg2 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("emf:-OO"));
+ rtl::OUString arg3 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
+ rtl::OUString output;
+ osl::FileBase::getSystemPathFromFileURL(aTemp.GetName(), output);
+ rtl_uString *args[] =
+ {
+ arg1.pData, arg2.pData, arg3.pData, output.pData
+ };
+ oslProcess aProcess;
+ oslFileHandle pIn = NULL;
+ oslFileHandle pOut = NULL;
+ oslFileHandle pErr = NULL;
+ oslProcessError eErr = runProcessWithPathSearch(fileName,
+ args, sizeof(args)/sizeof(rtl_uString *),
+ &aProcess, &pIn, &pOut, &pErr);
+
+ if (eErr!=osl_Process_E_None)
+ return false;
+
+ bool bRet = false;
+ sal_uInt64 nCount;
+ osl_writeFile(pIn, pBuf, nBytesRead, &nCount);
+ if (pIn) osl_closeFile(pIn);
+ bool bEMFSupported=true;
+ if (pOut)
+ {
+ rtl::ByteSequence seq;
+ if (osl_File_E_None == osl_readLine(pOut, (sal_Sequence **)&seq))
+ {
+ rtl::OString line( (const sal_Char *) seq.getConstArray(), seq.getLength() );
+ if (line.indexOf(rtl::OString("Unsupported output format")) == 0)
+ bEMFSupported=false;
+ }
+ osl_closeFile(pOut);
+ }
+ if (pErr) osl_closeFile(pErr);
+ if (nCount == nBytesRead && bEMFSupported)
+ {
+ SvFileStream aFile(output, STREAM_READ);
+ if (GraphicConverter::Import(aFile, rGraphic, CVT_EMF) == ERRCODE_NONE)
+ bRet = true;
+ }
+ osl_joinProcess(aProcess);
+ osl_freeProcessHandle(aProcess);
+ return bRet;
+}
+
+static bool RenderAsPNGThroughHelper(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
+ Graphic &rGraphic, rtl::OUString &rProgName, rtl_uString *pArgs[], size_t nArgs)
+{
+ oslProcess aProcess;
+ oslFileHandle pIn = NULL;
+ oslFileHandle pOut = NULL;
+ oslFileHandle pErr = NULL;
+ oslProcessError eErr = runProcessWithPathSearch(rProgName,
+ pArgs, nArgs,
+ &aProcess, &pIn, &pOut, &pErr);
+ if (eErr!=osl_Process_E_None)
+ return false;
+
+ bool bRet = false;
+ sal_uInt64 nCount;
+ osl_writeFile(pIn, pBuf, nBytesRead, &nCount);
+ if (pIn) osl_closeFile(pIn);
+ if (nCount == nBytesRead)
+ {
+ SvMemoryStream aMemStm;
+ sal_uInt8 aBuf[32000];
+ oslFileError eFileErr = osl_readFile(pOut, aBuf, 32000, &nCount);
+ while (eFileErr == osl_File_E_None && nCount)
+ {
+ aMemStm.Write(aBuf, sal::static_int_cast< sal_Size >(nCount));
+ eFileErr = osl_readFile(pOut, aBuf, 32000, &nCount);
+ }
+
+ aMemStm.Seek(0);
+ if (
+ aMemStm.GetEndOfData() &&
+ GraphicConverter::Import(aMemStm, rGraphic, CVT_PNG) == ERRCODE_NONE
+ )
+ {
+ MakeAsMeta(rGraphic);
+ bRet = true;
+ }
+ }
+ if (pOut) osl_closeFile(pOut);
+ if (pErr) osl_closeFile(pErr);
+ osl_joinProcess(aProcess);
+ osl_freeProcessHandle(aProcess);
+ return bRet;
+}
+
+static bool RenderAsPNGThroughConvert(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
+ Graphic &rGraphic)
+{
+ rtl::OUString fileName =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("convert"EXESUFFIX));
+ // density in pixel/inch
+ rtl::OUString arg1 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-density"));
+ // since the preview is also used for PDF-Export & printing on non-PS-printers,
+ // use some better quality - 300x300 should allow some resizing as well
+ rtl::OUString arg2 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("300x300"));
+ // read eps from STDIN
+ rtl::OUString arg3 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("eps:-"));
+ // write png to STDOUT
+ rtl::OUString arg4 = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("png:-"));
+ rtl_uString *args[] =
+ {
+ arg1.pData, arg2.pData, arg3.pData, arg4.pData
+ };
+ return RenderAsPNGThroughHelper(pBuf, nBytesRead, rGraphic, fileName, args,
+ sizeof(args)/sizeof(rtl_uString *));
+}
+
+static bool RenderAsPNGThroughGS(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
+ Graphic &rGraphic)
+{
+#ifdef WNT
+ rtl::OUString fileName =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("gswin32c"EXESUFFIX));
+#else
+ rtl::OUString fileName =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("gs"EXESUFFIX));
+#endif
+ rtl::OUString arg1 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-q"));
+ rtl::OUString arg2 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dBATCH"));
+ rtl::OUString arg3 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dNOPAUSE"));
+ rtl::OUString arg4 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dPARANOIDSAFER"));
+ rtl::OUString arg5 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dEPSCrop"));
+ rtl::OUString arg6 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dTextAlphaBits=4"));
+ rtl::OUString arg7 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-dGraphicsAlphaBits=4"));
+ rtl::OUString arg8 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-r300x300"));
+ rtl::OUString arg9 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-sDEVICE=png256"));
+ rtl::OUString arg10 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-sOutputFile=-"));
+ rtl::OUString arg11 =
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-"));
+ rtl_uString *args[] =
+ {
+ arg1.pData, arg2.pData, arg3.pData, arg4.pData, arg5.pData,
+ arg6.pData, arg7.pData, arg8.pData, arg9.pData, arg10.pData,
+ arg11.pData
+ };
+ return RenderAsPNGThroughHelper(pBuf, nBytesRead, rGraphic, fileName, args,
+ sizeof(args)/sizeof(rtl_uString *));
+}
+
+static bool RenderAsPNG(const sal_uInt8* pBuf, sal_uInt32 nBytesRead, Graphic &rGraphic)
+{
+ if (RenderAsPNGThroughConvert(pBuf, nBytesRead, rGraphic))
+ return true;
+ else
+ return RenderAsPNGThroughGS(pBuf, nBytesRead, rGraphic);
+}
+
+// this method adds a replacement action containing the original wmf or tiff replacement,
+// so the original eps can be written when storing to ODF.
+void CreateMtfReplacementAction( GDIMetaFile& rMtf, SvStream& rStrm, sal_uInt32 nOrigPos, sal_uInt32 nPSSize,
+ sal_uInt32 nPosWMF, sal_uInt32 nSizeWMF, sal_uInt32 nPosTIFF, sal_uInt32 nSizeTIFF )
+{
+ ByteString aComment( (const sal_Char*)"EPSReplacementGraphic" );
+ if ( nSizeWMF || nSizeTIFF )
+ {
+ SvMemoryStream aReplacement( nSizeWMF + nSizeTIFF + 28 );
+ sal_uInt32 nMagic = 0xc6d3d0c5;
+ sal_uInt32 nPPos = 28 + nSizeWMF + nSizeTIFF;
+ sal_uInt32 nWPos = nSizeWMF ? 28 : 0;
+ sal_uInt32 nTPos = nSizeTIFF ? 28 + nSizeWMF : 0;
+
+ aReplacement << nMagic << nPPos << nPSSize
+ << nWPos << nSizeWMF
+ << nTPos << nSizeTIFF;
+ if ( nSizeWMF )
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ nSizeWMF ];
+ rStrm.Seek( nOrigPos + nPosWMF );
+ rStrm.Read( pBuf, nSizeWMF );
+ aReplacement.Write( pBuf, nSizeWMF );
+ delete[] pBuf;
+ }
+ if ( nSizeTIFF )
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ nSizeTIFF ];
+ rStrm.Seek( nOrigPos + nPosTIFF );
+ rStrm.Read( pBuf, nSizeTIFF );
+ aReplacement.Write( pBuf, nSizeTIFF );
+ delete[] pBuf;
+ }
+ rMtf.AddAction( (MetaAction*)( new MetaCommentAction( aComment, 0, (const BYTE*)aReplacement.GetData(), aReplacement.Tell() ) ) );
+ }
+ else
+ rMtf.AddAction( (MetaAction*)( new MetaCommentAction( aComment, 0, NULL, 0 ) ) );
+}
+
+//there is no preview -> make a red box
+void MakePreview(sal_uInt8* pBuf, sal_uInt32 nBytesRead,
+ long nWidth, long nHeight, Graphic &rGraphic)
+{
+ GDIMetaFile aMtf;
+ VirtualDevice aVDev;
+ Font aFont;
+
+ aVDev.EnableOutput( FALSE );
+ aMtf.Record( &aVDev );
+ aVDev.SetLineColor( Color( COL_RED ) );
+ aVDev.SetFillColor();
+
+ aFont.SetColor( COL_LIGHTRED );
+// aFont.SetSize( Size( 0, 32 ) );
+
+ aVDev.Push( PUSH_FONT );
+ aVDev.SetFont( aFont );
+
+ Rectangle aRect( Point( 1, 1 ), Size( nWidth - 2, nHeight - 2 ) );
+ aVDev.DrawRect( aRect );
+
+ String aString;
+ int nLen;
+ BYTE* pDest = ImplSearchEntry( pBuf, (BYTE*)"%%Title:", nBytesRead - 32, 8 );
+ if ( pDest )
+ {
+ pDest += 8;
+ if ( *pDest == ' ' )
+ pDest++;
+ nLen = ImplGetLen( pDest, 32 );
+ BYTE aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
+ if ( strcmp( (const char*)pDest, "none" ) != 0 )
+ {
+ aString.AppendAscii( " Title:" );
+ aString.AppendAscii( (char*)pDest );
+ aString.AppendAscii( "\n" );
+ }
+ pDest[ nLen ] = aOldValue;
+ }
+ pDest = ImplSearchEntry( pBuf, (BYTE*)"%%Creator:", nBytesRead - 32, 10 );
+ if ( pDest )
+ {
+ pDest += 10;
+ if ( *pDest == ' ' )
+ pDest++;
+ nLen = ImplGetLen( pDest, 32 );
+ BYTE aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
+ aString.AppendAscii( " Creator:" );
+ aString.AppendAscii( (char*)pDest );
+ aString.AppendAscii( "\n" );
+ pDest[ nLen ] = aOldValue;
+ }
+ pDest = ImplSearchEntry( pBuf, (BYTE*)"%%CreationDate:", nBytesRead - 32, 15 );
+ if ( pDest )
+ {
+ pDest += 15;
+ if ( *pDest == ' ' )
+ pDest++;
+ nLen = ImplGetLen( pDest, 32 );
+ BYTE aOldValue(pDest[ nLen ]); pDest[ nLen ] = 0;
+ if ( strcmp( (const char*)pDest, "none" ) != 0 )
+ {
+ aString.AppendAscii( " CreationDate:" );
+ aString.AppendAscii( (char*)pDest );
+ aString.AppendAscii( "\n" );
+ }
+ pDest[ nLen ] = aOldValue;
+ }
+ pDest = ImplSearchEntry( pBuf, (BYTE*)"%%LanguageLevel:", nBytesRead - 4, 16 );
+ if ( pDest )
+ {
+ pDest += 16;
+ int nCount = 4;
+ long nNumber = ImplGetNumber( &pDest, nCount );
+ if ( nCount && ( (UINT32)nNumber < 10 ) )
+ {
+ aString.AppendAscii( " LanguageLevel:" );
+ aString.Append( UniString::CreateFromInt32( nNumber ) );
+ }
+ }
+ aVDev.DrawText( aRect, aString, TEXT_DRAW_CLIP | TEXT_DRAW_MULTILINE );
+ aVDev.Pop();
+ aMtf.Stop();
+ aMtf.WindStart();
+ aMtf.SetPrefMapMode( MAP_POINT );
+ aMtf.SetPrefSize( Size( nWidth, nHeight ) );
+ rGraphic = aMtf;
+}
+
+
+//================== GraphicImport - die exportierte Funktion ================
+
+#ifdef WNT
+extern "C" BOOL _cdecl GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL)
+#else
+extern "C" BOOL GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL)
+#endif
+{
+ if ( rStream.GetError() )
+ return FALSE;
+
+ Graphic aGraphic;
+ sal_Bool bRetValue = sal_False;
+ sal_Bool bHasPreview = sal_False;
+ sal_Bool bGraphicLinkCreated = sal_False;
+ sal_uInt32 nSignature, nPSStreamPos, nPSSize;
+ sal_uInt32 nSizeWMF = 0;
+ sal_uInt32 nPosWMF = 0;
+ sal_uInt32 nSizeTIFF = 0;
+ sal_uInt32 nPosTIFF = 0;
+ sal_uInt32 nOrigPos = nPSStreamPos = rStream.Tell();
+ sal_uInt16 nOldFormat = rStream.GetNumberFormatInt();
+ rStream.SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ rStream >> nSignature;
+ if ( nSignature == 0xc6d3d0c5 )
+ {
+ rStream >> nPSStreamPos >> nPSSize >> nPosWMF >> nSizeWMF;
+
+ // first we try to get the metafile grafix
+
+ if ( nSizeWMF )
+ {
+ if ( nPosWMF != 0 )
+ {
+ rStream.Seek( nOrigPos + nPosWMF );
+ if ( GraphicConverter::Import( rStream, aGraphic, CVT_WMF ) == ERRCODE_NONE )
+ bHasPreview = bRetValue = TRUE;
+ }
+ }
+ else
+ {
+ rStream >> nPosTIFF >> nSizeTIFF;
+
+ // else we have to get the tiff grafix
+
+ if ( nPosTIFF && nSizeTIFF )
+ {
+ rStream.Seek( nOrigPos + nPosTIFF );
+ if ( GraphicConverter::Import( rStream, aGraphic, CVT_TIF ) == ERRCODE_NONE )
+ {
+ MakeAsMeta(aGraphic);
+ rStream.Seek( nOrigPos + nPosTIFF );
+ bHasPreview = bRetValue = TRUE;
+ }
+ }
+ }
+ }
+ else
+ {
+ nPSStreamPos = nOrigPos; // no preview available _>so we must get the size manually
+ nPSSize = rStream.Seek( STREAM_SEEK_TO_END ) - nOrigPos;
+ }
+ sal_uInt8* pHeader = new sal_uInt8[ 22 ];
+ rStream.Seek( nPSStreamPos );
+ rStream.Read( pHeader, 22 ); // check PostScript header
+ if ( ImplSearchEntry( pHeader, (BYTE*)"%!PS-Adobe", 10, 10 ) &&
+ ImplSearchEntry( &pHeader[ 15 ], (BYTE*)"EPS", 3, 3 ) )
+ {
+ rStream.Seek( nPSStreamPos );
+ sal_uInt8* pBuf = new sal_uInt8[ nPSSize ];
+ if ( pBuf )
+ {
+ sal_uInt32 nBufStartPos = rStream.Tell();
+ sal_uInt32 nBytesRead = rStream.Read( pBuf, nPSSize );
+ if ( nBytesRead == nPSSize )
+ {
+ int nSecurityCount = 32;
+ if ( !bHasPreview ) // if there is no tiff/wmf preview, we will parse for an preview in the eps prolog
+ {
+ BYTE* pDest = ImplSearchEntry( pBuf, (BYTE*)"%%BeginPreview:", nBytesRead - 32, 15 );
+ if ( pDest )
+ {
+ pDest += 15;
+ long nWidth = ImplGetNumber( &pDest, nSecurityCount );
+ long nHeight = ImplGetNumber( &pDest, nSecurityCount );
+ long nBitDepth = ImplGetNumber( &pDest, nSecurityCount );
+ long nScanLines = ImplGetNumber( &pDest, nSecurityCount );
+ pDest = ImplSearchEntry( pDest, (BYTE*)"%", 16, 1 ); // go to the first Scanline
+ if ( nSecurityCount && pDest && nWidth && nHeight && ( ( nBitDepth == 1 ) || ( nBitDepth == 8 ) ) && nScanLines )
+ {
+ rStream.Seek( nBufStartPos + ( pDest - pBuf ) );
+
+ Bitmap aBitmap( Size( nWidth, nHeight ), 1 );
+ BitmapWriteAccess* pAcc = aBitmap.AcquireWriteAccess();
+ if ( pAcc )
+ {
+ int nBitsLeft;
+ BOOL bIsValid = TRUE;
+ BYTE nDat = 0;
+ char nByte;
+ for ( long y = 0; bIsValid && ( y < nHeight ); y++ )
+ {
+ nBitsLeft = 0;
+ for ( long x = 0; x < nWidth; x++ )
+ {
+ if ( --nBitsLeft < 0 )
+ {
+ while ( bIsValid && ( nBitsLeft != 7 ) )
+ {
+ rStream >> nByte;
+ switch ( nByte )
+ {
+ case 0x0a :
+ if ( --nScanLines < 0 )
+ bIsValid = FALSE;
+ case 0x09 :
+ case 0x0d :
+ case 0x20 :
+ case 0x25 :
+ break;
+ default:
+ {
+ if ( nByte >= '0' )
+ {
+ if ( nByte > '9' )
+ {
+ nByte &=~0x20; // case none sensitive for hexadezimal values
+ nByte -= ( 'A' - 10 );
+ if ( nByte > 15 )
+ bIsValid = FALSE;
+ }
+ else
+ nByte -= '0';
+ nBitsLeft += 4;
+ nDat <<= 4;
+ nDat |= ( nByte ^ 0xf ); // in epsi a zero bit represents white color
+ }
+ else
+ bIsValid = FALSE;
+ }
+ break;
+ }
+ }
+ }
+ if ( nBitDepth == 1 )
+ pAcc->SetPixel( y, x, sal::static_int_cast< BYTE >(( nDat >> nBitsLeft ) & 1) );
+ else
+ {
+ pAcc->SetPixel( y, x, ( nDat ) ? 1 : 0 ); // nBitDepth == 8
+ nBitsLeft = 0;
+ }
+ }
+ }
+ if ( bIsValid )
+ {
+ VirtualDevice aVDev;
+ GDIMetaFile aMtf;
+ Size aSize;
+ aVDev.EnableOutput( FALSE );
+ aMtf.Record( &aVDev );
+ aSize = aBitmap.GetPrefSize();
+ if( !aSize.Width() || !aSize.Height() )
+ aSize = Application::GetDefaultDevice()->PixelToLogic( aBitmap.GetSizePixel(), MAP_100TH_MM );
+ else
+ aSize = Application::GetDefaultDevice()->LogicToLogic( aSize, aBitmap.GetPrefMapMode(), MAP_100TH_MM );
+ aVDev.DrawBitmap( Point(), aSize, aBitmap );
+ aMtf.Stop();
+ aMtf.WindStart();
+ aMtf.SetPrefMapMode( MAP_100TH_MM );
+ aMtf.SetPrefSize( aSize );
+ aGraphic = aMtf;
+ bHasPreview = bRetValue = TRUE;
+ }
+ aBitmap.ReleaseAccess( pAcc );
+ }
+ }
+ }
+ }
+
+ BYTE* pDest = ImplSearchEntry( pBuf, (BYTE*)"%%BoundingBox:", nBytesRead, 14 );
+ if ( pDest )
+ {
+ nSecurityCount = 100;
+ long nNumb[4];
+ nNumb[0] = nNumb[1] = nNumb[2] = nNumb[3] = 0;
+ pDest += 14;
+ for ( int i = 0; ( i < 4 ) && nSecurityCount; i++ )
+ {
+ nNumb[ i ] = ImplGetNumber( &pDest, nSecurityCount );
+ }
+ if ( nSecurityCount)
+ {
+ bGraphicLinkCreated = sal_True;
+ GfxLink aGfxLink( pBuf, nPSSize, GFX_LINK_TYPE_EPS_BUFFER, TRUE ) ;
+ GDIMetaFile aMtf;
+
+ long nWidth = nNumb[2] - nNumb[0] + 1;
+ long nHeight = nNumb[3] - nNumb[1] + 1;
+
+ // if there is no preview -> try with gs to make one
+ if( !bHasPreview )
+ {
+ bHasPreview = RenderAsEMF(pBuf, nBytesRead, aGraphic);
+ if (!bHasPreview)
+ bHasPreview = RenderAsPNG(pBuf, nBytesRead, aGraphic);
+ }
+
+ // if there is no preview -> make a red box
+ if( !bHasPreview )
+ {
+ MakePreview(pBuf, nBytesRead, nWidth, nHeight,
+ aGraphic);
+ }
+
+ aMtf.AddAction( (MetaAction*)( new MetaEPSAction( Point(), Size( nWidth, nHeight ),
+ aGfxLink, aGraphic.GetGDIMetaFile() ) ) );
+ CreateMtfReplacementAction( aMtf, rStream, nOrigPos, nPSSize, nPosWMF, nSizeWMF, nPosTIFF, nSizeTIFF );
+ aMtf.WindStart();
+ aMtf.SetPrefMapMode( MAP_POINT );
+ aMtf.SetPrefSize( Size( nWidth, nHeight ) );
+ rGraphic = aMtf;
+ bRetValue = sal_True;
+ }
+ }
+ }
+ }
+ if ( !bGraphicLinkCreated )
+ delete[] pBuf;
+ }
+ delete[] pHeader;
+ rStream.SetNumberFormatInt(nOldFormat);
+ rStream.Seek( nOrigPos );
+ return ( bRetValue );
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/ieps/makefile.mk b/filter/source/graphicfilter/ieps/makefile.mk
new file mode 100644
index 000000000000..7d8fdb6e5337
--- /dev/null
+++ b/filter/source/graphicfilter/ieps/makefile.mk
@@ -0,0 +1,66 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ieps
+DEPTARGET=vieps
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ieps.obj
+
+# ==========================================================================
+
+SHL1TARGET= ips$(DLLPOSTFIX)
+SHL1IMPLIB= ieps
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/ieps.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ieps.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/ios2met/exports.map b/filter/source/graphicfilter/ios2met/exports.map
new file mode 100644
index 000000000000..440afa9245d8
--- /dev/null
+++ b/filter/source/graphicfilter/ios2met/exports.map
@@ -0,0 +1,7 @@
+METIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ios2met/ios2met.cxx b/filter/source/graphicfilter/ios2met/ios2met.cxx
new file mode 100644
index 000000000000..6cab0cdc4e18
--- /dev/null
+++ b/filter/source/graphicfilter/ios2met/ios2met.cxx
@@ -0,0 +1,2784 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <tools/poly.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/lineinfo.hxx>
+#include <svtools/fltcall.hxx>
+
+#include <math.h>
+
+// MT: NOOLDSV, someone should change the code...
+enum PenStyle { PEN_NULL, PEN_SOLID, PEN_DOT, PEN_DASH, PEN_DASHDOT };
+
+
+//============================== defines ===================================
+
+#define OOODEBUG(str,Num) //InfoBox(NULL,String(str)+String(" ")+String(Num)).Execute();
+
+// -----------------------------Feld-Typen-------------------------------
+
+#define BegDocumnMagic 0xA8A8 /* Begin Document */
+#define EndDocumnMagic 0xA8A9 /* End Document */
+
+#define BegResGrpMagic 0xC6A8 /* Begin Resource Group */
+#define EndResGrpMagic 0xC6A9 /* End Resource Group */
+
+#define BegColAtrMagic 0x77A8 /* Begin Color Attribute Table */
+#define EndColAtrMagic 0x77A9 /* End Color Attribute Table */
+#define BlkColAtrMagic 0x77B0 /* Color Attribute Table */
+#define MapColAtrMagic 0x77AB /* Map Color Attribute Table */
+
+#define BegImgObjMagic 0xFBA8 /* Begin Image Object */
+#define EndImgObjMagic 0xFBA9 /* End Image Object */
+#define DscImgObjMagic 0xFBA6 /* Image Data Descriptor */
+#define DatImgObjMagic 0xFBEE /* Image Picture Data */
+
+#define BegObEnv1Magic 0xC7A8 /* Begin Object Environment Group */
+#define EndObEnv1Magic 0xC7A9 /* End Object Environment Group */
+
+#define BegGrfObjMagic 0xBBA8 /* Begin Graphics Object */
+#define EndGrfObjMagic 0xBBA9 /* End Graphics Object */
+#define DscGrfObjMagic 0xBBA6 /* Graphics Data Descritor */
+#define DatGrfObjMagic 0xBBEE /* Graphics Data */
+
+#define MapCodFntMagic 0x8AAB /* Map Coded Font */
+#define MapDatResMagic 0xC3AB /* Map Data Resource */
+
+// -----------------------------Order-Typen-------------------------------
+
+#define GOrdGivArc 0xC6 /* 1 Arc at given position */
+#define GOrdCurArc 0x86 /* 1 Arc at current position */
+#define GOrdGivBzr 0xE5 /* 1 Beziercurve at given position */
+#define GOrdCurBzr 0xA5 /* 1 Beziercurve at current position */
+#define GOrdGivBox 0xC0 /* 1 Box at given position */
+#define GOrdCurBox 0x80 /* 1 Box at current position */
+#define GOrdGivFil 0xC5 /* 1 Fillet at given position */
+#define GOrdCurFil 0x85 /* 1 Fillet at current position */
+#define GOrdGivCrc 0xC7 /* 1 Full arc (circle) at given position */
+#define GOrdCurCrc 0x87 /* 1 Full arc (circle) at current position */
+#define GOrdGivLin 0xC1 /* 1 Line at given position */
+#define GOrdCurLin 0x81 /* 1 Line at current position */
+#define GOrdGivMrk 0xC2 /* 1 Marker at given position */
+#define GOrdCurMrk 0x82 /* 1 Marker at current position */
+#define GOrdGivArP 0xE3 /* 1 Partial arc at given position */
+#define GOrdCurArP 0xA3 /* 1 Partial arc at current position */
+#define GOrdGivRLn 0xE1 /* 1 Relative line at given position */
+#define GOrdCurRLn 0xA1 /* 1 Relative line at current position */
+#define GOrdGivSFl 0xE4 /* 1 Sharp fillet at given position */
+#define GOrdCurSFl 0xA4 /* 1 Sharp fillet at current position */
+
+#define GOrdGivStM 0xF1 /* 1 Character string move at given position */
+#define GOrdCurStM 0xB1 /* 1 Character string move at current position */
+#define GOrdGivStr 0xC3 /* 1 Character string at given position */
+#define GOrdCurStr 0x83 /* 1 Character string at current position */
+#define GOrdGivStx 0xFEF0 /* 2 Character string extended at given position */
+#define GOrdCurStx 0xFEB0 /* 2 Character string extended at current position */
+
+#define GOrdGivImg 0xD1 /* 1 Begin Image at given position */
+#define GOrdCurImg 0x91 /* 1 Begin Image at current position */
+#define GOrdImgDat 0x92 /* 1 Image data */
+#define GOrdEndImg 0x93 /* 1 End Image */
+#define GOrdBegAra 0x68 /* 0 1 Begin area */
+#define GOrdEndAra 0x60 /* 1 End area */
+#define GOrdBegElm 0xD2 /* 1 Begin element */
+#define GOrdEndElm 0x49 /* 0 1 End element */
+
+#define GOrdBegPth 0xD0 /* 1 Begin path */
+#define GOrdEndPth 0x7F /* 0 1 End path */
+#define GOrdFilPth 0xD7 /* 1 Fill path */
+#define GOrdModPth 0xD8 /* 1 Modify path */
+#define GOrdOutPth 0xD4 /* 1 Outline path */
+#define GOrdSClPth 0xB4 /* 1 Set clip path */
+
+#define GOrdNopNop 0x00 /* 0 0 No operation */
+#define GOrdRemark 0x01 /* 1 Comment */
+#define GOrdSegLab 0xD3 /* 1 Label */
+#define GOrdBitBlt 0xD6 /* 1 Bitblt */
+#define GOrdCalSeg 0x07 /* 1 Call Segment */
+#define GOrdSSgBnd 0x32 /* 1 Set segment boundary */
+#define GOrdSegChr 0x04 /* 1 Segment characteristics */
+#define GOrdCloFig 0x7D /* 0 1 Close Figure */
+#define GOrdEndSym 0xFF /* 0 0 End of symbol definition */
+#define GOrdEndPlg 0x3E /* 0 1 End prolog */
+#define GOrdEscape 0xD5 /* 1 Escape */
+#define GOrdExtEsc 0xFED5 /* 2 Extended Escape */
+#define GOrdPolygn 0xF3 /* 2 Polygons */
+
+#define GOrdStkPop 0x3F /* 0 1 Pop */
+
+#define GOrdSIvAtr 0x14 /* 1 Set individual attribute */
+#define GOrdPIvAtr 0x54 /* 1 Push and set individual attribute */
+#define GOrdSColor 0x0A /* 0 1 Set color */
+#define GOrdPColor 0x4A /* 0 1 Push and set color */
+#define GOrdSIxCol 0xA6 /* 1 Set indexed color */
+#define GOrdPIxCol 0xE6 /* 1 Push and set indexed color */
+#define GOrdSXtCol 0x26 /* 1 Set extended color */
+#define GOrdPXtCol 0x66 /* 1 Push and set extended color */
+#define GOrdSBgCol 0x25 /* 1 Set background color */
+#define GOrdPBgCol 0x65 /* 1 Push and set background color */
+#define GOrdSBxCol 0xA7 /* 1 Set background indexed color */
+#define GOrdPBxCol 0xE7 /* 1 Push and set background indexed color */
+#define GOrdSMixMd 0x0C /* 0 1 Set mix */
+#define GOrdPMixMd 0x4C /* 0 1 Push and set mix */
+#define GOrdSBgMix 0x0D /* 0 1 Set background mix */
+#define GOrdPBgMix 0x4D /* 0 1 Push and set background mix */
+
+#define GOrdSPtSet 0x08 /* 0 1 Set pattern set */
+#define GOrdPPtSet 0x48 /* 0 1 Push and set pattern set */
+#define GOrdSPtSym 0x28 /* 0 1 Set pattern symbol */
+#define GOrdPPtSym 0x09 /* 0 1 Push and set pattern symbol */
+#define GOrdSPtRef 0xA0 /* 1 Set model pattern reference */
+#define GOrdPPtRef 0xE0 /* 1 Push and set pattern reference point */
+
+#define GOrdSLnEnd 0x1A /* 0 1 Set line end */
+#define GOrdPLnEnd 0x5A /* 0 1 Push and set line end */
+#define GOrdSLnJoi 0x1B /* 0 1 Set line join */
+#define GOrdPLnJoi 0x5B /* 0 1 Push and set line join */
+#define GOrdSLnTyp 0x18 /* 0 1 Set line type */
+#define GOrdPLnTyp 0x58 /* 0 1 Push and set line type */
+#define GOrdSLnWdt 0x19 /* 0 1 Set line width */
+#define GOrdPLnWdt 0x59 /* 0 1 Push and set line width */
+#define GOrdSFrLWd 0x11 /* 1 Set fractional line width */
+#define GOrdPFrLWd 0x51 /* 1 Push and set fractional line width */
+#define GOrdSStLWd 0x15 /* 1 Set stroke line width */
+#define GOrdPStLWd 0x55 /* 1 Push and set stroke line width */
+
+#define GOrdSChDir 0x3A /* 0 1 Set character direction */
+#define GOrdPChDir 0x7A /* 0 1 Push and set character direction */
+#define GOrdSChPrc 0x39 /* 0 1 Set character precision */
+#define GOrdPChPrc 0x79 /* 0 1 Push and set character precision */
+#define GOrdSChSet 0x38 /* 0 1 Set character set */
+#define GOrdPChSet 0x78 /* 0 1 Push and set character set */
+#define GOrdSChAng 0x34 /* 1 Set character angle */
+#define GOrdPChAng 0x74 /* 1 Push and set character angle */
+#define GOrdSChBrx 0x05 /* 1 Set character break extra */
+#define GOrdPChBrx 0x45 /* 1 Push and set character break extra */
+#define GOrdSChCel 0x33 /* 1 Set character cell */
+#define GOrdPChCel 0x03 /* 1 Push and set character cell */
+#define GOrdSChXtr 0x17 /* 1 Set character extra */
+#define GOrdPChXtr 0x57 /* 1 Push and set character extra */
+#define GOrdSChShr 0x35 /* 1 Set character shear */
+#define GOrdPChShr 0x75 /* 1 Push and set character shear */
+#define GOrdSTxAlg 0x36 /* 0 2 Set text allingment */
+#define GOrdPTxAlg 0x76 /* 0 2 Push and set text allingment */
+
+#define GOrdSMkPrc 0x3B /* 0 1 Set marker precision */
+#define GOrdPMkPrc 0x7B /* 0 1 Push and set marker precision */
+#define GOrdSMkSet 0x3C /* 0 1 Set marker set */
+#define GOrdPMkSet 0x7C /* 0 1 Push and set marker set */
+#define GOrdSMkSym 0x29 /* 0 1 Set marker symbol */
+#define GOrdPMkSym 0x69 /* 0 1 Push and set marker symbol */
+#define GOrdSMkCel 0x37 /* 1 Set marker cell */
+#define GOrdPMkCel 0x77 /* 1 Push and set marker cell */
+
+#define GOrdSArcPa 0x22 /* 1 Set arc parameters */
+#define GOrdPArcPa 0x62 /* 1 Push and set arc parameters */
+
+#define GOrdSCrPos 0x21 /* 1 Set current position */
+#define GOrdPCrPos 0x61 /* 1 Push and set current position */
+
+#define GOrdSMdTrn 0x24 /* 1 Set model transform */
+#define GOrdPMdTrn 0x64 /* 1 Push and set model transform */
+#define GOrdSPkIdn 0x43 /* 1 Set pick identifier */
+#define GOrdPPkIdn 0x23 /* 1 Push and set pick identifier */
+#define GOrdSVwTrn 0x31 /* 1 Set viewing transform */
+#define GOrdSVwWin 0x27 /* 1 Set viewing window */
+#define GOrdPVwWin 0x67 /* 1 Push and set viewing window */
+
+//============================ OS2METReader ==================================
+
+struct OSPalette {
+ OSPalette * pSucc;
+ sal_uInt32 * p0RGB; // Darf auch NULL sein!
+ USHORT nSize;
+};
+
+struct OSArea {
+ OSArea * pSucc;
+ BYTE nFlags;
+ PolyPolygon aPPoly;
+ BOOL bClosed;
+ Color aCol;
+ Color aBgCol;
+ RasterOp eMix;
+ RasterOp eBgMix;
+ BOOL bFill;
+ OSArea(){} ~OSArea(){}
+};
+
+struct OSPath
+{
+ OSPath* pSucc;
+ sal_uInt32 nID;
+ PolyPolygon aPPoly;
+ BOOL bClosed;
+ BOOL bStroke;
+
+ OSPath(){}
+ ~OSPath(){}
+};
+
+struct OSFont {
+ OSFont * pSucc;
+ ULONG nID;
+ Font aFont;
+ OSFont(){} ~OSFont(){}
+};
+
+struct OSBitmap {
+ OSBitmap * pSucc;
+ ULONG nID;
+ Bitmap aBitmap;
+
+ // Waehrend des Lesens der Bitmap benoetigt:
+ SvStream * pBMP; // Zeiger auf temporaere Windows-BMP-Datei oder NULL
+ sal_uInt32 nWidth, nHeight;
+ USHORT nBitsPerPixel;
+ ULONG nMapPos;
+ OSBitmap(){} ~OSBitmap(){}
+};
+
+struct OSAttr {
+ OSAttr * pSucc;
+ USHORT nPushOrder;
+ BYTE nIvAttrA, nIvAttrP; // Spezialvariablen fuer den Order "GOrdPIvAtr"
+
+ Color aLinCol;
+ Color aLinBgCol;
+ RasterOp eLinMix;
+ RasterOp eLinBgMix;
+ Color aChrCol;
+ Color aChrBgCol;
+ RasterOp eChrMix;
+ RasterOp eChrBgMix;
+ Color aMrkCol;
+ Color aMrkBgCol;
+ RasterOp eMrkMix;
+ RasterOp eMrkBgMix;
+ Color aPatCol;
+ Color aPatBgCol;
+ RasterOp ePatMix;
+ RasterOp ePatBgMix;
+ Color aImgCol;
+ Color aImgBgCol;
+ RasterOp eImgMix;
+ RasterOp eImgBgMix;
+ long nArcP, nArcQ, nArcR, nArcS;
+ short nChrAng;
+// long nChrBreakExtra;
+ Size aChrCellSize;
+// BYTE nChrDir;
+// long nChrExtra;
+// BYTE nChrPrec;
+ ULONG nChrSet;
+// Size aChrShear;
+ Point aCurPos;
+// long nFracLinWidth;
+// BYTE nLinEnd;
+// BYTE nLinJoin;
+ PenStyle eLinStyle;
+ USHORT nLinWidth;
+ Size aMrkCellSize;
+ BYTE nMrkPrec;
+ BYTE nMrkSet;
+ BYTE nMrkSymbol;
+// //... aModTransform;
+// Point aPatRef;
+// BYTE nPatSet;
+ BOOL bFill;
+// ULONG nPickId;
+// //... aSegBound;
+ USHORT nStrLinWidth;
+// BYTE nTxtAlignHor,nTxtAlignVer;
+// //... aViewTransform;
+// //... aViewWindow;
+ OSAttr(){} ~OSAttr(){}
+};
+
+class OS2METReader {
+
+private:
+
+ long ErrorCode;
+
+ SvStream * pOS2MET; // Die einzulesende OS2MET-Datei
+ VirtualDevice * pVirDev; // Hier werden die Drawing-Methoden aufgerufen.
+ // Dabei findet ein Recording in das GDIMetaFile
+ // statt.
+ ULONG nOrigPos; // Anfaengliche Position in pOS2MET
+ UINT16 nOrigNumberFormat; // Anfaengliches Nummern-Format von pOS2MET
+ Rectangle aBoundingRect; // Boundingrectangle wie in Datei angegeben
+ Rectangle aCalcBndRect; // selbst ermitteltes Boundingrectangle
+ MapMode aGlobMapMode; // Aufloesung des Bildes
+ BOOL bCoord32;
+
+ OSPalette * pPaletteStack;
+
+ LineInfo aLineInfo;
+
+ OSArea * pAreaStack; // Areas, die in Arbeit sind
+
+ OSPath * pPathStack; // Paths, die in Arbeit sind
+ OSPath * pPathList; // Vollendete Paths
+
+ OSFont * pFontList;
+
+ OSBitmap * pBitmapList;
+
+ OSAttr aDefAttr;
+ OSAttr aAttr;
+ OSAttr * pAttrStack;
+
+ SvStream * pOrdFile;
+
+ BOOL Callback(USHORT nPercent);
+
+ void AddPointsToPath(const Polygon & rPoly);
+ void AddPointsToArea(const Polygon & rPoly);
+ void CloseFigure();
+ void PushAttr(USHORT nPushOrder);
+ void PopAttr();
+
+ void ChangeBrush( const Color& rPatColor, const Color& rBGColor, BOOL bFill );
+ void SetPen( const Color& rColor, USHORT nStrLinWidth = 0, PenStyle ePenStyle = PEN_SOLID );
+ void SetRasterOp(RasterOp eROP);
+
+ void SetPalette0RGB(USHORT nIndex, ULONG nCol);
+ sal_uInt32 GetPalette0RGB(sal_uInt32 nIndex);
+ // Holt Farbe aus der Palette, oder, wenn nicht vorhanden,
+ // interpretiert nIndex als direkten RGB-Wert.
+ Color GetPaletteColor(sal_uInt32 nIndex);
+
+
+ BOOL IsLineInfo();
+ void DrawPolyLine( const Polygon& rPolygon );
+ void DrawPolygon( const Polygon& rPolygon );
+ void DrawPolyPolygon( const PolyPolygon& rPolygon );
+ USHORT ReadBigEndianWord();
+ ULONG ReadBigEndian3BytesLong();
+ ULONG ReadLittleEndian3BytesLong();
+ long ReadCoord(BOOL b32);
+ Point ReadPoint( const BOOL bAdjustBoundRect = TRUE );
+ RasterOp OS2MixToRasterOp(BYTE nMix);
+ void ReadLine(BOOL bGivenPos, USHORT nOrderLen);
+ void ReadRelLine(BOOL bGivenPos, USHORT nOrderLen);
+ void ReadBox(BOOL bGivenPos);
+ void ReadBitBlt();
+ void ReadChrStr(BOOL bGivenPos, BOOL bMove, BOOL bExtra, USHORT nOrderLen);
+ void ReadArc(BOOL bGivenPos);
+ void ReadFullArc(BOOL bGivenPos, USHORT nOrderSize);
+ void ReadPartialArc(BOOL bGivenPos, USHORT nOrderSize);
+ void ReadPolygons();
+ void ReadBezier(BOOL bGivenPos, USHORT nOrderLen);
+ void ReadFillet(BOOL bGivenPos, USHORT nOrderLen);
+ void ReadFilletSharp(BOOL bGivenPos, USHORT nOrderLen);
+ void ReadMarker(BOOL bGivenPos, USHORT nOrderLen);
+ void ReadOrder(USHORT nOrderID, USHORT nOrderLen);
+ void ReadDsc(USHORT nDscID, USHORT nDscLen);
+ void ReadImageData(USHORT nDataID, USHORT nDataLen);
+ void ReadFont(USHORT nFieldSize);
+ void ReadField(USHORT nFieldType, USHORT nFieldSize);
+
+public:
+
+ OS2METReader();
+ ~OS2METReader();
+
+ void ReadOS2MET( SvStream & rStreamOS2MET, GDIMetaFile & rGDIMetaFile );
+ // Liesst aus dem Stream eine OS2MET-Datei und fuellt das GDIMetaFile
+
+};
+
+//=================== Methoden von OS2METReader ==============================
+
+BOOL OS2METReader::Callback(USHORT /*nPercent*/)
+{
+/*
+ if (pCallback!=NULL) {
+ if (((*pCallback)(pCallerData,nPercent))==TRUE) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ return TRUE;
+ }
+ }
+*/
+ return FALSE;
+}
+
+OS2METReader::OS2METReader()
+{
+}
+
+OS2METReader::~OS2METReader()
+{
+}
+
+BOOL OS2METReader::IsLineInfo()
+{
+ return ( ! ( aLineInfo.IsDefault() || ( aLineInfo.GetStyle() == LINE_NONE ) || ( pVirDev->GetLineColor() == COL_TRANSPARENT ) ) );
+}
+
+void OS2METReader::DrawPolyLine( const Polygon& rPolygon )
+{
+ if ( aLineInfo.GetStyle() == LINE_DASH || ( aLineInfo.GetWidth() > 1 ) )
+ pVirDev->DrawPolyLine( rPolygon, aLineInfo );
+ else
+ pVirDev->DrawPolyLine( rPolygon );
+}
+
+void OS2METReader::DrawPolygon( const Polygon& rPolygon )
+{
+ if ( IsLineInfo() )
+ {
+ pVirDev->Push( PUSH_LINECOLOR );
+ pVirDev->SetLineColor( COL_TRANSPARENT );
+ pVirDev->DrawPolygon( rPolygon );
+ pVirDev->Pop();
+ pVirDev->DrawPolyLine( rPolygon, aLineInfo );
+ }
+ else
+ pVirDev->DrawPolygon( rPolygon );
+}
+
+void OS2METReader::DrawPolyPolygon( const PolyPolygon& rPolyPolygon )
+{
+ if ( IsLineInfo() )
+ {
+ pVirDev->Push( PUSH_LINECOLOR );
+ pVirDev->SetLineColor( COL_TRANSPARENT );
+ pVirDev->DrawPolyPolygon( rPolyPolygon );
+ pVirDev->Pop();
+ for ( USHORT i = 0; i < rPolyPolygon.Count(); i++ )
+ pVirDev->DrawPolyLine( rPolyPolygon.GetObject( i ), aLineInfo );
+ }
+ else
+ pVirDev->DrawPolyPolygon( rPolyPolygon );
+}
+
+void OS2METReader::AddPointsToArea(const Polygon & rPoly)
+{
+ USHORT nOldSize, nNewSize,i;
+
+ if (pAreaStack==NULL || rPoly.GetSize()==0) return;
+ PolyPolygon * pPP=&(pAreaStack->aPPoly);
+ if (pPP->Count()==0 || pAreaStack->bClosed==TRUE) pPP->Insert(rPoly);
+ else {
+ Polygon aLastPoly(pPP->GetObject(pPP->Count()-1));
+ nOldSize=aLastPoly.GetSize();
+ if (aLastPoly.GetPoint(nOldSize-1)==rPoly.GetPoint(0)) nOldSize--;
+ nNewSize=nOldSize+rPoly.GetSize();
+ aLastPoly.SetSize(nNewSize);
+ for (i=nOldSize; i<nNewSize; i++) {
+ aLastPoly.SetPoint(rPoly.GetPoint(i-nOldSize),i);
+ }
+ pPP->Replace(aLastPoly,pPP->Count()-1);
+ }
+ pAreaStack->bClosed=FALSE;
+}
+
+void OS2METReader::AddPointsToPath(const Polygon & rPoly)
+{
+ USHORT nOldSize, nNewSize,i;
+
+ if (pPathStack==NULL || rPoly.GetSize()==0) return;
+ PolyPolygon * pPP=&(pPathStack->aPPoly);
+ if (pPP->Count()==0 /*|| pPathStack->bClosed==TRUE*/) pPP->Insert(rPoly);
+ else {
+ Polygon aLastPoly(pPP->GetObject(pPP->Count()-1));
+ nOldSize=aLastPoly.GetSize();
+ if (aLastPoly.GetPoint(nOldSize-1)!=rPoly.GetPoint(0)) pPP->Insert(rPoly);
+ else {
+ nOldSize--;
+ nNewSize=nOldSize+rPoly.GetSize();
+ aLastPoly.SetSize(nNewSize);
+ for (i=nOldSize; i<nNewSize; i++) {
+ aLastPoly.SetPoint(rPoly.GetPoint(i-nOldSize),i);
+ }
+ pPP->Replace(aLastPoly,pPP->Count()-1);
+ }
+ }
+ pPathStack->bClosed=FALSE;
+}
+
+void OS2METReader::CloseFigure()
+{
+ if (pAreaStack!=NULL) pAreaStack->bClosed=TRUE;
+ else if (pPathStack!=NULL) pPathStack->bClosed=TRUE;
+}
+
+void OS2METReader::PushAttr(USHORT nPushOrder)
+{
+ OSAttr * p;
+ p=new OSAttr;
+ *p=aAttr;
+ p->pSucc=pAttrStack; pAttrStack=p;
+ p->nPushOrder=nPushOrder;
+}
+
+void OS2METReader::PopAttr()
+{
+ OSAttr * p=pAttrStack;
+
+ if (p==NULL) return;
+ switch (p->nPushOrder) {
+
+ case GOrdPIvAtr:
+ switch (p->nIvAttrA) {
+ case 1: switch (p->nIvAttrP) {
+ case 1: aAttr.aLinCol=p->aLinCol; break;
+ case 2: aAttr.aChrCol=p->aChrCol; break;
+ case 3: aAttr.aMrkCol=p->aMrkCol; break;
+ case 4: aAttr.aPatCol=p->aPatCol; break;
+ case 5: aAttr.aImgCol=p->aImgCol; break;
+ } break;
+ case 2: switch (p->nIvAttrP) {
+ case 1: aAttr.aLinBgCol=p->aLinBgCol; break;
+ case 2: aAttr.aChrBgCol=p->aChrBgCol; break;
+ case 3: aAttr.aMrkBgCol=p->aMrkBgCol; break;
+ case 4: aAttr.aPatBgCol=p->aPatBgCol; break;
+ case 5: aAttr.aImgBgCol=p->aImgBgCol; break;
+ } break;
+ case 3: switch (p->nIvAttrP) {
+ case 1: aAttr.eLinMix=p->eLinMix; break;
+ case 2: aAttr.eChrMix=p->eChrMix; break;
+ case 3: aAttr.eMrkMix=p->eMrkMix; break;
+ case 4: aAttr.ePatMix=p->ePatMix; break;
+ case 5: aAttr.eImgMix=p->eImgMix; break;
+ } break;
+ case 4: switch (p->nIvAttrP) {
+ case 1: aAttr.eLinBgMix=p->eLinBgMix; break;
+ case 2: aAttr.eChrBgMix=p->eChrBgMix; break;
+ case 3: aAttr.eMrkBgMix=p->eMrkBgMix; break;
+ case 4: aAttr.ePatBgMix=p->ePatBgMix; break;
+ case 5: aAttr.eImgBgMix=p->eImgBgMix; break;
+ } break;
+ }
+ break;
+
+ case GOrdPLnTyp: aAttr.eLinStyle=p->eLinStyle; break;
+
+ case GOrdPLnWdt: aAttr.nLinWidth=p->nLinWidth; break;
+
+ case GOrdPStLWd: aAttr.nStrLinWidth=p->nStrLinWidth; break;
+
+ case GOrdPChSet: aAttr.nChrSet=p->nChrSet; break;
+
+ case GOrdPChAng: aAttr.nChrAng=p->nChrAng; break;
+
+ case GOrdPMixMd:
+ aAttr.eLinMix=p->eLinMix;
+ aAttr.eChrMix=p->eChrMix;
+ aAttr.eMrkMix=p->eMrkMix;
+ aAttr.ePatMix=p->ePatMix;
+ aAttr.eImgMix=p->eImgMix;
+ break;
+
+ case GOrdPBgMix:
+ aAttr.eLinBgMix=p->eLinBgMix;
+ aAttr.eChrBgMix=p->eChrBgMix;
+ aAttr.eMrkBgMix=p->eMrkBgMix;
+ aAttr.ePatBgMix=p->ePatBgMix;
+ aAttr.eImgBgMix=p->eImgBgMix;
+ break;
+
+ case GOrdPPtSym: aAttr.bFill = p->bFill; break;
+
+ case GOrdPColor:
+ case GOrdPIxCol:
+ case GOrdPXtCol:
+ aAttr.aLinCol=p->aLinCol;
+ aAttr.aChrCol=p->aChrCol;
+ aAttr.aMrkCol=p->aMrkCol;
+ aAttr.aPatCol=p->aPatCol;
+ aAttr.aImgCol=p->aImgCol;
+ break;
+
+ case GOrdPBgCol:
+ case GOrdPBxCol:
+ aAttr.aLinBgCol=p->aLinBgCol;
+ aAttr.aChrBgCol=p->aChrBgCol;
+ aAttr.aMrkBgCol=p->aMrkBgCol;
+ aAttr.aPatBgCol=p->aPatBgCol;
+ aAttr.aImgBgCol=p->aImgBgCol;
+ break;
+
+ case GOrdPMkPrc: aAttr.nMrkPrec=aDefAttr.nMrkPrec; break;
+
+ case GOrdPMkSet: aAttr.nMrkSet=aDefAttr.nMrkSet; break;
+
+ case GOrdPMkSym: aAttr.nMrkSymbol=aDefAttr.nMrkSymbol; break;
+
+ case GOrdPMkCel: aAttr.aMrkCellSize=aDefAttr.aMrkCellSize; break;
+
+ case GOrdPArcPa:
+ aAttr.nArcP=p->nArcP; aAttr.nArcQ=p->nArcQ;
+ aAttr.nArcR=p->nArcR; aAttr.nArcS=p->nArcS;
+ break;
+
+ case GOrdPCrPos:
+ aAttr.aCurPos=p->aCurPos;
+ break;
+ }
+ pAttrStack=p->pSucc;
+ delete p;
+}
+
+void OS2METReader::ChangeBrush(const Color& rPatColor, const Color& /*rBGColor*/, BOOL bFill )
+{
+ Color aColor;
+
+ if( bFill )
+ aColor = rPatColor;
+ else
+ aColor = Color( COL_TRANSPARENT );
+
+ if( pVirDev->GetFillColor() != aColor )
+ pVirDev->SetFillColor( aColor );
+}
+
+void OS2METReader::SetPen( const Color& rColor, USHORT nLineWidth, PenStyle ePenStyle )
+{
+ LineStyle eLineStyle( LINE_SOLID );
+
+ if ( pVirDev->GetLineColor() != rColor )
+ pVirDev->SetLineColor( rColor );
+ aLineInfo.SetWidth( nLineWidth );
+
+ USHORT nDotCount = 0;
+ USHORT nDashCount = 0;
+ switch ( ePenStyle )
+ {
+ case PEN_NULL :
+ eLineStyle = LINE_NONE;
+ break;
+ case PEN_DASHDOT :
+ nDashCount++;
+ case PEN_DOT :
+ nDotCount++;
+ nDashCount--;
+ case PEN_DASH :
+ nDashCount++;
+ aLineInfo.SetDotCount( nDotCount );
+ aLineInfo.SetDashCount( nDashCount );
+ aLineInfo.SetDistance( nLineWidth );
+ aLineInfo.SetDotLen( nLineWidth );
+ aLineInfo.SetDashLen( nLineWidth << 2 );
+ eLineStyle = LINE_DASH;
+ break;
+ case PEN_SOLID:
+ break; // -Wall not handled...
+ }
+ aLineInfo.SetStyle( eLineStyle );
+}
+
+void OS2METReader::SetRasterOp(RasterOp eROP)
+{
+ if (pVirDev->GetRasterOp()!=eROP) pVirDev->SetRasterOp(eROP);
+}
+
+
+void OS2METReader::SetPalette0RGB(USHORT nIndex, ULONG nCol)
+{
+ if (pPaletteStack==NULL) {
+ pPaletteStack=new OSPalette;
+ pPaletteStack->pSucc=NULL;
+ pPaletteStack->p0RGB=NULL;
+ pPaletteStack->nSize=0;
+ }
+ if (pPaletteStack->p0RGB==NULL || nIndex>=pPaletteStack->nSize) {
+ sal_uInt32 * pOld0RGB=pPaletteStack->p0RGB;
+ USHORT i,nOldSize=pPaletteStack->nSize;
+ if (pOld0RGB==NULL) nOldSize=0;
+ pPaletteStack->nSize=2*(nIndex+1);
+ if (pPaletteStack->nSize<256) pPaletteStack->nSize=256;
+ pPaletteStack->p0RGB = new sal_uInt32[pPaletteStack->nSize];
+ for (i=0; i<pPaletteStack->nSize; i++) {
+ if (i<nOldSize) pPaletteStack->p0RGB[i]=pOld0RGB[i];
+ else if (i==0) pPaletteStack->p0RGB[i]=0x00ffffff;
+ else pPaletteStack->p0RGB[i]=0;
+ }
+ if (pOld0RGB!=NULL) delete[] pOld0RGB;
+ }
+ pPaletteStack->p0RGB[nIndex]=nCol;
+}
+
+sal_uInt32 OS2METReader::GetPalette0RGB(sal_uInt32 nIndex)
+{
+ if (pPaletteStack!=NULL && pPaletteStack->p0RGB!=NULL &&
+ pPaletteStack->nSize>nIndex) nIndex=pPaletteStack->p0RGB[nIndex];
+ return nIndex;
+}
+
+Color OS2METReader::GetPaletteColor(sal_uInt32 nIndex)
+{
+ nIndex=GetPalette0RGB(nIndex);
+ return Color(sal::static_int_cast< UINT8 >((nIndex>>16)&0xff),
+ sal::static_int_cast< UINT8 >((nIndex>>8)&0xff),
+ sal::static_int_cast< UINT8 >(nIndex&0xff));
+}
+
+
+USHORT OS2METReader::ReadBigEndianWord()
+{
+ BYTE nLo,nHi;
+ *pOS2MET >> nHi >> nLo;
+ return (((USHORT)nHi)<<8)|(((USHORT)nLo)&0x00ff);
+}
+
+ULONG OS2METReader::ReadBigEndian3BytesLong()
+{
+ USHORT nLo;
+ BYTE nHi;
+ *pOS2MET >> nHi;
+ nLo=ReadBigEndianWord();
+ return ((((ULONG)nHi)<<16)&0x00ff0000)|((ULONG)nLo);
+}
+
+ULONG OS2METReader::ReadLittleEndian3BytesLong()
+{
+ BYTE nHi,nMed,nLo;
+
+ *pOS2MET >> nLo >> nMed >> nHi;
+ return ((((ULONG)nHi)&0xff)<<16)|((((ULONG)nMed)&0xff)<<8)|(((ULONG)nLo)&0xff);
+}
+
+long OS2METReader::ReadCoord(BOOL b32)
+{
+ long l;
+ short s;
+
+ if (b32) *pOS2MET >> l;
+ else { *pOS2MET >> s; l=(long)s; }
+ return l;
+}
+
+Point OS2METReader::ReadPoint( const BOOL bAdjustBoundRect )
+{
+ long x,y;
+
+ x=ReadCoord(bCoord32);
+ y=ReadCoord(bCoord32);
+ x=x-aBoundingRect.Left();
+ y=aBoundingRect.Bottom()-y;
+
+ if ( bAdjustBoundRect )
+ aCalcBndRect.Union(Rectangle(x,y,x+1,y+1));
+
+ return Point(x,y);
+}
+
+RasterOp OS2METReader::OS2MixToRasterOp(BYTE nMix)
+{
+ switch (nMix) {
+ case 0x0c: return ROP_INVERT;
+ case 0x04: return ROP_XOR;
+ case 0x0b: return ROP_XOR;
+ default: return ROP_OVERPAINT;
+ }
+}
+
+void OS2METReader::ReadLine(BOOL bGivenPos, USHORT nOrderLen)
+{
+ USHORT i,nPolySize;
+
+ if (bCoord32) nPolySize=nOrderLen/8; else nPolySize=nOrderLen/4;
+ if (!bGivenPos) nPolySize++;
+ if (nPolySize==0) return;
+ Polygon aPolygon(nPolySize);
+ for (i=0; i<nPolySize; i++) {
+ if (i==0 && !bGivenPos) aPolygon.SetPoint(aAttr.aCurPos,i);
+ else aPolygon.SetPoint(ReadPoint(),i);
+ }
+ aAttr.aCurPos=aPolygon.GetPoint(nPolySize-1);
+ if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
+ else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
+ else
+ {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ DrawPolyLine( aPolygon );
+ }
+}
+
+void OS2METReader::ReadRelLine(BOOL bGivenPos, USHORT nOrderLen)
+{
+ USHORT i,nPolySize;
+ Point aP0;
+
+
+ if (bGivenPos) {
+ aP0=ReadPoint();
+ if (bCoord32) nOrderLen-=8; else nOrderLen-=4;
+ }
+ else aP0=aAttr.aCurPos;
+ nPolySize=nOrderLen/2;
+ if (nPolySize==0) return;
+ Polygon aPolygon(nPolySize);
+ for (i=0; i<nPolySize; i++) {
+#if defined SOLARIS && defined PPC
+ UINT8 nunsignedbyte;
+ *pOS2MET >> nunsignedbyte; aP0.X()+=(INT8)nunsignedbyte;
+ *pOS2MET >> nunsignedbyte; aP0.Y()+=(INT8)nunsignedbyte;
+#else
+ INT8 nsignedbyte;
+ *pOS2MET >> nsignedbyte; aP0.X()+=(long)nsignedbyte;
+ *pOS2MET >> nsignedbyte; aP0.Y()-=(long)nsignedbyte;
+#endif
+ aCalcBndRect.Union(Rectangle(aP0,Size(1,1)));
+ aPolygon.SetPoint(aP0,i);
+ }
+ aAttr.aCurPos=aPolygon.GetPoint(nPolySize-1);
+ if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
+ else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
+ else
+ {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ DrawPolyLine( aPolygon );
+ }
+}
+
+void OS2METReader::ReadBox(BOOL bGivenPos)
+{
+ BYTE nFlags;
+ Point P0;
+ long nHRound,nVRound;
+
+ *pOS2MET >> nFlags;
+ pOS2MET->SeekRel(1);
+
+ if ( bGivenPos )
+ P0 = ReadPoint();
+ else
+ P0 = aAttr.aCurPos;
+
+ aAttr.aCurPos=ReadPoint();
+ nHRound=ReadCoord(bCoord32);
+ nVRound=ReadCoord(bCoord32);
+
+ Rectangle aBoxRect( P0, aAttr.aCurPos );
+
+ if ( pAreaStack )
+ AddPointsToArea( Polygon( aBoxRect ) );
+ else if ( pPathStack )
+ AddPointsToPath( Polygon( aBoxRect ) );
+ else
+ {
+ if ( nFlags & 0x20 )
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ else
+ SetPen( COL_TRANSPARENT );
+
+ if ( nFlags & 0x40 )
+ {
+ ChangeBrush(aAttr.aPatCol,aAttr.aPatBgCol,aAttr.bFill);
+ SetRasterOp(aAttr.ePatMix);
+ }
+ else
+ {
+ ChangeBrush( Color( COL_TRANSPARENT ), Color( COL_TRANSPARENT ), FALSE );
+ SetRasterOp(aAttr.eLinMix);
+ }
+
+ if ( IsLineInfo() )
+ {
+ Polygon aPolygon( aBoxRect, nHRound, nVRound );
+ if ( nFlags & 0x40 )
+ {
+ pVirDev->Push( PUSH_LINECOLOR );
+ pVirDev->SetLineColor( COL_TRANSPARENT );
+ pVirDev->DrawRect( aBoxRect, nHRound, nVRound );
+ pVirDev->Pop();
+ }
+ pVirDev->DrawPolyLine( aPolygon, aLineInfo );
+ }
+ else
+ pVirDev->DrawRect( aBoxRect, nHRound, nVRound );
+ }
+}
+
+void OS2METReader::ReadBitBlt()
+{
+ Point aP1,aP2;
+ Size aSize;
+ sal_uInt32 nID;
+ OSBitmap * pB;
+ long nt;
+
+ pOS2MET->SeekRel(4);
+ *pOS2MET >> nID;
+ pOS2MET->SeekRel(4);
+ aP1=ReadPoint(); aP2=ReadPoint();
+ if (aP1.X() > aP2.X()) { nt=aP1.X(); aP1.X()=aP2.X(); aP2.X()=nt; }
+ if (aP1.Y() > aP2.Y()) { nt=aP1.Y(); aP1.Y()=aP2.Y(); aP2.Y()=nt; }
+ aSize=Size(aP2.X()-aP1.X(),aP2.Y()-aP1.Y());
+
+ pB=pBitmapList;
+ while (pB!=NULL && pB->nID!=nID) pB=pB->pSucc;
+ if (pB!=NULL) {
+ SetRasterOp(aAttr.ePatMix);
+ pVirDev->DrawBitmap(aP1,aSize,pB->aBitmap);
+ }
+}
+
+void OS2METReader::ReadChrStr(BOOL bGivenPos, BOOL bMove, BOOL bExtra, USHORT nOrderLen)
+{
+ Point aP0;
+ USHORT i, nLen;
+ char * pChr;
+ OSFont * pF;
+ Font aFont;
+ Size aSize;
+
+ pF = pFontList;
+ while (pF!=NULL && pF->nID!=aAttr.nChrSet) pF=pF->pSucc;
+ if (pF!=NULL)
+ aFont = pF->aFont;
+ aFont.SetColor(aAttr.aChrCol);
+ aFont.SetSize(Size(0,aAttr.aChrCellSize.Height()));
+ if ( aAttr.nChrAng != 0 )
+ aFont.SetOrientation(aAttr.nChrAng);
+
+ if (bGivenPos)
+ aP0 = ReadPoint();
+ else
+ aP0 = aAttr.aCurPos;
+ if (bExtra)
+ {
+ pOS2MET->SeekRel(2);
+ ReadPoint( FALSE );
+ ReadPoint( FALSE );
+ *pOS2MET >> nLen;
+ }
+ else
+ {
+ if ( !bGivenPos )
+ nLen = nOrderLen;
+ else if ( bCoord32 )
+ nLen = nOrderLen-8;
+ else
+ nLen = nOrderLen-4;
+ }
+ pChr = new char[nLen+1];
+ for (i=0; i<nLen; i++)
+ *pOS2MET >> pChr[i];
+ pChr[nLen] = 0;
+ String aStr( (const sal_Char*)pChr, gsl_getSystemTextEncoding() );
+ SetRasterOp(aAttr.eChrMix);
+ if (pVirDev->GetFont()!=aFont)
+ pVirDev->SetFont(aFont);
+ pVirDev->DrawText(aP0,aStr);
+
+ aSize = Size( pVirDev->GetTextWidth(aStr), pVirDev->GetTextHeight() );
+ if ( aAttr.nChrAng == 0 )
+ {
+ aCalcBndRect.Union(Rectangle( Point(aP0.X(),aP0.Y()-aSize.Height()),
+ Size(aSize.Width(),aSize.Height()*2)));
+ if (bMove)
+ aAttr.aCurPos = Point( aP0.X() + aSize.Width(), aP0.Y());
+ }
+ else
+ {
+ Polygon aDummyPoly(4);
+
+ aDummyPoly.SetPoint( Point( aP0.X(), aP0.Y() ), 0); // TOP LEFT
+ aDummyPoly.SetPoint( Point( aP0.X(), aP0.Y() - aSize.Height() ), 1); // BOTTOM LEFT
+ aDummyPoly.SetPoint( Point( aP0.X() + aSize.Width(), aP0.Y() ), 2); // TOP RIGHT
+ aDummyPoly.SetPoint( Point( aP0.X() + aSize.Width(), aP0.Y() - aSize.Height() ), 3);// BOTTOM RIGHT
+ aDummyPoly.Rotate( aP0, (short)aAttr.nChrAng );
+ if ( bMove )
+ aAttr.aCurPos = aDummyPoly.GetPoint( 0 );
+ aCalcBndRect.Union( Rectangle( aDummyPoly.GetPoint( 0 ), aDummyPoly.GetPoint( 3 ) ) );
+ aCalcBndRect.Union( Rectangle( aDummyPoly.GetPoint( 1 ), aDummyPoly.GetPoint( 2 ) ) );
+ }
+ delete[] pChr;
+}
+
+void OS2METReader::ReadArc(BOOL bGivenPos)
+{
+ Point aP1, aP2, aP3;
+ double x1,y1,x2,y2,x3,y3,p,q,cx,cy,ncx,ncy,r,rx,ry,w1,w3;
+ if (bGivenPos) aP1=ReadPoint(); else aP1=aAttr.aCurPos;
+ aP2=ReadPoint(); aP3=ReadPoint();
+ aAttr.aCurPos=aP3;
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ // OK, gegeben sind 3 Punkte der Ellipse, und das Verhaeltnis
+ // Breite zu Hoehe (als p zu q):
+ x1=aP1.X(); y1=aP1.Y();
+ x2=aP2.X(); y2=aP2.Y();
+ x3=aP3.X(); y3=aP3.Y();
+ p=aAttr.nArcP;q=aAttr.nArcQ;
+ // Berechnet wird der Mittelpunkt cx,cy der Ellipse:
+ ncy=2*p*p*((y3-y1)*(x2-x1)-(y1-y2)*(x1-x3));
+ ncx=2*q*q*(x2-x1);
+ if ( (ncx<0.001 && ncx>-0.001) || (ncy<0.001 && ncy>-0.001) ) {
+ // Berechnung nicht moeglich, Punkte liegen auf einer Linie
+ pVirDev->DrawLine(aP1,aP2);
+ pVirDev->DrawLine(aP2,aP3);
+ return;
+ }
+ cy=( q*q*((x3*x3-x1*x1)*(x2-x1)+(x2*x2-x1*x1)*(x1-x3)) +
+ p*p*((y3*y3-y1*y1)*(x2-x1)+(y2*y2-y1*y1)*(x1-x3)) ) / ncy;
+ cx=( q*q*(x2*x2-x1*x1)+p*p*(y2*y2-y1*y1)+cy*2*p*p*(y1-y2) ) / ncx;
+ // Nun brauchen wir noch den Radius in x und y Richtung:
+ r=sqrt(q*q*(x1-cx)*(x1-cx)+p*p*(y1-cy)*(y1-cy));
+ rx=r/q; ry=r/p;
+ // Jetzt stellt sich "nur noch" die Frage, wie Start- und Endpunkt
+ // gewaehlt werden muessen, damit Punkt Nr. 2 innerhalb des
+ // gezeichneten Bogens liegt:
+ w1=fmod((atan2(x1-cx,y1-cy)-atan2(x2-cx,y2-cy)),6.28318530718); if (w1<0) w1+=6.28318530718;
+ w3=fmod((atan2(x3-cx,y3-cy)-atan2(x2-cx,y2-cy)),6.28318530718); if (w3<0) w3+=6.28318530718;
+ if (w3<w1) {
+ pVirDev->DrawArc(Rectangle((long)(cx-rx),(long)(cy-ry),
+ (long)(cx+rx),(long)(cy+ry)),aP1,aP3);
+ }
+ else {
+ pVirDev->DrawArc(Rectangle((long)(cx-rx),(long)(cy-ry),
+ (long)(cx+rx),(long)(cy+ry)),aP3,aP1);
+ }
+}
+
+void OS2METReader::ReadFullArc(BOOL bGivenPos, USHORT nOrderSize)
+{
+ Point aCenter;
+ long nP,nQ,nR,nS;
+ Rectangle aRect;
+ sal_uInt32 nMul; USHORT nMulS;
+
+ if (bGivenPos) {
+ aCenter=ReadPoint();
+ if (bCoord32) nOrderSize-=8; else nOrderSize-=4;
+ }
+ else aCenter=aAttr.aCurPos;
+
+ nP=aAttr.nArcP; nQ=aAttr.nArcQ; nR=aAttr.nArcR; nS=aAttr.nArcS;
+ if (nP<0) nP=-nP;
+ if (nQ<0) nQ=-nQ;
+ if (nR<0) nR=-nR;
+ if (nS<0) nS=-nS;
+ if (nOrderSize>=4) *pOS2MET >> nMul;
+ else { *pOS2MET >> nMulS; nMul=((ULONG)nMulS)<<8; }
+ if (nMul!=0x00010000) {
+ nP=(nP*nMul)>>16;
+ nQ=(nQ*nMul)>>16;
+ nR=(nR*nMul)>>16;
+ nS=(nS*nMul)>>16;
+ }
+
+ aRect=Rectangle(aCenter.X()-nP,aCenter.Y()-nQ,
+ aCenter.X()+nP,aCenter.Y()+nQ);
+ aCalcBndRect.Union(aRect);
+
+ if (pAreaStack!=NULL) {
+ ChangeBrush(aAttr.aPatCol,aAttr.aPatBgCol,aAttr.bFill);
+ SetRasterOp(aAttr.ePatMix);
+ if ((pAreaStack->nFlags&0x40)!=0)
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ else
+ SetPen( COL_TRANSPARENT, 0, PEN_NULL );
+ }
+ else
+ {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ ChangeBrush(Color( COL_TRANSPARENT ),Color( COL_TRANSPARENT ),FALSE);
+ SetRasterOp(aAttr.eLinMix);
+ }
+ pVirDev->DrawEllipse(aRect);
+}
+
+void OS2METReader::ReadPartialArc(BOOL bGivenPos, USHORT nOrderSize)
+{
+ Point aP0, aCenter,aPStart,aPEnd;
+ long nP,nQ,nR,nS,nStart, nSweep;
+ Rectangle aRect;
+ sal_uInt32 nMul; USHORT nMulS;
+ double fStart, fEnd;
+
+ if (bGivenPos) {
+ aP0=ReadPoint();
+ if (bCoord32) nOrderSize-=8; else nOrderSize-=4;
+ }
+ else aP0=aAttr.aCurPos;
+ aCenter=ReadPoint();
+
+ nP=aAttr.nArcP; nQ=aAttr.nArcQ; nR=aAttr.nArcR; nS=aAttr.nArcS;
+ if (nP<0) nP=-nP;
+ if (nQ<0) nQ=-nQ;
+ if (nR<0) nR=-nR;
+ if (nS<0) nS=-nS;
+ if (nOrderSize>=12) *pOS2MET >> nMul;
+ else { *pOS2MET >> nMulS; nMul=((ULONG)nMulS)<<8; }
+ if (nMul!=0x00010000) {
+ nP=(nP*nMul)>>16;
+ nQ=(nQ*nMul)>>16;
+ nR=(nR*nMul)>>16;
+ nS=(nS*nMul)>>16;
+ }
+
+ *pOS2MET >> nStart >> nSweep;
+ fStart=((double)nStart)/65536.0/180.0*3.14159265359;
+ fEnd=fStart+((double)nSweep)/65536.0/180.0*3.14159265359;
+ aPStart=Point(aCenter.X()+(long)( cos(fStart)*nP),
+ aCenter.Y()+(long)(-sin(fStart)*nQ));
+ aPEnd= Point(aCenter.X()+(long)( cos(fEnd)*nP),
+ aCenter.Y()+(long)(-sin(fEnd)*nQ));
+
+ aRect=Rectangle(aCenter.X()-nP,aCenter.Y()-nQ,
+ aCenter.X()+nP,aCenter.Y()+nQ);
+ aCalcBndRect.Union(aRect);
+
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+
+ pVirDev->DrawLine(aP0,aPStart);
+ pVirDev->DrawArc(aRect,aPStart,aPEnd);
+ aAttr.aCurPos=aPEnd;
+}
+
+void OS2METReader::ReadPolygons()
+{
+ sal_uInt32 i,j,nNumPolys, nNumPoints;
+ PolyPolygon aPolyPoly;
+ Polygon aPoly;
+ Point aPoint;
+ BYTE nFlags;
+
+ *pOS2MET >> nFlags >> nNumPolys;
+ for (i=0; i<nNumPolys; i++) {
+ *pOS2MET >> nNumPoints;
+ if (i==0) nNumPoints++;
+ aPoly.SetSize((short)nNumPoints);
+ for (j=0; j<nNumPoints; j++) {
+ if (i==0 && j==0) aPoint=aAttr.aCurPos;
+ else aPoint=ReadPoint();
+ aPoly.SetPoint(aPoint,(short)j);
+ if (i==nNumPolys-1 && j==nNumPoints-1) aAttr.aCurPos=aPoint;
+ }
+ aPolyPoly.Insert(aPoly);
+ }
+
+ ChangeBrush(aAttr.aPatCol,aAttr.aPatBgCol,aAttr.bFill);
+ SetRasterOp(aAttr.ePatMix);
+ if ((nFlags&0x01)!=0)
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ else
+ SetPen( COL_TRANSPARENT, 0, PEN_NULL );
+ DrawPolyPolygon( aPolyPoly );
+}
+
+void OS2METReader::ReadBezier(BOOL bGivenPos, USHORT nOrderLen)
+{
+ USHORT i, nNumPoints = nOrderLen / ( bCoord32 ? 8 : 4 );
+
+ if( !bGivenPos )
+ nNumPoints++;
+
+ if( !nNumPoints )
+ return;
+
+ Polygon aPolygon( nNumPoints );
+
+ for( i=0; i < nNumPoints; i++ )
+ {
+ if( i==0 && !bGivenPos)
+ aPolygon.SetPoint( aAttr.aCurPos, i );
+ else
+ aPolygon.SetPoint( ReadPoint(), i );
+ }
+
+ if( !( nNumPoints % 4 ) )
+ {
+ // create bezier polygon
+ const USHORT nSegPoints = 25;
+ const USHORT nSegments = aPolygon.GetSize() >> 2;
+ Polygon aBezPoly( nSegments * nSegPoints );
+
+ USHORT nSeg, nBezPos, nStartPos;
+ for( nSeg = 0, nBezPos = 0, nStartPos = 0; nSeg < nSegments; nSeg++, nStartPos += 4 )
+ {
+ const Polygon aSegPoly( aPolygon[ nStartPos ], aPolygon[ nStartPos + 1 ],
+ aPolygon[ nStartPos + 3 ], aPolygon[ nStartPos + 2 ],
+ nSegPoints );
+
+ for( USHORT nSegPos = 0; nSegPos < nSegPoints; )
+ aBezPoly[ nBezPos++ ] = aSegPoly[ nSegPos++ ];
+ }
+
+ nNumPoints = nBezPos;
+
+ if( nNumPoints != aBezPoly.GetSize() )
+ aBezPoly.SetSize( nNumPoints );
+
+ aPolygon = aBezPoly;
+ }
+
+ aAttr.aCurPos = aPolygon[ nNumPoints - 1 ];
+
+ if (pAreaStack!=NULL)
+ AddPointsToArea(aPolygon);
+ else if (pPathStack!=NULL)
+ AddPointsToPath(aPolygon);
+ else
+ {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ DrawPolyLine( aPolygon );
+ }
+}
+
+void OS2METReader::ReadFillet(BOOL bGivenPos, USHORT nOrderLen)
+{
+ USHORT i,nNumPoints;
+
+ if (bCoord32) nNumPoints=nOrderLen/8; else nNumPoints=nOrderLen/4;
+ if (!bGivenPos) nNumPoints++;
+ if (nNumPoints==0) return;
+ Polygon aPolygon(nNumPoints);
+ for (i=0; i<nNumPoints; i++) {
+ if (i==0 && !bGivenPos) aPolygon.SetPoint(aAttr.aCurPos,i);
+ else aPolygon.SetPoint(ReadPoint(),i);
+ }
+ aAttr.aCurPos=aPolygon.GetPoint(nNumPoints-1);
+ if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
+ else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
+ else {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ DrawPolyLine( aPolygon );
+ }
+}
+
+void OS2METReader::ReadFilletSharp(BOOL bGivenPos, USHORT nOrderLen)
+{
+ USHORT i,nNumPoints;
+
+ if (bGivenPos) {
+ aAttr.aCurPos=ReadPoint();
+ if (bCoord32) nOrderLen-=8; else nOrderLen-=4;
+ }
+ if (bCoord32) nNumPoints=1+nOrderLen/10;
+ else nNumPoints=1+nOrderLen/6;
+ Polygon aPolygon(nNumPoints);
+ aPolygon.SetPoint(aAttr.aCurPos,0);
+ for (i=1; i<nNumPoints; i++) aPolygon.SetPoint(ReadPoint(),i);
+ aAttr.aCurPos=aPolygon.GetPoint(nNumPoints-1);
+ if (pAreaStack!=NULL) AddPointsToArea(aPolygon);
+ else if (pPathStack!=NULL) AddPointsToPath(aPolygon);
+ else
+ {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ DrawPolyLine( aPolygon );
+ }
+}
+
+void OS2METReader::ReadMarker(BOOL bGivenPos, USHORT nOrderLen)
+{
+ USHORT i,nNumPoints;
+ long x,y;
+
+ SetPen( aAttr.aMrkCol );
+ SetRasterOp(aAttr.eMrkMix);
+ if (aAttr.nMrkSymbol>=5 && aAttr.nMrkSymbol<=9)
+ {
+ ChangeBrush(aAttr.aMrkCol,aAttr.aMrkCol,TRUE);
+ }
+ else
+ {
+ ChangeBrush(Color(COL_TRANSPARENT),Color(COL_TRANSPARENT),FALSE);
+ }
+ if (bCoord32) nNumPoints=nOrderLen/8; else nNumPoints=nOrderLen/4;
+ if (!bGivenPos) nNumPoints++;
+ for (i=0; i<nNumPoints; i++) {
+ if (i!=0 || bGivenPos) aAttr.aCurPos=ReadPoint();
+ x=aAttr.aCurPos.X(); y=aAttr.aCurPos.Y();
+ aCalcBndRect.Union(Rectangle(x-5,y-5,x+5,y+5));
+ switch (aAttr.nMrkSymbol) {
+ case 2: // PLUS
+ pVirDev->DrawLine(Point(x-4,y),Point(x+4,y));
+ pVirDev->DrawLine(Point(x,y-4),Point(x,y+4));
+ break;
+ case 3: // DIAMOND
+ case 7: { // SOLIDDIAMOND
+ Polygon aPoly(4);
+ aPoly.SetPoint(Point(x,y+4),0);
+ aPoly.SetPoint(Point(x+4,y),1);
+ aPoly.SetPoint(Point(x,y-4),2);
+ aPoly.SetPoint(Point(x-4,y),3);
+ pVirDev->DrawPolygon(aPoly);
+ break;
+ }
+ case 4: // SQARE
+ case 8: { // SOLIDSUARE
+ Polygon aPoly(4);
+ aPoly.SetPoint(Point(x+4,y+4),0);
+ aPoly.SetPoint(Point(x+4,y-4),1);
+ aPoly.SetPoint(Point(x-4,y-4),2);
+ aPoly.SetPoint(Point(x-4,y+4),3);
+ pVirDev->DrawPolygon(aPoly);
+ break;
+ }
+ case 5: { // SIXPOINTSTAR
+ Polygon aPoly(12);
+ aPoly.SetPoint(Point(x ,y-4),0);
+ aPoly.SetPoint(Point(x+2,y-2),1);
+ aPoly.SetPoint(Point(x+4,y-2),2);
+ aPoly.SetPoint(Point(x+2,y ),3);
+ aPoly.SetPoint(Point(x+4,y+2),4);
+ aPoly.SetPoint(Point(x+2,y+2),5);
+ aPoly.SetPoint(Point(x ,y+4),6);
+ aPoly.SetPoint(Point(x-2,y+2),7);
+ aPoly.SetPoint(Point(x-4,y+2),8);
+ aPoly.SetPoint(Point(x-2,y ),9);
+ aPoly.SetPoint(Point(x-4,y-2),10);
+ aPoly.SetPoint(Point(x-2,y-2),11);
+ pVirDev->DrawPolygon(aPoly);
+ break;
+ }
+ case 6: { // EIGHTPOINTSTAR
+ Polygon aPoly(16);
+ aPoly.SetPoint(Point(x ,y-4),0);
+ aPoly.SetPoint(Point(x+1,y-2),1);
+ aPoly.SetPoint(Point(x+3,y-3),2);
+ aPoly.SetPoint(Point(x+2,y-1),3);
+ aPoly.SetPoint(Point(x+4,y ),4);
+ aPoly.SetPoint(Point(x+2,y+1),5);
+ aPoly.SetPoint(Point(x+3,y+3),6);
+ aPoly.SetPoint(Point(x+1,y+2),7);
+ aPoly.SetPoint(Point(x ,y+4),8);
+ aPoly.SetPoint(Point(x-1,y+2),9);
+ aPoly.SetPoint(Point(x-3,y+3),10);
+ aPoly.SetPoint(Point(x-2,y+1),11);
+ aPoly.SetPoint(Point(x-4,y ),12);
+ aPoly.SetPoint(Point(x-2,y-1),13);
+ aPoly.SetPoint(Point(x-3,y-3),14);
+ aPoly.SetPoint(Point(x-1,y-2),15);
+ pVirDev->DrawPolygon(aPoly);
+ break;
+ }
+ case 9: // DOT
+ pVirDev->DrawEllipse(Rectangle(x-1,y-1,x+1,y+1));
+ break;
+ case 10: // SMALLCIRCLE
+ pVirDev->DrawEllipse(Rectangle(x-2,y-2,x+2,y+2));
+ break;
+ case 64: // BLANK
+ break;
+ default: // (=1) CROSS
+ pVirDev->DrawLine(Point(x-4,y-4),Point(x+4,y+4));
+ pVirDev->DrawLine(Point(x-4,y+4),Point(x+4,y-4));
+ break;
+ }
+ }
+}
+
+void OS2METReader::ReadOrder(USHORT nOrderID, USHORT nOrderLen)
+{
+ switch (nOrderID) {
+
+ case GOrdGivArc: ReadArc(TRUE); break;
+ case GOrdCurArc: ReadArc(FALSE); break;
+
+ case GOrdGivBzr: ReadBezier(TRUE,nOrderLen); break;
+ case GOrdCurBzr: ReadBezier(FALSE,nOrderLen); break;
+
+ case GOrdGivBox: ReadBox(TRUE); break;
+ case GOrdCurBox: ReadBox(FALSE); break;
+
+ case GOrdGivFil: ReadFillet(TRUE,nOrderLen); break;
+ case GOrdCurFil: ReadFillet(FALSE,nOrderLen); break;
+
+ case GOrdGivCrc: ReadFullArc(TRUE,nOrderLen); break;
+ case GOrdCurCrc: ReadFullArc(FALSE,nOrderLen); break;
+
+ case GOrdGivLin: ReadLine(TRUE, nOrderLen); break;
+ case GOrdCurLin: ReadLine(FALSE, nOrderLen); break;
+
+ case GOrdGivMrk: ReadMarker(TRUE, nOrderLen); break;
+ case GOrdCurMrk: ReadMarker(FALSE, nOrderLen); break;
+
+ case GOrdGivArP: ReadPartialArc(TRUE,nOrderLen); break;
+ case GOrdCurArP: ReadPartialArc(FALSE,nOrderLen); break;
+
+ case GOrdGivRLn: ReadRelLine(TRUE,nOrderLen); break;
+ case GOrdCurRLn: ReadRelLine(FALSE,nOrderLen); break;
+
+ case GOrdGivSFl: ReadFilletSharp(TRUE,nOrderLen); break;
+ case GOrdCurSFl: ReadFilletSharp(FALSE,nOrderLen); break;
+
+ case GOrdGivStM: ReadChrStr(TRUE , TRUE , FALSE, nOrderLen); break;
+ case GOrdCurStM: ReadChrStr(FALSE, TRUE , FALSE, nOrderLen); break;
+ case GOrdGivStr: ReadChrStr(TRUE , FALSE, FALSE, nOrderLen); break;
+ case GOrdCurStr: ReadChrStr(FALSE, FALSE, FALSE, nOrderLen); break;
+ case GOrdGivStx: ReadChrStr(TRUE , FALSE, TRUE , nOrderLen); break;
+ case GOrdCurStx: ReadChrStr(FALSE, FALSE, TRUE , nOrderLen); break;
+
+ case GOrdGivImg: OOODEBUG("GOrdGivImg",0);
+ break;
+ case GOrdCurImg: OOODEBUG("GOrdCurImg",0);
+ break;
+ case GOrdImgDat: OOODEBUG("GOrdImgDat",0);
+ break;
+ case GOrdEndImg: OOODEBUG("GOrdEndImg",0);
+ break;
+
+ case GOrdBegAra: {
+ OSArea * p=new OSArea;
+ p->bClosed=FALSE;
+ p->pSucc=pAreaStack; pAreaStack=p;
+ *pOS2MET >> (p->nFlags);
+ p->aCol=aAttr.aPatCol;
+ p->aBgCol=aAttr.aPatBgCol;
+ p->eMix=aAttr.ePatMix;
+ p->eBgMix=aAttr.ePatBgMix;
+ p->bFill=aAttr.bFill;
+ break;
+ }
+ case GOrdEndAra:
+ {
+ OSArea * p=pAreaStack;
+ if ( p )
+ {
+ pAreaStack = p->pSucc;
+ if ( pPathStack )
+ {
+ for ( USHORT i=0; i<p->aPPoly.Count(); i++ )
+ {
+ AddPointsToPath( p->aPPoly.GetObject( i ) );
+ CloseFigure();
+ }
+ }
+ else
+ {
+ if ( ( p->nFlags & 0x40 ) == 0 )
+ SetPen( COL_TRANSPARENT, 0, PEN_NULL );
+ else
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+
+ ChangeBrush(p->aCol,p->aBgCol,p->bFill);
+ SetRasterOp(p->eMix);
+ DrawPolyPolygon( p->aPPoly );
+ }
+ delete p;
+ }
+ }
+ break;
+
+ case GOrdBegElm:// OOODEBUG("GOrdBegElm",0);
+ break;
+ case GOrdEndElm:// OOODEBUG("GOrdEndElm",0);
+ break;
+
+ case GOrdBegPth: {
+ OSPath * p=new OSPath;
+ p->pSucc=pPathStack; pPathStack=p;
+ pOS2MET->SeekRel(2);
+ *pOS2MET >> p->nID;
+ p->bClosed=FALSE;
+ p->bStroke=FALSE;
+ break;
+ }
+ case GOrdEndPth: {
+ OSPath * p, * pprev, * psucc;
+ if (pPathStack==NULL) break;
+ p=pPathList; pprev=NULL;
+ while (p!=NULL) {
+ psucc=p->pSucc;
+ if (p->nID==pPathStack->nID) {
+ if (pprev==NULL) pPathList=psucc; else pprev->pSucc=psucc;
+ delete p;
+ }
+ else pprev=p;
+ p=psucc;
+ }
+ p=pPathStack;
+ pPathStack=p->pSucc;
+ p->pSucc=pPathList; pPathList=p;
+ break;
+ }
+ case GOrdFilPth:
+ {
+ sal_uInt32 nID;
+ UINT16 nDummy;
+ OSPath* p = pPathList;
+
+ *pOS2MET >> nDummy
+ >> nID;
+
+ if ( ! ( nDummy & 0x20 ) ) // #30933# i do not know the exact meaning of this bit,
+ { // but if set it seems to be better not to fill this path
+ while( p && p->nID != nID )
+ p = p->pSucc;
+
+ if( p )
+ {
+ if( p->bStroke )
+ {
+ SetPen( aAttr.aPatCol, aAttr.nStrLinWidth, PEN_SOLID );
+ ChangeBrush(Color(COL_TRANSPARENT),Color(COL_TRANSPARENT),FALSE);
+ SetRasterOp( aAttr.ePatMix );
+ if ( IsLineInfo() )
+ {
+ for ( USHORT i = 0; i < p->aPPoly.Count(); i++ )
+ pVirDev->DrawPolyLine( p->aPPoly.GetObject( i ), aLineInfo );
+ }
+ else
+ pVirDev->DrawPolyPolygon( p->aPPoly );
+ }
+ else
+ {
+ SetPen( COL_TRANSPARENT, 0, PEN_NULL );
+ ChangeBrush( aAttr.aPatCol, aAttr.aPatBgCol, aAttr.bFill );
+ SetRasterOp( aAttr.ePatMix );
+ pVirDev->DrawPolyPolygon( p->aPPoly );
+ }
+ }
+ }
+ }
+ break;
+
+ case GOrdModPth:
+ {
+ OSPath* p = pPathList;
+
+ while( p && p->nID != 1 )
+ p = p->pSucc;
+
+ if( p )
+ p->bStroke = TRUE;
+ }
+ break;
+
+ case GOrdOutPth:
+ {
+ sal_uInt32 nID;
+ USHORT i,nC;
+ OSPath* p=pPathList;
+ pOS2MET->SeekRel(2);
+ *pOS2MET >> nID;
+ while (p!=NULL && p->nID!=nID)
+ p=p->pSucc;
+
+ if( p!=NULL )
+ {
+ SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
+ SetRasterOp(aAttr.eLinMix);
+ ChangeBrush(Color(COL_TRANSPARENT),Color(COL_TRANSPARENT),FALSE);
+ nC=p->aPPoly.Count();
+ for (i=0; i<nC; i++)
+ {
+ if (i+1<nC || p->bClosed==TRUE)
+ DrawPolygon( p->aPPoly.GetObject( i ) );
+ else
+ DrawPolyLine( p->aPPoly.GetObject( i ) );
+ }
+ }
+ break;
+ }
+ case GOrdSClPth: { OOODEBUG("GOrdSClPth",0);
+ sal_uInt32 nID;
+ OSPath * p=pPathList;
+ pOS2MET->SeekRel(2);
+ *pOS2MET >> nID;
+ if (nID==0) p=NULL;
+ while (p!=NULL && p->nID!=nID) p=p->pSucc;
+ if (p!=NULL) pVirDev->SetClipRegion(Region(p->aPPoly));
+ else pVirDev->SetClipRegion();
+ break;
+ }
+ case GOrdNopNop:
+ break;
+ case GOrdRemark: //OOODEBUG("GOrdRemark",0);
+ break;
+ case GOrdSegLab: OOODEBUG("GOrdSegLab",0);
+ break;
+
+ case GOrdBitBlt: ReadBitBlt(); break;
+
+ case GOrdCalSeg: OOODEBUG("GOrdCalSeg",0);
+ break;
+ case GOrdSSgBnd: OOODEBUG("GOrdSSgBnd",0);
+ break;
+ case GOrdSegChr: OOODEBUG("GOrdSegChr",0);
+ break;
+ case GOrdCloFig:
+ CloseFigure();
+ break;
+ case GOrdEndSym: OOODEBUG("GOrdEndSym",0);
+ break;
+ case GOrdEndPlg: OOODEBUG("GOrdEndPlg",0);
+ break;
+ case GOrdEscape: OOODEBUG("GOrdEscape",0);
+ break;
+ case GOrdExtEsc: OOODEBUG("GOrdExtEsc",0);
+ break;
+
+ case GOrdPolygn: ReadPolygons(); break;
+
+ case GOrdStkPop: PopAttr(); break;
+
+ case GOrdPIvAtr: PushAttr(nOrderID);
+ case GOrdSIvAtr: {
+ BYTE nA, nP, nFlags, nMix;
+ ULONG nVal;
+ Color aCol;
+ RasterOp eROP;
+ *pOS2MET >> nA >> nP >> nFlags;
+ if (nOrderID==GOrdPIvAtr) {
+ pAttrStack->nIvAttrA=nA;
+ pAttrStack->nIvAttrP=nP;
+ }
+ if (nA<=2) {
+ if ((nFlags&0x80)!=0) {
+ if (nA==1) switch (nP) {
+ case 1: aAttr.aLinCol=aDefAttr.aLinCol; break;
+ case 2: aAttr.aChrCol=aDefAttr.aChrCol; break;
+ case 3: aAttr.aMrkCol=aDefAttr.aMrkCol; break;
+ case 4: aAttr.aPatCol=aDefAttr.aPatCol; break;
+ case 5: aAttr.aImgCol=aDefAttr.aImgCol; break;
+ }
+ else switch (nP) {
+ case 1: aAttr.aLinBgCol=aDefAttr.aLinBgCol; break;
+ case 2: aAttr.aChrBgCol=aDefAttr.aChrBgCol; break;
+ case 3: aAttr.aMrkBgCol=aDefAttr.aMrkBgCol; break;
+ case 4: aAttr.aPatBgCol=aDefAttr.aPatBgCol; break;
+ case 5: aAttr.aImgBgCol=aDefAttr.aImgBgCol; break;
+ }
+ }
+ else {
+ nVal=ReadLittleEndian3BytesLong();
+ if ((nFlags&0x40)!=0 && nVal==1) aCol=Color(COL_BLACK);
+ else if ((nFlags&0x40)!=0 && nVal==2) aCol=Color(COL_WHITE);
+ else if ((nFlags&0x40)!=0 && nVal==4) aCol=Color(COL_WHITE);
+ else if ((nFlags&0x40)!=0 && nVal==5) aCol=Color(COL_BLACK);
+ else aCol=GetPaletteColor(nVal);
+ if (nA==1) switch (nP) {
+ case 1: aAttr.aLinCol=aCol; break;
+ case 2: aAttr.aChrCol=aCol; break;
+ case 3: aAttr.aMrkCol=aCol; break;
+ case 4: aAttr.aPatCol=aCol; break;
+ case 5: aAttr.aImgCol=aCol; break;
+ }
+ else switch (nP) {
+ case 1: aAttr.aLinBgCol=aCol; break;
+ case 2: aAttr.aChrBgCol=aCol; break;
+ case 3: aAttr.aMrkBgCol=aCol; break;
+ case 4: aAttr.aPatBgCol=aCol; break;
+ case 5: aAttr.aImgBgCol=aCol; break;
+ }
+ }
+ }
+ else {
+ *pOS2MET >> nMix;
+ if (nMix==0) {
+ if (nA==1) switch (nP) {
+ case 1: aAttr.eLinMix=aDefAttr.eLinMix; break;
+ case 2: aAttr.eChrMix=aDefAttr.eChrMix; break;
+ case 3: aAttr.eMrkMix=aDefAttr.eMrkMix; break;
+ case 4: aAttr.ePatMix=aDefAttr.ePatMix; break;
+ case 5: aAttr.eImgMix=aDefAttr.eImgMix; break;
+ }
+ else switch (nP) {
+ case 1: aAttr.eLinBgMix=aDefAttr.eLinBgMix; break;
+ case 2: aAttr.eChrBgMix=aDefAttr.eChrBgMix; break;
+ case 3: aAttr.eMrkBgMix=aDefAttr.eMrkBgMix; break;
+ case 4: aAttr.ePatBgMix=aDefAttr.ePatBgMix; break;
+ case 5: aAttr.eImgBgMix=aDefAttr.eImgBgMix; break;
+ }
+ }
+ else {
+ eROP=OS2MixToRasterOp(nMix);
+ if (nA==1) switch (nP) {
+ case 1: aAttr.eLinMix=eROP; break;
+ case 2: aAttr.eChrMix=eROP; break;
+ case 3: aAttr.eMrkMix=eROP; break;
+ case 4: aAttr.ePatMix=eROP; break;
+ case 5: aAttr.eImgMix=eROP; break;
+ }
+ else switch (nP) {
+ case 1: aAttr.eLinBgMix=eROP; break;
+ case 2: aAttr.eChrBgMix=eROP; break;
+ case 3: aAttr.eMrkBgMix=eROP; break;
+ case 4: aAttr.ePatBgMix=eROP; break;
+ case 5: aAttr.eImgBgMix=eROP; break;
+ }
+ }
+ }
+ break;
+ }
+ case GOrdPIxCol: PushAttr(nOrderID);
+ case GOrdSIxCol: {
+ BYTE nFlags;
+ ULONG nVal;
+ Color aCol;
+ *pOS2MET >> nFlags;
+ if ((nFlags&0x80)!=0) {
+ aAttr.aLinCol=aDefAttr.aLinCol;
+ aAttr.aChrCol=aDefAttr.aChrCol;
+ aAttr.aMrkCol=aDefAttr.aMrkCol;
+ aAttr.aPatCol=aDefAttr.aPatCol;
+ aAttr.aImgCol=aDefAttr.aImgCol;
+ }
+ else {
+ nVal=ReadLittleEndian3BytesLong();
+ if ((nFlags&0x40)!=0 && nVal==1) aCol=Color(COL_BLACK);
+ else if ((nFlags&0x40)!=0 && nVal==2) aCol=Color(COL_WHITE);
+ else if ((nFlags&0x40)!=0 && nVal==4) aCol=Color(COL_WHITE);
+ else if ((nFlags&0x40)!=0 && nVal==5) aCol=Color(COL_BLACK);
+ else aCol=GetPaletteColor(nVal);
+ aAttr.aLinCol = aAttr.aChrCol = aAttr.aMrkCol = aAttr.aPatCol =
+ aAttr.aImgCol = aCol;
+ }
+ break;
+ }
+
+ case GOrdPColor:
+ case GOrdPXtCol: PushAttr(nOrderID);
+ case GOrdSColor:
+ case GOrdSXtCol: {
+ BYTE nbyte;
+ USHORT nVal;
+ Color aCol;
+ if (nOrderID==GOrdPColor || nOrderID==GOrdSColor) {
+ *pOS2MET >> nbyte; nVal=((USHORT)nbyte)|0xff00;
+ }
+ else *pOS2MET >> nVal;
+ if (nVal==0x0000 || nVal==0xff00) {
+ aAttr.aLinCol=aDefAttr.aLinCol;
+ aAttr.aChrCol=aDefAttr.aChrCol;
+ aAttr.aMrkCol=aDefAttr.aMrkCol;
+ aAttr.aPatCol=aDefAttr.aPatCol;
+ aAttr.aImgCol=aDefAttr.aImgCol;
+ }
+ else {
+ if (nVal==0x0007) aCol=Color(COL_WHITE);
+ else if (nVal==0x0008) aCol=Color(COL_BLACK);
+ else if (nVal==0xff08) aCol=GetPaletteColor(1);
+ else aCol=GetPaletteColor(((ULONG)nVal) & 0x000000ff);
+ aAttr.aLinCol = aAttr.aChrCol = aAttr.aMrkCol = aAttr.aPatCol =
+ aAttr.aImgCol = aCol;
+ }
+ break;
+ }
+
+ case GOrdPBgCol: PushAttr(nOrderID);
+ case GOrdSBgCol: {
+ USHORT nVal;
+ Color aCol;
+ *pOS2MET >> nVal;
+ if (nVal==0x0000 || nVal==0xff00) {
+ aAttr.aLinBgCol=aDefAttr.aLinBgCol;
+ aAttr.aChrBgCol=aDefAttr.aChrBgCol;
+ aAttr.aMrkBgCol=aDefAttr.aMrkBgCol;
+ aAttr.aPatBgCol=aDefAttr.aPatBgCol;
+ aAttr.aImgBgCol=aDefAttr.aImgBgCol;
+ }
+ else {
+ if (nVal==0x0007) aCol=Color(COL_WHITE);
+ else if (nVal==0x0008) aCol=Color(COL_BLACK);
+ else if (nVal==0xff08) aCol=GetPaletteColor(0);
+ else aCol=GetPaletteColor(((ULONG)nVal) & 0x000000ff);
+ aAttr.aLinBgCol = aAttr.aChrBgCol = aAttr.aMrkBgCol =
+ aAttr.aPatBgCol = aAttr.aImgBgCol = aCol;
+ }
+ break;
+ }
+ case GOrdPBxCol: PushAttr(nOrderID);
+ case GOrdSBxCol: {
+ BYTE nFlags;
+ ULONG nVal;
+ Color aCol;
+ *pOS2MET >> nFlags;
+ if ((nFlags&0x80)!=0) {
+ aAttr.aLinBgCol=aDefAttr.aLinBgCol;
+ aAttr.aChrBgCol=aDefAttr.aChrBgCol;
+ aAttr.aMrkBgCol=aDefAttr.aMrkBgCol;
+ aAttr.aPatBgCol=aDefAttr.aPatBgCol;
+ aAttr.aImgBgCol=aDefAttr.aImgBgCol;
+ }
+ else {
+ nVal=ReadLittleEndian3BytesLong();
+ if ((nFlags&0x40)!=0 && nVal==1) aCol=Color(COL_BLACK);
+ else if ((nFlags&0x40)!=0 && nVal==2) aCol=Color(COL_WHITE);
+ else if ((nFlags&0x40)!=0 && nVal==4) aCol=Color(COL_WHITE);
+ else if ((nFlags&0x40)!=0 && nVal==5) aCol=Color(COL_BLACK);
+ else aCol=GetPaletteColor(nVal);
+ aAttr.aLinBgCol = aAttr.aChrBgCol = aAttr.aMrkBgCol =
+ aAttr.aPatBgCol = aAttr.aImgBgCol = aCol;
+ }
+ break;
+ }
+
+ case GOrdPMixMd: PushAttr(nOrderID);
+ case GOrdSMixMd: {
+ BYTE nMix;
+ *pOS2MET >> nMix;
+ if (nMix==0) {
+ aAttr.eLinMix=aDefAttr.eLinMix;
+ aAttr.eChrMix=aDefAttr.eChrMix;
+ aAttr.eMrkMix=aDefAttr.eMrkMix;
+ aAttr.ePatMix=aDefAttr.ePatMix;
+ aAttr.eImgMix=aDefAttr.eImgMix;
+ }
+ else {
+ aAttr.eLinMix = aAttr.eChrMix = aAttr.eMrkMix =
+ aAttr.ePatMix = aAttr.eImgMix = OS2MixToRasterOp(nMix);
+ }
+ break;
+ }
+ case GOrdPBgMix: PushAttr(nOrderID);
+ case GOrdSBgMix: {
+ BYTE nMix;
+ *pOS2MET >> nMix;
+ if (nMix==0) {
+ aAttr.eLinBgMix=aDefAttr.eLinBgMix;
+ aAttr.eChrBgMix=aDefAttr.eChrBgMix;
+ aAttr.eMrkBgMix=aDefAttr.eMrkBgMix;
+ aAttr.ePatBgMix=aDefAttr.ePatBgMix;
+ aAttr.eImgBgMix=aDefAttr.eImgBgMix;
+ }
+ else {
+ aAttr.eLinBgMix = aAttr.eChrBgMix = aAttr.eMrkBgMix =
+ aAttr.ePatBgMix = aAttr.eImgBgMix = OS2MixToRasterOp(nMix);
+ }
+ break;
+ }
+ case GOrdPPtSet: PushAttr(nOrderID);
+ case GOrdSPtSet: OOODEBUG("GOrdSPtSet",0);
+ break;
+
+ case GOrdPPtSym: PushAttr(nOrderID);
+ case GOrdSPtSym: {
+ BYTE nPatt;
+ *pOS2MET >> nPatt;
+ aAttr.bFill = ( nPatt != 0x0f );
+ break;
+ }
+
+ case GOrdPPtRef: PushAttr(nOrderID);
+ case GOrdSPtRef: OOODEBUG("GOrdSPtRef",0);
+ break;
+
+ case GOrdPLnEnd: PushAttr(nOrderID);
+ case GOrdSLnEnd:
+ break;
+
+ case GOrdPLnJoi: PushAttr(nOrderID);
+ case GOrdSLnJoi:
+ break;
+
+ case GOrdPLnTyp: PushAttr(nOrderID);
+ case GOrdSLnTyp: {
+ BYTE nType;
+ *pOS2MET >> nType;
+ switch (nType) {
+ case 0: aAttr.eLinStyle=aDefAttr.eLinStyle; break;
+ case 1: case 4: aAttr.eLinStyle=PEN_DOT; break;
+ case 2: case 5: aAttr.eLinStyle=PEN_DASH; break;
+ case 3: case 6: aAttr.eLinStyle=PEN_DASHDOT; break;
+ case 8: aAttr.eLinStyle=PEN_NULL; break;
+ default: aAttr.eLinStyle=PEN_SOLID;
+ }
+ break;
+ }
+ case GOrdPLnWdt: PushAttr(nOrderID);
+ case GOrdSLnWdt: {
+ BYTE nbyte;
+ *pOS2MET >> nbyte;
+ if (nbyte==0) aAttr.nLinWidth=aDefAttr.nLinWidth;
+ else aAttr.nLinWidth=(USHORT)nbyte-1;
+ break;
+ }
+ case GOrdPFrLWd: PushAttr(nOrderID);
+ case GOrdSFrLWd:
+ break;
+
+ case GOrdPStLWd: PushAttr(nOrderID);
+ case GOrdSStLWd :
+ {
+ BYTE nFlags;
+ long nWd;
+
+ *pOS2MET >> nFlags;
+ if ( nFlags & 0x80 )
+ aAttr.nStrLinWidth = aDefAttr.nStrLinWidth;
+ else
+ {
+ pOS2MET->SeekRel( 1 );
+ nWd = ReadCoord( bCoord32 );
+ if ( nWd < 0 )
+ nWd = -nWd;
+ aAttr.nStrLinWidth = (USHORT)nWd;
+ }
+ break;
+ }
+ case GOrdPChDir: PushAttr(nOrderID);
+ case GOrdSChDir:
+ break;
+
+ case GOrdPChPrc: PushAttr(nOrderID);
+ case GOrdSChPrc:
+ break;
+
+ case GOrdPChSet: PushAttr(nOrderID);
+ case GOrdSChSet: {
+ BYTE nbyte; *pOS2MET >> nbyte;
+ aAttr.nChrSet=((ULONG)nbyte)&0xff;
+ break;
+ }
+ case GOrdPChAng: PushAttr(nOrderID);
+ case GOrdSChAng: {
+ long nX,nY;
+ nX=ReadCoord(bCoord32); nY=ReadCoord(bCoord32);
+ if (nX>=0 && nY==0) aAttr.nChrAng=0;
+ else {
+ aAttr.nChrAng=(short)(atan2((double)nY,(double)nX)/3.1415926539*1800.0);
+ while (aAttr.nChrAng<0) aAttr.nChrAng+=3600;
+ aAttr.nChrAng%=3600;
+ }
+ break;
+ }
+ case GOrdPChBrx: PushAttr(nOrderID);
+ case GOrdSChBrx:
+ break;
+
+ case GOrdPChCel: PushAttr(nOrderID);
+ case GOrdSChCel: {
+ BYTE nbyte;
+ USHORT nLen=nOrderLen;
+ aAttr.aChrCellSize.Width()=ReadCoord(bCoord32);
+ aAttr.aChrCellSize.Height()=ReadCoord(bCoord32);
+ if (bCoord32) nLen-=8; else nLen-=4;
+ if (nLen>=4) {
+ pOS2MET->SeekRel(4); nLen-=4;
+ }
+ if (nLen>=2) {
+ *pOS2MET >> nbyte;
+ if ((nbyte&0x80)==0 && aAttr.aChrCellSize==Size(0,0))
+ aAttr.aChrCellSize=aDefAttr.aChrCellSize;
+ }
+ break;
+ }
+ case GOrdPChXtr: PushAttr(nOrderID);
+ case GOrdSChXtr:
+ break;
+
+ case GOrdPChShr: PushAttr(nOrderID);
+ case GOrdSChShr:
+ break;
+
+ case GOrdPTxAlg: PushAttr(nOrderID);
+ case GOrdSTxAlg: OOODEBUG("GOrdSTxAlg",0);
+ break;
+
+ case GOrdPMkPrc: PushAttr(nOrderID);
+ case GOrdSMkPrc: {
+ BYTE nbyte;
+ *pOS2MET >> nbyte;
+ if (nbyte==0) aAttr.nMrkPrec=aDefAttr.nMrkPrec;
+ else aAttr.nMrkPrec=nbyte;
+ break;
+ }
+
+ case GOrdPMkSet: PushAttr(nOrderID);
+ case GOrdSMkSet: {
+ BYTE nbyte;
+ *pOS2MET >> nbyte;
+ if (nbyte==0) aAttr.nMrkSet=aDefAttr.nMrkSet;
+ else aAttr.nMrkSet=nbyte;
+ break;
+ }
+
+ case GOrdPMkSym: PushAttr(nOrderID);
+ case GOrdSMkSym: {
+ BYTE nbyte;
+ *pOS2MET >> nbyte;
+ if (nbyte==0) aAttr.nMrkSymbol=aDefAttr.nMrkSymbol;
+ else aAttr.nMrkSymbol=nbyte;
+ break;
+ }
+
+ case GOrdPMkCel: PushAttr(nOrderID);
+ case GOrdSMkCel: {
+ BYTE nbyte;
+ USHORT nLen=nOrderLen;
+ aAttr.aMrkCellSize.Width()=ReadCoord(bCoord32);
+ aAttr.aMrkCellSize.Height()=ReadCoord(bCoord32);
+ if (bCoord32) nLen-=8; else nLen-=4;
+ if (nLen>=2) {
+ *pOS2MET >> nbyte;
+ if ((nbyte&0x80)==0 && aAttr.aMrkCellSize==Size(0,0))
+ aAttr.aMrkCellSize=aDefAttr.aMrkCellSize;
+ }
+ break;
+ }
+
+ case GOrdPArcPa: PushAttr(nOrderID);
+ case GOrdSArcPa:
+ aAttr.nArcP=ReadCoord(bCoord32);
+ aAttr.nArcQ=ReadCoord(bCoord32);
+ aAttr.nArcR=ReadCoord(bCoord32);
+ aAttr.nArcS=ReadCoord(bCoord32);
+ break;
+
+ case GOrdPCrPos: PushAttr(nOrderID);
+ case GOrdSCrPos:
+ aAttr.aCurPos=ReadPoint();
+ break;
+
+ case GOrdPMdTrn: PushAttr(nOrderID);
+ case GOrdSMdTrn: OOODEBUG("GOrdSMdTrn",0);
+ break;
+
+ case GOrdPPkIdn: PushAttr(nOrderID);
+ case GOrdSPkIdn: OOODEBUG("GOrdSPkIdn",0);
+ break;
+
+ case GOrdSVwTrn: OOODEBUG("GOrdSVwTrn",0);
+ break;
+
+ case GOrdPVwWin: PushAttr(nOrderID);
+ case GOrdSVwWin: OOODEBUG("GOrdSVwWin",0);
+ break;
+ default: OOODEBUG("Order unbekannt:",nOrderID);
+ }
+}
+
+void OS2METReader::ReadDsc(USHORT nDscID, USHORT /*nDscLen*/)
+{
+ switch (nDscID) {
+ case 0x00f7: { // 'Specify GVM Subset'
+ BYTE nbyte;
+ pOS2MET->SeekRel(6);
+ *pOS2MET >> nbyte;
+ if (nbyte==0x05) bCoord32=TRUE;
+ else if (nbyte==0x04) bCoord32=FALSE;
+ else {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=1;
+ }
+ break;
+ }
+ case 0x00f6:
+ {
+ // 'Set Picture Descriptor'
+ BOOL b32;
+ BYTE nbyte,nUnitType;
+ long x1,y1,x2,y2,nt,xr,yr;
+
+ pOS2MET->SeekRel(2);
+ *pOS2MET >> nbyte;
+
+ if (nbyte==0x05)
+ b32=TRUE;
+ else if(nbyte==0x04)
+ b32=FALSE;
+ else
+ {
+ b32 = FALSE; // -Wall added the case.
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=2;
+ }
+
+ *pOS2MET >> nUnitType;
+
+ xr=ReadCoord(b32);
+ yr=ReadCoord(b32);
+
+ ReadCoord(b32);
+
+ if (nUnitType==0x00 && xr>0 && yr>0)
+ aGlobMapMode=MapMode(MAP_INCH,Point(0,0),Fraction(10,xr),Fraction(10,yr));
+ else if (nUnitType==0x01 && xr>0 && yr>0)
+ aGlobMapMode=MapMode(MAP_CM,Point(0,0),Fraction(10,xr),Fraction(10,yr));
+ else
+ aGlobMapMode=MapMode();
+
+ x1=ReadCoord(b32);
+ x2=ReadCoord(b32);
+ y1=ReadCoord(b32);
+ y2=ReadCoord(b32);
+
+ if (x1>x2)
+ {
+ nt=x1;
+ x1=x2;
+ x2=nt;
+ }
+
+ if (y1>y2)
+ {
+ nt=y1;
+ y1=y2;
+ y2=nt;
+ }
+
+ aBoundingRect.Left() = x1;
+ aBoundingRect.Right() = x2;
+ aBoundingRect.Top() = y1;
+ aBoundingRect.Bottom() = y2;
+
+ // no output beside this bounding rect
+ pVirDev->IntersectClipRegion( Rectangle( Point(), aBoundingRect.GetSize() ) );
+
+ break;
+ }
+ case 0x0021: // 'Set Current Defaults'
+ break;
+ }
+}
+
+void OS2METReader::ReadImageData(USHORT nDataID, USHORT nDataLen)
+{
+ OSBitmap * p=pBitmapList; if (p==NULL) return; // Nanu ?
+
+ switch (nDataID) {
+
+ case 0x0070: // Begin Segment
+ break;
+
+ case 0x0091: // Begin Image Content
+ break;
+
+ case 0x0094: // Image Size
+ pOS2MET->SeekRel(5);
+ p->nHeight=ReadBigEndianWord();
+ p->nWidth=ReadBigEndianWord();
+ break;
+
+ case 0x0095: // Image Encoding
+ break;
+
+ case 0x0096: { // Image IDE-Size
+ BYTE nbyte;
+ *pOS2MET >> nbyte; p->nBitsPerPixel=nbyte;
+ break;
+ }
+
+ case 0x0097: // Image LUT-ID
+ break;
+
+ case 0x009b: // IDE Structure
+ break;
+
+ case 0xfe92: { // Image Data
+ // Spaetestens jetzt brauchen wir die temporaere BMP-Datei
+ // und darin mindestens den Header + Palette.
+ if (p->pBMP==NULL) {
+ p->pBMP=new SvMemoryStream();
+ p->pBMP->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+ if (p->nWidth==0 || p->nHeight==0 || p->nBitsPerPixel==0) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=3;
+ return;
+ }
+ // Schreibe (Windows-)BITMAPINFOHEADER:
+ *(p->pBMP) << ((sal_uInt32)40) << p->nWidth << p->nHeight;
+ *(p->pBMP) << ((USHORT)1) << p->nBitsPerPixel;
+ *(p->pBMP) << ((sal_uInt32)0) << ((sal_uInt32)0) << ((sal_uInt32)0) << ((sal_uInt32)0);
+ *(p->pBMP) << ((sal_uInt32)0) << ((sal_uInt32)0);
+ // Schreibe Farbtabelle:
+ if (p->nBitsPerPixel<=8) {
+ USHORT i, nColTabSize=1<<(p->nBitsPerPixel);
+ for (i=0; i<nColTabSize; i++) *(p->pBMP) << GetPalette0RGB(i);
+ }
+ }
+ // OK, nun werden die Map-Daten ruebergeschoben. Leider haben OS2 und
+ // BMP eine unterschiedliche Reihenfolge von RGB bei 24-Bit.
+ BYTE * pBuf=new BYTE[nDataLen];
+ pOS2MET->Read(pBuf,nDataLen);
+ if (p->nBitsPerPixel==24) {
+ ULONG i, j, nAlign, nBytesPerLine;
+ BYTE nTemp;
+ nBytesPerLine=(p->nWidth*3+3)&0xfffffffc;
+ nAlign=p->nMapPos-(p->nMapPos % nBytesPerLine);
+ i=0;
+ while (nAlign+i+2<p->nMapPos+nDataLen) {
+ if (nAlign+i>=p->nMapPos) {
+ j=nAlign+i-p->nMapPos;
+ nTemp=pBuf[j]; pBuf[j]=pBuf[j+2]; pBuf[j+2]=nTemp;
+ }
+ i+=3; if (i+2>=nBytesPerLine) {
+ nAlign+=nBytesPerLine;
+ i=0;
+ }
+ }
+ }
+ p->pBMP->Write(pBuf,nDataLen);
+ p->nMapPos+=nDataLen;
+ delete[] pBuf;
+ break;
+ }
+ case 0x0093: // End Image Content
+ break;
+
+ case 0x0071: // End Segment
+ break;
+ }
+}
+
+void OS2METReader::ReadFont(USHORT nFieldSize)
+{
+ ULONG nPos, nMaxPos;
+ USHORT nLen;
+ BYTE nByte, nTripType, nTripType2;
+ OSFont * pF=new OSFont;
+ pF->pSucc=pFontList; pFontList=pF;
+ pF->nID=0;
+ pF->aFont.SetTransparent(TRUE);
+ pF->aFont.SetAlign(ALIGN_BASELINE);
+
+ nPos=pOS2MET->Tell();
+ nMaxPos=nPos+(ULONG)nFieldSize;
+ pOS2MET->SeekRel(2); nPos+=2;
+ while (nPos<nMaxPos && pOS2MET->GetError()==0) {
+ *pOS2MET >> nByte; nLen =((USHORT)nByte) & 0x00ff;
+ *pOS2MET >> nTripType;
+ switch (nTripType) {
+ case 0x02:
+ *pOS2MET >> nTripType2;
+ switch (nTripType2) {
+ case 0x84: // Font name
+ break;
+ case 0x08: { // Font Typeface
+ char str[33];
+ pOS2MET->SeekRel(1);
+ pOS2MET->Read( &str, 32 );
+ str[ 32 ] = 0;
+ String aStr( (const sal_Char*)str, gsl_getSystemTextEncoding() );
+ if ( aStr.CompareIgnoreCaseToAscii( "Helv" ) == COMPARE_EQUAL )
+ aStr = String::CreateFromAscii( "Helvetica" );
+ pF->aFont.SetName( aStr );
+ break;
+ }
+ }
+ break;
+ case 0x24: // Icid
+ *pOS2MET >> nTripType2;
+ switch (nTripType2) {
+ case 0x05: //Icid
+ *pOS2MET >> nByte;
+ pF->nID=((ULONG)nByte)&0xff;
+ break;
+ }
+ break;
+ case 0x20: // Font Binary GCID
+ break;
+ case 0x1f: { // Font Attributes
+ FontWeight eWeight;
+ BYTE nbyte;
+ *pOS2MET >> nbyte;
+ switch (nbyte) {
+ case 1: eWeight=WEIGHT_THIN; break;
+ case 2: eWeight=WEIGHT_ULTRALIGHT; break;
+ case 3: eWeight=WEIGHT_LIGHT; break;
+ case 4: eWeight=WEIGHT_SEMILIGHT; break;
+ case 5: eWeight=WEIGHT_NORMAL; break;
+ case 6: eWeight=WEIGHT_SEMIBOLD; break;
+ case 7: eWeight=WEIGHT_BOLD; break;
+ case 8: eWeight=WEIGHT_ULTRABOLD; break;
+ case 9: eWeight=WEIGHT_BLACK; break;
+ default: eWeight=WEIGHT_DONTKNOW;
+ }
+ pF->aFont.SetWeight(eWeight);
+ break;
+ }
+ }
+ nPos+=nLen; pOS2MET->Seek(nPos);
+ }
+}
+
+void OS2METReader::ReadField(USHORT nFieldType, USHORT nFieldSize)
+{
+ switch (nFieldType) {
+ case BegDocumnMagic:
+ break;
+ case EndDocumnMagic:
+ break;
+ case BegResGrpMagic:
+ break;
+ case EndResGrpMagic:
+ break;
+ case BegColAtrMagic:
+ break;
+ case EndColAtrMagic:
+ break;
+ case BlkColAtrMagic: {
+ ULONG nPos, nMaxPos;
+ BYTE nbyte;
+ ULONG nCol;
+ USHORT nStartIndex, nEndIndex, i, nElemLen, nBytesPerCol;
+
+ nPos=pOS2MET->Tell();
+ nMaxPos=nPos+(ULONG)nFieldSize;
+ pOS2MET->SeekRel(3); nPos+=3;
+ while (nPos<nMaxPos && pOS2MET->GetError()==0) {
+ *pOS2MET >> nbyte; nElemLen=((USHORT)nbyte) & 0x00ff;
+ if (nElemLen>11) {
+ pOS2MET->SeekRel(4);
+ nStartIndex=ReadBigEndianWord();
+ pOS2MET->SeekRel(3);
+ *pOS2MET >> nbyte; nBytesPerCol=((USHORT)nbyte) & 0x00ff;
+ nEndIndex=nStartIndex+(nElemLen-11)/nBytesPerCol;
+ for (i=nStartIndex; i<nEndIndex; i++) {
+ if (nBytesPerCol > 3) pOS2MET->SeekRel(nBytesPerCol-3);
+ nCol=ReadBigEndian3BytesLong();
+ SetPalette0RGB(i,nCol);
+ }
+ }
+ else if (nElemLen<10) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=4;
+ }
+ nPos+=(ULONG)nElemLen;
+ pOS2MET->Seek(nPos);
+ }
+ break;
+ }
+ case MapColAtrMagic:
+ break;
+ case BegImgObjMagic: {
+ // neue Bitmap schonmal herstellen: (wird spaeter gefuellt)
+ OSBitmap * pB=new OSBitmap;
+ pB->pSucc=pBitmapList; pBitmapList=pB;
+ pB->pBMP=NULL; pB->nWidth=0; pB->nHeight=0; pB->nBitsPerPixel=0;
+ pB->nMapPos=0;
+ // ID der Bitmap ermitteln:
+ BYTE i,nbyte,nbyte2;
+ pB->nID=0;
+ for (i=0; i<4; i++) {
+ *pOS2MET >> nbyte >> nbyte2;
+ nbyte=((nbyte-0x30)<<4)|(nbyte2-0x30);
+ pB->nID=(pB->nID>>8)|(((ULONG)nbyte)<<24);
+ }
+ // neue Palette auf den Paletten-Stack bringen: (wird spaeter gefuellt)
+ OSPalette * pP=new OSPalette;
+ pP->pSucc=pPaletteStack; pPaletteStack=pP;
+ pP->p0RGB=NULL; pP->nSize=0;
+ break;
+ }
+ case EndImgObjMagic: {
+ // Temporaere Windows-BMP-Datei auslesen:
+ if (pBitmapList==NULL || pBitmapList->pBMP==NULL ||
+ pBitmapList->pBMP->GetError()!=0) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=5;
+ return;
+ }
+ pBitmapList->pBMP->Seek(0);
+
+ pBitmapList->aBitmap.Read( *( pBitmapList->pBMP ), FALSE );
+
+ if (pBitmapList->pBMP->GetError()!=0) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=6;
+ }
+ delete pBitmapList->pBMP; pBitmapList->pBMP=NULL;
+ // Palette vom Stack killen:
+ OSPalette * pP=pPaletteStack;
+ if (pP!=NULL) {
+ pPaletteStack=pP->pSucc;
+ if (pP->p0RGB!=NULL) delete[] pP->p0RGB;
+ delete pP;
+ }
+ break;
+ }
+ case DscImgObjMagic:
+ break;
+ case DatImgObjMagic: {
+ USHORT nDataID, nDataLen;
+ BYTE nbyte;
+ ULONG nPos, nMaxPos;
+
+ nPos=pOS2MET->Tell();
+ nMaxPos=nPos+(ULONG)nFieldSize;
+ while (nPos<nMaxPos && pOS2MET->GetError()==0) {
+ *pOS2MET >> nbyte; nDataID=((USHORT)nbyte)&0x00ff;
+ if (nDataID==0x00fe) {
+ *pOS2MET >> nbyte;
+ nDataID=(nDataID<<8)|(((USHORT)nbyte)&0x00ff);
+ nDataLen=ReadBigEndianWord();
+ nPos+=4;
+ }
+ else {
+ *pOS2MET >> nbyte; nDataLen=((USHORT)nbyte)&0x00ff;
+ nPos+=2;
+ }
+ ReadImageData(nDataID, nDataLen);
+ nPos+=(ULONG)nDataLen;
+ pOS2MET->Seek(nPos);
+ }
+ break;
+ }
+
+ case BegObEnv1Magic:
+ break;
+ case EndObEnv1Magic:
+ break;
+ case BegGrfObjMagic:
+ break;
+ case EndGrfObjMagic: {
+ SvStream * pSave;
+ ULONG nPos, nMaxPos;
+ USHORT nOrderID, nOrderLen;
+ BYTE nbyte;
+
+ if (pOrdFile==NULL) break;
+
+ // in pOrdFile wurden alle "DatGrfObj"-Felder gesammelt, so
+ // dass die darin enthaltnen "Orders" zusammenhangend und nicht durch
+ // "Fields" segmentiert sind. Um sie aus dem MemoryStream auszulesen,
+ // ohne grosse Umstaende deswegen zu haben (frueher wurden die "Orders"
+ // direkt aus pOS2MET gelesen), hier ein kleiner Trick:
+ pSave=pOS2MET;
+ pOS2MET=pOrdFile; //(!)
+ nMaxPos=pOS2MET->Tell();
+ pOS2MET->Seek(0);
+
+ // "Segmentheader":
+ *pOS2MET >> nbyte;
+ if (nbyte==0x70) { // Header vorhanden
+ pOS2MET->SeekRel(15); // brauchen wir aber nicht
+ }
+ else pOS2MET->SeekRel(-1); // Kein Header, Byte zurueck
+
+ // Schleife ueber Order:
+ while (pOS2MET->Tell()<nMaxPos && pOS2MET->GetError()==0) {
+ *pOS2MET >> nbyte; nOrderID=((USHORT)nbyte) & 0x00ff;
+ if (nOrderID==0x00fe) {
+ *pOS2MET >> nbyte;
+ nOrderID=(nOrderID << 8) | (((USHORT)nbyte) & 0x00ff);
+ }
+ if (nOrderID>0x00ff || nOrderID==GOrdPolygn) {
+ // ooo: Laut OS2-Doku sollte die Orderlaenge nun als Big-Endian-Word
+ // gegeben sein (Zitat: "Highorder byte precedes loworder byte").
+ // Tatsaechlich gibt es aber Dateien, die die Laenge als
+ // Little-Endian-Word angeben (zu mindestens fuer nOrderID==GOrdPolygn).
+ // Also werfen wir eine Muenze oder was ?
+ *pOS2MET >> nbyte; nOrderLen=(USHORT)nbyte&0x00ff;
+ *pOS2MET >> nbyte; if (nbyte!=0) nOrderLen=nOrderLen<<8|(((USHORT)nbyte)&0x00ff);
+ }
+ else if (nOrderID==GOrdSTxAlg || nOrderID==GOrdPTxAlg) nOrderLen=2;
+ else if ((nOrderID&0xff88)==0x0008) nOrderLen=1;
+ else if (nOrderID==0x0000 || nOrderID==0x00ff) nOrderLen=0;
+ else { *pOS2MET >> nbyte; nOrderLen=((USHORT)nbyte) & 0x00ff; }
+ nPos=pOS2MET->Tell();
+ ReadOrder(nOrderID, nOrderLen);
+ if (nPos+nOrderLen < pOS2MET->Tell()) {
+ OOODEBUG("Order kuerzer als er denkt! OrderID:",nOrderID);
+ OOODEBUG("...und zwar bei Position (Parameteranfang):",nPos);
+ }
+ else if (nPos+nOrderLen != pOS2MET->Tell()) {
+ OOODEBUG(String(nOrderID)+String(" Order nicht alles gelesen! bei:"),nPos);
+ }
+ pOS2MET->Seek(nPos+nOrderLen);
+ }
+
+ pOS2MET=pSave;
+ if (pOrdFile->GetError()) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=10;
+ }
+ delete pOrdFile; pOrdFile=NULL;
+ break;
+ }
+ case DscGrfObjMagic: {
+ ULONG nPos, nMaxPos;
+ USHORT nDscID, nDscLen;
+ BYTE nbyte;
+
+ nMaxPos=pOS2MET->Tell()+(ULONG)nFieldSize;
+ while (pOS2MET->Tell()<nMaxPos && pOS2MET->GetError()==0) {
+ *pOS2MET >> nbyte; nDscID =((USHORT)nbyte) & 0x00ff;
+ *pOS2MET >> nbyte; nDscLen=((USHORT)nbyte) & 0x00ff;
+ nPos=pOS2MET->Tell();
+ ReadDsc(nDscID, nDscLen);
+ pOS2MET->Seek(nPos+nDscLen);
+ }
+ break;
+ }
+ case DatGrfObjMagic: {
+ if (pOrdFile==NULL) {
+ pOrdFile = new SvMemoryStream;
+ pOrdFile->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+ }
+ BYTE * pBuf; pBuf = new BYTE[nFieldSize];
+ pOS2MET->Read(pBuf,nFieldSize);
+ pOrdFile->Write(pBuf,nFieldSize);
+ delete[] pBuf;
+ break;
+ }
+ case MapCodFntMagic:
+ ReadFont(nFieldSize);
+ break;
+
+ case MapDatResMagic:
+ break;
+ }
+}
+
+void OS2METReader::ReadOS2MET( SvStream & rStreamOS2MET, GDIMetaFile & rGDIMetaFile )
+{
+ USHORT nFieldSize;
+ USHORT nFieldType;
+ ULONG nPos, nStartPos, nEndPos, nPercent, nLastPercent;
+ BYTE nMagicByte;
+
+ ErrorCode=0;
+
+ pOS2MET = &rStreamOS2MET;
+ nOrigPos = pOS2MET->Tell();
+ nOrigNumberFormat = pOS2MET->GetNumberFormatInt();
+
+ bCoord32 = TRUE;
+ pPaletteStack=NULL;
+ pAreaStack=NULL;
+ pPathStack=NULL;
+ pPathList=NULL;
+ pFontList=NULL;
+ pBitmapList=NULL;
+ pAttrStack=NULL;
+
+ aDefAttr.aLinCol =Color(COL_BLACK);
+ aDefAttr.aLinBgCol =Color(COL_WHITE);
+ aDefAttr.eLinMix =ROP_OVERPAINT;
+ aDefAttr.eLinBgMix =ROP_OVERPAINT;
+ aDefAttr.aChrCol =Color(COL_BLACK);
+ aDefAttr.aChrBgCol =Color(COL_WHITE);
+ aDefAttr.eChrMix =ROP_OVERPAINT;
+ aDefAttr.eChrBgMix =ROP_OVERPAINT;
+ aDefAttr.aMrkCol =Color(COL_BLACK);
+ aDefAttr.aMrkBgCol =Color(COL_WHITE);
+ aDefAttr.eMrkMix =ROP_OVERPAINT;
+ aDefAttr.eMrkBgMix =ROP_OVERPAINT;
+ aDefAttr.aPatCol =Color(COL_BLACK);
+ aDefAttr.aPatBgCol =Color(COL_WHITE);
+ aDefAttr.ePatMix =ROP_OVERPAINT;
+ aDefAttr.ePatBgMix =ROP_OVERPAINT;
+ aDefAttr.aImgCol =Color(COL_BLACK);
+ aDefAttr.aImgBgCol =Color(COL_WHITE);
+ aDefAttr.eImgMix =ROP_OVERPAINT;
+ aDefAttr.eImgBgMix =ROP_OVERPAINT;
+ aDefAttr.nArcP =1;
+ aDefAttr.nArcQ =1;
+ aDefAttr.nArcR =0;
+ aDefAttr.nArcS =0;
+ aDefAttr.nChrAng =0;
+ aDefAttr.aChrCellSize=Size(12,12);
+ aDefAttr.nChrSet =0;
+ aDefAttr.aCurPos =Point(0,0);
+ aDefAttr.eLinStyle =PEN_SOLID;
+ aDefAttr.nLinWidth =0;
+ aDefAttr.aMrkCellSize=Size(10,10);
+ aDefAttr.nMrkPrec =0x01;
+ aDefAttr.nMrkSet =0xff;
+ aDefAttr.nMrkSymbol =0x01;
+ aDefAttr.bFill =TRUE;
+ aDefAttr.nStrLinWidth=0;
+
+ aAttr=aDefAttr;
+
+ pOrdFile=NULL;
+
+ pVirDev = new VirtualDevice();
+ pVirDev->EnableOutput(FALSE);
+ rGDIMetaFile.Record(pVirDev);
+
+ pOS2MET->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+
+ nStartPos=pOS2MET->Tell();
+ nEndPos=pOS2MET->Seek(STREAM_SEEK_TO_END); pOS2MET->Seek(nStartPos);
+ Callback(0); nLastPercent=0;
+
+ nPos=pOS2MET->Tell();
+ if ( nStartPos == nEndPos )
+ {
+ nEndPos = 100;
+ nStartPos = 0;
+ }
+
+ for (;;) {
+
+ nPercent=(nPos-nStartPos)*100/(nEndPos-nStartPos);
+ if (nLastPercent+4<=nPercent) {
+ if (Callback((USHORT)nPercent)==TRUE) break;
+ nLastPercent=nPercent;
+ }
+
+ nFieldSize=ReadBigEndianWord();
+
+ *pOS2MET >> nMagicByte;
+ if (nMagicByte!=0xd3) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=7;
+ break;
+ }
+ *pOS2MET >> nFieldType;
+
+ pOS2MET->SeekRel(3);
+ nPos+=8; nFieldSize-=8;
+
+ if (pOS2MET->GetError()) break;
+ if (pOS2MET->IsEof()) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=8;
+ break;
+ }
+
+ if (nFieldType==EndDocumnMagic) break;
+
+ ReadField(nFieldType, nFieldSize);
+
+ nPos+=(ULONG)nFieldSize;
+ if (pOS2MET->Tell()>nPos) {
+ pOS2MET->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ ErrorCode=9;
+ break;
+ }
+ pOS2MET->Seek(nPos);
+ }
+
+ rGDIMetaFile.Stop();
+ delete pVirDev;
+
+ rGDIMetaFile.SetPrefMapMode( aGlobMapMode );
+
+ if( aBoundingRect.GetWidth() && aBoundingRect.GetHeight() )
+ rGDIMetaFile.SetPrefSize( aBoundingRect.GetSize() );
+ else
+ {
+ if( aCalcBndRect.Left() || aCalcBndRect.Top() )
+ rGDIMetaFile.Move( -aCalcBndRect.Left(), -aCalcBndRect.Top() );
+
+ rGDIMetaFile.SetPrefSize( aCalcBndRect.GetSize() );
+ }
+
+ if (pOrdFile!=NULL) delete pOrdFile;
+
+ while (pAreaStack!=NULL) {
+ OSArea * p=pAreaStack;
+ pAreaStack=p->pSucc;
+ delete p;
+ }
+
+ while (pPathStack!=NULL) {
+ OSPath * p=pPathStack;
+ pPathStack=p->pSucc;
+ delete p;
+ }
+
+ while (pPathList!=NULL) {
+ OSPath * p=pPathList;
+ pPathList=p->pSucc;
+ delete p;
+ }
+
+ while (pFontList!=NULL) {
+ OSFont * p=pFontList;
+ pFontList=p->pSucc;
+ delete p;
+ }
+
+ while (pBitmapList!=NULL) {
+ OSBitmap * p=pBitmapList;
+ pBitmapList=p->pSucc;
+ if (p->pBMP!=NULL) delete p->pBMP;
+ delete p;
+ }
+
+ while (pAttrStack!=NULL) {
+ OSAttr * p=pAttrStack;
+ pAttrStack=p->pSucc;
+ delete p;
+ }
+
+ while (pPaletteStack!=NULL) {
+ OSPalette * p=pPaletteStack;
+ pPaletteStack=p->pSucc;
+ if (p->p0RGB!=NULL) delete[] p->p0RGB;
+ delete p;
+ }
+
+ pOS2MET->SetNumberFormatInt(nOrigNumberFormat);
+
+ if (pOS2MET->GetError()) {
+ OOODEBUG("Fehler Nr.:",ErrorCode);
+ pOS2MET->Seek(nOrigPos);
+ }
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ OS2METReader aOS2METReader;
+ GDIMetaFile aMTF;
+ BOOL bRet = FALSE;
+
+ aOS2METReader.ReadOS2MET( rStream, aMTF );
+
+ if ( !rStream.GetError() )
+ {
+ rGraphic=Graphic( aMTF );
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/ios2met/makefile.mk b/filter/source/graphicfilter/ios2met/makefile.mk
new file mode 100644
index 000000000000..b3358eea7b4f
--- /dev/null
+++ b/filter/source/graphicfilter/ios2met/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ios2met
+DEPTARGET=vios2met
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ios2met.obj
+
+# ==========================================================================
+
+SHL1TARGET= ime$(DLLPOSTFIX)
+SHL1IMPLIB= ios2met
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+
+SHL1LIBS= $(SLB)$/ios2met.lib # $(LB)$/rtftoken.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ios2met.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+# ==========================================================================
+
+.INCLUDE : target.mk
+
diff --git a/filter/source/graphicfilter/ipbm/exports.map b/filter/source/graphicfilter/ipbm/exports.map
new file mode 100644
index 000000000000..0e2a1bcdec9d
--- /dev/null
+++ b/filter/source/graphicfilter/ipbm/exports.map
@@ -0,0 +1,7 @@
+PBMIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ipbm/ipbm.cxx b/filter/source/graphicfilter/ipbm/ipbm.cxx
new file mode 100644
index 000000000000..6b83fc1021c7
--- /dev/null
+++ b/filter/source/graphicfilter/ipbm/ipbm.cxx
@@ -0,0 +1,565 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+
+//============================ PBMReader ==================================
+
+class PBMReader {
+
+private:
+
+ SvStream* mpPBM; // Die einzulesende PBM-Datei
+
+ BOOL mbStatus;
+ BOOL mbRemark; // FALSE wenn sich stream in einem Kommentar befindet
+ BOOL mbRaw; // RAW/ASCII MODE
+ ULONG mnMode; // 0->PBM, 1->PGM, 2->PPM
+ Bitmap maBmp;
+ BitmapWriteAccess* mpAcc;
+ ULONG mnWidth, mnHeight; // Bildausmass in Pixeln
+ ULONG mnCol;
+ ULONG mnMaxVal; // maximaler wert in den
+ BOOL ImplCallback( USHORT nPercent );
+ BOOL ImplReadBody();
+ BOOL ImplReadHeader();
+
+public:
+ PBMReader();
+ ~PBMReader();
+ BOOL ReadPBM( SvStream & rPBM, Graphic & rGraphic );
+};
+
+//=================== Methoden von PBMReader ==============================
+
+PBMReader::PBMReader() :
+ mbStatus ( TRUE ),
+ mbRemark ( FALSE ),
+ mbRaw ( TRUE ),
+ mpAcc ( NULL )
+{
+}
+
+PBMReader::~PBMReader()
+{
+}
+
+BOOL PBMReader::ImplCallback( USHORT /*nPercent*/ )
+{
+/*
+ if ( pCallback != NULL )
+ {
+ if ( ( (*pCallback)( pCallerData, nPercent ) ) == TRUE )
+ {
+ mpPBM->SetError( SVSTREAM_FILEFORMAT_ERROR );
+ return TRUE;
+ }
+ }
+*/
+ return FALSE;
+}
+
+BOOL PBMReader::ReadPBM( SvStream & rPBM, Graphic & rGraphic )
+{
+ USHORT i;
+
+ if ( rPBM.GetError() )
+ return FALSE;
+
+ mpPBM = &rPBM;
+ mpPBM->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ // Kopf einlesen:
+
+ if ( ( mbStatus = ImplReadHeader() ) == FALSE )
+ return FALSE;
+
+ if ( ( mnMaxVal == 0 ) || ( mnWidth == 0 ) || ( mnHeight == 0 ) )
+ return FALSE;
+
+ // 0->PBM, 1->PGM, 2->PPM
+ switch ( mnMode )
+ {
+ case 0 :
+ maBmp = Bitmap( Size( mnWidth, mnHeight ), 1 );
+ if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
+ return FALSE;
+ mpAcc->SetPaletteEntryCount( 2 );
+ mpAcc->SetPaletteColor( 0, BitmapColor( 0xff, 0xff, 0xff ) );
+ mpAcc->SetPaletteColor( 1, BitmapColor( 0x00, 0x00, 0x00 ) );
+ break;
+
+ case 1 :
+ if ( mnMaxVal <= 1 )
+ maBmp = Bitmap( Size( mnWidth, mnHeight ), 1);
+ else if ( mnMaxVal <= 15 )
+ maBmp = Bitmap( Size( mnWidth, mnHeight ), 4);
+ else
+ maBmp = Bitmap( Size( mnWidth, mnHeight ), 8);
+
+ if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
+ return FALSE;
+ mnCol = (USHORT)mnMaxVal + 1;
+ if ( mnCol > 256 )
+ mnCol = 256;
+
+ mpAcc->SetPaletteEntryCount( 256 );
+ for ( i = 0; i < mnCol; i++ )
+ {
+ ULONG nCount = 255 * i / mnCol;
+ mpAcc->SetPaletteColor( i, BitmapColor( (BYTE)nCount, (BYTE)nCount, (BYTE)nCount ) );
+ }
+ break;
+ case 2 :
+ maBmp = Bitmap( Size( mnWidth, mnHeight ), 24 );
+ if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
+ return FALSE;
+ break;
+ }
+
+ // Bitmap-Daten einlesen
+ mbStatus = ImplReadBody();
+
+ if ( mpAcc )
+ {
+ maBmp.ReleaseAccess( mpAcc ), mpAcc = NULL;
+ }
+ if ( mbStatus )
+ rGraphic = maBmp;
+
+ return mbStatus;
+}
+
+BOOL PBMReader::ImplReadHeader()
+{
+ BYTE nID[ 2 ];
+ BYTE nDat;
+ BYTE nMax, nCount = 0;
+ BOOL bFinished = FALSE;
+
+ *mpPBM >> nID[ 0 ] >> nID[ 1 ];
+ if ( nID[ 0 ] != 'P' )
+ return FALSE;
+ mnMaxVal = mnWidth = mnHeight = 0;
+ switch ( nID[ 1 ] )
+ {
+ case '1' :
+ mbRaw = FALSE;
+ case '4' :
+ mnMode = 0;
+ nMax = 2; // number of parameters in Header
+ mnMaxVal = 1;
+ break;
+ case '2' :
+ mbRaw = FALSE;
+ case '5' :
+ mnMode = 1;
+ nMax = 3;
+ break;
+ case '3' :
+ mbRaw = FALSE;
+ case '6' :
+ mnMode = 2;
+ nMax = 3;
+ break;
+ default:
+ return FALSE;
+ }
+ while ( bFinished == FALSE )
+ {
+ if ( mpPBM->GetError() )
+ return FALSE;
+
+ *mpPBM >> nDat;
+
+ if ( nDat == '#' )
+ {
+ mbRemark = TRUE;
+ continue;
+ }
+ else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
+ {
+ mbRemark = FALSE;
+ nDat = 0x20;
+ }
+ if ( mbRemark )
+ continue;
+
+ if ( ( nDat == 0x20 ) || ( nDat == 0x09 ) )
+ {
+ if ( ( nCount == 0 ) && mnWidth )
+ nCount++;
+ else if ( ( nCount == 1 ) && mnHeight )
+ {
+ if ( ++nCount == nMax )
+ bFinished = TRUE;
+ }
+ else if ( ( nCount == 2 ) && mnMaxVal )
+ {
+ bFinished = TRUE;
+ }
+ continue;
+ }
+ if ( ( nDat >= '0' ) && ( nDat <= '9' ) )
+ {
+ nDat -= '0';
+ if ( nCount == 0 )
+ {
+ mnWidth *= 10;
+ mnWidth += nDat;
+ }
+ else if ( nCount == 1 )
+ {
+ mnHeight *= 10;
+ mnHeight += nDat;
+ }
+ else if ( nCount == 2 )
+ {
+ mnMaxVal *= 10;
+ mnMaxVal += nDat;
+ }
+ }
+ else
+ return FALSE;
+ }
+ return mbStatus;
+}
+
+BOOL PBMReader::ImplReadBody()
+{
+ BOOL bPara, bFinished = FALSE;
+ BYTE nDat = 0, nCount;
+ ULONG nGrey, nRGB[3];
+ ULONG nWidth = 0;
+ ULONG nHeight = 0;
+ signed char nShift = 0;
+
+ if ( mbRaw )
+ {
+ switch ( mnMode )
+ {
+
+ // PBM
+ case 0 :
+ while ( nHeight != mnHeight )
+ {
+ if ( mpPBM->IsEof() || mpPBM->GetError() )
+ return FALSE;
+
+ if ( --nShift < 0 )
+ {
+ *mpPBM >> nDat;
+ nShift = 7;
+ }
+ mpAcc->SetPixel( nHeight, nWidth, nDat >> nShift );
+ if ( ++nWidth == mnWidth )
+ {
+ nShift = 0;
+ nWidth = 0;
+ nHeight++;
+ ImplCallback( (USHORT)( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
+ }
+ }
+ break;
+
+ // PGM
+ case 1 :
+ while ( nHeight != mnHeight )
+ {
+ if ( mpPBM->IsEof() || mpPBM->GetError() )
+ return FALSE;
+
+ *mpPBM >> nDat;
+ mpAcc->SetPixel( nHeight, nWidth++, nDat);
+
+ if ( nWidth == mnWidth )
+ {
+ nWidth = 0;
+ nHeight++;
+ ImplCallback( (USHORT)( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
+ }
+ }
+ break;
+
+ // PPM
+ case 2 :
+ while ( nHeight != mnHeight )
+ {
+ if ( mpPBM->IsEof() || mpPBM->GetError() )
+ return FALSE;
+
+ BYTE nR, nG, nB;
+ ULONG nRed, nGreen, nBlue;
+ *mpPBM >> nR >> nG >> nB;
+ nRed = 255 * nR / mnMaxVal;
+ nGreen = 255 * nG / mnMaxVal;
+ nBlue = 255 * nB / mnMaxVal;
+ mpAcc->SetPixel( nHeight, nWidth++, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
+ if ( nWidth == mnWidth )
+ {
+ nWidth = 0;
+ nHeight++;
+ ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
+ }
+ }
+ break;
+ }
+ }
+ else switch ( mnMode )
+ {
+ // PBM
+ case 0 :
+ while ( bFinished == FALSE )
+ {
+ if ( mpPBM->IsEof() || mpPBM->GetError() )
+ return FALSE;
+
+ *mpPBM >> nDat;
+
+ if ( nDat == '#' )
+ {
+ mbRemark = TRUE;
+ continue;
+ }
+ else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
+ {
+ mbRemark = FALSE;
+ continue;
+ }
+ if ( mbRemark || nDat == 0x20 || nDat == 0x09 )
+ continue;
+
+ if ( nDat == '0' || nDat == '1' )
+ {
+ mpAcc->SetPixel( nHeight, nWidth, (BYTE)nDat-'0' );
+ nWidth++;
+ if ( nWidth == mnWidth )
+ {
+ nWidth = 0;
+ if ( ++nHeight == mnHeight )
+ bFinished = TRUE;
+ ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
+ }
+ }
+ else
+ return FALSE;
+ }
+ break;
+
+ // PGM
+ case 1 :
+
+ bPara = FALSE;
+ nCount = 0;
+ nGrey = 0;
+
+ while ( bFinished == FALSE )
+ {
+ if ( nCount )
+ {
+ nCount--;
+ if ( nGrey <= mnMaxVal )
+ nGrey = 255 * nGrey / mnMaxVal;
+ mpAcc->SetPixel( nHeight, nWidth++, (BYTE)nGrey );
+ nGrey = 0;
+ if ( nWidth == mnWidth )
+ {
+ nWidth = 0;
+ if ( ++nHeight == mnHeight )
+ bFinished = TRUE;
+ ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
+ }
+ continue;
+ }
+
+ if ( mpPBM->IsEof() || mpPBM->GetError() )
+ return FALSE;
+
+ *mpPBM >> nDat;
+
+ if ( nDat == '#' )
+ {
+ mbRemark = TRUE;
+ if ( bPara )
+ {
+ bPara = FALSE;
+ nCount++;
+ }
+ continue;
+ }
+ else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
+ {
+ mbRemark = FALSE;
+ if ( bPara )
+ {
+ bPara = FALSE;
+ nCount++;
+ }
+ continue;
+ }
+
+ if ( nDat == 0x20 || nDat == 0x09 )
+ {
+ if ( bPara )
+ {
+ bPara = FALSE;
+ nCount++;
+ }
+ continue;
+ }
+ if ( nDat >= '0' && nDat <= '9' )
+ {
+ bPara = TRUE;
+ nGrey *= 10;
+ nGrey += nDat-'0';
+ continue;
+ }
+ else
+ return FALSE;
+ }
+ break;
+
+
+
+ // PPM
+ case 2 :
+
+ bPara = FALSE;
+ nCount = 0;
+ nRGB[ 0 ] = nRGB[ 1 ] = nRGB[ 2 ] = 0;
+
+ while ( bFinished == FALSE )
+ {
+ if ( nCount == 3 )
+ {
+ nCount = 0;
+ mpAcc->SetPixel( nHeight, nWidth++, BitmapColor( static_cast< BYTE >( ( nRGB[ 0 ] * 255 ) / mnMaxVal ),
+ static_cast< BYTE >( ( nRGB[ 1 ] * 255 ) / mnMaxVal ),
+ static_cast< BYTE >( ( nRGB[ 2 ] * 255 ) / mnMaxVal ) ) );
+ nCount = 0;
+ nRGB[ 0 ] = nRGB[ 1 ] = nRGB[ 2 ] = 0;
+ if ( nWidth == mnWidth )
+ {
+ nWidth = 0;
+ if ( ++nHeight == mnHeight )
+ bFinished = TRUE;
+ ImplCallback( (USHORT) ( ( 100 * nHeight ) / mnHeight ) ); // processing output in percent
+ }
+ continue;
+ }
+
+ if ( mpPBM->IsEof() || mpPBM->GetError() )
+ return FALSE;
+
+ *mpPBM >> nDat;
+
+ if ( nDat == '#' )
+ {
+ mbRemark = TRUE;
+ if ( bPara )
+ {
+ bPara = FALSE;
+ nCount++;
+ }
+ continue;
+ }
+ else if ( ( nDat == 0x0d ) || ( nDat == 0x0a ) )
+ {
+ mbRemark = FALSE;
+ if ( bPara )
+ {
+ bPara = FALSE;
+ nCount++;
+ }
+ continue;
+ }
+
+ if ( nDat == 0x20 || nDat == 0x09 )
+ {
+ if ( bPara )
+ {
+ bPara = FALSE;
+ nCount++;
+ }
+ continue;
+ }
+ if ( nDat >= '0' && nDat <= '9' )
+ {
+ bPara = TRUE;
+ nRGB[ nCount ] *= 10;
+ nRGB[ nCount ] += nDat-'0';
+ continue;
+ }
+ else
+ return FALSE;
+ }
+ break;
+ }
+ return mbStatus;
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ PBMReader aPBMReader;
+
+ return aPBMReader.ReadPBM( rStream, rGraphic );
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/ipbm/makefile.mk b/filter/source/graphicfilter/ipbm/makefile.mk
new file mode 100644
index 000000000000..8f29b3a462a9
--- /dev/null
+++ b/filter/source/graphicfilter/ipbm/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ipbm
+DEPTARGET=vipbm
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ipbm.obj
+
+# ==========================================================================
+
+SHL1TARGET= ipb$(DLLPOSTFIX)
+SHL1IMPLIB= ipbm
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/ipbm.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ipbm.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
+
diff --git a/filter/source/graphicfilter/ipcd/exports.map b/filter/source/graphicfilter/ipcd/exports.map
new file mode 100644
index 000000000000..a0719af28be2
--- /dev/null
+++ b/filter/source/graphicfilter/ipcd/exports.map
@@ -0,0 +1,7 @@
+PCDIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ipcd/ipcd.cxx b/filter/source/graphicfilter/ipcd/ipcd.cxx
new file mode 100644
index 000000000000..0d44993c252d
--- /dev/null
+++ b/filter/source/graphicfilter/ipcd/ipcd.cxx
@@ -0,0 +1,422 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include "rtl/alloc.h"
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <vcl/svapp.hxx>
+#include <svtools/fltcall.hxx>
+#include <svl/solar.hrc>
+#include <svtools/FilterConfigItem.hxx>
+
+//============================ PCDReader ==================================
+
+// Diese Aufloesungen sind in einer PCD-Datei enthalten:
+enum PCDResolution {
+ PCDRES_BASE16, // 192 x 128
+ PCDRES_BASE4, // 384 x 256
+ PCDRES_BASE, // 768 x 512
+ // Die folgenden sind komprimiert und koennen
+ // von uns NICHT gelesen werden:
+ PCDRES_4BASE, // 1536 x 1024
+ PCDRES_16BASE // 3072 x 3072
+};
+
+class PCDReader {
+
+private:
+
+ BOOL bStatus;
+
+ ULONG nLastPercent;
+
+ SvStream* pPCD;
+ BitmapWriteAccess* mpAcc;
+
+ BYTE nOrientation; // Ausrichtung des Bildes in der PCD-Datei:
+ // 0 - Turmspitze zeigt nach oben
+ // 1 - Turmspitze zeigt nach rechts
+ // 2 - Turmspitze zeigt nach unten
+ // 3 - Turmspitze zeigt nach links
+
+ PCDResolution eResolution; // Welche Aufloesung wir haben wollen
+
+ ULONG nWidth; // Breite des PCD-Bildes
+ ULONG nHeight; // Hoehe des PCD-Bildes
+ ULONG nImagePos; // Position des Bildes in der PCD-Datei
+
+ // Temporare BLue-Green-Red-Bitmap
+ ULONG nBMPWidth;
+ ULONG nBMPHeight;
+
+ void MayCallback(ULONG nPercent);
+
+ void CheckPCDImagePacFile();
+ // Prueft, ob es eine Photo-CD-Datei mit 'Image Pac' ist.
+
+ void ReadOrientation();
+ // Liest die Ausrichtung und setzt nOrientation
+
+ void ReadImage(ULONG nMinPercent, ULONG nMaxPercent);
+
+public:
+
+ PCDReader() {}
+ ~PCDReader() {}
+
+ BOOL ReadPCD( SvStream & rPCD, Graphic & rGraphic, FilterConfigItem* pConfigItem );
+};
+
+//=================== Methoden von PCDReader ==============================
+
+BOOL PCDReader::ReadPCD( SvStream & rPCD, Graphic & rGraphic, FilterConfigItem* pConfigItem )
+{
+ Bitmap aBmp;
+
+ bStatus = TRUE;
+ nLastPercent = 0;
+ pPCD = &rPCD;
+
+ MayCallback( 0 );
+
+ // Ist es eine PCD-Datei mit Bild ? ( setzt bStatus == FALSE, wenn nicht ):
+ CheckPCDImagePacFile();
+
+ // Orientierung des Bildes einlesen:
+ ReadOrientation();
+
+ // Welche Aufloesung wollen wir ?:
+ eResolution = PCDRES_BASE;
+ if ( pConfigItem )
+ {
+ sal_Int32 nResolution = pConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "Resolution" ) ), 2 );
+ if ( nResolution == 1 )
+ eResolution = PCDRES_BASE4;
+ else if ( nResolution == 0 )
+ eResolution = PCDRES_BASE16;
+ }
+ // Groesse und Position (Position in PCD-Datei) des Bildes bestimmen:
+ switch (eResolution)
+ {
+ case PCDRES_BASE16 :
+ nWidth = 192;
+ nHeight = 128;
+ nImagePos = 8192;
+ break;
+
+ case PCDRES_BASE4 :
+ nWidth = 384;
+ nHeight = 256;
+ nImagePos = 47104;
+ break;
+
+ case PCDRES_BASE :
+ nWidth = 768;
+ nHeight = 512;
+ nImagePos = 196608;
+ break;
+
+ default:
+ bStatus = FALSE;
+ }
+ if ( bStatus )
+ {
+ if ( ( nOrientation & 0x01 ) == 0 )
+ {
+ nBMPWidth = nWidth;
+ nBMPHeight = nHeight;
+ }
+ else
+ {
+ nBMPWidth = nHeight;
+ nBMPHeight = nWidth;
+ }
+ aBmp = Bitmap( Size( nBMPWidth, nBMPHeight ), 24 );
+ if ( ( mpAcc = aBmp.AcquireWriteAccess() ) == FALSE )
+ return FALSE;
+
+ ReadImage( 5 ,65 );
+
+ aBmp.ReleaseAccess( mpAcc ), mpAcc = NULL;
+ rGraphic = aBmp;
+ }
+ return bStatus;
+}
+
+// -------------------------------------------------------------------------------------------
+
+void PCDReader::MayCallback(ULONG /*nPercent*/)
+{
+/*
+ if ( nPercent >= nLastPercent + 3 )
+ {
+ nLastPercent=nPercent;
+ if ( pCallback != NULL && nPercent <= 100 && bStatus == TRUE )
+ {
+ if ( ( (*pCallback)( pCallerData, (USHORT)nPercent ) ) == TRUE )
+ bStatus = FALSE;
+ }
+ }
+*/
+}
+
+// -------------------------------------------------------------------------------------------
+
+void PCDReader::CheckPCDImagePacFile()
+{
+ char Buf[ 8 ];
+
+ pPCD->Seek( 2048 );
+ pPCD->Read( Buf, 7 );
+ Buf[ 7 ] = 0;
+ if ( ByteString( Buf ).CompareTo( "PCD_IPI" ) != COMPARE_EQUAL )
+ bStatus = FALSE;
+}
+
+// -------------------------------------------------------------------------------------------
+
+void PCDReader::ReadOrientation()
+{
+ if ( bStatus == FALSE )
+ return;
+ pPCD->Seek( 194635 );
+ *pPCD >> nOrientation;
+ nOrientation &= 0x03;
+}
+
+// -------------------------------------------------------------------------------------------
+
+void PCDReader::ReadImage(ULONG nMinPercent, ULONG nMaxPercent)
+{
+ ULONG nx,ny,nW2,nH2,nYPair,ndy,nXPair;
+ long nL,nCb,nCr,nRed,nGreen,nBlue;
+ BYTE * pt;
+ BYTE * pL0; // Luminanz fuer jeden Pixel der 1. Zeile des aktuellen Zeilen-Paars
+ BYTE * pL1; // Luminanz fuer jeden Pixel der 2. Zeile des aktuellen Zeilen-Paars
+ BYTE * pCb; // Blau-Chrominanz fuer je 2x2 Pixel des aktuellen Zeilen-Paars
+ BYTE * pCr; // Rot-Chrominanz fuer je 2x2 Pixel des aktuellen Zeilen-Paars
+ BYTE * pL0N, * pL1N, * pCbN, * pCrN; // wie oben, nur fuer das naechste Zeilen-Paar
+
+ if ( bStatus == FALSE )
+ return;
+
+ nW2=nWidth>>1;
+ nH2=nHeight>>1;
+
+ pL0 =(BYTE*)rtl_allocateMemory( nWidth );
+ pL1 =(BYTE*)rtl_allocateMemory( nWidth );
+ pCb =(BYTE*)rtl_allocateMemory( nW2+1 );
+ pCr =(BYTE*)rtl_allocateMemory( nW2+1 );
+ pL0N=(BYTE*)rtl_allocateMemory( nWidth );
+ pL1N=(BYTE*)rtl_allocateMemory( nWidth );
+ pCbN=(BYTE*)rtl_allocateMemory( nW2+1 );
+ pCrN=(BYTE*)rtl_allocateMemory( nW2+1 );
+
+ if ( pL0 == NULL || pL1 == NULL || pCb == NULL || pCr == NULL ||
+ pL0N == NULL || pL1N == NULL || pCbN == NULL || pCrN == NULL)
+ {
+ rtl_freeMemory((void*)pL0 );
+ rtl_freeMemory((void*)pL1 );
+ rtl_freeMemory((void*)pCb );
+ rtl_freeMemory((void*)pCr );
+ rtl_freeMemory((void*)pL0N);
+ rtl_freeMemory((void*)pL1N);
+ rtl_freeMemory((void*)pCbN);
+ rtl_freeMemory((void*)pCrN);
+ bStatus = FALSE;
+ return;
+ }
+
+ pPCD->Seek( nImagePos );
+
+ // naechstes Zeilen-Paar := erstes Zeile-Paar:
+ pPCD->Read( pL0N, nWidth );
+ pPCD->Read( pL1N, nWidth );
+ pPCD->Read( pCbN, nW2 );
+ pPCD->Read( pCrN, nW2 );
+ pCbN[ nW2 ] = pCbN[ nW2 - 1 ];
+ pCrN[ nW2 ] = pCrN[ nW2 - 1 ];
+
+ for ( nYPair = 0; nYPair < nH2; nYPair++ )
+ {
+ // aktuelles Zeilen-Paar := naechstes Zeilen-Paar
+ pt=pL0; pL0=pL0N; pL0N=pt;
+ pt=pL1; pL1=pL1N; pL1N=pt;
+ pt=pCb; pCb=pCbN; pCbN=pt;
+ pt=pCr; pCr=pCrN; pCrN=pt;
+
+ // naechstes Zeilen-Paar holen:
+ if ( nYPair < nH2 - 1 )
+ {
+ pPCD->Read( pL0N, nWidth );
+ pPCD->Read( pL1N, nWidth );
+ pPCD->Read( pCbN, nW2 );
+ pPCD->Read( pCrN, nW2 );
+ pCbN[nW2]=pCbN[ nW2 - 1 ];
+ pCrN[nW2]=pCrN[ nW2 - 1 ];
+ }
+ else
+ {
+ for ( nXPair = 0; nXPair < nW2; nXPair++ )
+ {
+ pCbN[ nXPair ] = pCb[ nXPair ];
+ pCrN[ nXPair ] = pCr[ nXPair ];
+ }
+ }
+
+ // Schleife uber die beiden Zeilen des Zeilen-Paars:
+ for ( ndy = 0; ndy < 2; ndy++ )
+ {
+ ny = ( nYPair << 1 ) + ndy;
+
+ // Schleife ueber X:
+ for ( nx = 0; nx < nWidth; nx++ )
+ {
+ // nL,nCb,nCr fuer den Pixel nx,ny holen/berechenen:
+ nXPair = nx >> 1;
+ if ( ndy == 0 )
+ {
+ nL = (long)pL0[ nx ];
+ if (( nx & 1 ) == 0 )
+ {
+ nCb = (long)pCb[ nXPair ];
+ nCr = (long)pCr[ nXPair ];
+ }
+ else
+ {
+ nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCb[ nXPair + 1 ] ) ) >> 1;
+ nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCr[ nXPair + 1 ] ) ) >> 1;
+ }
+ }
+ else {
+ nL = pL1[ nx ];
+ if ( ( nx & 1 ) == 0 )
+ {
+ nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCbN[ nXPair ] ) ) >> 1;
+ nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCrN[ nXPair ] ) ) >> 1;
+ }
+ else
+ {
+ nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCb[ nXPair + 1 ] ) +
+ ( (long)pCbN[ nXPair ] ) + ( (long)pCbN[ nXPair + 1 ] ) ) >> 2;
+ nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCr[ nXPair + 1] ) +
+ ( (long)pCrN[ nXPair ] ) + ( (long)pCrN[ nXPair + 1 ] ) ) >> 2;
+ }
+ }
+ // Umwandlung von nL,nCb,nCr in nRed,nGreen,nBlue:
+ nL *= 89024L;
+ nCb -= 156;
+ nCr -= 137;
+ nRed = ( nL + nCr * 119374L + 0x8000 ) >> 16;
+ if ( nRed < 0 )
+ nRed = 0;
+ if ( nRed > 255)
+ nRed = 255;
+ nGreen = ( nL - nCb * 28198L - nCr * 60761L + 0x8000 ) >> 16;
+ if ( nGreen < 0 )
+ nGreen = 0;
+ if ( nGreen > 255 )
+ nGreen = 255;
+ nBlue = ( nL + nCb * 145352L + 0x8000 ) >> 16;
+ if ( nBlue < 0 )
+ nBlue = 0;
+ if ( nBlue > 255 )
+ nBlue = 255;
+
+ // Farbwert in pBMPMap eintragen:
+ if ( nOrientation < 2 )
+ {
+ if ( nOrientation == 0 )
+ mpAcc->SetPixel( ny, nx, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
+ else
+ mpAcc->SetPixel( nWidth - 1 - nx, ny, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
+ }
+ else
+ {
+ if ( nOrientation == 2 )
+ mpAcc->SetPixel( nHeight - 1 - ny, ( nWidth - 1 - nx ), BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
+ else
+ mpAcc->SetPixel( nx, ( nHeight - 1 - ny ), BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
+ }
+ }
+ }
+
+ if ( pPCD->GetError() )
+ bStatus = FALSE;
+ MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * nYPair / nH2 );
+ if ( bStatus == FALSE )
+ break;
+ }
+ rtl_freeMemory((void*)pL0 );
+ rtl_freeMemory((void*)pL1 );
+ rtl_freeMemory((void*)pCb );
+ rtl_freeMemory((void*)pCr );
+ rtl_freeMemory((void*)pL0N);
+ rtl_freeMemory((void*)pL1N);
+ rtl_freeMemory((void*)pCbN);
+ rtl_freeMemory((void*)pCrN);
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pConfigItem, BOOL )
+{
+ PCDReader aPCDReader;
+ return aPCDReader.ReadPCD( rStream, rGraphic, pConfigItem );
+}
+
+//============================= fuer Windows ==================================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/ipcd/makefile.mk b/filter/source/graphicfilter/ipcd/makefile.mk
new file mode 100644
index 000000000000..5b43d9521cd5
--- /dev/null
+++ b/filter/source/graphicfilter/ipcd/makefile.mk
@@ -0,0 +1,67 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ipcd
+DEPTARGET=vipcd
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ipcd.obj
+
+# ==========================================================================
+
+SHL1TARGET= icd$(DLLPOSTFIX)
+SHL1IMPLIB= ipcd
+SHL1STDLIBS= $(SVTOOLLIB) $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/ipcd.lib # $(LB)$/rtftoken.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ipcd.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/ipcx/exports.map b/filter/source/graphicfilter/ipcx/exports.map
new file mode 100644
index 000000000000..d44f79111a96
--- /dev/null
+++ b/filter/source/graphicfilter/ipcx/exports.map
@@ -0,0 +1,7 @@
+PCXIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ipcx/ipcx.cxx b/filter/source/graphicfilter/ipcx/ipcx.cxx
new file mode 100644
index 000000000000..02c552744299
--- /dev/null
+++ b/filter/source/graphicfilter/ipcx/ipcx.cxx
@@ -0,0 +1,458 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+
+//============================ PCXReader ==================================
+
+class PCXReader {
+
+private:
+
+ SvStream* pPCX; // Die einzulesende PCX-Datei
+
+ Bitmap aBmp;
+ BitmapWriteAccess* pAcc;
+ BYTE nVersion; // PCX-Version
+ BYTE nEncoding; // Art der Komprimierung
+ ULONG nBitsPerPlanePix; // Bits Pro Ebene pro Pixel
+ ULONG nPlanes; // Anzahl Ebenen
+ ULONG nBytesPerPlaneLin; // Bytes in einer Ebenen pro Zeile
+ USHORT nPaletteInfo;
+
+ ULONG nWidth, nHeight; // Bildausmass in Pixeln
+ USHORT nResX, nResY; // Aufloesung in Pixel pro Inch oder 0,0
+ USHORT nDestBitsPerPixel; // Bits pro Pixel der Zielbitmap 1,4,8 oder 24
+ BYTE* pPalette; //
+ BOOL nStatus; // status nun nicht mehr am stream abfragen ( SJ )
+
+
+ BOOL Callback( USHORT nPercent );
+ void ImplReadBody();
+ void ImplReadPalette( ULONG nCol );
+ void ImplReadHeader();
+
+public:
+ PCXReader();
+ ~PCXReader();
+ BOOL ReadPCX( SvStream & rPCX, Graphic & rGraphic );
+ // Liesst aus dem Stream eine PCX-Datei und fuellt das GDIMetaFile
+};
+
+//=================== Methoden von PCXReader ==============================
+
+PCXReader::PCXReader() :
+ pAcc ( NULL )
+{
+ pPalette = new BYTE[ 768 ];
+}
+
+PCXReader::~PCXReader()
+{
+ delete[] pPalette;
+}
+
+BOOL PCXReader::Callback( USHORT /*nPercent*/ )
+{
+/*
+ if (pCallback!=NULL) {
+ if (((*pCallback)(pCallerData,nPercent))==TRUE) {
+ nStatus = FALSE;
+ return TRUE;
+ }
+ }
+*/
+ return FALSE;
+}
+
+BOOL PCXReader::ReadPCX( SvStream & rPCX, Graphic & rGraphic )
+{
+ if ( rPCX.GetError() )
+ return FALSE;
+
+ ULONG* pDummy = new ULONG; delete pDummy; // damit unter OS/2
+ // das richtige (Tools-)new
+ // verwendet wird, da es sonst
+ // in dieser DLL nur Vector-news
+ // gibt;
+
+ pPCX = &rPCX;
+ pPCX->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+
+ // Kopf einlesen:
+
+ nStatus = TRUE;
+
+ ImplReadHeader();
+
+ // BMP-Header und ggf. (eventuell zunaechst ungueltige) Farbpalette schreiben:
+ if ( nStatus )
+ {
+ aBmp = Bitmap( Size( nWidth, nHeight ), nDestBitsPerPixel );
+ if ( ( pAcc = aBmp.AcquireWriteAccess() ) == FALSE )
+ return FALSE;
+
+ if ( nDestBitsPerPixel <= 8 )
+ {
+ USHORT nColors = 1 << nDestBitsPerPixel;
+ BYTE* pPal = pPalette;
+ pAcc->SetPaletteEntryCount( nColors );
+ for ( USHORT i = 0; i < nColors; i++, pPal += 3 )
+ {
+ pAcc->SetPaletteColor( i, BitmapColor ( pPal[ 0 ], pPal[ 1 ], pPal[ 2 ] ) );
+ }
+ }
+ // Bitmap-Daten einlesen
+ ImplReadBody();
+
+ // Wenn erweiterte Farbpalette am Ende von PCX, dann diese einlesen, und nochmals
+ // in Palette schreiben:
+ if ( nDestBitsPerPixel == 8 && nStatus )
+ {
+ BYTE* pPal = pPalette;
+ pPCX->SeekRel(1);
+ ImplReadPalette(256);
+ pAcc->SetPaletteEntryCount( 256 );
+ for ( USHORT i = 0; i < 256; i++, pPal += 3 )
+ {
+ pAcc->SetPaletteColor( i, BitmapColor ( pPal[ 0 ], pPal[ 1 ], pPal[ 2 ] ) );
+ }
+ }
+ /*
+ // Aufloesung einstellen:
+ if (nResX!=0 && nResY!=0) {
+ MapMode aMapMode(MAP_INCH,Point(0,0),Fraction(1,nResX),Fraction(1,nResY));
+ rBitmap.SetPrefMapMode(aMapMode);
+ rBitmap.SetPrefSize(Size(nWidth,nHeight));
+ }
+ */ if ( nStatus && pAcc )
+ {
+ aBmp.ReleaseAccess( pAcc ), pAcc = NULL;
+ rGraphic = aBmp;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void PCXReader::ImplReadHeader()
+{
+ BYTE nbyte;
+ USHORT nushort;
+ USHORT nMinX,nMinY,nMaxX,nMaxY;
+
+ *pPCX >> nbyte >> nVersion >> nEncoding;
+ if ( nbyte!=0x0a || (nVersion != 0 && nVersion != 2 && nVersion != 3 && nVersion != 5) || nEncoding > 1 )
+ {
+ nStatus = FALSE;
+ return;
+ }
+
+ *pPCX >> nbyte; nBitsPerPlanePix = (ULONG)nbyte;
+ *pPCX >> nMinX >> nMinY >> nMaxX >> nMaxY;
+
+ if ((nMinX > nMaxX) || (nMinY > nMaxY))
+ {
+ nStatus = FALSE;
+ return;
+ }
+
+ nWidth = nMaxX-nMinX+1;
+ nHeight = nMaxY-nMinY+1;
+
+ *pPCX >> nResX;
+ *pPCX >> nResY;
+ if ( nResX >= nWidth || nResY >= nHeight || ( nResX != nResY ) )
+ nResX = nResY = 0;
+
+ ImplReadPalette( 16 );
+
+ pPCX->SeekRel( 1 );
+ *pPCX >> nbyte; nPlanes = (ULONG)nbyte;
+ *pPCX >> nushort; nBytesPerPlaneLin = (ULONG)nushort;
+ *pPCX >> nPaletteInfo;
+
+ pPCX->SeekRel( 58 );
+
+ nDestBitsPerPixel = (USHORT)( nBitsPerPlanePix * nPlanes );
+ if (nDestBitsPerPixel == 2 || nDestBitsPerPixel == 3) nDestBitsPerPixel = 4;
+
+ if ( ( nDestBitsPerPixel != 1 && nDestBitsPerPixel != 4 && nDestBitsPerPixel != 8 && nDestBitsPerPixel != 24 )
+ || nPlanes > 4 || nBytesPerPlaneLin < ( ( nWidth * nBitsPerPlanePix+7 ) >> 3 ) )
+ {
+ nStatus = FALSE;
+ return;
+ }
+
+ // Wenn das Bild nur 2 Farben hat, ist die Palette zumeist ungueltig, und es handelt sich
+ // immer (?) um ein schwarz-weiss-Bild:
+ if ( nPlanes == 1 && nBitsPerPlanePix == 1 )
+ {
+ pPalette[ 0 ] = pPalette[ 1 ] = pPalette[ 2 ] = 0x00;
+ pPalette[ 3 ] = pPalette[ 4 ] = pPalette[ 5 ] = 0xff;
+ }
+}
+
+void PCXReader::ImplReadBody()
+{
+ BYTE *pPlane[ 4 ], * pDest, * pSource1, * pSource2, * pSource3, *pSource4;
+ ULONG i, nx, ny, np, nCount, nUsedLineSize, nLineSize, nPercent;
+ ULONG nLastPercent = 0;
+ BYTE nDat = 0, nCol = 0;
+
+ nUsedLineSize = (ULONG)( ( ( nWidth * (ULONG)nDestBitsPerPixel ) + 7 ) >> 3 );
+ nLineSize = ( nUsedLineSize + 3 ) & 0xfffc;
+
+ for( np = 0; np < nPlanes; np++ )
+ pPlane[ np ] = new BYTE[ nBytesPerPlaneLin ];
+
+ nCount = 0;
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ if (pPCX->GetError() || pPCX->IsEof())
+ {
+ nStatus = FALSE;
+ break;
+ }
+ nPercent = ny * 60 / nHeight + 10;
+ if ( ny == 0 || nLastPercent + 4 <= nPercent )
+ {
+ nLastPercent = nPercent;
+ if ( Callback( (USHORT)nPercent ) == TRUE )
+ break;
+ }
+ for ( np = 0; np < nPlanes; np++)
+ {
+ if ( nEncoding == 0)
+ pPCX->Read( (void *)pPlane[ np ], nBytesPerPlaneLin );
+ else
+ {
+ pDest = pPlane[ np ];
+ nx = nBytesPerPlaneLin;
+ while ( nCount > 0 && nx > 0)
+ {
+ *(pDest++) = nDat;
+ nx--;
+ nCount--;
+ }
+ while ( nx > 0 )
+ {
+ *pPCX >> nDat;
+ if ( ( nDat & 0xc0 ) == 0xc0 )
+ {
+ nCount =( (ULONG)nDat ) & 0x003f;
+ *pPCX >> nDat;
+ if ( nCount < nx )
+ {
+ nx -= nCount;
+ while ( nCount > 0)
+ {
+ *(pDest++) = nDat;
+ nCount--;
+ }
+ }
+ else
+ {
+ nCount -= nx;
+ do
+ {
+ *(pDest++) = nDat;
+ nx--;
+ }
+ while ( nx > 0 );
+ break;
+ }
+ }
+ else
+ {
+ *(pDest++) = nDat;
+ nx--;
+ }
+ }
+ }
+ }
+ pSource1 = pPlane[ 0 ];
+ pSource2 = pPlane[ 1 ];
+ pSource3 = pPlane[ 2 ];
+ pSource4 = pPlane[ 3 ];
+ switch ( nBitsPerPlanePix + ( nPlanes << 8 ) )
+ {
+ // 2 colors
+ case 0x101 :
+ for ( i = 0; i < nWidth; i++ )
+ {
+ ULONG nShift = ( i & 7 ) ^ 7;
+ if ( nShift == 0 )
+ pAcc->SetPixel( ny, i, ( *pSource1++ & 1 ) );
+ else
+ pAcc->SetPixel(
+ ny, i,
+ sal::static_int_cast< BYTE >(
+ ( *pSource1 >> nShift ) & 1) );
+ }
+ break;
+ // 4 colors
+ case 0x102 :
+ for ( i = 0; i < nWidth; i++ )
+ {
+ switch( i & 3 )
+ {
+ case 0 :
+ nCol = *pSource1 >> 6;
+ break;
+ case 1 :
+ nCol = ( *pSource1 >> 4 ) & 0x03 ;
+ break;
+ case 2 :
+ nCol = ( *pSource1 >> 2 ) & 0x03;
+ break;
+ case 3 :
+ nCol = ( *pSource1++ ) & 0x03;
+ break;
+ }
+ pAcc->SetPixel( ny, i, nCol );
+ }
+ break;
+ // 256 colors
+ case 0x108 :
+ for ( i = 0; i < nWidth; i++ )
+ {
+ pAcc->SetPixel( ny, i, *pSource1++ );
+ }
+ break;
+ // 8 colors
+ case 0x301 :
+ for ( i = 0; i < nWidth; i++ )
+ {
+ ULONG nShift = ( i & 7 ) ^ 7;
+ if ( nShift == 0 )
+ {
+ nCol = ( *pSource1++ & 1) + ( ( *pSource2++ << 1 ) & 2 ) + ( ( *pSource3++ << 2 ) & 4 );
+ pAcc->SetPixel( ny, i, nCol );
+ }
+ else
+ {
+ nCol = sal::static_int_cast< BYTE >(
+ ( ( *pSource1 >> nShift ) & 1) + ( ( ( *pSource2 >> nShift ) << 1 ) & 2 ) +
+ ( ( ( *pSource3 >> nShift ) << 2 ) & 4 ));
+ pAcc->SetPixel( ny, i, nCol );
+ }
+ }
+ break;
+ // 16 colors
+ case 0x401 :
+ for ( i = 0; i < nWidth; i++ )
+ {
+ ULONG nShift = ( i & 7 ) ^ 7;
+ if ( nShift == 0 )
+ {
+ nCol = ( *pSource1++ & 1) + ( ( *pSource2++ << 1 ) & 2 ) + ( ( *pSource3++ << 2 ) & 4 ) +
+ ( ( *pSource4++ << 3 ) & 8 );
+ pAcc->SetPixel( ny, i, nCol );
+ }
+ else
+ {
+ nCol = sal::static_int_cast< BYTE >(
+ ( ( *pSource1 >> nShift ) & 1) + ( ( ( *pSource2 >> nShift ) << 1 ) & 2 ) +
+ ( ( ( *pSource3 >> nShift ) << 2 ) & 4 ) + ( ( ( *pSource4 >> nShift ) << 3 ) & 8 ));
+ pAcc->SetPixel( ny, i, nCol );
+ }
+ }
+ break;
+ // 16m colors
+ case 0x308 :
+ for ( i = 0; i < nWidth; i++ )
+ {
+ pAcc->SetPixel( ny, i, Color( *pSource1++, *pSource2++, *pSource3++ ) );
+
+ }
+ break;
+ default :
+ nStatus = FALSE;
+ break;
+ }
+ }
+ for ( np = 0; np < nPlanes; np++ )
+ delete[] pPlane[ np ];
+}
+
+void PCXReader::ImplReadPalette( ULONG nCol )
+{
+ BYTE r, g, b;
+ BYTE* pPtr = pPalette;
+ for ( ULONG i = 0; i < nCol; i++ )
+ {
+ *pPCX >> r >> g >> b;
+ *pPtr++ = r;
+ *pPtr++ = g;
+ *pPtr++ = b;
+ }
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ PCXReader aPCXReader;
+ BOOL nRetValue = aPCXReader.ReadPCX( rStream, rGraphic );
+ if ( nRetValue == FALSE )
+ rStream.SetError( SVSTREAM_FILEFORMAT_ERROR );
+ return nRetValue;
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/ipcx/makefile.mk b/filter/source/graphicfilter/ipcx/makefile.mk
new file mode 100644
index 000000000000..679ffd2a984a
--- /dev/null
+++ b/filter/source/graphicfilter/ipcx/makefile.mk
@@ -0,0 +1,67 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ipcx
+DEPTARGET=vipcx
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ipcx.obj
+
+# ==========================================================================
+
+SHL1TARGET= ipx$(DLLPOSTFIX)
+SHL1IMPLIB= ipcx
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/ipcx.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ipcx.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/ipict/exports.map b/filter/source/graphicfilter/ipict/exports.map
new file mode 100644
index 000000000000..2576cecdca91
--- /dev/null
+++ b/filter/source/graphicfilter/ipict/exports.map
@@ -0,0 +1,7 @@
+PICTIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ipict/ipict.cxx b/filter/source/graphicfilter/ipict/ipict.cxx
new file mode 100644
index 000000000000..d1af028149b7
--- /dev/null
+++ b/filter/source/graphicfilter/ipict/ipict.cxx
@@ -0,0 +1,1937 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <string.h>
+#include <vcl/bmpacc.hxx>
+#include <vcl/graph.hxx>
+#include <tools/poly.hxx>
+#include <vcl/virdev.hxx>
+#include <svtools/fltcall.hxx>
+#include <math.h>
+
+// MT: NOOLDSV, someone should change the code...
+enum PenStyle { PEN_NULL, PEN_SOLID, PEN_DOT, PEN_DASH, PEN_DASHDOT };
+enum BrushStyle { BRUSH_NULL, BRUSH_SOLID, BRUSH_HORZ, BRUSH_VERT,
+ BRUSH_CROSS, BRUSH_DIAGCROSS, BRUSH_UPDIAG, BRUSH_DOWNDIAG,
+ BRUSH_25, BRUSH_50, BRUSH_75,
+ BRUSH_BITMAP };
+
+//============================ PictReader ==================================
+
+enum PictDrawingMethod {
+ PDM_FRAME, PDM_PAINT, PDM_ERASE, PDM_INVERT, PDM_FILL,
+ PDM_TEXT, PDM_UNDEFINED
+};
+
+class PictReader {
+
+private:
+
+ SvStream * pPict; // Die einzulesende Pict-Datei
+ VirtualDevice * pVirDev; // Hier werden die Drawing-Methoden aufgerufen.
+ // Dabei findet ein Recording in das GDIMetaFile
+ // statt.
+ ULONG nOrigPos; // Anfaengliche Position in pPict
+ UINT16 nOrigNumberFormat; // Anfaengliches Nummern-Format von pPict
+ BOOL IsVersion2; // Ob es ein Version 2 Pictfile ist.
+ Rectangle aBoundingRect; // Min/Max-Rechteck fuer die ganze Zeichnung
+
+ Point aPenPosition;
+ Point aTextPosition;
+ Color aActForeColor;
+ Color aActBackColor;
+ PenStyle eActPenPenStyle;
+ BrushStyle eActPenBrushStyle;
+ BrushStyle eActFillStyle;
+ BrushStyle eActBackStyle;
+ USHORT nActPenSize;
+ RasterOp eActROP;
+ PictDrawingMethod eActMethod;
+ Size aActOvalSize;
+ Font aActFont;
+
+ Fraction aHRes;
+ Fraction aVRes;
+
+ BOOL Callback(USHORT nPercent);
+
+ Point ReadPoint();
+
+ Point ReadDeltaH(Point aBase);
+ Point ReadDeltaV(Point aBase);
+
+ Point ReadUnsignedDeltaH(Point aBase);
+ Point ReadUnsignedDeltaV(Point aBase);
+
+ Size ReadSize();
+
+ Color ReadColor();
+
+ Color ReadRGBColor();
+
+ void ReadRectangle(Rectangle & rRect);
+
+ ULONG ReadPolygon(Polygon & rPoly);
+
+ ULONG ReadPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle);
+
+ ULONG ReadPixPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle);
+
+ Rectangle aLastRect;
+ ULONG ReadAndDrawRect(PictDrawingMethod eMethod);
+ ULONG ReadAndDrawSameRect(PictDrawingMethod eMethod);
+
+ Rectangle aLastRoundRect;
+ ULONG ReadAndDrawRoundRect(PictDrawingMethod eMethod);
+ ULONG ReadAndDrawSameRoundRect(PictDrawingMethod eMethod);
+
+ Rectangle aLastOval;
+ ULONG ReadAndDrawOval(PictDrawingMethod eMethod);
+ ULONG ReadAndDrawSameOval(PictDrawingMethod eMethod);
+
+ Polygon aLastPolygon;
+ ULONG ReadAndDrawPolygon(PictDrawingMethod eMethod);
+ ULONG ReadAndDrawSamePolygon(PictDrawingMethod eMethod);
+
+ Rectangle aLastArcRect;
+ ULONG ReadAndDrawArc(PictDrawingMethod eMethod);
+ ULONG ReadAndDrawSameArc(PictDrawingMethod eMethod);
+
+ ULONG ReadAndDrawRgn(PictDrawingMethod eMethod);
+ ULONG ReadAndDrawSameRgn(PictDrawingMethod eMethod);
+
+ void DrawingMethod(PictDrawingMethod eMethod);
+
+ ULONG ReadAndDrawText();
+
+ ULONG ReadPixMapEtc(Bitmap & rBitmap, BOOL bBaseAddr, BOOL bColorTable,
+ Rectangle * pSrcRect, Rectangle * pDestRect,
+ BOOL bMode, BOOL bMaskRgn);
+
+ void ReadHeader();
+ // Liesst den Kopf der Pict-Datei, setzt IsVersion2 und aBoundingRect
+
+ ULONG ReadData(USHORT nOpcode);
+ // Liesst die Daten eines Opcodes ein und fuehrt die Operation aus.
+ // Auf jeden Fall wird die Anzahl der Datenbytes zu dem Opcode
+ // zurueckgeliefert.
+
+ void SetLineColor( const Color& rColor );
+ void SetFillColor( const Color& rColor );
+
+public:
+
+ PictReader() {}
+
+ void ReadPict( SvStream & rStreamPict, GDIMetaFile & rGDIMetaFile );
+ // Liesst aus dem Stream eine Pict-Datei und fuellt das GDIMetaFile
+
+};
+
+//------------------------------------------------------------------------------------------------
+
+#define SETBYTE \
+ switch ( nPixelSize ) \
+ { \
+ case 1 : \
+ pAcc->SetPixel( ny, nx++, nDat >> 7 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 6 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 5 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 4 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 3 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 2 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 1 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat ); \
+ break; \
+ case 2 : \
+ pAcc->SetPixel( ny, nx++, nDat >> 6 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 4 & 3); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat >> 2 & 3 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat & 3); \
+ break; \
+ case 4 : \
+ pAcc->SetPixel( ny, nx++, nDat >> 4 ); \
+ if ( nx == nWidth ) break; \
+ pAcc->SetPixel( ny, nx++, nDat ); \
+ break; \
+ case 8 : \
+ pAcc->SetPixel( ny, nx++, nDat ); \
+ break; \
+ }
+
+//------------------------------------------------------------------------------------------------
+
+#define BITMAPERROR \
+{ \
+ if ( pAcc ) \
+ aBitmap.ReleaseAccess( pAcc ); \
+ if ( pReadAcc ) \
+ aBitmap.ReleaseAccess( pReadAcc ); \
+ return 0xffffffff; \
+}
+
+//=================== Methoden von PictReader ==============================
+
+void PictReader::SetLineColor( const Color& rColor )
+{
+ pVirDev->SetLineColor( rColor );
+}
+
+void PictReader::SetFillColor( const Color& rColor )
+{
+ pVirDev->SetFillColor( rColor );
+}
+
+BOOL PictReader::Callback(USHORT /*nPercent*/)
+{
+/*
+ if (pCallback!=NULL) {
+ if (((*pCallback)(pCallerData,nPercent))==TRUE) {
+ pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ return TRUE;
+ }
+ }
+*/
+ return FALSE;
+}
+
+Point PictReader::ReadPoint()
+{
+ short nx,ny;
+
+ *pPict >> ny >> nx;
+
+ return Point( (long)nx - aBoundingRect.Left(),
+ (long)ny - aBoundingRect.Top() );
+}
+
+Point PictReader::ReadDeltaH(Point aBase)
+{
+ signed char ndh;
+
+ *pPict >> ((char&)ndh);
+
+ return Point( aBase.X() + (long)ndh, aBase.Y() );
+}
+
+Point PictReader::ReadDeltaV(Point aBase)
+{
+ signed char ndv;
+
+ *pPict >> ((char&)ndv);
+
+ return Point( aBase.X(), aBase.Y() + (long)ndv );
+}
+
+Point PictReader::ReadUnsignedDeltaH(Point aBase)
+{
+ sal_uInt8 ndh;
+
+ *pPict >> ndh;
+
+ return Point( aBase.X() + (long)ndh, aBase.Y() );
+}
+
+Point PictReader::ReadUnsignedDeltaV(Point aBase)
+{
+ sal_uInt8 ndv;
+
+ *pPict >> ndv;
+
+ return Point( aBase.X(), aBase.Y() + (long)ndv );
+}
+
+Size PictReader::ReadSize()
+{
+ short nx,ny;
+
+ *pPict >> ny >> nx;
+
+ return Size( (long)nx, (long)ny );
+}
+
+Color PictReader::ReadColor()
+{
+ sal_uInt32 nCol;
+ Color aCol;
+
+ *pPict >> nCol;
+ switch (nCol)
+ {
+ case 33: aCol=Color( COL_BLACK ); break;
+ case 30: aCol=Color( COL_WHITE ); break;
+ case 205: aCol=Color( COL_LIGHTRED ); break;
+ case 341: aCol=Color( COL_LIGHTGREEN ); break;
+ case 409: aCol=Color( COL_LIGHTBLUE ); break;
+ case 273: aCol=Color( COL_LIGHTCYAN ); break;
+ case 137: aCol=Color( COL_LIGHTMAGENTA ); break;
+ case 69: aCol=Color( COL_YELLOW ); break;
+ default: aCol=Color( COL_LIGHTGRAY );
+ }
+ return aCol;
+}
+
+
+Color PictReader::ReadRGBColor()
+{
+ USHORT nR, nG, nB;
+
+ *pPict >> nR >> nG >> nB;
+ return Color( (BYTE) ( nR >> 8 ), (BYTE) ( nG >> 8 ), (BYTE) ( nB >> 8 ) );
+}
+
+
+void PictReader::ReadRectangle(Rectangle & rRect)
+{
+ Point aTopLeft, aBottomRight;
+
+ aTopLeft=ReadPoint();
+ aBottomRight=ReadPoint();
+ aBottomRight.X() -= 1;
+ aBottomRight.Y() -= 1;
+ rRect=Rectangle(aTopLeft,aBottomRight);
+}
+
+
+ULONG PictReader::ReadPolygon(Polygon & rPoly)
+{
+ USHORT nSize,i;
+ ULONG nDataSize;
+
+ *pPict >> nSize;
+ pPict->SeekRel(8);
+ nDataSize=(ULONG)nSize;
+ nSize=(nSize-10)/4;
+ rPoly.SetSize(nSize);
+ for (i=0; i<nSize; i++) rPoly.SetPoint(ReadPoint(),i);
+ return nDataSize;
+}
+
+ULONG PictReader::ReadPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle)
+{
+ short nx,ny,nBitCount;
+ unsigned char nbyte[8];
+ BrushStyle eBrStyle;
+ PenStyle ePnStyle;
+ ULONG nHiBytes, nLoBytes;
+
+ // Anzahl der Bits im Pattern zaehlen, die auf 1 gesetzt sind:
+ nBitCount=0;
+ for (ny=0; ny<8; ny++) {
+ *pPict >> ((char&)nbyte[ny]);
+ for (nx=0; nx<8; nx++) {
+ if ( (nbyte[ny] & (1<<nx)) != 0 ) nBitCount++;
+ }
+ }
+
+ // Pattern in 2 Langworten unterbringen:
+ nHiBytes=(((((((ULONG)nbyte[0])<<8)|
+ (ULONG)nbyte[1])<<8)|
+ (ULONG)nbyte[2])<<8)|
+ (ULONG)nbyte[3];
+ nLoBytes=(((((((ULONG)nbyte[4])<<8)|
+ (ULONG)nbyte[5])<<8)|
+ (ULONG)nbyte[6])<<8)|
+ (ULONG)nbyte[7];
+
+ // Einen PenStyle machen:
+ if (nBitCount<=0) ePnStyle=PEN_NULL;
+ else if (nBitCount<=16) ePnStyle=PEN_DOT;
+ else if (nBitCount<=32) ePnStyle=PEN_DASHDOT;
+ else if (nBitCount<=48) ePnStyle=PEN_DASH;
+ else ePnStyle=PEN_SOLID;
+
+ // Einen BrushStyle machen:
+ if (nHiBytes==0xffffffff && nLoBytes==0xffffffff) eBrStyle=BRUSH_SOLID;
+ else if (nHiBytes==0xff000000 && nLoBytes==0x00000000) eBrStyle=BRUSH_HORZ;
+ else if (nHiBytes==0x80808080 && nLoBytes==0x80808080) eBrStyle=BRUSH_VERT;
+ else if (nHiBytes==0xff808080 && nLoBytes==0x80808080) eBrStyle=BRUSH_CROSS;
+ else if (nHiBytes==0x01824428 && nLoBytes==0x10284482) eBrStyle=BRUSH_DIAGCROSS;
+ else if (nHiBytes==0x80402010 && nLoBytes==0x08040201) eBrStyle=BRUSH_UPDIAG;
+ else if (nHiBytes==0x01020408 && nLoBytes==0x10204080) eBrStyle=BRUSH_DOWNDIAG;
+ else if (nBitCount<=24) eBrStyle=BRUSH_25;
+ else if (nBitCount<=40) eBrStyle=BRUSH_50;
+ else if (nBitCount<=56) eBrStyle=BRUSH_75;
+ else eBrStyle=BRUSH_SOLID;
+
+ if (pPenStyle!=0) *pPenStyle=ePnStyle;
+
+ if (pBrushStyle!=0) *pBrushStyle=eBrStyle;
+
+ return 8;
+}
+
+ULONG PictReader::ReadPixPattern(PenStyle * pPenStyle, BrushStyle * pBrushStyle)
+{
+ // Keine Ahnung, ob dies richtig ist, weil kein Bild gefunden, das
+ // PixPatterns enthaelt. Auch hier nur der Versuch, die Groesse der Daten zu
+ // ermitteln, und einfache StarView-Styles daraus zu machen. Gluecklicherweise
+ // enthaelt ein PixPattern immer auch ein normales Pattern.
+
+ ULONG nDataSize;
+ USHORT nPatType;
+ Bitmap aBMP;
+
+ *pPict >> nPatType;
+ if (nPatType==1) {
+ ReadPattern(pPenStyle,pBrushStyle);
+ nDataSize=ReadPixMapEtc(aBMP,FALSE,TRUE,NULL,NULL,FALSE,FALSE);
+ if (nDataSize!=0xffffffff) nDataSize+=10;
+ }
+ else if (nPatType==2) {
+ ReadPattern(pPenStyle,pBrushStyle);
+ pPict->SeekRel(6); // RGBColor
+ nDataSize=16;
+ }
+ else nDataSize=0xffffffff;
+
+ return nDataSize;
+}
+
+ULONG PictReader::ReadAndDrawRect(PictDrawingMethod eMethod)
+{
+ ReadRectangle(aLastRect);
+ DrawingMethod(eMethod);
+ pVirDev->DrawRect(aLastRect);
+ return 8;
+}
+
+ULONG PictReader::ReadAndDrawSameRect(PictDrawingMethod eMethod)
+{
+ DrawingMethod(eMethod);
+ pVirDev->DrawRect(aLastRect);
+ return 0;
+}
+
+ULONG PictReader::ReadAndDrawRoundRect(PictDrawingMethod eMethod)
+{
+ ReadRectangle(aLastRoundRect);
+ DrawingMethod(eMethod);
+ pVirDev->DrawRect(aLastRoundRect,aActOvalSize.Width(),aActOvalSize.Height());
+ return 8;
+}
+
+ULONG PictReader::ReadAndDrawSameRoundRect(PictDrawingMethod eMethod)
+{
+ DrawingMethod(eMethod);
+ pVirDev->DrawRect(aLastRoundRect,aActOvalSize.Width(),aActOvalSize.Height());
+ return 0;
+}
+
+ULONG PictReader::ReadAndDrawOval(PictDrawingMethod eMethod)
+{
+ ReadRectangle(aLastOval);
+ DrawingMethod(eMethod);
+ pVirDev->DrawEllipse(aLastOval);
+ return 8;
+}
+
+ULONG PictReader::ReadAndDrawSameOval(PictDrawingMethod eMethod)
+{
+ DrawingMethod(eMethod);
+ pVirDev->DrawEllipse(aLastOval);
+ return 0;
+}
+
+ULONG PictReader::ReadAndDrawPolygon(PictDrawingMethod eMethod)
+{
+ ULONG nDataSize;
+
+ nDataSize=ReadPolygon(aLastPolygon);
+ DrawingMethod(eMethod);
+ if (eMethod==PDM_FRAME) pVirDev->DrawPolyLine(aLastPolygon);
+ else pVirDev->DrawPolygon(aLastPolygon);
+ return nDataSize;
+}
+
+ULONG PictReader::ReadAndDrawSamePolygon(PictDrawingMethod eMethod)
+{
+ DrawingMethod(eMethod);
+ if (eMethod==PDM_FRAME) pVirDev->DrawPolyLine(aLastPolygon);
+ else pVirDev->DrawPolygon(aLastPolygon);
+ return 0;
+}
+
+
+ULONG PictReader::ReadAndDrawArc(PictDrawingMethod eMethod)
+{
+ short nstartAngle, narcAngle;
+ double fAng1, fAng2;
+ Point aStartPt, aEndPt, aCenter;
+
+ ReadRectangle(aLastArcRect);
+ *pPict >> nstartAngle >> narcAngle;
+ if (narcAngle<0) {
+ nstartAngle = nstartAngle + narcAngle;
+ narcAngle=-narcAngle;
+ }
+ fAng1=((double)nstartAngle)/180.0*3.14159265359;
+ fAng2=((double)(nstartAngle+narcAngle))/180.0*3.14159265359;
+ aCenter=Point((aLastArcRect.Left()+aLastArcRect.Right())/2,
+ (aLastArcRect.Top()+aLastArcRect.Bottom())/2);
+ aStartPt=Point(aCenter.X()+(long)( sin(fAng2)*256.0),
+ aCenter.Y()+(long)(-cos(fAng2)*256.0));
+ aEndPt= Point(aCenter.X()+(long)( sin(fAng1)*256.0),
+ aCenter.Y()+(long)(-cos(fAng1)*256.0));
+ DrawingMethod(eMethod);
+ if (eMethod==PDM_FRAME) pVirDev->DrawArc(aLastArcRect,aStartPt,aEndPt);
+ else pVirDev->DrawPie(aLastArcRect,aStartPt,aEndPt);
+ return 12;
+}
+
+ULONG PictReader::ReadAndDrawSameArc(PictDrawingMethod eMethod)
+{
+ short nstartAngle, narcAngle;
+ double fAng1, fAng2;
+ Point aStartPt, aEndPt, aCenter;
+
+ *pPict >> nstartAngle >> narcAngle;
+ if (narcAngle<0) {
+ nstartAngle = nstartAngle + narcAngle;
+ narcAngle=-narcAngle;
+ }
+ fAng1=((double)nstartAngle)/180.0*3.14159265359;
+ fAng2=((double)(nstartAngle+narcAngle))/180.0*3.14159265359;
+ aCenter=Point((aLastArcRect.Left()+aLastArcRect.Right())/2,
+ (aLastArcRect.Top()+aLastArcRect.Bottom())/2);
+ aStartPt=Point(aCenter.X()+(long)( sin(fAng2)*256.0),
+ aCenter.Y()+(long)(-cos(fAng2)*256.0));
+ aEndPt= Point(aCenter.X()+(long)( sin(fAng1)*256.0),
+ aCenter.Y()+(long)(-cos(fAng1)*256.0));
+ DrawingMethod(eMethod);
+ if (eMethod==PDM_FRAME) pVirDev->DrawArc(aLastArcRect,aStartPt,aEndPt);
+ else pVirDev->DrawPie(aLastArcRect,aStartPt,aEndPt);
+ return 4;
+}
+
+ULONG PictReader::ReadAndDrawRgn(PictDrawingMethod eMethod)
+{
+ USHORT nSize;
+
+ DrawingMethod(eMethod);
+ *pPict >> nSize;
+ // ...???...
+ return (ULONG)nSize;
+}
+
+ULONG PictReader::ReadAndDrawSameRgn(PictDrawingMethod eMethod)
+{
+ DrawingMethod(eMethod);
+ // ...???...
+ return 0;
+}
+
+void PictReader::DrawingMethod(PictDrawingMethod eMethod)
+{
+ if( eActMethod==eMethod ) return;
+ switch (eMethod) {
+ case PDM_FRAME:
+ SetLineColor( aActForeColor );
+ SetFillColor( Color(COL_TRANSPARENT) );
+ pVirDev->SetRasterOp(eActROP);
+ break;
+ case PDM_PAINT:
+ SetLineColor( Color(COL_TRANSPARENT) );
+ SetFillColor( aActForeColor );
+ pVirDev->SetRasterOp(eActROP);
+ break;
+ case PDM_ERASE:
+ SetLineColor( Color(COL_TRANSPARENT) );
+ SetFillColor( aActForeColor );
+ pVirDev->SetRasterOp(ROP_OVERPAINT);
+ break;
+ case PDM_INVERT:
+ SetLineColor( Color(COL_TRANSPARENT));
+ SetFillColor( Color( COL_BLACK ) );
+ pVirDev->SetRasterOp(ROP_INVERT);
+ break;
+ case PDM_FILL:
+ SetLineColor( Color(COL_TRANSPARENT) );
+ SetFillColor( aActForeColor );
+ pVirDev->SetRasterOp(ROP_OVERPAINT);
+ break;
+ case PDM_TEXT:
+ aActFont.SetColor(aActForeColor);
+ aActFont.SetFillColor(aActBackColor);
+ aActFont.SetTransparent(TRUE);
+ pVirDev->SetFont(aActFont);
+ pVirDev->SetRasterOp(ROP_OVERPAINT);
+ break;
+ default:
+ break; // -Wall undefined not handled...
+ }
+ eActMethod=eMethod;
+}
+
+ULONG PictReader::ReadAndDrawText()
+{
+ char nByteLen;
+ sal_uInt32 nLen, nDataLen;
+ sal_Char sText[256];
+
+ DrawingMethod(PDM_TEXT);
+ *pPict >> nByteLen; nLen=((ULONG)nByteLen)&0x000000ff;
+ nDataLen = nLen + 1;
+ pPict->Read( &sText, nLen );
+
+ // Stoerende Steuerzeuichen wegnehmen:
+ while ( nLen > 0 && ( (unsigned char)sText[ nLen - 1 ] ) < 32 )
+ nLen--;
+ sText[ nLen ] = 0;
+ String aString( (const sal_Char*)&sText, gsl_getSystemTextEncoding() );
+ pVirDev->DrawText( Point( aTextPosition.X(), aTextPosition.Y() ), aString );
+ return nDataLen;
+}
+
+ULONG PictReader::ReadPixMapEtc( Bitmap &rBitmap, BOOL bBaseAddr, BOOL bColorTable, Rectangle* pSrcRect,
+ Rectangle* pDestRect, BOOL bMode, BOOL bMaskRgn )
+{
+ Bitmap aBitmap;
+ BitmapWriteAccess* pAcc = NULL;
+ BitmapReadAccess* pReadAcc = NULL;
+ USHORT ny, nx, nColTabSize;
+ USHORT nRowBytes, nBndX, nBndY, nWidth, nHeight, nVersion, nPackType, nPixelType,
+ nPixelSize, nCmpCount, nCmpSize;
+ sal_uInt32 nPackSize, nPlaneBytes, nHRes, nVRes;
+ BYTE nDat, nRed, nGreen, nBlue, nDummy;
+ ULONG i, nDataSize = 0;
+
+ // In nDataSize wird mitgerechnet, wie gross die gesammten Daten sind.
+ nDataSize = 0;
+
+ // ggf. BaseAddr ueberlesen
+ if ( bBaseAddr )
+ {
+ pPict->SeekRel( 4 );
+ nDataSize += 4;
+ }
+
+ // PixMap oder Bitmap-Struktur einlesen;
+ *pPict >> nRowBytes >> nBndY >> nBndX >> nHeight >> nWidth;
+ nHeight = nHeight - nBndY;
+ nWidth = nWidth - nBndX;
+
+ if ( ( nRowBytes & 0x8000 ) != 0 )
+ { // it is a PixMap
+ nRowBytes &= 0x3fff;
+ *pPict >> nVersion >> nPackType >> nPackSize >> nHRes >> nVRes >> nPixelType >>
+ nPixelSize >> nCmpCount >> nCmpSize >> nPlaneBytes;
+
+ pPict->SeekRel( 8 );
+ nDataSize += 46;
+
+ sal_uInt16 nDstBitCount = nPixelSize;
+ if ( nDstBitCount > 8 )
+ nDstBitCount = 24;
+ else if ( nDstBitCount == 2 )
+ nDstBitCount = 4;
+ aBitmap = Bitmap( Size( nWidth, nHeight ), nDstBitCount );
+
+ if ( ( pAcc = aBitmap.AcquireWriteAccess() ) == NULL )
+ BITMAPERROR;
+
+ if ( bColorTable )
+ {
+ pPict->SeekRel( 6 );
+ *pPict >> nColTabSize;
+
+ if ( ++nColTabSize > 256 )
+ BITMAPERROR;
+
+ pAcc->SetPaletteEntryCount( nColTabSize );
+
+ for ( i = 0; i < nColTabSize; i++ )
+ {
+ pPict->SeekRel(2);
+ *pPict >> nRed >> nDummy >> nGreen >> nDummy >> nBlue >> nDummy;
+ pAcc->SetPaletteColor( (USHORT) i, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ nDataSize += 8 + nColTabSize * 8;
+ }
+ }
+ else
+ {
+ nRowBytes &= 0x3fff;
+ nVersion = 0;
+ nPackType = 0;
+ nPackSize = nHRes = nVRes = nPlaneBytes = 0;
+ nPixelType = 0;
+ nPixelSize = nCmpCount = nCmpSize = 1;
+ nDataSize += 10;
+ aBitmap = Bitmap( Size( nWidth, nHeight ), 1 );
+ if ( ( pAcc = aBitmap.AcquireWriteAccess() ) == NULL )
+ BITMAPERROR;
+ pAcc->SetPaletteEntryCount( 2 );
+ pAcc->SetPaletteColor( 0, BitmapColor( 0xff, 0xff, 0xff ) );
+ pAcc->SetPaletteColor( 1, BitmapColor( 0, 0, 0 ) );
+ }
+
+ // ggf. Quell-Rechteck einlesen:
+ if ( pSrcRect != 0)
+ {
+ USHORT nTop, nLeft, nBottom, nRight;
+ *pPict >> nTop >> nLeft >> nBottom >> nRight;
+ *pSrcRect = Rectangle( (ULONG)nLeft, (ULONG)nTop, (ULONG)nRight, (ULONG)nBottom );
+ nDataSize += 8;
+ }
+
+ // ggf. Ziel-Rechteck einlesen:
+ if ( pDestRect != 0 )
+ {
+ Point aTL, aBR;
+ aTL = ReadPoint();
+ aBR = ReadPoint();
+ *pDestRect = Rectangle( aTL, aBR );
+ nDataSize += 8;
+ }
+
+ // ggf. Modus einlesen (bzw. ueberspringen):
+ if ( bMode )
+ {
+ pPict->SeekRel(2);
+ nDataSize += 2;
+ }
+
+ // ggf. Region einlesen (bzw. ueberspringen):
+ if ( bMaskRgn )
+ {
+ USHORT nSize;
+ *pPict >> nSize;
+ pPict->SeekRel( nSize - 2 );
+ nDataSize += (ULONG)nSize;
+ }
+
+// aSMem << (nHRes/1665L) << (nVRes/1665L) << ((ULONG)0) << ((ULONG)0);
+
+ // Lese und Schreibe Bitmap-Bits:
+ if ( nPixelSize == 1 || nPixelSize == 2 || nPixelSize == 4 || nPixelSize == 8 )
+ {
+ BYTE nByteCountAsByte, nFlagCounterByte;
+ USHORT nByteCount, nCount, nSrcBPL, nDestBPL;
+
+ if ( nPixelSize == 1 ) nSrcBPL = ( nWidth + 7 ) >> 3;
+ else if ( nPixelSize == 2 ) nSrcBPL = ( nWidth + 3 ) >> 2;
+ else if ( nPixelSize == 4 ) nSrcBPL = ( nWidth + 1 ) >> 1;
+ else nSrcBPL = nWidth;
+ nDestBPL = ( nSrcBPL + 3 ) & 0xfffc;
+ if ( nRowBytes < nSrcBPL || nRowBytes > nDestBPL )
+ BITMAPERROR;
+
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ nx = 0;
+ if ( nRowBytes < 8 || nPackType == 1 )
+ {
+ for ( i = 0; i < nRowBytes; i++ )
+ {
+ *pPict >> nDat;
+ if ( nx < nWidth )
+ SETBYTE;
+ }
+ nDataSize += nRowBytes;
+ }
+ else
+ {
+ if ( nRowBytes > 250 )
+ {
+ *pPict >> nByteCount;
+ nDataSize += 2 + (ULONG)nByteCount;
+ }
+ else
+ {
+ *pPict >> nByteCountAsByte;
+ nByteCount = ( (USHORT)nByteCountAsByte ) & 0x00ff;
+ nDataSize += 1 + (ULONG)nByteCount;
+ }
+
+ while ( nByteCount )
+ {
+ *pPict >> nFlagCounterByte;
+ if ( ( nFlagCounterByte & 0x80 ) == 0 )
+ {
+ nCount = ( (USHORT)nFlagCounterByte ) + 1;
+ for ( i = 0; i < nCount; i++ )
+ {
+ *pPict >> nDat;
+ if ( nx < nWidth )
+ SETBYTE;
+ }
+ nByteCount -= 1 + nCount;
+ }
+ else
+ {
+ nCount = ( 1 - ( ( (USHORT)nFlagCounterByte ) | 0xff00 ) );
+ *pPict >> nDat;
+ for ( i = 0; i < nCount; i++ )
+ {
+ if ( nx < nWidth )
+ SETBYTE;
+ }
+ nByteCount -= 2;
+ }
+ }
+ }
+ }
+ }
+ else if ( nPixelSize == 16 )
+ {
+ BYTE nByteCountAsByte, nFlagCounterByte;
+ USHORT nByteCount, nCount, nDestBPL,nD;
+ ULONG nSrcBitsPos;
+
+ if ( nRowBytes < 2 * nWidth )
+ BITMAPERROR;
+
+ nDestBPL = ( ( 3 * nWidth ) + 0x0003 ) & 0xfffc;
+
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ nx = 0;
+ if ( nRowBytes < 8 || nPackType == 1 )
+ {
+ for ( i = 0; i < nWidth; i++ )
+ {
+ *pPict >> nD;
+ nRed = (BYTE)( nD >> 7 );
+ nGreen = (BYTE)( nD >> 2 );
+ nBlue = (BYTE)( nD << 3 );
+ pAcc->SetPixel( ny, nx++, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ nDataSize += ( (ULONG)nWidth ) * 2;
+ }
+ else
+ {
+ nSrcBitsPos = pPict->Tell();
+ if ( nRowBytes > 250 )
+ {
+ *pPict >> nByteCount;
+ nByteCount += 2;
+ }
+ else
+ {
+ *pPict >> nByteCountAsByte;
+ nByteCount = ( (USHORT)nByteCountAsByte ) & 0x00ff;
+ nByteCount++;
+ }
+ while ( nx != nWidth )
+ {
+ *pPict >> nFlagCounterByte;
+ if ( (nFlagCounterByte & 0x80) == 0)
+ {
+ nCount=((USHORT)nFlagCounterByte)+1;
+ if ( nCount + nx > nWidth) // SJ: the RLE decoding seems not to be correct here,
+ nCount = nWidth - nx; // I don't want to change this until I have a bugdoc for
+ for (i=0; i<nCount; i++) // this case. Have a look at 32bit, there I changed the
+ { // encoding, so that it is used a straight forward array
+ *pPict >> nD;
+ nRed = (BYTE)( nD >> 7 );
+ nGreen = (BYTE)( nD >> 2 );
+ nBlue = (BYTE)( nD << 3 );
+ pAcc->SetPixel( ny, nx++, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ }
+ else
+ {
+ nCount=(1-(((USHORT)nFlagCounterByte)|0xff00));
+ if ( nCount + nx > nWidth )
+ nCount = nWidth - nx;
+ *pPict >> nD;
+ nRed = (BYTE)( nD >> 7 );
+ nGreen = (BYTE)( nD >> 2 );
+ nBlue = (BYTE)( nD << 3 );
+ for (i=0; i<nCount; i++)
+ {
+ pAcc->SetPixel( ny, nx++, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ }
+ }
+ nDataSize+=(ULONG)nByteCount;
+ pPict->Seek(nSrcBitsPos+(ULONG)nByteCount);
+ }
+ }
+ }
+ else if (nPixelSize==32)
+ {
+ BYTE nByteCountAsByte, nFlagCounterByte;
+ USHORT nByteCount, nCount;
+ ULONG nSrcBitsPos;
+ BitmapColor aBitmapColor;
+ if ( ( pReadAcc = aBitmap.AcquireReadAccess() ) == NULL )
+ BITMAPERROR;
+ if ( nRowBytes != 4*nWidth )
+ BITMAPERROR;
+
+ if ( nRowBytes < 8 || nPackType == 1 )
+ {
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ if ( nRowBytes < 8 || nPackType == 1 )
+ {
+ for ( nx = 0; nx < nWidth; nx++ )
+ {
+ *pPict >> nDummy >> nRed >> nGreen >> nBlue;
+ pAcc->SetPixel( ny, nx, BitmapColor( nRed, nGreen, nBlue) );
+ }
+ nDataSize += ( (ULONG)nWidth ) * 4;
+ }
+ }
+ }
+ else if ( nPackType == 2 )
+ {
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ for ( nx = 0; nx < nWidth; nx++ )
+ {
+ *pPict >> nRed >> nGreen >> nBlue;
+ pAcc->SetPixel( ny, nx, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ nDataSize += ( (ULONG)nWidth ) * 3;
+ }
+ }
+ else
+ {
+ if ( ( nCmpCount == 3 ) || ( nCmpCount == 4 ) )
+ {
+ sal_uInt8* pScanline = new sal_uInt8[ nWidth * nCmpCount ];
+ for ( ny = 0; ny < nHeight; ny++ )
+ {
+ nSrcBitsPos = pPict->Tell();
+ if ( nRowBytes > 250 )
+ {
+ *pPict >> nByteCount;
+ nByteCount += 2;
+ }
+ else
+ {
+ *pPict >> nByteCountAsByte;
+ nByteCount = (BYTE)nByteCountAsByte;
+ nByteCount++;
+ }
+ i = 0;
+ while( i < (sal_uInt32)( nWidth * nCmpCount ) )
+ {
+ *pPict >> nFlagCounterByte;
+ if ( ( nFlagCounterByte & 0x80 ) == 0)
+ {
+ nCount = ( (USHORT)nFlagCounterByte ) + 1;
+ if ( ( i + nCount ) > (sal_uInt32)( nWidth * nCmpCount ) )
+ nCount = (sal_uInt16)( nWidth * nCmpCount - i );
+ while( nCount-- )
+ {
+ *pPict >> nDat;
+ pScanline[ i++ ] = nDat;
+ }
+ }
+ else
+ {
+ nCount = ( 1 - ( ( (USHORT)nFlagCounterByte ) | 0xff00 ) );
+ if ( ( i + nCount ) > (sal_uInt32)( nWidth * nCmpCount ) )
+ nCount = (sal_uInt16)( nWidth * nCmpCount - i );
+ *pPict >> nDat;
+ while( nCount-- )
+ pScanline[ i++ ] = nDat;
+ }
+ }
+ sal_uInt8* pTmp = pScanline;
+ if ( nCmpCount == 4 )
+ pTmp += nWidth;
+ for ( nx = 0; nx < nWidth; pTmp++ )
+ pAcc->SetPixel( ny, nx++, BitmapColor( *pTmp, pTmp[ nWidth ], pTmp[ 2 * nWidth ] ) );
+ nDataSize += (ULONG)nByteCount;
+ pPict->Seek( nSrcBitsPos + (ULONG)nByteCount );
+ }
+ delete[] pScanline;
+ }
+ }
+ }
+ else
+ BITMAPERROR;
+ if ( pReadAcc )
+ aBitmap.ReleaseAccess( pReadAcc );
+ aBitmap.ReleaseAccess( pAcc );
+ rBitmap = aBitmap;
+ return nDataSize;
+}
+
+void PictReader::ReadHeader()
+{
+ char nC;
+ short y1,x1,y2,x2;
+
+ sal_Char sBuf[ 3 ];
+ pPict->SeekRel( 10 );
+ pPict->Read( sBuf, 3 );
+ if ( sBuf[ 0 ] == 0x00 && sBuf[ 1 ] == 0x11 && ( sBuf[ 2 ] == 0x01 || sBuf[ 2 ] == 0x02 ) )
+ pPict->SeekRel( -13 ); // this maybe a pict from a ms document
+ else
+ pPict->SeekRel( 512 - 13 ); // 512 Bytes Muell am Anfang
+
+ pPict->SeekRel(2); // Lo-16-bits von "picture size"
+ *pPict >> y1 >> x1 >> y2 >> x2; // Rahmen-Rechteck des Bildes
+ aBoundingRect=Rectangle( x1,y1, --x2, --y2 );
+
+ // Jetzt kommen x-beliebig viele Nullen
+ // (in manchen Dateien tatsaechlich mehr als eine):
+ do { *pPict >> nC; } while (nC==0 && pPict->IsEof()==FALSE);
+
+ // dann sollte der Versions-Opcode 0x11 folgen, dann die Versionsnummer:
+ if (nC==0x11)
+ {
+ *pPict >> nC;
+ if ( nC == 0x01 )
+ IsVersion2 = FALSE; // Version 1
+ else // Version 2 oder hoeher
+ {
+ short nExtVer;
+ // 3 Bytes ueberspringen, um auf
+ // ExtVersion2 oder Version2 zu kommen
+ pPict->SeekRel( 3 );
+ *pPict >> nExtVer;
+
+ // nachsehen, ob wir einen Extended-Version2-Header (==-2) haben
+ // oder einen einfachen Version2-Header (==-1);
+ // dementsprechend Aufloesung einlesen oder nicht
+ if ( nExtVer == -2 )
+ {
+ sal_Int16 nReserved;
+ sal_Int32 nHResFixed, nVResFixed;
+ *pPict >> nReserved >> nHResFixed >> nVResFixed;
+ double fHRes = nHResFixed;
+ fHRes /= 65536;
+ double fVRes = nVResFixed;
+ fVRes /= 65536;
+ aHRes /= fHRes;
+ aVRes /= fVRes;
+ *pPict >> y1 >> x1 >> y2 >> x2; // reading the optimal bounding rect
+ aBoundingRect=Rectangle( x1,y1, --x2, --y2 );
+ pPict->SeekRel( -22 );
+ }
+ else
+ {
+ pPict->SeekRel( -4 );
+ }
+ IsVersion2=TRUE;
+ }
+ }
+ else {
+ // Eigentlich ist dies wohl kein Pict-File, aber es gibt tatsaechlich
+ // Dateien, bei denen mehr als 512 Bytes "Muell" am Anfang stehen.
+ // Somit koennte es theoretisch folgende Art von Header geben:
+ // <beliebig viele Bytes Muell> <Picture-Size (Lo-Bytes)> <BoundingRect>
+ // <beliebig viele Nullen> <0x11> ..
+ // Da aber in so einem Fall die Position von <BoundingRect> kaum auszumachen ist,
+ // gehen wir nun davon aus, dass in einer Datei immer entweder genau 512 Bytes Muell
+ // am Anfang sind (wie oben versucht), oder (wie normalerweise ueblich) genau eine 0 zwischen
+ // Bounding-Rectangle und 0x11. Des weiteren mag es hoechstens 1024 Bytes Muell geben,
+ // und das Ganze nur fuer Version 1 oder 2.
+ // Somit suchen wir nun nach der Folge 0x00,0x11,0x01 oder 0x00,0x11,0x02 innerhalb der
+ // "zweiten" 512 Bytes, und nehmen an, dass davor das Bounding-Rect steht, und hoffen
+ // dass das alles so seine Richtigkeit hat.
+ BYTE n1,n2,n3;
+ USHORT i,Found;
+ pPict->Seek(522);
+ Found=0;
+ *pPict >> n1 >> n2 >> n3;
+ for (i=0; i<512; i++) {
+ if (n1==0x00 && n2==0x11 && (n3==0x01 || n3==0x02)) { Found=1; break; }
+ n1=n2; n2=n3; *pPict >> n3;
+ }
+ if (Found!=0) {
+ pPict->SeekRel(-11);
+ *pPict >> y1 >> x1 >> y2 >> x2;
+ // Lieber nochmal nachsehen, ob das Bounding-Rectangle gut zu sein scheint:
+ if (x1+10<x2 && y1+10<y2 && y1>=-2048 && x1>=-2048 && x2<=2048 && y2<=2048) {
+ aBoundingRect=Rectangle( x1, y1, --x2, --y2 );
+ if (n3==0x01) {
+ pPict->SeekRel(3);
+ IsVersion2=FALSE;
+ }
+ else {
+ pPict->SeekRel(4);
+ IsVersion2=TRUE;
+ }
+ }
+ else pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ }
+ else pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ }
+}
+
+
+ULONG PictReader::ReadData(USHORT nOpcode)
+{
+ USHORT nUSHORT;
+ Point aPoint;
+ ULONG nDataSize=0;
+
+ switch(nOpcode) {
+
+ case 0x0000: // NOP
+ nDataSize=0;
+ break;
+
+ case 0x0001: { // Clip
+ Rectangle aRect;
+ *pPict >> nUSHORT;
+ nDataSize=nUSHORT;
+ ReadRectangle(aRect);
+ pVirDev->SetClipRegion( Region( aRect ) );
+ break;
+ }
+ case 0x0002: // BkPat
+ nDataSize=ReadPattern(NULL,&eActBackStyle);
+ eActMethod=PDM_UNDEFINED;
+ break;
+
+ case 0x0003: // TxFont
+ *pPict >> nUSHORT;
+ if (nUSHORT <= 1) aActFont.SetFamily(FAMILY_SWISS);
+ else if (nUSHORT <= 12) aActFont.SetFamily(FAMILY_DECORATIVE);
+ else if (nUSHORT <= 20) aActFont.SetFamily(FAMILY_ROMAN);
+ else if (nUSHORT == 21) aActFont.SetFamily(FAMILY_SWISS);
+ else if (nUSHORT == 22) aActFont.SetFamily(FAMILY_MODERN);
+ else if (nUSHORT <= 1023) aActFont.SetFamily(FAMILY_SWISS);
+ else aActFont.SetFamily(FAMILY_ROMAN);
+ if ( nUSHORT == 23 ) aActFont.SetCharSet( RTL_TEXTENCODING_SYMBOL );
+ else aActFont.SetCharSet( gsl_getSystemTextEncoding() );
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=2;
+ break;
+
+ case 0x0004: { // TxFace
+ char nFace;
+ *pPict >> nFace;
+ if ( (nFace & 0x01)!=0 ) aActFont.SetWeight(WEIGHT_BOLD);
+ else aActFont.SetWeight(WEIGHT_NORMAL);
+ if ( (nFace & 0x02)!=0 ) aActFont.SetItalic(ITALIC_NORMAL);
+ else aActFont.SetItalic(ITALIC_NONE);
+ if ( (nFace & 0x04)!=0 ) aActFont.SetUnderline(UNDERLINE_SINGLE);
+ else aActFont.SetUnderline(UNDERLINE_NONE);
+ if ( (nFace & 0x08)!=0 ) aActFont.SetOutline(TRUE);
+ else aActFont.SetOutline(FALSE);
+ if ( (nFace & 0x10)!=0 ) aActFont.SetShadow(TRUE);
+ else aActFont.SetShadow(FALSE);
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=1;
+ break;
+ }
+ case 0x0005: // TxMode
+ nDataSize=2;
+ break;
+
+ case 0x0006: // SpExtra
+ nDataSize=4;
+ break;
+
+ case 0x0007: { // PnSize
+ Size aSize;
+ aSize=ReadSize();
+ nActPenSize=(USHORT)((aSize.Width()+aSize.Height())/2);
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=4;
+ break;
+ }
+ case 0x0008: // PnMode
+ *pPict >> nUSHORT;
+ switch (nUSHORT & 0x0007) {
+ case 0: eActROP=ROP_OVERPAINT; break; // Copy
+ case 1: eActROP=ROP_OVERPAINT; break; // Or
+ case 2: eActROP=ROP_XOR; break; // Xor
+ case 3: eActROP=ROP_OVERPAINT; break; // Bic
+ case 4: eActROP=ROP_INVERT; break; // notCopy
+ case 5: eActROP=ROP_OVERPAINT; break; // notOr
+ case 6: eActROP=ROP_XOR; break; // notXor
+ case 7: eActROP=ROP_OVERPAINT; break; // notBic
+ }
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=2;
+ break;
+
+ case 0x0009: // PnPat
+ nDataSize=ReadPattern(&eActPenPenStyle,&eActPenBrushStyle);
+ eActMethod=PDM_UNDEFINED;
+ break;
+
+ case 0x000a: // FillPat
+ nDataSize=ReadPattern(NULL,&eActFillStyle);
+ eActMethod=PDM_UNDEFINED;
+ break;
+
+ case 0x000b: // OvSize
+ aActOvalSize=ReadSize();
+ nDataSize=4;
+ break;
+
+ case 0x000c: // Origin
+ nDataSize=4;
+ break;
+
+ case 0x000d: // TxSize
+ {
+ *pPict >> nUSHORT;
+ aActFont.SetSize( Size( 0, (long)nUSHORT ) );
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=2;
+ }
+ break;
+
+ case 0x000e: // FgColor
+ aActForeColor=ReadColor();
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=4;
+ break;
+
+ case 0x000f: // BkColor
+ aActBackColor=ReadColor();
+ nDataSize=4;
+ break;
+
+ case 0x0010: // TxRatio
+ nDataSize=8;
+ break;
+
+ case 0x0011: // VersionOp
+ nDataSize=1;
+ break;
+
+ case 0x0012: // BkPixPat
+ nDataSize=ReadPixPattern(NULL,&eActBackStyle);
+ eActMethod=PDM_UNDEFINED;
+ break;
+
+ case 0x0013: // PnPixPat
+ nDataSize=ReadPixPattern(&eActPenPenStyle,&eActPenBrushStyle);
+ eActMethod=PDM_UNDEFINED;
+ break;
+
+ case 0x0014: // FillPixPat
+ nDataSize=ReadPixPattern(NULL,&eActFillStyle);
+ eActMethod=PDM_UNDEFINED;
+ break;
+
+ case 0x0015: // PnLocHFrac
+ nDataSize=2;
+ break;
+
+ case 0x0016: // ChExtra
+ nDataSize=2;
+ break;
+
+ case 0x0017: // Reserved (0 Bytes)
+ case 0x0018: // Reserved (0 Bytes)
+ case 0x0019: // Reserved (0 Bytes)
+ nDataSize=0;
+ break;
+
+ case 0x001a: // RGBFgCol
+ aActForeColor=ReadRGBColor();
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=6;
+ break;
+
+ case 0x001b: // RGBBkCol
+ aActBackColor=ReadRGBColor();
+ eActMethod=PDM_UNDEFINED;
+ nDataSize=6;
+ break;
+
+ case 0x001c: // HiliteMode
+ nDataSize=0;
+ break;
+
+ case 0x001d: // HiliteColor
+ nDataSize=6;
+ break;
+
+ case 0x001e: // DefHilite
+ nDataSize=0;
+ break;
+
+ case 0x001f: // OpColor
+ nDataSize=6;
+ break;
+
+ case 0x0020: // Line
+ aPoint=ReadPoint(); aPenPosition=ReadPoint();
+ DrawingMethod(PDM_FRAME);
+ pVirDev->DrawLine(aPoint,aPenPosition);
+ nDataSize=8;
+ break;
+
+ case 0x0021: // LineFrom
+ aPoint=aPenPosition; aPenPosition=ReadPoint();
+ DrawingMethod(PDM_FRAME);
+ pVirDev->DrawLine(aPoint,aPenPosition);
+ nDataSize=4;
+ break;
+
+ case 0x0022: // ShortLine
+ aPoint=ReadPoint();
+ aPenPosition=ReadDeltaH(aPoint);
+ aPenPosition=ReadDeltaV(aPenPosition);
+ DrawingMethod(PDM_FRAME);
+ pVirDev->DrawLine(aPoint,aPenPosition);
+ nDataSize=6;
+ break;
+
+ case 0x0023: // ShortLineFrom
+ aPoint=aPenPosition;
+ aPenPosition=ReadDeltaH(aPoint);
+ aPenPosition=ReadDeltaV(aPenPosition);
+ DrawingMethod(PDM_FRAME);
+ pVirDev->DrawLine(aPoint,aPenPosition);
+ nDataSize=2;
+ break;
+
+ case 0x0024: // Reserved (n Bytes)
+ case 0x0025: // Reserved (n Bytes)
+ case 0x0026: // Reserved (n Bytes)
+ case 0x0027: // Reserved (n Bytes)
+ *pPict >> nUSHORT;
+ nDataSize=2+nUSHORT;
+ break;
+
+ case 0x0028: // LongText
+ aTextPosition=ReadPoint();
+ nDataSize=4+ReadAndDrawText();
+ break;
+
+ case 0x0029: // DHText
+ aTextPosition=ReadUnsignedDeltaH(aTextPosition);
+ nDataSize=1+ReadAndDrawText();
+ break;
+
+ case 0x002a: // DVText
+ aTextPosition=ReadUnsignedDeltaV(aTextPosition);
+ nDataSize=1+ReadAndDrawText();
+ break;
+
+ case 0x002b: // DHDVText
+ aTextPosition=ReadUnsignedDeltaH(aTextPosition);
+ aTextPosition=ReadUnsignedDeltaV(aTextPosition);
+ nDataSize=2+ReadAndDrawText();
+ break;
+
+ case 0x002c: { // fontName
+ char sFName[ 256 ], nByteLen;
+ sal_uInt16 nLen;
+ *pPict >> nUSHORT; nDataSize=nUSHORT+2;
+ *pPict >> nUSHORT;
+ if (nUSHORT <= 1) aActFont.SetFamily(FAMILY_SWISS);
+ else if (nUSHORT <= 12) aActFont.SetFamily(FAMILY_DECORATIVE);
+ else if (nUSHORT <= 20) aActFont.SetFamily(FAMILY_ROMAN);
+ else if (nUSHORT == 21) aActFont.SetFamily(FAMILY_SWISS);
+ else if (nUSHORT == 22) aActFont.SetFamily(FAMILY_MODERN);
+ else if (nUSHORT <= 1023) aActFont.SetFamily(FAMILY_SWISS);
+ else aActFont.SetFamily(FAMILY_ROMAN);
+ if (nUSHORT==23) aActFont.SetCharSet( RTL_TEXTENCODING_SYMBOL);
+ else aActFont.SetCharSet( gsl_getSystemTextEncoding() );
+ *pPict >> nByteLen; nLen=((USHORT)nByteLen)&0x00ff;
+ pPict->Read( &sFName, nLen );
+ sFName[ nLen ] = 0;
+ String aString( (const sal_Char*)&sFName, gsl_getSystemTextEncoding() );
+ aActFont.SetName( aString );
+ eActMethod=PDM_UNDEFINED;
+ break;
+ }
+ case 0x002d: // lineJustify
+ nDataSize=10;
+ break;
+
+ case 0x002e: // glyphState
+ *pPict >> nUSHORT;
+ nDataSize=2+nUSHORT;
+ break;
+
+ case 0x002f: // Reserved (n Bytes)
+ *pPict >> nUSHORT;
+ nDataSize=2+nUSHORT;
+ break;
+
+ case 0x0030: // frameRect
+ nDataSize=ReadAndDrawRect(PDM_FRAME);
+ break;
+
+ case 0x0031: // paintRect
+ nDataSize=ReadAndDrawRect(PDM_PAINT);
+ break;
+
+ case 0x0032: // eraseRect
+ nDataSize=ReadAndDrawRect(PDM_ERASE);
+ break;
+
+ case 0x0033: // invertRect
+ nDataSize=ReadAndDrawRect(PDM_INVERT);
+ break;
+
+ case 0x0034: // fillRect
+ nDataSize=ReadAndDrawRect(PDM_FILL);
+ break;
+
+ case 0x0035: // Reserved (8 Bytes)
+ case 0x0036: // Reserved (8 Bytes)
+ case 0x0037: // Reserved (8 Bytes)
+ nDataSize=8;
+ break;
+
+ case 0x0038: // frameSameRect
+ nDataSize=ReadAndDrawSameRect(PDM_FRAME);
+ break;
+
+ case 0x0039: // paintSameRect
+ nDataSize=ReadAndDrawSameRect(PDM_PAINT);
+ break;
+
+ case 0x003a: // eraseSameRect
+ nDataSize=ReadAndDrawSameRect(PDM_ERASE);
+ break;
+
+ case 0x003b: // invertSameRect
+ nDataSize=ReadAndDrawSameRect(PDM_INVERT);
+ break;
+
+ case 0x003c: // fillSameRect
+ nDataSize=ReadAndDrawSameRect(PDM_FILL);
+ break;
+
+ case 0x003d: // Reserved (0 Bytes)
+ case 0x003e: // Reserved (0 Bytes)
+ case 0x003f: // Reserved (0 Bytes)
+ nDataSize=0;
+ break;
+
+ case 0x0040: // frameRRect
+ nDataSize=ReadAndDrawRoundRect(PDM_FRAME);
+ break;
+
+ case 0x0041: // paintRRect
+ nDataSize=ReadAndDrawRoundRect(PDM_PAINT);
+ break;
+
+ case 0x0042: // eraseRRect
+ nDataSize=ReadAndDrawRoundRect(PDM_ERASE);
+ break;
+
+ case 0x0043: // invertRRect
+ nDataSize=ReadAndDrawRoundRect(PDM_INVERT);
+ break;
+
+ case 0x0044: // fillRRect
+ nDataSize=ReadAndDrawRoundRect(PDM_FILL);
+ break;
+
+ case 0x0045: // Reserved (8 Bytes)
+ case 0x0046: // Reserved (8 Bytes)
+ case 0x0047: // Reserved (8 Bytes)
+ nDataSize=8;
+ break;
+
+ case 0x0048: // frameSameRRect
+ nDataSize=ReadAndDrawSameRoundRect(PDM_FRAME);
+ break;
+
+ case 0x0049: // paintSameRRect
+ nDataSize=ReadAndDrawSameRoundRect(PDM_PAINT);
+ break;
+
+ case 0x004a: // eraseSameRRect
+ nDataSize=ReadAndDrawSameRoundRect(PDM_ERASE);
+ break;
+
+ case 0x004b: // invertSameRRect
+ nDataSize=ReadAndDrawSameRoundRect(PDM_INVERT);
+ break;
+
+ case 0x004c: // fillSameRRect
+ nDataSize=ReadAndDrawSameRoundRect(PDM_FILL);
+ break;
+
+ case 0x004d: // Reserved (0 Bytes)
+ case 0x004e: // Reserved (0 Bytes)
+ case 0x004f: // Reserved (0 Bytes)
+ nDataSize=0;
+ break;
+
+ case 0x0050: // frameOval
+ nDataSize=ReadAndDrawOval(PDM_FRAME);
+ break;
+
+ case 0x0051: // paintOval
+ nDataSize=ReadAndDrawOval(PDM_PAINT);
+ break;
+
+ case 0x0052: // eraseOval
+ nDataSize=ReadAndDrawOval(PDM_ERASE);
+ break;
+
+ case 0x0053: // invertOval
+ nDataSize=ReadAndDrawOval(PDM_INVERT);
+ break;
+
+ case 0x0054: // fillOval
+ nDataSize=ReadAndDrawOval(PDM_FILL);
+ break;
+
+ case 0x0055: // Reserved (8 Bytes)
+ case 0x0056: // Reserved (8 Bytes)
+ case 0x0057: // Reserved (8 Bytes)
+ nDataSize=8;
+ break;
+
+ case 0x0058: // frameSameOval
+ nDataSize=ReadAndDrawSameOval(PDM_FRAME);
+ break;
+
+ case 0x0059: // paintSameOval
+ nDataSize=ReadAndDrawSameOval(PDM_PAINT);
+ break;
+
+ case 0x005a: // eraseSameOval
+ nDataSize=ReadAndDrawSameOval(PDM_ERASE);
+ break;
+
+ case 0x005b: // invertSameOval
+ nDataSize=ReadAndDrawSameOval(PDM_INVERT);
+ break;
+
+ case 0x005c: // fillSameOval
+ nDataSize=ReadAndDrawSameOval(PDM_FILL);
+ break;
+
+ case 0x005d: // Reserved (0 Bytes)
+ case 0x005e: // Reserved (0 Bytes)
+ case 0x005f: // Reserved (0 Bytes)
+ nDataSize=0;
+ break;
+
+ case 0x0060: // frameArc
+ nDataSize=ReadAndDrawArc(PDM_FRAME);
+ break;
+
+ case 0x0061: // paintArc
+ nDataSize=ReadAndDrawArc(PDM_PAINT);
+ break;
+
+ case 0x0062: // eraseArc
+ nDataSize=ReadAndDrawArc(PDM_ERASE);
+ break;
+
+ case 0x0063: // invertArc
+ nDataSize=ReadAndDrawArc(PDM_INVERT);
+ break;
+
+ case 0x0064: // fillArc
+ nDataSize=ReadAndDrawArc(PDM_FILL);
+ break;
+
+ case 0x0065: // Reserved (12 Bytes)
+ case 0x0066: // Reserved (12 Bytes)
+ case 0x0067: // Reserved (12 Bytes)
+ nDataSize=12;
+ break;
+
+ case 0x0068: // frameSameArc
+ nDataSize=ReadAndDrawSameArc(PDM_FRAME);
+ break;
+
+ case 0x0069: // paintSameArc
+ nDataSize=ReadAndDrawSameArc(PDM_PAINT);
+ break;
+
+ case 0x006a: // eraseSameArc
+ nDataSize=ReadAndDrawSameArc(PDM_ERASE);
+ break;
+
+ case 0x006b: // invertSameArc
+ nDataSize=ReadAndDrawSameArc(PDM_INVERT);
+ break;
+
+ case 0x006c: // fillSameArc
+ nDataSize=ReadAndDrawSameArc(PDM_FILL);
+ break;
+
+ case 0x006d: // Reserved (4 Bytes)
+ case 0x006e: // Reserved (4 Bytes)
+ case 0x006f: // Reserved (4 Bytes)
+ nDataSize=4;
+ break;
+
+ case 0x0070: // framePoly
+ nDataSize=ReadAndDrawPolygon(PDM_FRAME);
+ break;
+
+ case 0x0071: // paintPoly
+ nDataSize=ReadAndDrawPolygon(PDM_PAINT);
+ break;
+
+ case 0x0072: // erasePoly
+ nDataSize=ReadAndDrawPolygon(PDM_ERASE);
+ break;
+
+ case 0x0073: // invertPoly
+ nDataSize=ReadAndDrawPolygon(PDM_INVERT);
+ break;
+
+ case 0x0074: // fillPoly
+ nDataSize=ReadAndDrawPolygon(PDM_FILL);
+ break;
+
+ case 0x0075: // Reserved (Polygon-Size)
+ case 0x0076: // Reserved (Polygon-Size)
+ case 0x0077: // Reserved (Polygon-Size)
+ *pPict >> nUSHORT; nDataSize=nUSHORT;
+ break;
+
+ case 0x0078: // frameSamePoly
+ nDataSize=ReadAndDrawSamePolygon(PDM_FRAME);
+ break;
+
+ case 0x0079: // paintSamePoly
+ nDataSize=ReadAndDrawSamePolygon(PDM_PAINT);
+ break;
+
+ case 0x007a: // eraseSamePoly
+ nDataSize=ReadAndDrawSamePolygon(PDM_ERASE);
+ break;
+
+ case 0x007b: // invertSamePoly
+ nDataSize=ReadAndDrawSamePolygon(PDM_INVERT);
+ break;
+
+ case 0x007c: // fillSamePoly
+ nDataSize=ReadAndDrawSamePolygon(PDM_FILL);
+ break;
+
+ case 0x007d: // Reserved (0 Bytes)
+ case 0x007e: // Reserved (0 Bytes)
+ case 0x007f: // Reserved (0 Bytes)
+ nDataSize=0;
+ break;
+
+ case 0x0080: // frameRgn
+ nDataSize=ReadAndDrawRgn(PDM_FILL);
+ break;
+
+ case 0x0081: // paintRgn
+ nDataSize=ReadAndDrawRgn(PDM_PAINT);
+ break;
+
+ case 0x0082: // eraseRgn
+ nDataSize=ReadAndDrawRgn(PDM_ERASE);
+ break;
+
+ case 0x0083: // invertRgn
+ nDataSize=ReadAndDrawRgn(PDM_INVERT);
+ break;
+
+ case 0x0084: // fillRgn
+ nDataSize=ReadAndDrawRgn(PDM_FILL);
+ break;
+
+ case 0x0085: // Reserved (Region-Size)
+ case 0x0086: // Reserved (Region-Size)
+ case 0x0087: // Reserved (Region-Size)
+ *pPict >> nUSHORT; nDataSize=nUSHORT;
+ break;
+
+ case 0x0088: // frameSameRgn
+ nDataSize=ReadAndDrawSameRgn(PDM_FRAME);
+ break;
+
+ case 0x0089: // paintSameRgn
+ nDataSize=ReadAndDrawSameRgn(PDM_PAINT);
+ break;
+
+ case 0x008a: // eraseSameRgn
+ nDataSize=ReadAndDrawSameRgn(PDM_ERASE);
+ break;
+
+ case 0x008b: // invertSameRgn
+ nDataSize=ReadAndDrawSameRgn(PDM_INVERT);
+ break;
+
+ case 0x008c: // fillSameRgn
+ nDataSize=ReadAndDrawSameRgn(PDM_FILL);
+ break;
+
+ case 0x008d: // Reserved (0 Bytes)
+ case 0x008e: // Reserved (0 Bytes)
+ case 0x008f: // Reserved (0 Bytes)
+ nDataSize=0;
+ break;
+
+ case 0x0090: { // BitsRect
+ Bitmap aBmp;
+ Rectangle aSrcRect, aDestRect;
+ nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, FALSE);
+ DrawingMethod(PDM_PAINT);
+ pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
+ break;
+ }
+ case 0x0091: { // BitsRgn
+ Bitmap aBmp;
+ Rectangle aSrcRect, aDestRect;
+ nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, TRUE);
+ DrawingMethod(PDM_PAINT);
+ pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
+ break;
+ }
+ case 0x0092: // Reserved (n Bytes)
+ case 0x0093: // Reserved (n Bytes)
+ case 0x0094: // Reserved (n Bytes)
+ case 0x0095: // Reserved (n Bytes)
+ case 0x0096: // Reserved (n Bytes)
+ case 0x0097: // Reserved (n Bytes)
+ *pPict >> nUSHORT; nDataSize=2+nUSHORT;
+ break;
+
+ case 0x0098: { // PackBitsRect
+ Bitmap aBmp;
+ Rectangle aSrcRect, aDestRect;
+ nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, FALSE);
+ DrawingMethod(PDM_PAINT);
+ pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
+ break;
+ }
+ case 0x0099: { // PackBitsRgn
+ Bitmap aBmp;
+ Rectangle aSrcRect, aDestRect;
+ nDataSize=ReadPixMapEtc(aBmp, FALSE, TRUE, &aSrcRect, &aDestRect, TRUE, TRUE);
+ DrawingMethod(PDM_PAINT);
+ pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
+ break;
+ }
+ case 0x009a: { // DirectBitsRect
+ Bitmap aBmp;
+ Rectangle aSrcRect, aDestRect;
+ nDataSize=ReadPixMapEtc(aBmp, TRUE, FALSE, &aSrcRect, &aDestRect, TRUE, FALSE);
+ DrawingMethod(PDM_PAINT);
+ pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
+ break;
+ }
+ case 0x009b: { // DirectBitsRgn
+ Bitmap aBmp;
+ Rectangle aSrcRect, aDestRect;
+ nDataSize=ReadPixMapEtc(aBmp, TRUE, FALSE, &aSrcRect, &aDestRect, TRUE, TRUE);
+ DrawingMethod(PDM_PAINT);
+ pVirDev->DrawBitmap(aDestRect.TopLeft(),aDestRect.GetSize(),aBmp);
+ break;
+ }
+ case 0x009c: // Reserved (n Bytes)
+ case 0x009d: // Reserved (n Bytes)
+ case 0x009e: // Reserved (n Bytes)
+ case 0x009f: // Reserved (n Bytes)
+ *pPict >> nUSHORT; nDataSize=2+nUSHORT;
+ break;
+
+ case 0x00a0: // ShortComment
+ nDataSize=2;
+ break;
+
+ case 0x00a1: // LongComment
+ pPict->SeekRel(2); *pPict >> nUSHORT; nDataSize=4+nUSHORT;
+ break;
+
+ default: // 0x00a2 bis 0xffff (zumeist Reserved)
+ if (nOpcode<=0x00af) { *pPict >> nUSHORT; nDataSize=2+nUSHORT; }
+ else if (nOpcode<=0x00cf) { nDataSize=0; }
+ else if (nOpcode<=0x00fe) { sal_uInt32 nTemp; *pPict >> nTemp ; nDataSize = nTemp; nDataSize+=4; }
+ else if (nOpcode==0x00ff) { nDataSize=2; } // OpEndPic
+ else if (nOpcode<=0x01ff) { nDataSize=2; }
+ else if (nOpcode<=0x0bfe) { nDataSize=4; }
+ else if (nOpcode<=0x0bff) { nDataSize=22; }
+ else if (nOpcode==0x0c00) { nDataSize=24; } // HeaderOp
+ else if (nOpcode<=0x7eff) { nDataSize=24; }
+ else if (nOpcode<=0x7fff) { nDataSize=254; }
+ else if (nOpcode<=0x80ff) { nDataSize=0; }
+ else { sal_uInt32 nTemp; *pPict >> nTemp ; nDataSize = nTemp; nDataSize+=4; }
+ }
+
+ if (nDataSize==0xffffffff) {
+ pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ return 0;
+ }
+ return nDataSize;
+}
+
+void PictReader::ReadPict( SvStream & rStreamPict, GDIMetaFile & rGDIMetaFile )
+{
+ USHORT nOpcode;
+ BYTE nOneByteOpcode;
+ ULONG nSize, nPos, nStartPos, nEndPos, nPercent, nLastPercent;
+
+ pPict = &rStreamPict;
+ nOrigPos = pPict->Tell();
+ nOrigNumberFormat = pPict->GetNumberFormatInt();
+
+ aActForeColor = Color(COL_BLACK);
+ aActBackColor = Color(COL_WHITE);
+ eActPenPenStyle = PEN_SOLID;
+ eActPenBrushStyle = BRUSH_SOLID;
+ eActFillStyle = BRUSH_SOLID;
+ eActBackStyle = BRUSH_SOLID;
+ nActPenSize = 1;
+ eActROP = ROP_OVERPAINT;
+ eActMethod = PDM_UNDEFINED;
+ aActOvalSize = Size(1,1);
+
+ aActFont.SetCharSet( gsl_getSystemTextEncoding() );
+ aActFont.SetFamily(FAMILY_SWISS);
+ aActFont.SetSize(Size(0,12));
+ aActFont.SetAlign(ALIGN_BASELINE);
+
+ aHRes = aVRes = Fraction( 1, 1 );
+
+ pVirDev = new VirtualDevice();
+ pVirDev->EnableOutput(FALSE);
+ rGDIMetaFile.Record(pVirDev);
+
+ pPict->SetNumberFormatInt(NUMBERFORMAT_INT_BIGENDIAN);
+
+ nStartPos=pPict->Tell();
+ nEndPos=pPict->Seek(STREAM_SEEK_TO_END); pPict->Seek(nStartPos);
+ Callback(0); nLastPercent=0;
+
+ ReadHeader();
+
+ aPenPosition=Point(-aBoundingRect.Left(),-aBoundingRect.Top());
+ aTextPosition=aPenPosition;
+
+ nPos=pPict->Tell();
+
+ for (;;) {
+
+ nPercent=(nPos-nStartPos)*100/(nEndPos-nStartPos);
+ if (nLastPercent+4<=nPercent) {
+ if (Callback((USHORT)nPercent)==TRUE) break;
+ nLastPercent=nPercent;
+ }
+
+ if (IsVersion2 )
+ *pPict >> nOpcode;
+ else
+ {
+ *pPict >> nOneByteOpcode;
+ nOpcode=(USHORT)nOneByteOpcode;
+ }
+
+ if (pPict->GetError())
+ break;
+
+ if (pPict->IsEof())
+ {
+ pPict->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ break;
+ }
+
+ if (nOpcode==0x00ff)
+ break;
+
+ nSize=ReadData(nOpcode);
+
+ if ( IsVersion2 )
+ {
+ if ( nSize & 1 )
+ nSize++;
+
+ nPos+=2+nSize;
+ }
+ else
+ nPos+=1+nSize;
+
+ pPict->Seek(nPos);
+ }
+
+ rGDIMetaFile.Stop();
+ delete pVirDev;
+
+ rGDIMetaFile.SetPrefMapMode( MapMode( MAP_INCH, Point(), aHRes, aVRes ) );
+ rGDIMetaFile.SetPrefSize( aBoundingRect.GetSize() );
+
+ pPict->SetNumberFormatInt(nOrigNumberFormat);
+
+ if (pPict->GetError()) pPict->Seek(nOrigPos);
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport( SvStream& rIStm, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ GDIMetaFile aMTF;
+ PictReader aPictReader;
+ BOOL bRet = FALSE;
+
+ aPictReader.ReadPict( rIStm, aMTF );
+
+ if ( !rIStm.GetError() )
+ {
+ rGraphic = Graphic( aMTF );
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/ipict/makefile.mk b/filter/source/graphicfilter/ipict/makefile.mk
new file mode 100644
index 000000000000..679fd79951ac
--- /dev/null
+++ b/filter/source/graphicfilter/ipict/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ipict
+DEPTARGET=vipict
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ipict.obj
+
+# ==========================================================================
+
+SHL1TARGET= ipt$(DLLPOSTFIX)
+SHL1IMPLIB= ipict
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/ipict.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ipict.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
+
diff --git a/filter/source/graphicfilter/ipsd/exports.map b/filter/source/graphicfilter/ipsd/exports.map
new file mode 100644
index 000000000000..b2cda91bec78
--- /dev/null
+++ b/filter/source/graphicfilter/ipsd/exports.map
@@ -0,0 +1,7 @@
+PSDIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/ipsd/ipsd.cxx b/filter/source/graphicfilter/ipsd/ipsd.cxx
new file mode 100644
index 000000000000..70cd1ab13f29
--- /dev/null
+++ b/filter/source/graphicfilter/ipsd/ipsd.cxx
@@ -0,0 +1,763 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+
+//============================ PSDReader ==================================
+
+#define PSD_BITMAP 0
+#define PSD_GRAYSCALE 1
+#define PSD_INDEXED 2
+#define PSD_RGB 3
+#define PSD_CMYK 4
+#define PSD_MULTICHANNEL 7
+#define PSD_DUOTONE 8
+#define PSD_LAB 9
+
+typedef struct
+{
+ UINT32 nSignature;
+ UINT16 nVersion;
+ UINT32 nPad1;
+ UINT16 nPad2;
+ UINT16 nChannels;
+ UINT32 nRows;
+ UINT32 nColumns;
+ UINT16 nDepth;
+ UINT16 nMode;
+
+} PSDFileHeader;
+
+class PSDReader {
+
+private:
+
+ SvStream* mpPSD; // Die einzulesende PSD-Datei
+ PSDFileHeader* mpFileHeader;
+
+ sal_uInt32 mnXResFixed;
+ sal_uInt32 mnYResFixed;
+
+ sal_Bool mbStatus;
+ sal_Bool mbTransparent;
+
+ Bitmap maBmp;
+ Bitmap maMaskBmp;
+ BitmapReadAccess* mpReadAcc;
+ BitmapWriteAccess* mpWriteAcc;
+ BitmapWriteAccess* mpMaskWriteAcc;
+ USHORT mnDestBitDepth;
+ BOOL mbCompression; // RLE decoding
+ BYTE* mpPalette;
+
+ BOOL ImplReadBody();
+ BOOL ImplReadHeader();
+
+public:
+ PSDReader();
+ ~PSDReader();
+ BOOL ReadPSD( SvStream & rPSD, Graphic & rGraphic );
+};
+
+//=================== Methoden von PSDReader ==============================
+
+PSDReader::PSDReader() :
+ mpFileHeader ( NULL ),
+ mnXResFixed ( 0 ),
+ mnYResFixed ( 0 ),
+ mbStatus ( TRUE ),
+ mbTransparent ( FALSE ),
+ mpReadAcc ( NULL ),
+ mpWriteAcc ( NULL ),
+ mpMaskWriteAcc ( NULL ),
+ mpPalette ( NULL )
+{
+}
+
+PSDReader::~PSDReader()
+{
+ delete[] mpPalette;
+ delete mpFileHeader;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PSDReader::ReadPSD( SvStream & rPSD, Graphic & rGraphic )
+{
+ if ( rPSD.GetError() )
+ return FALSE;
+
+ mpPSD = &rPSD;
+ mpPSD->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ // Kopf einlesen:
+
+ if ( ImplReadHeader() == FALSE )
+ return FALSE;
+
+ Size aBitmapSize( mpFileHeader->nColumns, mpFileHeader->nRows );
+ maBmp = Bitmap( aBitmapSize, mnDestBitDepth );
+ if ( ( mpWriteAcc = maBmp.AcquireWriteAccess() ) == NULL )
+ mbStatus = FALSE;
+ if ( ( mpReadAcc = maBmp.AcquireReadAccess() ) == NULL )
+ mbStatus = FALSE;
+ if ( mbTransparent && mbStatus )
+ {
+ maMaskBmp = Bitmap( aBitmapSize, 1 );
+ if ( ( mpMaskWriteAcc = maMaskBmp.AcquireWriteAccess() ) == NULL )
+ mbStatus = FALSE;
+ }
+ if ( mpPalette && mbStatus )
+ {
+ mpWriteAcc->SetPaletteEntryCount( 256 );
+ for ( USHORT i = 0; i < 256; i++ )
+ {
+ mpWriteAcc->SetPaletteColor( i, Color( mpPalette[ i ], mpPalette[ i + 256 ], mpPalette[ i + 512 ] ) );
+ }
+ }
+ // Bitmap-Daten einlesen
+ if ( mbStatus && ImplReadBody() )
+ {
+ if ( mbTransparent )
+ rGraphic = Graphic( BitmapEx( maBmp, maMaskBmp ) );
+ else
+ rGraphic = maBmp;
+
+ if ( mnXResFixed && mnYResFixed )
+ {
+ Point aEmptyPoint;
+ Fraction aFractX( 1, mnXResFixed >> 16 );
+ Fraction aFractY( 1, mnYResFixed >> 16 );
+ MapMode aMapMode( MAP_INCH, aEmptyPoint, aFractX, aFractY );
+ Size aPrefSize = OutputDevice::LogicToLogic( aBitmapSize, aMapMode, MAP_100TH_MM );
+ rGraphic.SetPrefSize( aPrefSize );
+ rGraphic.SetPrefMapMode( MapMode( MAP_100TH_MM ) );
+ }
+ }
+ else
+ mbStatus = FALSE;
+ if ( mpWriteAcc )
+ maBmp.ReleaseAccess( mpWriteAcc );
+ if ( mpReadAcc )
+ maBmp.ReleaseAccess( mpReadAcc );
+ if ( mpMaskWriteAcc )
+ maMaskBmp.ReleaseAccess( mpMaskWriteAcc );
+ return mbStatus;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PSDReader::ImplReadHeader()
+{
+ UINT16 nCompression;
+ UINT32 nColorLength, nResourceLength, nLayerMaskLength;
+
+ mpFileHeader = new PSDFileHeader;
+
+ if ( !mpFileHeader )
+ return FALSE;
+
+ *mpPSD >> mpFileHeader->nSignature >> mpFileHeader->nVersion >> mpFileHeader->nPad1 >>
+ mpFileHeader->nPad2 >> mpFileHeader->nChannels >> mpFileHeader->nRows >>
+ mpFileHeader->nColumns >> mpFileHeader->nDepth >> mpFileHeader->nMode;
+
+ if ( ( mpFileHeader->nSignature != 0x38425053 ) || ( mpFileHeader->nVersion != 1 ) )
+ return FALSE;
+
+ if ( mpFileHeader->nRows == 0 || mpFileHeader->nColumns == 0 )
+ return FALSE;
+
+ if ( ( mpFileHeader->nRows > 30000 ) || ( mpFileHeader->nColumns > 30000 ) )
+ return FALSE;
+
+ UINT16 nDepth = mpFileHeader->nDepth;
+ if (!( ( nDepth == 1 ) || ( nDepth == 8 ) || ( nDepth == 16 ) ) )
+ return FALSE;
+
+ mnDestBitDepth = ( nDepth == 16 ) ? 8 : nDepth;
+
+ *mpPSD >> nColorLength;
+ if ( mpFileHeader->nMode == PSD_CMYK )
+ {
+ switch ( mpFileHeader->nChannels )
+ {
+ case 5 :
+ mbTransparent = TRUE;
+ case 4 :
+ mnDestBitDepth = 24;
+ break;
+ default :
+ return FALSE;
+ }
+ }
+ else switch ( mpFileHeader->nChannels )
+ {
+ case 2 :
+ mbTransparent = TRUE;
+ case 1 :
+ break;
+ case 4 :
+ mbTransparent = TRUE;
+ case 3 :
+ mnDestBitDepth = 24;
+ break;
+ default:
+ return FALSE;
+ }
+
+ switch ( mpFileHeader->nMode )
+ {
+ case PSD_BITMAP :
+ {
+ if ( nColorLength || ( nDepth != 1 ) )
+ return FALSE;
+ }
+ break;
+
+ case PSD_INDEXED :
+ {
+ if ( nColorLength != 768 ) // we need the color map
+ return FALSE;
+ mpPalette = new BYTE[ 768 ];
+ if ( mpPalette == NULL )
+ return FALSE;
+ mpPSD->Read( mpPalette, 768 );
+ }
+ break;
+
+ case PSD_DUOTONE : // we'll handle the doutone color like a normal grayscale picture
+ mpPSD->SeekRel( nColorLength );
+ nColorLength = 0;
+ case PSD_GRAYSCALE :
+ {
+ if ( nColorLength )
+ return FALSE;
+ mpPalette = new BYTE[ 768 ];
+ if ( mpPalette == NULL )
+ return FALSE;
+ for ( USHORT i = 0; i < 256; i++ )
+ {
+ mpPalette[ i ] = mpPalette[ i + 256 ] = mpPalette[ i + 512 ] = (BYTE)i;
+ }
+ }
+ break;
+
+ case PSD_CMYK :
+ case PSD_RGB :
+ case PSD_MULTICHANNEL :
+ case PSD_LAB :
+ {
+ if ( nColorLength ) // color table is not supported by the other graphic modes
+ return FALSE;
+ }
+ break;
+
+ default:
+ return FALSE;
+ }
+ *mpPSD >> nResourceLength;
+ sal_uInt32 nLayerPos = mpPSD->Tell() + nResourceLength;
+
+ // this is a loop over the resource entries to get the resolution info
+ while( mpPSD->Tell() < nLayerPos )
+ {
+ sal_uInt8 n8;
+ sal_uInt32 nType, nPStringLen, nResEntryLen;
+ sal_uInt16 nUniqueID;
+
+ *mpPSD >> nType >> nUniqueID >> n8;
+ nPStringLen = n8;
+ if ( nType != 0x3842494d )
+ break;
+ if ( ! ( nPStringLen & 1 ) )
+ nPStringLen++;
+ mpPSD->SeekRel( nPStringLen ); // skipping the pstring
+ *mpPSD >> nResEntryLen;
+ if ( nResEntryLen & 1 )
+ nResEntryLen++; // the resource entries are padded
+ sal_uInt32 nCurrentPos = mpPSD->Tell();
+ if ( ( nResEntryLen + nCurrentPos ) > nLayerPos ) // check if size
+ break; // is possible
+ switch( nUniqueID )
+ {
+ case 0x3ed : // UID for the resolution info
+ {
+ sal_Int16 nUnit;
+
+ *mpPSD >> mnXResFixed >> nUnit >> nUnit
+ >> mnYResFixed >> nUnit >> nUnit;
+ }
+ break;
+ }
+ mpPSD->Seek( nCurrentPos + nResEntryLen ); // set the stream to the next
+ } // resource entry
+ mpPSD->Seek( nLayerPos );
+ *mpPSD >> nLayerMaskLength;
+ mpPSD->SeekRel( nLayerMaskLength );
+
+ *mpPSD >> nCompression;
+ if ( nCompression == 0 )
+ {
+ mbCompression = FALSE;
+ }
+ else if ( nCompression == 1 )
+ {
+ mpPSD->SeekRel( ( mpFileHeader->nRows * mpFileHeader->nChannels ) << 1 );
+ mbCompression = TRUE;
+ }
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
+// ------------------------------------------------------------------------
+
+BOOL PSDReader::ImplReadBody()
+{
+ ULONG nX, nY;
+ char nRunCount = 0;
+ signed char nBitCount = -1;
+ BYTE nDat = 0, nDummy, nRed, nGreen, nBlue;
+ BitmapColor aBitmapColor;
+ nX = nY = 0;
+
+ switch ( mnDestBitDepth )
+ {
+ case 1 :
+ {
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( nBitCount == -1 )
+ {
+ if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
+ *mpPSD >> nRunCount;
+ }
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ if ( nBitCount == -1 ) // bits left in nDat ?
+ {
+ *mpPSD >> nDat;
+ nDat ^= 0xff;
+ nBitCount = 7;
+ }
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat >> nBitCount-- );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ nBitCount = -1;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ if ( nBitCount == -1 ) // bits left in nDat ?
+ {
+ *mpPSD >> nDat;
+ nDat ^= 0xff;
+ nBitCount = 7;
+ }
+ mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat >> nBitCount-- );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ nBitCount = -1;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case 8 :
+ {
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
+ *mpPSD >> nRunCount;
+
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpPSD >> nDat;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpPSD >> nDat;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ mpWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case 24 :
+ {
+
+ // the psd format is in plain order (RRRR GGGG BBBB) so we have to set each pixel three times
+ // maybe the format is CCCC MMMM YYYY KKKK
+
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
+ *mpPSD >> nRunCount;
+
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpPSD >> nRed;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( nRed, (BYTE)0, (BYTE)0 ) );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpPSD >> nRed;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( nRed, (BYTE)0, (BYTE)0 ) );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+ nY = 0;
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( mbCompression )
+ *mpPSD >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpPSD >> nGreen;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ aBitmapColor = mpReadAcc->GetPixel( nY, nX );
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), nGreen, aBitmapColor.GetBlue() ) );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpPSD >> nGreen;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ aBitmapColor = mpReadAcc->GetPixel( nY, nX );
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), nGreen, aBitmapColor.GetBlue() ) );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+ nY = 0;
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( mbCompression )
+ *mpPSD >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpPSD >> nBlue;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ aBitmapColor = mpReadAcc->GetPixel( nY, nX );
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), aBitmapColor.GetGreen(), nBlue ) );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpPSD >> nBlue;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ aBitmapColor = mpReadAcc->GetPixel( nY, nX );
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( aBitmapColor.GetRed(), aBitmapColor.GetGreen(), nBlue ) );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+ if ( mpFileHeader->nMode == PSD_CMYK )
+ {
+ UINT32 nBlack, nBlackMax = 0;
+ BYTE* pBlack = new BYTE[ mpFileHeader->nRows * mpFileHeader->nColumns ];
+ nY = 0;
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
+ *mpPSD >> nRunCount;
+
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpPSD >> nDat;
+
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetRed() + nDat;
+ if ( nBlack > nBlackMax )
+ nBlackMax = nBlack;
+ nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetGreen() + nDat;
+ if ( nBlack > nBlackMax )
+ nBlackMax = nBlack;
+ nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetBlue() + nDat;
+ if ( nBlack > nBlackMax )
+ nBlackMax = nBlack;
+ pBlack[ nX + nY * mpFileHeader->nColumns ] = nDat ^ 0xff;
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpPSD >> nDat;
+
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetRed() + nDat;
+ if ( nBlack > nBlackMax )
+ nBlackMax = nBlack;
+ nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetGreen() + nDat;
+ if ( nBlack > nBlackMax )
+ nBlackMax = nBlack;
+ nBlack = (BYTE)mpReadAcc->GetPixel( nY, nX ).GetBlue() + nDat;
+ if ( nBlack > nBlackMax )
+ nBlackMax = nBlack;
+ pBlack[ nX + nY * mpFileHeader->nColumns ] = nDat ^ 0xff;
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+
+ for ( nY = 0; nY < mpFileHeader->nRows; nY++ )
+ {
+ for ( nX = 0; nX < mpFileHeader->nColumns; nX++ )
+ {
+ INT32 nDAT = pBlack[ nX + nY * mpFileHeader->nColumns ] * ( nBlackMax - 256 ) / 0x1ff;
+
+ aBitmapColor = mpReadAcc->GetPixel( nY, nX );
+ BYTE cR = (BYTE) MinMax( aBitmapColor.GetRed() - nDAT, 0L, 255L );
+ BYTE cG = (BYTE) MinMax( aBitmapColor.GetGreen() - nDAT, 0L, 255L );
+ BYTE cB = (BYTE) MinMax( aBitmapColor.GetBlue() - nDAT, 0L, 255L );
+ mpWriteAcc->SetPixel( nY, nX, BitmapColor( cR, cG, cB ) );
+ }
+ }
+ delete[] pBlack;
+ }
+ }
+ break;
+ }
+
+ if ( mbTransparent )
+ {
+ // the psd is 24 or 8 bit grafix + alphachannel
+
+ nY = nX = 0;
+ while ( nY < mpFileHeader->nRows )
+ {
+ if ( mbCompression ) // else nRunCount = 0 -> so we use only single raw packets
+ *mpPSD >> nRunCount;
+
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpPSD >> nDat;
+ if ( nDat )
+ nDat = 0;
+ else
+ nDat = 1;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ for ( USHORT i = 0; i < ( -nRunCount + 1 ); i++ )
+ {
+ mpMaskWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpPSD >> nDat;
+ if ( nDat )
+ nDat = 0;
+ else
+ nDat = 1;
+ if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
+ *mpPSD >> nDummy;
+ mpMaskWriteAcc->SetPixel( nY, nX, (BYTE)nDat );
+ if ( ++nX == mpFileHeader->nColumns )
+ {
+ nX = 0;
+ nY++;
+ if ( nY == mpFileHeader->nRows )
+ break;
+ }
+ }
+ }
+ }
+ }
+ return TRUE;
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ PSDReader aPSDReader;
+
+ return aPSDReader.ReadPSD( rStream, rGraphic );
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
diff --git a/filter/source/graphicfilter/ipsd/makefile.mk b/filter/source/graphicfilter/ipsd/makefile.mk
new file mode 100644
index 000000000000..8974563b3791
--- /dev/null
+++ b/filter/source/graphicfilter/ipsd/makefile.mk
@@ -0,0 +1,67 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=ipsd
+DEPTARGET=vipsd
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/ipsd.obj
+
+# ==========================================================================
+
+SHL1TARGET= ipd$(DLLPOSTFIX)
+SHL1IMPLIB= ipsd
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/ipsd.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/ipsd.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/iras/exports.map b/filter/source/graphicfilter/iras/exports.map
new file mode 100644
index 000000000000..ebd8464837fa
--- /dev/null
+++ b/filter/source/graphicfilter/iras/exports.map
@@ -0,0 +1,7 @@
+RASIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/iras/iras.cxx b/filter/source/graphicfilter/iras/iras.cxx
new file mode 100644
index 000000000000..6255dc486537
--- /dev/null
+++ b/filter/source/graphicfilter/iras/iras.cxx
@@ -0,0 +1,383 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+
+#define RAS_TYPE_OLD 0x00000000 // supported formats by this filter
+#define RAS_TYPE_STANDARD 0x00000001
+#define RAS_TYPE_BYTE_ENCODED 0x00000002
+#define RAS_TYPE_RGB_FORMAT 0x00000003
+
+#define RAS_COLOR_NO_MAP 0x00000000
+#define RAS_COLOR_RGB_MAP 0x00000001
+#define RAS_COLOR_RAW_MAP 0x00000002
+
+#define SUNRASTER_MAGICNUMBER 0x59a66a95
+
+//============================ RASReader ==================================
+
+class RASReader {
+
+private:
+
+ SvStream* mpRAS; // Die einzulesende RAS-Datei
+
+ BOOL mbStatus;
+ Bitmap maBmp;
+ BitmapWriteAccess* mpAcc;
+ sal_uInt32 mnWidth, mnHeight; // Bildausmass in Pixeln
+ USHORT mnDstBitsPerPix;
+ USHORT mnDstColors;
+ sal_uInt32 mnDepth, mnImageDatSize, mnType;
+ sal_uInt32 mnColorMapType, mnColorMapSize;
+ BYTE mnRepCount, mnRepVal; // RLE Decoding
+ BOOL mbPalette;
+
+ BOOL ImplReadBody();
+ BOOL ImplReadHeader();
+ BYTE ImplGetByte();
+
+public:
+ RASReader();
+ ~RASReader();
+ BOOL ReadRAS( SvStream & rRAS, Graphic & rGraphic );
+};
+
+//=================== Methoden von RASReader ==============================
+
+RASReader::RASReader() :
+ mbStatus ( TRUE ),
+ mpAcc ( NULL ),
+ mnRepCount ( 0 ),
+ mbPalette ( FALSE )
+{
+}
+
+RASReader::~RASReader()
+{
+}
+
+//----------------------------------------------------------------------------
+
+BOOL RASReader::ReadRAS( SvStream & rRAS, Graphic & rGraphic )
+{
+ UINT32 nMagicNumber;
+
+ if ( rRAS.GetError() )
+ return FALSE;
+
+ mpRAS = &rRAS;
+ mpRAS->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+ *mpRAS >> nMagicNumber;
+ if ( nMagicNumber != SUNRASTER_MAGICNUMBER )
+ return FALSE;
+
+ // Kopf einlesen:
+
+ if ( ( mbStatus = ImplReadHeader() ) == FALSE )
+ return FALSE;
+
+ maBmp = Bitmap( Size( mnWidth, mnHeight ), mnDstBitsPerPix );
+ if ( ( mpAcc = maBmp.AcquireWriteAccess() ) == FALSE )
+ return FALSE;
+
+ if ( mnDstBitsPerPix <= 8 ) // paletten bildchen
+ {
+ if ( mnColorMapType == RAS_COLOR_RAW_MAP ) // RAW Colormap wird geskipped
+ {
+ ULONG nCurPos = mpRAS->Tell();
+ mpRAS->Seek( nCurPos + mnColorMapSize );
+ }
+ else if ( mnColorMapType == RAS_COLOR_RGB_MAP ) // RGB koennen wir auslesen
+ {
+ mnDstColors = (USHORT)( mnColorMapSize / 3 );
+
+ if ( ( 1 << mnDstBitsPerPix ) < mnDstColors )
+ return FALSE;
+
+ if ( ( mnDstColors >= 2 ) && ( ( mnColorMapSize % 3 ) == 0 ) )
+ {
+ mpAcc->SetPaletteEntryCount( mnDstColors );
+ USHORT i;
+ BYTE nRed[256], nGreen[256], nBlue[256];
+ for ( i = 0; i < mnDstColors; i++ ) *mpRAS >> nRed[ i ];
+ for ( i = 0; i < mnDstColors; i++ ) *mpRAS >> nGreen[ i ];
+ for ( i = 0; i < mnDstColors; i++ ) *mpRAS >> nBlue[ i ];
+ for ( i = 0; i < mnDstColors; i++ )
+ {
+ mpAcc->SetPaletteColor( i, BitmapColor( nRed[ i ], nGreen[ i ], nBlue[ i ] ) );
+ }
+ mbPalette = TRUE;
+ }
+ else
+ return FALSE;
+
+ }
+ else if ( mnColorMapType != RAS_COLOR_NO_MAP ) // alles andere ist kein standard
+ return FALSE;
+
+ if ( !mbPalette )
+ {
+ mnDstColors = 1 << mnDstBitsPerPix;
+ mpAcc->SetPaletteEntryCount( mnDstColors );
+ for ( USHORT i = 0; i < mnDstColors; i++ )
+ {
+ ULONG nCount = 255 - ( 255 * i / ( mnDstColors - 1 ) );
+ mpAcc->SetPaletteColor( i, BitmapColor( (BYTE)nCount, (BYTE)nCount, (BYTE)nCount ) );
+ }
+ }
+ }
+ else
+ {
+ if ( mnColorMapType != RAS_COLOR_NO_MAP ) // when graphic has more then 256 colors and a color map we skip
+ { // the colormap
+ ULONG nCurPos = mpRAS->Tell();
+ mpRAS->Seek( nCurPos + mnColorMapSize );
+ }
+ }
+
+ // Bitmap-Daten einlesen
+ mbStatus = ImplReadBody();
+
+ if ( mpAcc )
+ {
+ maBmp.ReleaseAccess( mpAcc ), mpAcc = NULL;
+ }
+ if ( mbStatus )
+ rGraphic = maBmp;
+
+ return mbStatus;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL RASReader::ImplReadHeader()
+{
+ *mpRAS >> mnWidth >> mnHeight >> mnDepth >> mnImageDatSize >>
+ mnType >> mnColorMapType >> mnColorMapSize;
+
+ if ( mnWidth == 0 || mnHeight == 0 )
+ mbStatus = FALSE;
+
+ switch ( mnDepth )
+ {
+ case 24 :
+ case 8 :
+ case 1 :
+ mnDstBitsPerPix = (USHORT)mnDepth;
+ break;
+ case 32 :
+ mnDstBitsPerPix = 24;
+ break;
+
+ default :
+ mbStatus = FALSE;
+ }
+
+ switch ( mnType )
+ {
+ case RAS_TYPE_OLD :
+ case RAS_TYPE_STANDARD :
+ case RAS_TYPE_RGB_FORMAT :
+ case RAS_TYPE_BYTE_ENCODED : // this type will be supported later
+ break;
+
+ default:
+ mbStatus = FALSE;
+ }
+ return mbStatus;
+}
+
+//----------------------------------------------------------------------------
+
+BOOL RASReader::ImplReadBody()
+{
+ ULONG x, y;
+ BYTE nDat = 0;
+ BYTE nRed, nGreen, nBlue;
+ switch ( mnDstBitsPerPix )
+ {
+ case 1 :
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ if (!(x & 7))
+ nDat = ImplGetByte();
+ mpAcc->SetPixel (
+ y, x,
+ sal::static_int_cast< BYTE >(
+ nDat >> ( ( x & 7 ) ^ 7 )) );
+ }
+ if (!( ( x - 1 ) & 0x8 ) ) ImplGetByte(); // WORD ALIGNMENT ???
+ }
+ break;
+
+ case 8 :
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ nDat = ImplGetByte();
+ mpAcc->SetPixel ( y, x, nDat );
+ }
+ if ( x & 1 ) ImplGetByte(); // WORD ALIGNMENT ???
+ }
+ break;
+
+ case 24 :
+ switch ( mnDepth )
+ {
+
+ case 24 :
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ if ( mnType == RAS_TYPE_RGB_FORMAT )
+ {
+ nRed = ImplGetByte();
+ nGreen = ImplGetByte();
+ nBlue = ImplGetByte();
+ }
+ else
+ {
+ nBlue = ImplGetByte();
+ nGreen = ImplGetByte();
+ nRed = ImplGetByte();
+ }
+ mpAcc->SetPixel ( y, x, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ if ( x & 1 ) ImplGetByte(); // WORD ALIGNMENT ???
+ }
+ break;
+
+ case 32 :
+ for ( y = 0; y < mnHeight; y++ )
+ {
+ for ( x = 0; x < mnWidth; x++ )
+ {
+ nDat = ImplGetByte(); // pad byte > nil
+ if ( mnType == RAS_TYPE_RGB_FORMAT )
+ {
+ nRed = ImplGetByte();
+ nGreen = ImplGetByte();
+ nBlue = ImplGetByte();
+ }
+ else
+ {
+ nBlue = ImplGetByte();
+ nGreen = ImplGetByte();
+ nRed = ImplGetByte();
+ }
+ mpAcc->SetPixel ( y, x, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ }
+ break;
+ }
+ break;
+
+ default:
+ mbStatus = FALSE;
+ break;
+ }
+ return mbStatus;
+}
+
+//----------------------------------------------------------------------------
+
+BYTE RASReader::ImplGetByte()
+{
+ BYTE nRetVal;
+ if ( mnType != RAS_TYPE_BYTE_ENCODED )
+ {
+ *mpRAS >> nRetVal;
+ return nRetVal;
+ }
+ else
+ {
+ if ( mnRepCount )
+ {
+ mnRepCount--;
+ return mnRepVal;
+ }
+ else
+ {
+ *mpRAS >> nRetVal;
+ if ( nRetVal != 0x80 )
+ return nRetVal;
+ *mpRAS >> nRetVal;
+ if ( nRetVal == 0 )
+ return 0x80;
+ mnRepCount = nRetVal ;
+ *mpRAS >> mnRepVal;
+ return mnRepVal;
+ }
+ }
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ RASReader aRASReader;
+
+ return aRASReader.ReadRAS( rStream, rGraphic );
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/iras/makefile.mk b/filter/source/graphicfilter/iras/makefile.mk
new file mode 100644
index 000000000000..9585a35f50b8
--- /dev/null
+++ b/filter/source/graphicfilter/iras/makefile.mk
@@ -0,0 +1,67 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=iras
+DEPTARGET=viras
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/iras.obj
+
+# ==========================================================================
+
+SHL1TARGET= ira$(DLLPOSTFIX)
+SHL1IMPLIB= iras
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/iras.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/iras.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/itga/exports.map b/filter/source/graphicfilter/itga/exports.map
new file mode 100644
index 000000000000..cb127f330e5d
--- /dev/null
+++ b/filter/source/graphicfilter/itga/exports.map
@@ -0,0 +1,7 @@
+TGAIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/itga/itga.cxx b/filter/source/graphicfilter/itga/itga.cxx
new file mode 100644
index 000000000000..5dcb5f82ccab
--- /dev/null
+++ b/filter/source/graphicfilter/itga/itga.cxx
@@ -0,0 +1,758 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svtools/fltcall.hxx>
+
+//============================ TGAReader ==================================
+
+struct TGAFileHeader
+{
+ BYTE nImageIDLength;
+ BYTE nColorMapType;
+ BYTE nImageType;
+ UINT16 nColorMapFirstEntryIndex;
+ UINT16 nColorMapLength;
+ BYTE nColorMapEntrySize;
+ UINT16 nColorMapXOrigin;
+ UINT16 nColorMapYOrigin;
+ UINT16 nImageWidth;
+ UINT16 nImageHeight;
+ BYTE nPixelDepth;
+ BYTE nImageDescriptor;
+};
+
+#define SizeOfTGAFileFooter 26
+
+struct TGAFileFooter
+{
+ UINT32 nExtensionFileOffset;
+ UINT32 nDeveloperDirectoryOffset;
+ UINT32 nSignature[4];
+ BYTE nPadByte;
+ BYTE nStringTerminator;
+};
+
+#define SizeOfTGAExtension 495
+
+struct TGAExtension
+{
+ UINT16 nExtensionSize;
+ char sAuthorName[41];
+ char sAuthorComment[324];
+ char sDateTimeStamp[12];
+ char sJobNameID[41];
+ UINT16 nJobTime[3];
+ char sSoftwareID[41];
+ UINT16 nSoftwareVersionNumber;
+ BYTE nSoftwareVersionLetter;
+ UINT32 nKeyColor;
+ UINT16 nPixelAspectRatioNumerator;
+ UINT16 nPixelAspectRatioDeNumerator;
+ UINT16 nGammaValueNumerator;
+ UINT16 nGammaValueDeNumerator;
+ UINT32 nColorCorrectionOffset;
+ UINT32 nPostageStampOffset;
+ UINT32 nScanLineOffset;
+ BYTE nAttributesType;
+};
+
+class TGAReader {
+
+private:
+
+ SvStream* mpTGA;
+
+ BitmapWriteAccess* mpAcc;
+ TGAFileHeader* mpFileHeader;
+ TGAFileFooter* mpFileFooter;
+ TGAExtension* mpExtension;
+ UINT32* mpColorMap;
+
+ BOOL mbStatus;
+
+ ULONG mnTGAVersion; // Enhanced TGA is defined as Version 2.0
+ UINT16 mnDestBitDepth;
+ BOOL mbIndexing; // TRUE if source contains indexing color values
+ BOOL mbEncoding; // TRUE if source is compressed
+
+ BOOL ImplReadHeader();
+ BOOL ImplReadPalette();
+ BOOL ImplReadBody();
+
+public:
+ TGAReader();
+ ~TGAReader();
+ BOOL ReadTGA( SvStream & rTGA, Graphic & rGraphic );
+};
+
+//=================== Methoden von TGAReader ==============================
+
+TGAReader::TGAReader() :
+ mpAcc ( NULL ),
+ mpFileHeader ( NULL ),
+ mpFileFooter ( NULL ),
+ mpExtension ( NULL ),
+ mpColorMap ( NULL ),
+ mbStatus ( TRUE ),
+ mnTGAVersion ( 1 ),
+ mbIndexing ( FALSE ),
+ mbEncoding ( FALSE )
+{
+}
+
+TGAReader::~TGAReader()
+{
+ delete[] mpColorMap;
+ delete mpFileHeader;
+ delete mpExtension;
+ delete mpFileFooter;
+}
+
+// -------------------------------------------------------------------------------------------
+
+BOOL TGAReader::ReadTGA( SvStream & rTGA, Graphic & rGraphic )
+{
+ if ( rTGA.GetError() )
+ return FALSE;
+
+ mpTGA = &rTGA;
+ mpTGA->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ // Kopf einlesen:
+
+ if ( !mpTGA->GetError() )
+ {
+ mbStatus = ImplReadHeader();
+ if ( mbStatus )
+ {
+ Bitmap aBitmap;
+
+ aBitmap = Bitmap( Size( mpFileHeader->nImageWidth, mpFileHeader->nImageHeight ), mnDestBitDepth );
+ mpAcc = aBitmap.AcquireWriteAccess();
+ if ( mpAcc )
+ {
+ if ( mbIndexing )
+ mbStatus = ImplReadPalette();
+ if ( mbStatus )
+ mbStatus = ImplReadBody();
+ }
+ else
+ mbStatus = FALSE;
+
+ if ( mpAcc )
+ aBitmap.ReleaseAccess ( mpAcc), mpAcc = NULL;
+
+ if ( mbStatus )
+ rGraphic = aBitmap;
+ }
+ }
+ return mbStatus;
+}
+
+// -------------------------------------------------------------------------------------------
+
+BOOL TGAReader::ImplReadHeader()
+{
+ mpFileHeader = new TGAFileHeader;
+ if ( mpFileHeader == NULL )
+ return FALSE;
+
+ *mpTGA >> mpFileHeader->nImageIDLength >> mpFileHeader->nColorMapType >> mpFileHeader->nImageType >>
+ mpFileHeader->nColorMapFirstEntryIndex >> mpFileHeader->nColorMapLength >> mpFileHeader->nColorMapEntrySize >>
+ mpFileHeader->nColorMapXOrigin >> mpFileHeader->nColorMapYOrigin >> mpFileHeader->nImageWidth >>
+ mpFileHeader->nImageHeight >> mpFileHeader->nPixelDepth >> mpFileHeader->nImageDescriptor;
+
+ if ( mpFileHeader->nColorMapType > 1 )
+ return FALSE;
+ if ( mpFileHeader->nColorMapType == 1 )
+ mbIndexing = TRUE;
+
+ // first we want to get the version
+ mpFileFooter = new TGAFileFooter; // read the TGA-File-Footer to determine whether
+ if ( mpFileFooter ) // we got an old TGA format or the new one
+ {
+ ULONG nCurStreamPos = mpTGA->Tell();
+ mpTGA->Seek( STREAM_SEEK_TO_END );
+ ULONG nTemp = mpTGA->Tell();
+ mpTGA->Seek( nTemp - SizeOfTGAFileFooter );
+
+ *mpTGA >> mpFileFooter->nExtensionFileOffset >> mpFileFooter->nDeveloperDirectoryOffset >>
+ mpFileFooter->nSignature[0] >> mpFileFooter->nSignature[1] >> mpFileFooter->nSignature[2] >>
+ mpFileFooter->nSignature[3] >> mpFileFooter->nPadByte >> mpFileFooter->nStringTerminator;
+
+ // check for TRUE, VISI, ON-X, FILE in the signatures
+ if ( mpFileFooter->nSignature[ 0 ] == (('T'<<24)|('R'<<16)|('U'<<8)|'E') &&
+ mpFileFooter->nSignature[ 1 ] == (('V'<<24)|('I'<<16)|('S'<<8)|'I') &&
+ mpFileFooter->nSignature[ 2 ] == (('O'<<24)|('N'<<16)|('-'<<8)|'X') &&
+ mpFileFooter->nSignature[ 3 ] == (('F'<<24)|('I'<<16)|('L'<<8)|'E') )
+ {
+ mpExtension = new TGAExtension;
+ if ( mpExtension )
+ {
+ mpTGA->Seek( mpFileFooter->nExtensionFileOffset );
+ *mpTGA >> mpExtension->nExtensionSize;
+ if ( mpExtension->nExtensionSize >= SizeOfTGAExtension )
+ {
+ mnTGAVersion = 2;
+
+ mpTGA->Read( mpExtension->sAuthorName, 41 );
+ mpTGA->Read( mpExtension->sAuthorComment, 324 );
+ mpTGA->Read( mpExtension->sDateTimeStamp, 12 );
+ mpTGA->Read( mpExtension->sJobNameID, 12 );
+ *mpTGA >> mpExtension->sJobNameID[ 0 ] >> mpExtension->sJobNameID[ 1 ] >> mpExtension->sJobNameID[ 2 ];
+ mpTGA->Read( mpExtension->sSoftwareID, 41 );
+ *mpTGA >> mpExtension->nSoftwareVersionNumber >> mpExtension->nSoftwareVersionLetter
+ >> mpExtension->nKeyColor >> mpExtension->nPixelAspectRatioNumerator
+ >> mpExtension->nPixelAspectRatioDeNumerator >> mpExtension->nGammaValueNumerator
+ >> mpExtension->nGammaValueDeNumerator >> mpExtension->nColorCorrectionOffset
+ >> mpExtension->nPostageStampOffset >> mpExtension->nScanLineOffset
+ >> mpExtension->nAttributesType;
+
+ }
+ }
+ }
+ mpTGA->Seek( nCurStreamPos );
+ }
+
+ // using the TGA file specification this was the correct form but adobe photoshop sets nImageDescriptor
+ // equal to nPixelDepth
+ // mnDestBitDepth = mpFileHeader->nPixelDepth - ( mpFileHeader->nImageDescriptor & 0xf );
+ mnDestBitDepth = mpFileHeader->nPixelDepth;
+
+ if ( mnDestBitDepth == 8 ) // this is a patch for grayscale pictures not including a palette
+ mbIndexing = TRUE;
+
+ if ( mnDestBitDepth > 32 ) // maybe the pixeldepth is invalid
+ return FALSE;
+ else if ( mnDestBitDepth > 8 )
+ mnDestBitDepth = 24;
+ else if ( mnDestBitDepth > 4 )
+ mnDestBitDepth = 8;
+ else if ( mnDestBitDepth > 2 )
+ mnDestBitDepth = 4;
+
+ if ( !mbIndexing && ( mnDestBitDepth < 15 ) )
+ return FALSE;
+
+ switch ( mpFileHeader->nImageType )
+ {
+ case 9 : // encoding for colortype 9, 10, 11
+ case 10 :
+ case 11 :
+ mbEncoding = TRUE;
+ break;
+ };
+
+ if ( mpFileHeader->nImageIDLength ) // skip the Image ID
+ mpTGA->SeekRel( mpFileHeader->nImageIDLength );
+
+ return mbStatus;
+}
+
+// -------------------------------------------------------------------------------------------
+
+BOOL TGAReader::ImplReadBody()
+{
+
+ USHORT nXCount, nYCount, nRGB16;
+ BYTE nRed, nGreen, nBlue, nRunCount, nDummy, nDepth;
+
+ // this four variables match the image direction
+ long nY, nYAdd, nX, nXAdd, nXStart;
+
+ nX = nXStart = nY = 0;
+ nXCount = nYCount = 0;
+ nYAdd = nXAdd = 1;
+
+ if ( mpFileHeader->nImageDescriptor & 0x10 )
+ {
+ nX = nXStart = mpFileHeader->nImageWidth - 1;
+ nXAdd -= 2;
+ }
+
+ if ( !(mpFileHeader->nImageDescriptor & 0x20 ) )
+ {
+ nY = mpFileHeader->nImageHeight - 1;
+ nYAdd -=2;
+ }
+
+// nDepth = mpFileHeader->nPixelDepth - ( mpFileHeader->nImageDescriptor & 0xf );
+ nDepth = mpFileHeader->nPixelDepth;
+
+ if ( mbEncoding )
+ {
+ if ( mbIndexing )
+ {
+ switch( nDepth )
+ {
+ // 16 bit encoding + indexing
+ case 16 :
+ while ( nYCount < mpFileHeader->nImageHeight )
+ {
+ *mpTGA >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpTGA >> nRGB16;
+ if ( nRGB16 >= mpFileHeader->nColorMapLength )
+ return FALSE;
+ nRed = (BYTE)( mpColorMap[ nRGB16 ] >> 16 );
+ nGreen = (BYTE)( mpColorMap[ nRGB16 ] >> 8 );
+ nBlue = (BYTE)( mpColorMap[ nRGB16 ] );
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpTGA >> nRGB16;
+ if ( nRGB16 >= mpFileHeader->nColorMapLength )
+ return FALSE;
+ nRed = (BYTE)( mpColorMap[ nRGB16 ] >> 16 );
+ nGreen = (BYTE)( mpColorMap[ nRGB16 ] >> 8 );
+ nBlue = (BYTE)( mpColorMap[ nRGB16 ] );
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ }
+ break;
+
+ // 8 bit encoding + indexing
+ case 8 :
+ while ( nYCount < mpFileHeader->nImageHeight )
+ {
+ *mpTGA >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpTGA >> nDummy;
+ if ( nDummy >= mpFileHeader->nColorMapLength )
+ return FALSE;
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ mpAcc->SetPixel( nY, nX, (BYTE)nDummy );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+
+ *mpTGA >> nDummy;
+ if ( nDummy >= mpFileHeader->nColorMapLength )
+ return FALSE;
+ mpAcc->SetPixel( nY, nX, (BYTE)nDummy );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ }
+ else
+ {
+ switch( nDepth )
+ {
+ // 32 bit transparent true color encoding
+ case 32 :
+ {
+ while ( nYCount < mpFileHeader->nImageHeight )
+ {
+ *mpTGA >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpTGA >> nBlue >> nGreen >> nRed >> nDummy;
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpTGA >> nBlue >> nGreen >> nRed >> nDummy;
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ // 24 bit true color encoding
+ case 24 :
+ while ( nYCount < mpFileHeader->nImageHeight )
+ {
+ *mpTGA >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpTGA >> nBlue >> nGreen >> nRed;
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpTGA >> nBlue >> nGreen >> nRed;
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ }
+ break;
+
+ // 16 bit true color encoding
+ case 16 :
+ while ( nYCount < mpFileHeader->nImageHeight )
+ {
+ *mpTGA >> nRunCount;
+ if ( nRunCount & 0x80 ) // a run length packet
+ {
+ *mpTGA >> nRGB16;
+ nRed = (BYTE)( nRGB16 >> 7 ) & 0xf8;
+ nGreen = (BYTE)( nRGB16 >> 2 ) & 0xf8;
+ nBlue = (BYTE)( nRGB16 << 3 ) & 0xf8;
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ else // a raw packet
+ {
+ for ( USHORT i = 0; i < ( ( nRunCount & 0x7f ) + 1 ); i++ )
+ {
+ *mpTGA >> nRGB16;
+ nRed = (BYTE)( nRGB16 >> 7 ) & 0xf8;
+ nGreen = (BYTE)( nRGB16 >> 2 ) & 0xf8;
+ nBlue = (BYTE)( nRGB16 << 3 ) & 0xf8;
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ nX += nXAdd;
+ nXCount++;
+ if ( nXCount == mpFileHeader->nImageWidth )
+ {
+ nX = nXStart;
+ nXCount = 0;
+ nY += nYAdd;
+ nYCount++;
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ return FALSE;
+ }
+ }
+ }
+ else
+ {
+ for ( nYCount = 0; nYCount < mpFileHeader->nImageHeight; nYCount++, nY += nYAdd )
+ {
+ nX = nXStart;
+ nXCount = 0;
+
+ if ( mbIndexing )
+ {
+ switch( nDepth )
+ {
+ // 16 bit indexing
+ case 16 :
+ for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
+ {
+ *mpTGA >> nRGB16;
+ if ( nRGB16 >= mpFileHeader->nColorMapLength )
+ return FALSE;
+ nRed = (BYTE)( mpColorMap[ nRGB16 ] >> 16 );
+ nGreen = (BYTE)( mpColorMap[ nRGB16 ] >> 8 );
+ nBlue = (BYTE)( mpColorMap[ nRGB16 ] );
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ break;
+
+ // 8 bit indexing
+ case 8 :
+ for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
+ {
+ *mpTGA >> nDummy;
+ if ( nDummy >= mpFileHeader->nColorMapLength )
+ return FALSE;
+ mpAcc->SetPixel( nY, nX, (BYTE)nDummy );
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ }
+ else
+ {
+ switch( nDepth )
+ {
+ // 32 bit true color
+ case 32 :
+ {
+ for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
+ {
+ *mpTGA >> nBlue >> nGreen >> nRed >> nDummy;
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ }
+ break;
+
+ // 24 bit true color
+ case 24 :
+ for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
+ {
+ *mpTGA >> nBlue >> nGreen >> nRed;
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ break;
+
+ // 16 bit true color
+ case 16 :
+ for (;nXCount < mpFileHeader->nImageWidth; nXCount++, nX += nXAdd )
+ {
+ *mpTGA >> nRGB16;
+ nRed = (BYTE)( nRGB16 >> 7 ) & 0xf8;
+ nGreen = (BYTE)( nRGB16 >> 2 ) & 0xf8;
+ nBlue = (BYTE)( nRGB16 << 3 ) & 0xf8;
+ mpAcc->SetPixel( nY, nX, BitmapColor( nRed, nGreen, nBlue ) );
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ }
+ }
+ }
+ return mbStatus;
+}
+
+// -------------------------------------------------------------------------------------------
+
+BOOL TGAReader::ImplReadPalette()
+{
+ if ( mbIndexing ) // read the colormap
+ {
+ USHORT nColors = mpFileHeader->nColorMapLength;
+
+ if ( !nColors ) // colors == 0 ? -> we will build a grayscale palette
+ {
+ if ( mpFileHeader->nPixelDepth != 8 )
+ return FALSE;
+ nColors = 256;
+ mpFileHeader->nColorMapLength = 256;
+ mpFileHeader->nColorMapEntrySize = 0x3f; // patch for the following switch routine
+ }
+ mpColorMap = new UINT32[ nColors ]; // we will always index dwords
+ if ( mpColorMap == FALSE )
+ return FALSE; // out of memory %&!$&/!"�$
+
+ switch( mpFileHeader->nColorMapEntrySize )
+ {
+ case 0x3f :
+ {
+ for ( ULONG i = 0; i < nColors; i++ )
+ {
+ mpColorMap[ i ] = ( i << 16 ) + ( i << 8 ) + i;
+ }
+ }
+ break;
+
+ case 32 :
+ mpTGA->Read( mpColorMap, 4 * nColors );
+ break;
+
+ case 24 :
+ {
+ for ( ULONG i = 0; i < nColors; i++ )
+ {
+ mpTGA->Read( &mpColorMap[ i ], 3 );
+ }
+ }
+ break;
+
+ case 15 :
+ case 16 :
+ {
+ for ( ULONG i = 0; i < nColors; i++ )
+ {
+ UINT16 nTemp;
+ *mpTGA >> nTemp;
+ mpColorMap[ i ] = ( ( nTemp & 0x7c00 ) << 9 ) + ( ( nTemp & 0x01e0 ) << 6 ) +
+ ( ( nTemp & 0x1f ) << 3 );
+ }
+ }
+ break;
+
+ default :
+ return FALSE;
+ }
+ if ( mnDestBitDepth <= 8 )
+ {
+ USHORT nDestColors = ( 1 << mnDestBitDepth );
+ if ( nColors > nDestColors )
+ return FALSE;
+
+ mpAcc->SetPaletteEntryCount( nColors );
+ for ( USHORT i = 0; i < nColors; i++ )
+ {
+ mpAcc->SetPaletteColor( i, Color( (BYTE)( mpColorMap[ i ] >> 16 ),
+ (BYTE)( mpColorMap[ i ] >> 8 ), (BYTE)(mpColorMap[ i ] ) ) );
+ }
+ }
+ }
+
+ return mbStatus;
+}
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ TGAReader aTGAReader;
+
+ return aTGAReader.ReadTGA( rStream, rGraphic );
+}
+
+//================== ein bischen Muell fuer Windows ==========================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
diff --git a/filter/source/graphicfilter/itga/makefile.mk b/filter/source/graphicfilter/itga/makefile.mk
new file mode 100644
index 000000000000..ef810d1708ef
--- /dev/null
+++ b/filter/source/graphicfilter/itga/makefile.mk
@@ -0,0 +1,67 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=itga
+DEPTARGET=vitga
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/itga.obj
+
+# ==========================================================================
+
+SHL1TARGET= itg$(DLLPOSTFIX)
+SHL1IMPLIB= itga
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/itga.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/itga.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/graphicfilter/itiff/ccidecom.cxx b/filter/source/graphicfilter/itiff/ccidecom.cxx
new file mode 100644
index 000000000000..5e9e75cbf815
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/ccidecom.cxx
@@ -0,0 +1,1112 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include "ccidecom.hxx"
+
+//=============================== Huffman-Tabellen ========================
+
+//---------------------------- White-Run ------------------------------
+
+#define CCIWhiteTableSize 105
+
+const CCIHuffmanTableEntry CCIWhiteTable[CCIWhiteTableSize]={
+ { 0, 0x0035, 8 },
+ { 1, 0x0007, 6 },
+ { 2, 0x0007, 4 },
+ { 3, 0x0008, 4 },
+ { 4, 0x000b, 4 },
+ { 5, 0x000c, 4 },
+ { 6, 0x000e, 4 },
+ { 7, 0x000f, 4 },
+ { 8, 0x0013, 5 },
+ { 9, 0x0014, 5 },
+ { 10, 0x0007, 5 },
+ { 11, 0x0008, 5 },
+ { 12, 0x0008, 6 },
+ { 13, 0x0003, 6 },
+ { 14, 0x0034, 6 },
+ { 15, 0x0035, 6 },
+ { 16, 0x002a, 6 },
+ { 17, 0x002b, 6 },
+ { 18, 0x0027, 7 },
+ { 19, 0x000c, 7 },
+ { 20, 0x0008, 7 },
+ { 21, 0x0017, 7 },
+ { 22, 0x0003, 7 },
+ { 23, 0x0004, 7 },
+ { 24, 0x0028, 7 },
+ { 25, 0x002b, 7 },
+ { 26, 0x0013, 7 },
+ { 27, 0x0024, 7 },
+ { 28, 0x0018, 7 },
+ { 29, 0x0002, 8 },
+ { 30, 0x0003, 8 },
+ { 31, 0x001a, 8 },
+ { 32, 0x001b, 8 },
+ { 33, 0x0012, 8 },
+ { 34, 0x0013, 8 },
+ { 35, 0x0014, 8 },
+ { 36, 0x0015, 8 },
+ { 37, 0x0016, 8 },
+ { 38, 0x0017, 8 },
+ { 39, 0x0028, 8 },
+ { 40, 0x0029, 8 },
+ { 41, 0x002a, 8 },
+ { 42, 0x002b, 8 },
+ { 43, 0x002c, 8 },
+ { 44, 0x002d, 8 },
+ { 45, 0x0004, 8 },
+ { 46, 0x0005, 8 },
+ { 47, 0x000a, 8 },
+ { 48, 0x000b, 8 },
+ { 49, 0x0052, 8 },
+ { 50, 0x0053, 8 },
+ { 51, 0x0054, 8 },
+ { 52, 0x0055, 8 },
+ { 53, 0x0024, 8 },
+ { 54, 0x0025, 8 },
+ { 55, 0x0058, 8 },
+ { 56, 0x0059, 8 },
+ { 57, 0x005a, 8 },
+ { 58, 0x005b, 8 },
+ { 59, 0x004a, 8 },
+ { 60, 0x004b, 8 },
+ { 61, 0x0032, 8 },
+ { 62, 0x0033, 8 },
+ { 63, 0x0034, 8 },
+ { 64, 0x001b, 5 },
+ { 128, 0x0012, 5 },
+ { 192, 0x0017, 6 },
+ { 256, 0x0037, 7 },
+ { 320, 0x0036, 8 },
+ { 384, 0x0037, 8 },
+ { 448, 0x0064, 8 },
+ { 512, 0x0065, 8 },
+ { 576, 0x0068, 8 },
+ { 640, 0x0067, 8 },
+ { 704, 0x00cc, 9 },
+ { 768, 0x00cd, 9 },
+ { 832, 0x00d2, 9 },
+ { 896, 0x00d3, 9 },
+ { 960, 0x00d4, 9 },
+ { 1024, 0x00d5, 9 },
+ { 1088, 0x00d6, 9 },
+ { 1152, 0x00d7, 9 },
+ { 1216, 0x00d8, 9 },
+ { 1280, 0x00d9, 9 },
+ { 1344, 0x00da, 9 },
+ { 1408, 0x00db, 9 },
+ { 1472, 0x0098, 9 },
+ { 1536, 0x0099, 9 },
+ { 1600, 0x009a, 9 },
+ { 1664, 0x0018, 6 },
+ { 1728, 0x009b, 9 },
+ { 1792, 0x0008, 11 },
+ { 1856, 0x000c, 11 },
+ { 1920, 0x000d, 11 },
+ { 1984, 0x0012, 12 },
+ { 2048, 0x0013, 12 },
+ { 2112, 0x0014, 12 },
+ { 2176, 0x0015, 12 },
+ { 2240, 0x0016, 12 },
+ { 2304, 0x0017, 12 },
+ { 2368, 0x001c, 12 },
+ { 2432, 0x001d, 12 },
+ { 2496, 0x001e, 12 },
+ { 2560, 0x001f, 12 },
+ { 9999, 0x0001, 12 } // EOL
+};
+
+//---------------------------- Black-Run ------------------------------
+
+#define CCIBlackTableSize 105
+
+const CCIHuffmanTableEntry CCIBlackTable[CCIBlackTableSize]={
+ { 0, 0x0037, 10 },
+ { 1, 0x0002, 3 },
+ { 2, 0x0003, 2 },
+ { 3, 0x0002, 2 },
+ { 4, 0x0003, 3 },
+ { 5, 0x0003, 4 },
+ { 6, 0x0002, 4 },
+ { 7, 0x0003, 5 },
+ { 8, 0x0005, 6 },
+ { 9, 0x0004, 6 },
+ { 10, 0x0004, 7 },
+ { 11, 0x0005, 7 },
+ { 12, 0x0007, 7 },
+ { 13, 0x0004, 8 },
+ { 14, 0x0007, 8 },
+ { 15, 0x0018, 9 },
+ { 16, 0x0017, 10 },
+ { 17, 0x0018, 10 },
+ { 18, 0x0008, 10 },
+ { 19, 0x0067, 11 },
+ { 20, 0x0068, 11 },
+ { 21, 0x006c, 11 },
+ { 22, 0x0037, 11 },
+ { 23, 0x0028, 11 },
+ { 24, 0x0017, 11 },
+ { 25, 0x0018, 11 },
+ { 26, 0x00ca, 12 },
+ { 27, 0x00cb, 12 },
+ { 28, 0x00cc, 12 },
+ { 29, 0x00cd, 12 },
+ { 30, 0x0068, 12 },
+ { 31, 0x0069, 12 },
+ { 32, 0x006a, 12 },
+ { 33, 0x006b, 12 },
+ { 34, 0x00d2, 12 },
+ { 35, 0x00d3, 12 },
+ { 36, 0x00d4, 12 },
+ { 37, 0x00d5, 12 },
+ { 38, 0x00d6, 12 },
+ { 39, 0x00d7, 12 },
+ { 40, 0x006c, 12 },
+ { 41, 0x006d, 12 },
+ { 42, 0x00da, 12 },
+ { 43, 0x00db, 12 },
+ { 44, 0x0054, 12 },
+ { 45, 0x0055, 12 },
+ { 46, 0x0056, 12 },
+ { 47, 0x0057, 12 },
+ { 48, 0x0064, 12 },
+ { 49, 0x0065, 12 },
+ { 50, 0x0052, 12 },
+ { 51, 0x0053, 12 },
+ { 52, 0x0024, 12 },
+ { 53, 0x0037, 12 },
+ { 54, 0x0038, 12 },
+ { 55, 0x0027, 12 },
+ { 56, 0x0028, 12 },
+ { 57, 0x0058, 12 },
+ { 58, 0x0059, 12 },
+ { 59, 0x002b, 12 },
+ { 60, 0x002c, 12 },
+ { 61, 0x005a, 12 },
+ { 62, 0x0066, 12 },
+ { 63, 0x0067, 12 },
+ { 64, 0x000f, 10 },
+ { 128, 0x00c8, 12 },
+ { 192, 0x00c9, 12 },
+ { 256, 0x005b, 12 },
+ { 320, 0x0033, 12 },
+ { 384, 0x0034, 12 },
+ { 448, 0x0035, 12 },
+ { 512, 0x006c, 13 },
+ { 576, 0x006d, 13 },
+ { 640, 0x004a, 13 },
+ { 704, 0x004b, 13 },
+ { 768, 0x004c, 13 },
+ { 832, 0x004d, 13 },
+ { 896, 0x0072, 13 },
+ { 960, 0x0073, 13 },
+ { 1024, 0x0074, 13 },
+ { 1088, 0x0075, 13 },
+ { 1152, 0x0076, 13 },
+ { 1216, 0x0077, 13 },
+ { 1280, 0x0052, 13 },
+ { 1344, 0x0053, 13 },
+ { 1408, 0x0054, 13 },
+ { 1472, 0x0055, 13 },
+ { 1536, 0x005a, 13 },
+ { 1600, 0x005b, 13 },
+ { 1664, 0x0064, 13 },
+ { 1728, 0x0065, 13 },
+ { 1792, 0x0008, 11 },
+ { 1856, 0x000c, 11 },
+ { 1920, 0x000d, 11 },
+ { 1984, 0x0012, 12 },
+ { 2048, 0x0013, 12 },
+ { 2112, 0x0014, 12 },
+ { 2176, 0x0015, 12 },
+ { 2240, 0x0016, 12 },
+ { 2304, 0x0017, 12 },
+ { 2368, 0x001c, 12 },
+ { 2432, 0x001d, 12 },
+ { 2496, 0x001e, 12 },
+ { 2560, 0x001f, 12 },
+ { 9999, 0x0001, 12 } // EOL
+};
+
+
+//---------------------------- 2D-Mode --------------------------------
+
+#define CCI2DMODE_UNCOMP 0
+#define CCI2DMODE_PASS 1
+#define CCI2DMODE_HORZ 2
+#define CCI2DMODE_VERT_L3 3
+#define CCI2DMODE_VERT_L2 4
+#define CCI2DMODE_VERT_L1 5
+#define CCI2DMODE_VERT_0 6
+#define CCI2DMODE_VERT_R1 7
+#define CCI2DMODE_VERT_R2 8
+#define CCI2DMODE_VERT_R3 9
+
+#define CCI2DModeTableSize 10
+
+const CCIHuffmanTableEntry CCI2DModeTable[CCI2DModeTableSize]={
+ { CCI2DMODE_UNCOMP , 0x000f, 10 },
+ { CCI2DMODE_PASS , 0x0001, 4 },
+ { CCI2DMODE_HORZ , 0x0001, 3 },
+ { CCI2DMODE_VERT_L3, 0x0002, 7 },
+ { CCI2DMODE_VERT_L2, 0x0002, 6 },
+ { CCI2DMODE_VERT_L1, 0x0002, 3 },
+ { CCI2DMODE_VERT_0 , 0x0001, 1 },
+ { CCI2DMODE_VERT_R1, 0x0003, 3 },
+ { CCI2DMODE_VERT_R2, 0x0003, 6 },
+ { CCI2DMODE_VERT_R3, 0x0003, 7 }
+};
+
+
+//-------------------------- 2D-Uncompressed-Mode ----------------------
+
+#define CCIUNCOMP_0White_1Black 0
+#define CCIUNCOMP_1White_1Black 1
+#define CCIUNCOMP_2White_1Black 2
+#define CCIUNCOMP_3White_1Black 3
+#define CCIUNCOMP_4White_1Black 4
+#define CCIUNCOMP_5White 5
+#define CCIUNCOMP_0White_End 6
+#define CCIUNCOMP_1White_End 7
+#define CCIUNCOMP_2White_End 8
+#define CCIUNCOMP_3White_End 9
+#define CCIUNCOMP_4White_End 10
+
+#define CCIUncompTableSize 11
+
+const CCIHuffmanTableEntry CCIUncompTable[CCIUncompTableSize]={
+ { CCIUNCOMP_0White_1Black, 0x0001, 1 },
+ { CCIUNCOMP_1White_1Black, 0x0001, 2 },
+ { CCIUNCOMP_2White_1Black, 0x0001, 3 },
+ { CCIUNCOMP_3White_1Black, 0x0001, 4 },
+ { CCIUNCOMP_4White_1Black, 0x0001, 5 },
+ { CCIUNCOMP_5White , 0x0001, 6 },
+ { CCIUNCOMP_0White_End , 0x0001, 7 },
+ { CCIUNCOMP_1White_End , 0x0001, 8 },
+ { CCIUNCOMP_2White_End , 0x0001, 9 },
+ { CCIUNCOMP_3White_End , 0x0001, 10 },
+ { CCIUNCOMP_4White_End , 0x0001, 11 }
+};
+
+
+//================== Sicherheitskopie der Huffman-Tabellen ================
+// Um sicher zugehen, dass die Huffman-Tabellen keine Fehler enthalten,
+// wurden sie zweimal von unterschiedlichen Quellen eingegeben (Uff) und
+// verglichen.
+// Da sich aber im Laufe der Pflege des Source-Codes mal ein Fehler
+// einschleichen koennte (z.B. versehentlicher druck einer Taste im Editor)
+// werden die Tablellen hier weiterhin zweimal aufgefuehrt und zur Laufzeit
+// verglichen. (Wenn der Vergleich fehlschlaegt, liefert CCIDecompressor
+// immer einen Fehler). Das Ganze mag etwas wahnsinnig erscheinen, aber ein Fehler
+// in den Tabellen waere sonst sehr sehr schwer zu erkennen, zumal es
+// unwahrscheinlich ist, dass eine oder mehere Beispieldateien alle Codes
+// durchlaufen.
+
+const CCIHuffmanTableEntry CCIWhiteTableSave[CCIWhiteTableSize]={
+ { 0, 0x0035, 8 },
+ { 1, 0x0007, 6 },
+ { 2, 0x0007, 4 },
+ { 3, 0x0008, 4 },
+ { 4, 0x000b, 4 },
+ { 5, 0x000c, 4 },
+ { 6, 0x000e, 4 },
+ { 7, 0x000f, 4 },
+ { 8, 0x0013, 5 },
+ { 9, 0x0014, 5 },
+ { 10, 0x0007, 5 },
+ { 11, 0x0008, 5 },
+ { 12, 0x0008, 6 },
+ { 13, 0x0003, 6 },
+ { 14, 0x0034, 6 },
+ { 15, 0x0035, 6 },
+ { 16, 0x002a, 6 },
+ { 17, 0x002b, 6 },
+ { 18, 0x0027, 7 },
+ { 19, 0x000c, 7 },
+ { 20, 0x0008, 7 },
+ { 21, 0x0017, 7 },
+ { 22, 0x0003, 7 },
+ { 23, 0x0004, 7 },
+ { 24, 0x0028, 7 },
+ { 25, 0x002b, 7 },
+ { 26, 0x0013, 7 },
+ { 27, 0x0024, 7 },
+ { 28, 0x0018, 7 },
+ { 29, 0x0002, 8 },
+ { 30, 0x0003, 8 },
+ { 31, 0x001a, 8 },
+ { 32, 0x001b, 8 },
+ { 33, 0x0012, 8 },
+ { 34, 0x0013, 8 },
+ { 35, 0x0014, 8 },
+ { 36, 0x0015, 8 },
+ { 37, 0x0016, 8 },
+ { 38, 0x0017, 8 },
+ { 39, 0x0028, 8 },
+ { 40, 0x0029, 8 },
+ { 41, 0x002a, 8 },
+ { 42, 0x002b, 8 },
+ { 43, 0x002c, 8 },
+ { 44, 0x002d, 8 },
+ { 45, 0x0004, 8 },
+ { 46, 0x0005, 8 },
+ { 47, 0x000a, 8 },
+ { 48, 0x000b, 8 },
+ { 49, 0x0052, 8 },
+ { 50, 0x0053, 8 },
+ { 51, 0x0054, 8 },
+ { 52, 0x0055, 8 },
+ { 53, 0x0024, 8 },
+ { 54, 0x0025, 8 },
+ { 55, 0x0058, 8 },
+ { 56, 0x0059, 8 },
+ { 57, 0x005a, 8 },
+ { 58, 0x005b, 8 },
+ { 59, 0x004a, 8 },
+ { 60, 0x004b, 8 },
+ { 61, 0x0032, 8 },
+ { 62, 0x0033, 8 },
+ { 63, 0x0034, 8 },
+ { 64, 0x001b, 5 },
+ { 128, 0x0012, 5 },
+ { 192, 0x0017, 6 },
+ { 256, 0x0037, 7 },
+ { 320, 0x0036, 8 },
+ { 384, 0x0037, 8 },
+ { 448, 0x0064, 8 },
+ { 512, 0x0065, 8 },
+ { 576, 0x0068, 8 },
+ { 640, 0x0067, 8 },
+ { 704, 0x00cc, 9 },
+ { 768, 0x00cd, 9 },
+ { 832, 0x00d2, 9 },
+ { 896, 0x00d3, 9 },
+ { 960, 0x00d4, 9 },
+ { 1024, 0x00d5, 9 },
+ { 1088, 0x00d6, 9 },
+ { 1152, 0x00d7, 9 },
+ { 1216, 0x00d8, 9 },
+ { 1280, 0x00d9, 9 },
+ { 1344, 0x00da, 9 },
+ { 1408, 0x00db, 9 },
+ { 1472, 0x0098, 9 },
+ { 1536, 0x0099, 9 },
+ { 1600, 0x009a, 9 },
+ { 1664, 0x0018, 6 },
+ { 1728, 0x009b, 9 },
+ { 1792, 0x0008, 11 },
+ { 1856, 0x000c, 11 },
+ { 1920, 0x000d, 11 },
+ { 1984, 0x0012, 12 },
+ { 2048, 0x0013, 12 },
+ { 2112, 0x0014, 12 },
+ { 2176, 0x0015, 12 },
+ { 2240, 0x0016, 12 },
+ { 2304, 0x0017, 12 },
+ { 2368, 0x001c, 12 },
+ { 2432, 0x001d, 12 },
+ { 2496, 0x001e, 12 },
+ { 2560, 0x001f, 12 },
+ { 9999, 0x0001, 12 } // EOL
+};
+
+const CCIHuffmanTableEntry CCIBlackTableSave[CCIBlackTableSize]={
+ { 0, 0x0037, 10 },
+ { 1, 0x0002, 3 },
+ { 2, 0x0003, 2 },
+ { 3, 0x0002, 2 },
+ { 4, 0x0003, 3 },
+ { 5, 0x0003, 4 },
+ { 6, 0x0002, 4 },
+ { 7, 0x0003, 5 },
+ { 8, 0x0005, 6 },
+ { 9, 0x0004, 6 },
+ { 10, 0x0004, 7 },
+ { 11, 0x0005, 7 },
+ { 12, 0x0007, 7 },
+ { 13, 0x0004, 8 },
+ { 14, 0x0007, 8 },
+ { 15, 0x0018, 9 },
+ { 16, 0x0017, 10 },
+ { 17, 0x0018, 10 },
+ { 18, 0x0008, 10 },
+ { 19, 0x0067, 11 },
+ { 20, 0x0068, 11 },
+ { 21, 0x006c, 11 },
+ { 22, 0x0037, 11 },
+ { 23, 0x0028, 11 },
+ { 24, 0x0017, 11 },
+ { 25, 0x0018, 11 },
+ { 26, 0x00ca, 12 },
+ { 27, 0x00cb, 12 },
+ { 28, 0x00cc, 12 },
+ { 29, 0x00cd, 12 },
+ { 30, 0x0068, 12 },
+ { 31, 0x0069, 12 },
+ { 32, 0x006a, 12 },
+ { 33, 0x006b, 12 },
+ { 34, 0x00d2, 12 },
+ { 35, 0x00d3, 12 },
+ { 36, 0x00d4, 12 },
+ { 37, 0x00d5, 12 },
+ { 38, 0x00d6, 12 },
+ { 39, 0x00d7, 12 },
+ { 40, 0x006c, 12 },
+ { 41, 0x006d, 12 },
+ { 42, 0x00da, 12 },
+ { 43, 0x00db, 12 },
+ { 44, 0x0054, 12 },
+ { 45, 0x0055, 12 },
+ { 46, 0x0056, 12 },
+ { 47, 0x0057, 12 },
+ { 48, 0x0064, 12 },
+ { 49, 0x0065, 12 },
+ { 50, 0x0052, 12 },
+ { 51, 0x0053, 12 },
+ { 52, 0x0024, 12 },
+ { 53, 0x0037, 12 },
+ { 54, 0x0038, 12 },
+ { 55, 0x0027, 12 },
+ { 56, 0x0028, 12 },
+ { 57, 0x0058, 12 },
+ { 58, 0x0059, 12 },
+ { 59, 0x002b, 12 },
+ { 60, 0x002c, 12 },
+ { 61, 0x005a, 12 },
+ { 62, 0x0066, 12 },
+ { 63, 0x0067, 12 },
+ { 64, 0x000f, 10 },
+ { 128, 0x00c8, 12 },
+ { 192, 0x00c9, 12 },
+ { 256, 0x005b, 12 },
+ { 320, 0x0033, 12 },
+ { 384, 0x0034, 12 },
+ { 448, 0x0035, 12 },
+ { 512, 0x006c, 13 },
+ { 576, 0x006d, 13 },
+ { 640, 0x004a, 13 },
+ { 704, 0x004b, 13 },
+ { 768, 0x004c, 13 },
+ { 832, 0x004d, 13 },
+ { 896, 0x0072, 13 },
+ { 960, 0x0073, 13 },
+ { 1024, 0x0074, 13 },
+ { 1088, 0x0075, 13 },
+ { 1152, 0x0076, 13 },
+ { 1216, 0x0077, 13 },
+ { 1280, 0x0052, 13 },
+ { 1344, 0x0053, 13 },
+ { 1408, 0x0054, 13 },
+ { 1472, 0x0055, 13 },
+ { 1536, 0x005a, 13 },
+ { 1600, 0x005b, 13 },
+ { 1664, 0x0064, 13 },
+ { 1728, 0x0065, 13 },
+ { 1792, 0x0008, 11 },
+ { 1856, 0x000c, 11 },
+ { 1920, 0x000d, 11 },
+ { 1984, 0x0012, 12 },
+ { 2048, 0x0013, 12 },
+ { 2112, 0x0014, 12 },
+ { 2176, 0x0015, 12 },
+ { 2240, 0x0016, 12 },
+ { 2304, 0x0017, 12 },
+ { 2368, 0x001c, 12 },
+ { 2432, 0x001d, 12 },
+ { 2496, 0x001e, 12 },
+ { 2560, 0x001f, 12 },
+ { 9999, 0x0001, 12 } // EOL
+};
+
+
+const CCIHuffmanTableEntry CCI2DModeTableSave[CCI2DModeTableSize]={
+ { CCI2DMODE_UNCOMP , 0x000f, 10 },
+ { CCI2DMODE_PASS , 0x0001, 4 },
+ { CCI2DMODE_HORZ , 0x0001, 3 },
+ { CCI2DMODE_VERT_L3, 0x0002, 7 },
+ { CCI2DMODE_VERT_L2, 0x0002, 6 },
+ { CCI2DMODE_VERT_L1, 0x0002, 3 },
+ { CCI2DMODE_VERT_0 , 0x0001, 1 },
+ { CCI2DMODE_VERT_R1, 0x0003, 3 },
+ { CCI2DMODE_VERT_R2, 0x0003, 6 },
+ { CCI2DMODE_VERT_R3, 0x0003, 7 }
+};
+
+
+const CCIHuffmanTableEntry CCIUncompTableSave[CCIUncompTableSize]={
+ { CCIUNCOMP_0White_1Black, 0x0001, 1 },
+ { CCIUNCOMP_1White_1Black, 0x0001, 2 },
+ { CCIUNCOMP_2White_1Black, 0x0001, 3 },
+ { CCIUNCOMP_3White_1Black, 0x0001, 4 },
+ { CCIUNCOMP_4White_1Black, 0x0001, 5 },
+ { CCIUNCOMP_5White , 0x0001, 6 },
+ { CCIUNCOMP_0White_End , 0x0001, 7 },
+ { CCIUNCOMP_1White_End , 0x0001, 8 },
+ { CCIUNCOMP_2White_End , 0x0001, 9 },
+ { CCIUNCOMP_3White_End , 0x0001, 10 },
+ { CCIUNCOMP_4White_End , 0x0001, 11 }
+};
+
+//=========================================================================
+
+
+CCIDecompressor::CCIDecompressor( ULONG nOpts, UINT32 nImageWidth ) :
+ bTableBad ( FALSE ),
+ bStatus ( FALSE ),
+ pByteSwap ( NULL ),
+ nWidth ( nImageWidth ),
+ nOptions ( nOpts ),
+ pLastLine ( NULL )
+{
+ if ( nOpts & CCI_OPTION_INVERSEBITORDER )
+ {
+ pByteSwap = new BYTE[ 256 ];
+ for ( int i = 0; i < 256; i++ )
+ {
+ pByteSwap[ i ] = sal::static_int_cast< BYTE >(
+ ( i << 7 ) | ( ( i & 2 ) << 5 ) | ( ( i & 4 ) << 3 ) | ( ( i & 8 ) << 1 ) |
+ ( ( i & 16 ) >> 1 ) | ( ( i & 32 ) >> 3 ) | ( ( i & 64 ) >> 5 ) | ( ( i & 128 ) >> 7 ));
+ }
+ }
+
+ pWhiteLookUp =new CCILookUpTableEntry[1<<13];
+ pBlackLookUp =new CCILookUpTableEntry[1<<13];
+ p2DModeLookUp=new CCILookUpTableEntry[1<<10];
+ pUncompLookUp=new CCILookUpTableEntry[1<<11];
+
+ MakeLookUp(CCIWhiteTable,CCIWhiteTableSave,pWhiteLookUp,CCIWhiteTableSize,13);
+ MakeLookUp(CCIBlackTable,CCIBlackTableSave,pBlackLookUp,CCIBlackTableSize,13);
+ MakeLookUp(CCI2DModeTable,CCI2DModeTableSave,p2DModeLookUp,CCI2DModeTableSize,10);
+ MakeLookUp(CCIUncompTable,CCIUncompTableSave,pUncompLookUp,CCIUncompTableSize,11);
+}
+
+
+CCIDecompressor::~CCIDecompressor()
+{
+ delete[] pByteSwap;
+ delete[] pLastLine;
+ delete[] pWhiteLookUp;
+ delete[] pBlackLookUp;
+ delete[] p2DModeLookUp;
+ delete[] pUncompLookUp;
+}
+
+
+void CCIDecompressor::StartDecompression( SvStream & rIStream )
+{
+ pIStream = &rIStream;
+ nInputBitsBufSize = 0;
+ bFirstEOL = TRUE;
+ bStatus = TRUE;
+ nEOLCount = 0;
+
+ if ( bTableBad == TRUE )
+ return;
+}
+
+
+BOOL CCIDecompressor::DecompressScanline( BYTE * pTarget, ULONG nTargetBits )
+{
+ USHORT i;
+ BYTE * pSrc,* pDst;
+ BOOL b2D;
+
+ if ( nEOLCount >= 5 ) // RTC( Return To Controller )
+ return TRUE;
+
+ if ( bStatus == FALSE )
+ return FALSE;
+
+ // Wenn EOL-Codes vorhanden sind, steht der EOL-Code auch vor der ersten Zeile.
+ // (und ich dachte EOL heisst 'End Of Line'...)
+ // Daher lesen wir den EOL-Code immer vor jeder Zeile als erstes ein:
+ if ( nOptions & CCI_OPTION_EOL )
+ {
+ if ( bFirstEOL )
+ {
+ UINT32 nCurPos = pIStream->Tell();
+ UINT16 nOldInputBitsBufSize = nInputBitsBufSize;
+ UINT32 nOldInputBitsBuf = nInputBitsBuf;
+ if ( ReadEOL( 32 ) == FALSE )
+ {
+ nInputBitsBufSize = nOldInputBitsBufSize;
+ nInputBitsBuf = nOldInputBitsBuf;
+ pIStream->Seek( nCurPos );
+ nOptions &=~ CCI_OPTION_EOL; // CCITT Group 3 - Compression Type 2
+ }
+ bFirstEOL = FALSE;
+ }
+ else
+ {
+ if ( ReadEOL( nTargetBits ) == FALSE )
+ {
+ return bStatus;
+ }
+ }
+ }
+
+ if ( nEOLCount >= 5 ) // RTC( Return To Controller )
+ return TRUE;
+
+ // ggf. eine weisse vorherige Zeile herstellen fuer 2D:
+ if ( nOptions & CCI_OPTION_2D )
+ {
+ if ( pLastLine == NULL || nLastLineSize != ( ( nTargetBits + 7 ) >> 3 ) )
+ {
+ if ( pLastLine == NULL )
+ delete[] pLastLine;
+ nLastLineSize = ( nTargetBits + 7 ) >> 3;
+ pLastLine = new BYTE[ nLastLineSize ];
+ pDst = pLastLine;
+ for ( i = 0; i < nLastLineSize; i++ ) *( pDst++ ) = 0x00;
+ }
+ }
+ // ggf. Zeilen-Anfang auf naechste Byte-Grenze runden:
+ if ( nOptions & CCI_OPTION_BYTEALIGNROW )
+ nInputBitsBufSize &= 0xfff8;
+
+ // Ist es eine 2D-Zeile ?:
+ if ( nOptions & CCI_OPTION_2D )
+ {
+ if ( nOptions & CCI_OPTION_EOL )
+ b2D = Read2DTag();
+ else
+ b2D = TRUE;
+ }
+ else
+ b2D = FALSE;
+
+ // Zeile einlesen:
+ if ( b2D )
+ Read2DScanlineData( pTarget, (USHORT)nTargetBits );
+ else
+ Read1DScanlineData( pTarget, (USHORT)nTargetBits );
+
+ // Wenn wir im 2D-Modus sind, muessen wir uns die Zeile merken:
+ if ( nOptions & CCI_OPTION_2D && bStatus == TRUE )
+ {
+ pSrc = pTarget;
+ pDst = pLastLine;
+ for ( i = 0; i < nLastLineSize; i++ ) *(pDst++)=*(pSrc++);
+ }
+
+ if ( pIStream->GetError() )
+ bStatus = FALSE;
+
+ return bStatus;
+}
+
+
+void CCIDecompressor::MakeLookUp(const CCIHuffmanTableEntry * pHufTab,
+ const CCIHuffmanTableEntry * pHufTabSave,
+ CCILookUpTableEntry * pLookUp,
+ USHORT nHuffmanTableSize,
+ USHORT nMaxCodeBits)
+{
+ USHORT i,j,nMinCode,nMaxCode,nLookUpSize,nMask;
+
+ if (bTableBad==TRUE) return;
+
+ nLookUpSize=1<<nMaxCodeBits;
+
+ nMask=0xffff>>(16-nMaxCodeBits);
+
+ for (i=0; i<nLookUpSize; i++) pLookUp[i].nCodeBits=0;
+ for (i=0; i<nHuffmanTableSize; i++) {
+ if ( pHufTab[i].nValue!=pHufTabSave[i].nValue ||
+ pHufTab[i].nCode!=pHufTabSave[i].nCode ||
+ pHufTab[i].nCodeBits!=pHufTabSave[i].nCodeBits ||
+ pHufTab[i].nCodeBits==0 ||
+ pHufTab[i].nCodeBits>nMaxCodeBits )
+ {
+ bTableBad=TRUE;
+ return;
+ }
+ nMinCode = nMask & (pHufTab[i].nCode << (nMaxCodeBits-pHufTab[i].nCodeBits));
+ nMaxCode = nMinCode | (nMask >> pHufTab[i].nCodeBits);
+ for (j=nMinCode; j<=nMaxCode; j++) {
+ if (pLookUp[j].nCodeBits!=0) {
+ bTableBad=TRUE;
+ return;
+ }
+ pLookUp[j].nValue=pHufTab[i].nValue;
+ pLookUp[j].nCodeBits=pHufTab[i].nCodeBits;
+ }
+ }
+}
+
+
+BOOL CCIDecompressor::ReadEOL( UINT32 /*nMaxFillBits*/ )
+{
+ USHORT nCode;
+ BYTE nByte;
+
+ // if (nOptions&CCI_OPTION_BYTEALIGNEOL) nMaxFillBits=7; else nMaxFillBits=0;
+ // Buuuh: Entweder wird die Option in itiff.cxx nicht richtig gesetzt (-> Fehler in Doku)
+ // oder es gibt tatsaechlich gemeine Export-Filter, die immer ein Align machen.
+ // Ausserdem wurden Dateien gefunden, in denen mehr als die maximal 7 noetigen
+ // Fuellbits vor dem EOL-Code stehen. Daher akzeptieren wir nun grundsaetzlich
+ // bis zu 32-Bloedsinn-Bits vor dem EOL-Code:
+ // und ich habe eine Datei gefunden in der bis zu ??? Bloedsinn Bits stehen, zudem ist dort die Bit Reihenfolge verdreht (SJ);
+
+ UINT32 nMaxPos = pIStream->Tell();
+ nMaxPos += nWidth >> 3;
+
+ for ( ;; )
+ {
+ while ( nInputBitsBufSize < 12 )
+ {
+ *pIStream >> nByte;
+ if ( pIStream->IsEof() )
+ return FALSE;
+ if ( pIStream->Tell() > nMaxPos )
+ return FALSE;
+
+ if ( nOptions & CCI_OPTION_INVERSEBITORDER )
+ nByte = pByteSwap[ nByte ];
+ nInputBitsBuf=(nInputBitsBuf<<8) | (ULONG)nByte;
+ nInputBitsBufSize += 8;
+ }
+ nCode = (USHORT)( ( nInputBitsBuf >> ( nInputBitsBufSize - 12 ) ) & 0x0fff );
+ if ( nCode == 0x0001 )
+ {
+ nEOLCount++;
+ nInputBitsBufSize -= 12;
+ break;
+ }
+ else
+ nInputBitsBufSize--;
+ }
+ return TRUE;
+}
+
+
+BOOL CCIDecompressor::Read2DTag()
+{
+ BYTE nByte;
+
+ // Ein Bit einlesen und TRUE liefern, wenn es 0 ist, sonst FALSE
+ if (nInputBitsBufSize==0) {
+ *pIStream >> nByte;
+ if ( nOptions & CCI_OPTION_INVERSEBITORDER )
+ nByte = pByteSwap[ nByte ];
+ nInputBitsBuf=(ULONG)nByte;
+ nInputBitsBufSize=8;
+ }
+ nInputBitsBufSize--;
+ if ( ((nInputBitsBuf>>nInputBitsBufSize)&0x0001) ) return FALSE;
+ else return TRUE;
+}
+
+
+BYTE CCIDecompressor::ReadBlackOrWhite()
+{
+ BYTE nByte;
+
+ // Ein Bit einlesen und 0x00 liefern, wenn es 0 ist, sonst 0xff
+ if (nInputBitsBufSize==0) {
+ *pIStream >> nByte;
+ if ( nOptions & CCI_OPTION_INVERSEBITORDER )
+ nByte = pByteSwap[ nByte ];
+ nInputBitsBuf=(ULONG)nByte;
+ nInputBitsBufSize=8;
+ }
+ nInputBitsBufSize--;
+ if ( ((nInputBitsBuf>>nInputBitsBufSize)&0x0001) ) return 0xff;
+ else return 0x00;
+}
+
+
+USHORT CCIDecompressor::ReadCodeAndDecode(const CCILookUpTableEntry * pLookUp,
+ USHORT nMaxCodeBits)
+{
+ USHORT nCode,nCodeBits;
+ BYTE nByte;
+
+ // Einen Huffman-Code einlesen und dekodieren:
+ while (nInputBitsBufSize<nMaxCodeBits) {
+ *pIStream >> nByte;
+ if ( nOptions & CCI_OPTION_INVERSEBITORDER )
+ nByte = pByteSwap[ nByte ];
+ nInputBitsBuf=(nInputBitsBuf<<8) | (ULONG)nByte;
+ nInputBitsBufSize+=8;
+ }
+ nCode=(USHORT)((nInputBitsBuf>>(nInputBitsBufSize-nMaxCodeBits))
+ &(0xffff>>(16-nMaxCodeBits)));
+ nCodeBits=pLookUp[nCode].nCodeBits;
+ if (nCodeBits==0) bStatus=FALSE;
+ nInputBitsBufSize = nInputBitsBufSize - nCodeBits;
+ return pLookUp[nCode].nValue;
+}
+
+
+void CCIDecompressor::FillBits(BYTE * pTarget, USHORT nTargetBits,
+ USHORT nBitPos, USHORT nNumBits,
+ BYTE nBlackOrWhite)
+{
+ if ( nBitPos >= nTargetBits )
+ return;
+ if ( nBitPos + nNumBits > nTargetBits )
+ nNumBits = nTargetBits - nBitPos;
+
+ pTarget+=nBitPos>>3;
+ nBitPos&=7;
+
+ if (nBlackOrWhite==0x00) *pTarget &= 0xff << (8-nBitPos);
+ else *pTarget |= 0xff >> nBitPos;
+ if (nNumBits>8-nBitPos) {
+ nNumBits-=8-nBitPos;
+ while (nNumBits>=8) {
+ *(++pTarget)=nBlackOrWhite;
+ nNumBits-=8;
+ }
+ if (nNumBits>0) *(++pTarget)=nBlackOrWhite;
+ }
+}
+
+
+USHORT CCIDecompressor::CountBits(const BYTE * pData, USHORT nDataSizeBits,
+ USHORT nBitPos, BYTE nBlackOrWhite)
+{
+ USHORT nPos,nLo;
+ BYTE nData;
+
+ // Hier wird die Anzahl der zusammenhaengenden Bits gezaehlt, die
+ // ab Position nBitPos in pTarget alle die Farbe nBlackOrWhite
+ // (0xff oder 0x00) haben.
+
+ nPos=nBitPos;
+ for (;;) {
+ if (nPos>=nDataSizeBits) {
+ nPos=nDataSizeBits;
+ break;
+ }
+ nData=pData[nPos>>3];
+ nLo=nPos & 7;
+ if ( nLo==0 && nData==nBlackOrWhite) nPos+=8;
+ else {
+ if ( ((nData^nBlackOrWhite) & (0x80 >> nLo))!=0) break;
+ nPos++;
+ }
+ }
+ if (nPos<=nBitPos) return 0;
+ else return nPos-nBitPos;
+}
+
+
+void CCIDecompressor::Read1DScanlineData(BYTE * pTarget, USHORT nTargetBits)
+{
+ USHORT nCode,nCodeBits,nDataBits,nTgtFreeByteBits;
+ BYTE nByte;
+ BYTE nBlackOrWhite; // ist 0xff fuer Black oder 0x00 fuer White
+ BOOL bTerminatingCode;
+
+ // Der erste Code ist immer eine "White-Code":
+ nBlackOrWhite=0x00;
+
+ // Anzahl der Bits, die im Byte *pTarget noch nicht geschrieben sind:
+ nTgtFreeByteBits=8;
+
+ // Schleife ueber Codes aus dem Eingabe-Stream:
+ do {
+
+ // die naechsten 13 Bits nach nCode holen, aber noch nicht
+ // aus dem Eingabe-Buffer loeschen:
+ while (nInputBitsBufSize<13) {
+ *pIStream >> nByte;
+ if ( nOptions & CCI_OPTION_INVERSEBITORDER )
+ nByte = pByteSwap[ nByte ];
+ nInputBitsBuf=(nInputBitsBuf<<8) | (ULONG)nByte;
+ nInputBitsBufSize+=8;
+ }
+ nCode=(USHORT)((nInputBitsBuf>>(nInputBitsBufSize-13))&0x1fff);
+
+ // Anzahl der DatenBits und Anzahl der CodeBits ermitteln:
+ if (nBlackOrWhite) {
+ nCodeBits=pBlackLookUp[nCode].nCodeBits;
+ nDataBits=pBlackLookUp[nCode].nValue;
+ }
+ else {
+ nCodeBits=pWhiteLookUp[nCode].nCodeBits;
+ nDataBits=pWhiteLookUp[nCode].nValue;
+ }
+ // Ist es ein Ungueltiger Code ?
+ if ( nDataBits == 9999 )
+ {
+ return;
+ }
+ if ( nCodeBits == 0 )
+ {
+ return; // das koennen sich jetzt um FuellBits handeln
+ }
+ nEOLCount = 0;
+ // Zuviele Daten ?
+ if (nDataBits>nTargetBits) {
+ // Ja, koennte ein Folge-Fehler durch ungueltigen Code sein,
+ // daher irdenwie weitermachen:
+ nDataBits=nTargetBits;
+ }
+
+ // Ist es ein 'Terminating-Code' ?
+ if (nDataBits<64) bTerminatingCode=TRUE; else bTerminatingCode=FALSE;
+
+ // Die gelesenen Bits aus dem Eingabe-Buffer entfernen:
+ nInputBitsBufSize = nInputBitsBufSize - nCodeBits;
+
+ // Die Anzahl Daten-Bits in die Scanline schreiben:
+ if (nDataBits>0) {
+ nTargetBits = nTargetBits - nDataBits;
+ if (nBlackOrWhite==0x00) *pTarget &= 0xff << nTgtFreeByteBits;
+ else *pTarget |= 0xff >> (8-nTgtFreeByteBits);
+ if (nDataBits<=nTgtFreeByteBits) {
+ if (nDataBits==nTgtFreeByteBits) {
+ pTarget++;
+ nTgtFreeByteBits=8;
+ }
+ else nTgtFreeByteBits = nTgtFreeByteBits - nDataBits;
+ }
+ else {
+ nDataBits = nDataBits - nTgtFreeByteBits;
+ pTarget++;
+ nTgtFreeByteBits=8;
+ while (nDataBits>=8) {
+ *(pTarget++)=nBlackOrWhite;
+ nDataBits-=8;
+ }
+ if (nDataBits>0) {
+ *pTarget=nBlackOrWhite;
+ nTgtFreeByteBits = nTgtFreeByteBits - nDataBits;
+ }
+ }
+ }
+
+ // ggf. Umschaltung Black <-> White:
+ if (bTerminatingCode==TRUE) nBlackOrWhite=~nBlackOrWhite;
+
+ } while (nTargetBits>0 || bTerminatingCode==FALSE);
+}
+
+
+
+void CCIDecompressor::Read2DScanlineData(BYTE * pTarget, USHORT nTargetBits)
+{
+ USHORT n2DMode,nBitPos,nUncomp,nRun,nRun2,nt;
+ BYTE nBlackOrWhite;
+
+ nBlackOrWhite=0x00;
+ nBitPos=0;
+
+ while (nBitPos<nTargetBits && bStatus==TRUE) {
+
+ n2DMode=ReadCodeAndDecode(p2DModeLookUp,10);
+ if (bStatus==FALSE) return;
+
+ if (n2DMode==CCI2DMODE_UNCOMP) {
+ for (;;) {
+ nUncomp=ReadCodeAndDecode(pUncompLookUp,11);
+ if ( nUncomp <= CCIUNCOMP_4White_1Black ) {
+ nRun=nUncomp-CCIUNCOMP_0White_1Black;
+ FillBits(pTarget,nTargetBits,nBitPos,nRun,0x00);
+ nBitPos = nBitPos + nRun;
+ FillBits(pTarget,nTargetBits,nBitPos,1,0xff);
+ nBitPos++;
+ }
+ else if ( nUncomp == CCIUNCOMP_5White ) {
+ FillBits(pTarget,nTargetBits,nBitPos,5,0x00);
+ nBitPos = nBitPos + 5;
+ }
+ else {
+ nRun=nUncomp-CCIUNCOMP_0White_End;
+ FillBits(pTarget,nTargetBits,nBitPos,nRun,0x00);
+ nBitPos = nBitPos + nRun;
+ nBlackOrWhite=ReadBlackOrWhite();
+ break;
+ }
+ }
+ }
+
+ else if (n2DMode==CCI2DMODE_PASS) {
+ if (nBitPos==0 && nBlackOrWhite==0x00 && CountBits(pLastLine,nTargetBits,0,0xff)!=0) nRun=0;
+ else {
+ nRun=CountBits(pLastLine,nTargetBits,nBitPos,~nBlackOrWhite);
+ nRun = nRun + CountBits(pLastLine,nTargetBits,nBitPos+nRun,nBlackOrWhite);
+ }
+ nRun = nRun + CountBits(pLastLine,nTargetBits,nBitPos+nRun,~nBlackOrWhite);
+ FillBits(pTarget,nTargetBits,nBitPos,nRun,nBlackOrWhite);
+ nBitPos = nBitPos + nRun;
+ }
+
+ else if (n2DMode==CCI2DMODE_HORZ) {
+ if (nBlackOrWhite==0x00) {
+ nRun=0;
+ do {
+ nt=ReadCodeAndDecode(pWhiteLookUp,13);
+ nRun = nRun + nt;
+ } while (nt>=64);
+ nRun2=0;
+ do {
+ nt=ReadCodeAndDecode(pBlackLookUp,13);
+ nRun2 = nRun2 + nt;
+ } while (nt>=64);
+ }
+ else {
+ nRun=0;
+ do {
+ nt=ReadCodeAndDecode(pBlackLookUp,13);
+ nRun = nRun + nt;
+ } while (nt>=64);
+ nRun2=0;
+ do {
+ nt=ReadCodeAndDecode(pWhiteLookUp,13);
+ nRun2 = nRun2 + nt;
+ } while (nt>=64);
+ }
+ FillBits(pTarget,nTargetBits,nBitPos,nRun,nBlackOrWhite);
+ nBitPos = nBitPos + nRun;
+ FillBits(pTarget,nTargetBits,nBitPos,nRun2,~nBlackOrWhite);
+ nBitPos = nBitPos + nRun2;
+ }
+
+ else { // Es ist einer der Modi CCI2DMODE_VERT_...
+ if (nBitPos==0 && nBlackOrWhite==0x00 && CountBits(pLastLine,nTargetBits,0,0xff)!=0) nRun=0;
+ else {
+ nRun=CountBits(pLastLine,nTargetBits,nBitPos,~nBlackOrWhite);
+ nRun = nRun + CountBits(pLastLine,nTargetBits,nBitPos+nRun,nBlackOrWhite);
+ }
+ nRun+=n2DMode-CCI2DMODE_VERT_0;
+ FillBits(pTarget,nTargetBits,nBitPos,nRun,nBlackOrWhite);
+ nBitPos = nBitPos + nRun;
+ nBlackOrWhite=~nBlackOrWhite;
+ }
+ }
+}
+
+
diff --git a/filter/source/graphicfilter/itiff/ccidecom.hxx b/filter/source/graphicfilter/itiff/ccidecom.hxx
new file mode 100644
index 000000000000..2543be82d052
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/ccidecom.hxx
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * 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 _CCIDECOM_HXX
+#define _CCIDECOM_HXX
+
+#include <tools/stream.hxx>
+
+
+#define CCI_OPTION_2D 1 // 2D-Komprimierung (statt 1D)
+#define CCI_OPTION_EOL 2 // EOL-Codes am Ende jeder Zeile vorhanden
+#define CCI_OPTION_BYTEALIGNEOL 4 // Fuellbits vor jedem EOL-Code, so dass
+ // Ende von EOL auf Bytes aligend
+#define CCI_OPTION_BYTEALIGNROW 8 // Rows beginnen immer auf Byte-Grenze
+#define CCI_OPTION_INVERSEBITORDER 16
+
+// Eintrag in eine Huffman-Tabelle:
+struct CCIHuffmanTableEntry {
+ USHORT nValue; // Der Daten-Wert.
+ USHORT nCode; // Der Code durch den der Daten-Wert repraesentiert wird.
+ USHORT nCodeBits; // Laenge des Codes in Bits.
+};
+
+
+// Eintrag in eine Hash-Tabelle zur schnellen Dekodierung
+struct CCILookUpTableEntry {
+ USHORT nValue;
+ USHORT nCodeBits;
+};
+
+
+class CCIDecompressor {
+
+public:
+
+ CCIDecompressor( ULONG nOptions, UINT32 nImageWidth );
+ ~CCIDecompressor();
+
+ void StartDecompression( SvStream & rIStream );
+
+ BOOL DecompressScanline(BYTE * pTarget, ULONG nTargetBits );
+
+private:
+
+ void MakeLookUp(const CCIHuffmanTableEntry * pHufTab,
+ const CCIHuffmanTableEntry * pHufTabSave,
+ CCILookUpTableEntry * pLookUp,
+ USHORT nHuffmanTableSize,
+ USHORT nMaxCodeBits);
+
+ BOOL ReadEOL( UINT32 nMaxFillBits );
+
+ BOOL Read2DTag();
+
+ BYTE ReadBlackOrWhite();
+
+ USHORT ReadCodeAndDecode(const CCILookUpTableEntry * pLookUp,
+ USHORT nMaxCodeBits);
+
+ void FillBits(BYTE * pTarget, USHORT nTargetBits,
+ USHORT nBitPos, USHORT nNumBits,
+ BYTE nBlackOrWhite);
+
+ USHORT CountBits(const BYTE * pData, USHORT nDataSizeBits,
+ USHORT nBitPos, BYTE nBlackOrWhite);
+
+ void Read1DScanlineData(BYTE * pTarget, USHORT nTargetBits);
+
+ void Read2DScanlineData(BYTE * pTarget, USHORT nTargetBits);
+
+ BOOL bTableBad;
+
+ BOOL bStatus;
+
+ BYTE* pByteSwap;
+
+ SvStream * pIStream;
+
+ UINT32 nEOLCount;
+
+ UINT32 nWidth;
+
+ ULONG nOptions;
+
+ BOOL bFirstEOL;
+
+ CCILookUpTableEntry * pWhiteLookUp;
+ CCILookUpTableEntry * pBlackLookUp;
+ CCILookUpTableEntry * p2DModeLookUp;
+ CCILookUpTableEntry * pUncompLookUp;
+
+ ULONG nInputBitsBuf;
+ USHORT nInputBitsBufSize;
+
+ BYTE * pLastLine;
+ ULONG nLastLineSize;
+};
+
+
+#endif
+
diff --git a/filter/source/graphicfilter/itiff/exports.map b/filter/source/graphicfilter/itiff/exports.map
new file mode 100644
index 000000000000..983df223406e
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/exports.map
@@ -0,0 +1,7 @@
+TIFIMPORTER_1_0 {
+ global:
+ GraphicImport;
+
+ local:
+ *;
+};
diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
new file mode 100644
index 000000000000..5ad400fc3149
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -0,0 +1,1342 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <vcl/graph.hxx>
+#include <vcl/bmpacc.hxx>
+#ifndef _SV_FLTCALL_HXX
+#include <svtools/fltcall.hxx>
+#endif
+#include <vcl/animate.hxx>
+#include "lzwdecom.hxx"
+#include "ccidecom.hxx"
+
+#define OOODEBUG(str,Num) //(InfoBox(NULL,String(str)+String(" ")+String(Num)).Execute();
+
+namespace {
+
+template< typename T > T BYTESWAP(T nByte) {
+ return ( nByte << 7 ) | ( ( nByte & 2 ) << 5 ) | ( ( nByte & 4 ) << 3 ) |
+ ( ( nByte & 8 ) << 1 ) | ( ( nByte & 16 ) >> 1 ) |
+ ( ( nByte & 32 ) >> 3 ) | ( ( nByte & 64 ) >> 5 ) |
+ ( ( nByte & 128 ) >> 7 );
+}
+
+}
+
+//============================ TIFFReader ==================================
+
+class TIFFReader
+{
+
+private:
+
+ BOOL bStatus; // Ob bisher kein Fehler auftrat
+ Animation aAnimation;
+ ULONG nLastPercent;
+
+ SvStream* pTIFF; // Die einzulesende TIFF-Datei
+ Bitmap aBitmap;
+ BitmapWriteAccess* pAcc;
+ USHORT nDstBitsPerPixel;
+
+ ULONG nOrigPos; // Anfaengliche Position in pTIFF
+ UINT16 nOrigNumberFormat; // Anfaengliches Nummern-Format von pTIFF
+
+
+ UINT16 nDataType;
+ // Daten, die aus dem TIFF-Tags entnommen werden:
+ BOOL bByteSwap; // TRUE wenn bits 0..7 -> 7..0 invertiert werden sollen ( FILLORDER = 2 );
+ BYTE nByte1; // 'I', wenn Format LittleEndian
+
+ ULONG nNewSubFile; //
+ ULONG nSubFile; //
+ ULONG nImageWidth; // Bildbreite in Pixel
+ ULONG nImageLength; // Bildhoehe in Pixel
+ ULONG nBitsPerSample; // Bits pro Pixel pro Ebene
+ ULONG nCompression; // Art der Kompriemierung
+ ULONG nPhotometricInterpretation; //
+ ULONG nThresholding; //
+ ULONG nCellWidth; //
+ ULONG nCellLength; //
+ ULONG nFillOrder; //
+ ULONG* pStripOffsets; // Feld von Offsets zu den Bitmap-Daten-"Strips"
+ ULONG nNumStripOffsets; // Groesse obigen Feldes
+ ULONG nOrientation; //
+ ULONG nSamplesPerPixel; // Anzahl der Ebenen
+ ULONG nRowsPerStrip; // Wenn nicht komprimiert: Zahl der Zeilen pro Strip
+ ULONG* pStripByteCounts; // Wenn komprimiert (bestimmte Art): Groesse der Strips
+ ULONG nNumStripByteCounts; // Anzahl der Eintraege in obiges Feld
+ ULONG nMinSampleValue; //
+ ULONG nMaxSampleValue; //
+ double fXResolution; // X-Aufloesung oder 0.0
+ double fYResolution; // Y-Aufloesung oder 0.0
+ ULONG nPlanarConfiguration; //
+ ULONG nGroup3Options; //
+ ULONG nGroup4Options; //
+ ULONG nResolutionUnit; // Einheit von fX/YResolution: 1=unbekannt, 2(default)=Zoll, 3=cm
+ ULONG nPredictor; //
+ ULONG* pColorMap; // Farb-Palette
+ ULONG nNumColors; // Anzahl Farben in der Farbpalette
+
+ ULONG nPlanes; // Anzahl der Ebenen in der Tiff-Datei
+ ULONG nStripsPerPlane; // Anzahl der Strips pro Ebene
+ ULONG nBytesPerRow; // Bytes pro Zeile pro Ebene in der Tiff-Datei ( unkomprimiert )
+ BYTE* pMap[ 4 ]; // Temporaere Scanline
+
+
+ void MayCallback( ULONG nPercent );
+
+ ULONG DataTypeSize();
+ ULONG ReadIntData();
+ double ReadDoubleData();
+
+ void ReadHeader();
+ void ReadTagData( USHORT nTagType, sal_uInt32 nDataLen );
+
+ BOOL ReadMap( ULONG nMinPercent, ULONG nMaxPercent );
+ // Liesst/dekomprimert die Bitmap-Daten, und fuellt pMap
+
+ ULONG GetBits( const BYTE * pSrc, ULONG nBitsPos, ULONG nBitsCount );
+ // Holt nBitsCount Bits aus pSrc[..] an der Bit-Position nBitsPos
+
+ void MakePalCol( void );
+ // Erzeugt die Bitmap aus der temporaeren Bitmap pMap
+ // und loescht dabei pMap teilweise
+ BOOL ConvertScanline( ULONG nY );
+ // Konvertiert eine Scanline in das Windows-BMP-Format
+
+public:
+
+ TIFFReader() {}
+ ~TIFFReader() {}
+
+ BOOL ReadTIFF( SvStream & rTIFF, Graphic & rGraphic );
+};
+
+//=================== Methoden von TIFFReader ==============================
+
+void TIFFReader::MayCallback( ULONG /*nPercent*/ )
+{
+/*
+ if ( nPercent >= nLastPercent + 3 )
+ {
+ nLastPercent=nPercent;
+ if ( pCallback != NULL && nPercent <= 100 && bStatus == TRUE )
+ {
+ if (((*pCallback)(pCallerData,(USHORT)nPercent)) == TRUE )
+ bStatus = FALSE;
+ }
+ }
+*/
+}
+
+// ---------------------------------------------------------------------------------
+
+ULONG TIFFReader::DataTypeSize()
+{
+ ULONG nSize;
+ switch ( nDataType )
+ {
+ case 1 : // BYTE
+ case 2 : // ACSII
+ case 6 : // SIGNED Byte
+ case 7 : // UNDEFINED
+ nSize = 1;
+ break;
+ case 3 : // UINT16
+ case 8 : // INT16
+ nSize = 2;
+ break;
+ case 4 : // UINT32
+ case 9 : // INT32
+ case 11 : // FLOAT
+ nSize = 4;
+ break;
+ case 5 : // RATIONAL
+ case 10 : // SIGNED RATINAL
+ case 12 : // DOUBLE
+ nSize = 8;
+ break;
+ default:
+ pTIFF->SetError(SVSTREAM_FILEFORMAT_ERROR);
+ nSize=1;
+ }
+ return nSize;
+}
+
+// ---------------------------------------------------------------------------------
+
+ULONG TIFFReader::ReadIntData()
+{
+ double nDOUBLE;
+ float nFLOAT;
+ UINT32 nUINT32a, nUINT32b;
+ INT32 nINT32;
+ UINT16 nUINT16;
+ INT16 nINT16;
+ BYTE nBYTE;
+ char nCHAR;
+
+ switch( nDataType )
+ {
+ case 0 : //??
+ case 1 :
+ case 2 :
+ case 7 :
+ *pTIFF >> nBYTE;
+ nUINT32a = (ULONG)nBYTE;
+ break;
+ case 3 :
+ *pTIFF >> nUINT16;
+ nUINT32a = (ULONG)nUINT16;
+ break;
+ case 9 :
+ case 4 :
+ *pTIFF >> nUINT32a;
+ break;
+ case 5 :
+ *pTIFF >> nUINT32a >> nUINT32b;
+ if ( nUINT32b != 0 )
+ nUINT32a /= nUINT32b;
+ break;
+ case 6 :
+ *pTIFF >> nCHAR;
+ nUINT32a = (INT32)nCHAR;
+ break;
+ case 8 :
+ *pTIFF >> nINT16;
+ nUINT32a = (INT32)nINT16;
+ break;
+ case 10 :
+ *pTIFF >> nUINT32a >> nINT32;
+ if ( nINT32 != 0 )
+ nUINT32a /= nINT32;
+ break;
+ case 11 :
+ *pTIFF >> nFLOAT;
+ nUINT32a = (INT32)nFLOAT;
+ break;
+ case 12 :
+ *pTIFF >> nDOUBLE;
+ nUINT32a = (INT32)nDOUBLE;
+ break;
+ default:
+ *pTIFF >> nUINT32a;
+ break;
+ }
+ return nUINT32a;
+}
+
+// ---------------------------------------------------------------------------------
+
+double TIFFReader::ReadDoubleData()
+{
+ sal_uInt32 nulong;
+ double nd;
+
+ if ( nDataType == 5 )
+ {
+ *pTIFF >> nulong;
+ nd = (double)nulong;
+ *pTIFF >> nulong;
+ if ( nulong != 0 )
+ nd /= (double)nulong;
+ }
+ else
+ nd = (double)ReadIntData();
+ return nd;
+}
+
+// ---------------------------------------------------------------------------------
+
+void TIFFReader::ReadTagData( USHORT nTagType, sal_uInt32 nDataLen)
+{
+ if ( bStatus == FALSE )
+ return;
+
+ switch ( nTagType )
+ {
+ case 0x00fe: // New Sub File
+ nNewSubFile = ReadIntData();
+ OOODEBUG("NewSubFile",nNewSubFile);
+ break;
+
+ case 0x00ff: // Sub File
+ nSubFile = ReadIntData();
+ OOODEBUG("SubFile",nSubFile);
+ break;
+
+ case 0x0100: // Image Width
+ nImageWidth = ReadIntData();
+ OOODEBUG("ImageWidth",nImageWidth);
+ break;
+
+ case 0x0101: // Image Length
+ nImageLength = ReadIntData();
+ OOODEBUG("ImageLength",nImageLength);
+ break;
+
+ case 0x0102: // Bits Per Sample
+ nBitsPerSample = ReadIntData();
+ OOODEBUG("BitsPerSample",nBitsPerSample);
+ break;
+
+ case 0x0103: // Compression
+ nCompression = ReadIntData();
+ OOODEBUG("Compression",nCompression);
+ break;
+
+ case 0x0106: // Photometric Interpreation
+ nPhotometricInterpretation = ReadIntData();
+ OOODEBUG("PhotometricInterpretation",nPhotometricInterpretation);
+ break;
+
+ case 0x0107: // Thresholding
+ nThresholding = ReadIntData();
+ OOODEBUG("Thresholding",nThresholding);
+ break;
+
+ case 0x0108: // Cell Width
+ nCellWidth = ReadIntData();
+ break;
+
+ case 0x0109: // Cell Length
+ nCellLength = ReadIntData();
+ break;
+
+ case 0x010a: // Fill Order
+ nFillOrder = ReadIntData();
+ OOODEBUG("FillOrder",nFillOrder);
+ break;
+
+ case 0x0111: { // Strip Offset(s)
+ ULONG nOldNumSO, i, * pOldSO;
+ pOldSO = pStripOffsets;
+ if ( pOldSO == NULL )
+ nNumStripOffsets = 0;
+ nOldNumSO = nNumStripOffsets;
+ nDataLen += nOldNumSO;
+ if ( ( nDataLen > nOldNumSO ) && ( nDataLen < SAL_MAX_UINT32 / sizeof( sal_uInt32 ) ) )
+ {
+ nNumStripOffsets = nDataLen;
+ try
+ {
+ pStripOffsets = new ULONG[ nNumStripOffsets ];
+ }
+ catch (std::bad_alloc)
+ {
+ pStripOffsets = NULL;
+ nNumStripOffsets = 0;
+ }
+ if ( pStripOffsets )
+ {
+ for ( i = 0; i < nOldNumSO; i++ )
+ pStripOffsets[ i ] = pOldSO[ i ] + nOrigPos;
+ for ( i = nOldNumSO; i < nNumStripOffsets; i++ )
+ pStripOffsets[ i ] = ReadIntData() + nOrigPos;
+ }
+ delete[] pOldSO;
+ }
+ OOODEBUG("StripOffsets (Anzahl:)",nDataLen);
+ break;
+ }
+ case 0x0112: // Orientation
+ nOrientation = ReadIntData();
+ OOODEBUG("Orientation",nOrientation);
+ break;
+
+ case 0x0115: // Samples Per Pixel
+ nSamplesPerPixel = ReadIntData();
+ OOODEBUG("SamplesPerPixel",nSamplesPerPixel);
+ break;
+
+ case 0x0116: // Rows Per Strip
+ nRowsPerStrip = ReadIntData();
+ OOODEBUG("RowsPerStrip",nRowsPerStrip);
+ break;
+
+ case 0x0117: { // Strip Byte Counts
+ ULONG nOldNumSBC, i, * pOldSBC;
+ pOldSBC = pStripByteCounts;
+ if ( pOldSBC == NULL )
+ nNumStripByteCounts = 0; // Sicherheitshalber
+ nOldNumSBC = nNumStripByteCounts;
+ nDataLen += nOldNumSBC;
+ if ( ( nDataLen > nOldNumSBC ) && ( nDataLen < SAL_MAX_UINT32 / sizeof( sal_uInt32 ) ) )
+ {
+ nNumStripByteCounts = nDataLen;
+ try
+ {
+ pStripByteCounts = new ULONG[ nNumStripByteCounts ];
+ }
+ catch (std::bad_alloc)
+ {
+ pStripByteCounts = NULL;
+ nNumStripByteCounts = 0;
+ }
+ if ( pStripByteCounts )
+ {
+ for ( i = 0; i < nOldNumSBC; i++ )
+ pStripByteCounts[ i ] = pOldSBC[ i ];
+ for ( i = nOldNumSBC; i < nNumStripByteCounts; i++)
+ pStripByteCounts[ i ] = ReadIntData();
+ }
+ delete[] pOldSBC;
+ }
+ OOODEBUG("StripByteCounts (Anzahl:)",nDataLen);
+ break;
+ }
+ case 0x0118: // Min Sample Value
+ nMinSampleValue = ReadIntData();
+ OOODEBUG("MinSampleValue",nMinSampleValue);
+ break;
+
+ case 0x0119: // Max Sample Value
+ nMaxSampleValue = ReadIntData();
+ OOODEBUG("MaxSampleValue",nMaxSampleValue);
+ break;
+
+ case 0x011a: // X Resolution
+ fXResolution = ReadDoubleData();
+ break;
+
+ case 0x011b: // Y Resolution
+ fYResolution = ReadDoubleData();
+ break;
+
+ case 0x011c: // Planar Configuration
+ nPlanarConfiguration = ReadIntData();
+ OOODEBUG("PlanarConfiguration",nPlanarConfiguration);
+ break;
+
+ case 0x0124: // Group 3 Options
+ nGroup3Options = ReadIntData();
+ OOODEBUG("Group3Options",nGroup3Options);
+ break;
+
+ case 0x0125: // Group 4 Options
+ nGroup4Options = ReadIntData();
+ OOODEBUG("Group4Options",nGroup4Options);
+ break;
+
+ case 0x0128: // Resolution Unit
+ nResolutionUnit = ReadIntData();
+ break;
+
+ case 0x013d: // Predictor
+ nPredictor = ReadIntData();
+ OOODEBUG("Predictor",nPredictor);
+ break;
+
+ case 0x0140: { // Color Map
+ USHORT nVal;
+ ULONG i;
+ nNumColors= ( 1 << nBitsPerSample );
+ if ( nDataType == 3 && nNumColors <= 256)
+ {
+ pColorMap = new ULONG[ 256 ];
+ for ( i = 0; i < nNumColors; i++ )
+ pColorMap[ i ] = 0;
+ for ( i = 0; i < nNumColors; i++ )
+ {
+ *pTIFF >> nVal;
+ pColorMap[ i ] |= ( ( (ULONG)nVal ) << 8 ) & 0x00ff0000;
+ }
+ for ( i = 0; i < nNumColors; i++ )
+ {
+ *pTIFF >> nVal;
+ pColorMap[ i ] |= ( (ULONG)nVal ) & 0x0000ff00;
+ }
+ for ( i = 0; i < nNumColors; i++ )
+ {
+ *pTIFF >> nVal;
+ pColorMap[ i ] |= ( ( (ULONG)nVal ) >> 8 ) & 0x000000ff;
+ }
+ }
+ else
+ bStatus = FALSE;
+ OOODEBUG("ColorMap (Anzahl Farben:)", nNumColors);
+ break;
+ }
+ }
+
+ if ( pTIFF->GetError() )
+ bStatus = FALSE;
+}
+
+// ---------------------------------------------------------------------------------
+
+BOOL TIFFReader::ReadMap( ULONG nMinPercent, ULONG nMaxPercent )
+{
+ if ( nCompression == 1 || nCompression == 32771 )
+ {
+ ULONG ny, np, nStrip, nStripBytesPerRow;
+
+ if ( nCompression == 1 )
+ nStripBytesPerRow = nBytesPerRow;
+ else
+ nStripBytesPerRow = ( nBytesPerRow + 1 ) & 0xfffffffe;
+ for ( ny = 0; ny < nImageLength; ny++ )
+ {
+ for ( np = 0; np < nPlanes; np++ )
+ {
+ nStrip = ny / nRowsPerStrip + np * nStripsPerPlane;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek( pStripOffsets[ nStrip ] + ( ny % nRowsPerStrip ) * nStripBytesPerRow );
+ pTIFF->Read( pMap[ np ], nBytesPerRow );
+ if ( pTIFF->GetError() )
+ return FALSE;
+ MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * ( np * nImageLength + ny) / ( nImageLength * nPlanes ) );
+ }
+ if ( !ConvertScanline( ny ) )
+ return FALSE;
+ }
+ }
+ else if ( nCompression == 2 || nCompression == 3 || nCompression == 4 )
+ {
+ ULONG ny, np, nStrip, nOptions;
+ if ( nCompression == 2 )
+ {
+ nOptions = CCI_OPTION_BYTEALIGNROW;
+ }
+ else if ( nCompression == 3 )
+ {
+ nOptions = CCI_OPTION_EOL;
+ if ( nGroup3Options & 0x00000001 )
+ nOptions |= CCI_OPTION_2D;
+ if ( nGroup3Options & 0x00000004 )
+ nOptions |= CCI_OPTION_BYTEALIGNEOL;
+ if ( nGroup3Options & 0xfffffffa )
+ return FALSE;
+ }
+ else
+ { // nCompression==4
+ nOptions = CCI_OPTION_2D;
+ if ( nGroup4Options & 0xffffffff )
+ return FALSE;
+ }
+ if ( nFillOrder == 2 )
+ {
+ nOptions |= CCI_OPTION_INVERSEBITORDER;
+ bByteSwap = FALSE;
+ }
+ nStrip = 0;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek(pStripOffsets[nStrip]);
+
+ CCIDecompressor aCCIDecom( nOptions, nImageWidth );
+
+ aCCIDecom.StartDecompression( *pTIFF );
+
+ for ( ny = 0; ny < nImageLength; ny++ )
+ {
+ for ( np = 0; np < nPlanes; np++ )
+ {
+ if ( ny / nRowsPerStrip + np * nStripsPerPlane > nStrip )
+ {
+ nStrip=ny/nRowsPerStrip+np*nStripsPerPlane;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek( pStripOffsets[ nStrip ] );
+ aCCIDecom.StartDecompression( *pTIFF );
+ }
+ if ( aCCIDecom.DecompressScanline( pMap[ np ], nImageWidth * nBitsPerSample * nSamplesPerPixel / nPlanes ) == FALSE )
+ return FALSE;
+ if ( pTIFF->GetError() )
+ return FALSE;
+ MayCallback(nMinPercent+(nMaxPercent-nMinPercent)*(np*nImageLength+ny)/(nImageLength*nPlanes));
+ }
+ if ( !ConvertScanline( ny ) )
+ return FALSE;
+ }
+ }
+ else if ( nCompression == 5 )
+ {
+ LZWDecompressor aLZWDecom;
+ ULONG ny, np, nStrip;
+ nStrip=0;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek(pStripOffsets[nStrip]);
+ aLZWDecom.StartDecompression(*pTIFF);
+ for ( ny = 0; ny < nImageLength; ny++ )
+ {
+ for ( np = 0; np < nPlanes; np++ )
+ {
+ if ( ny / nRowsPerStrip + np * nStripsPerPlane > nStrip )
+ {
+ nStrip = ny / nRowsPerStrip + np * nStripsPerPlane;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek(pStripOffsets[nStrip]);
+ aLZWDecom.StartDecompression(*pTIFF);
+ }
+ if ( ( aLZWDecom.Decompress( pMap[ np ], nBytesPerRow ) != nBytesPerRow ) || pTIFF->GetError() )
+ return FALSE;
+ MayCallback(nMinPercent+(nMaxPercent-nMinPercent)*(np*nImageLength+ny)/(nImageLength*nPlanes));
+ }
+ if ( !ConvertScanline( ny ) )
+ return FALSE;
+ }
+ }
+ else if ( nCompression == 32773 )
+ {
+ ULONG nStrip,nRecCount,nRowBytesLeft,ny,np,i;
+ BYTE * pdst, nRecHeader, nRecData;
+ nStrip = 0;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek(pStripOffsets[nStrip]);
+ for ( ny = 0; ny < nImageLength; ny++ )
+ {
+ for ( np = 0; np < nPlanes; np++ )
+ {
+ if ( ny / nRowsPerStrip + np * nStripsPerPlane > nStrip )
+ {
+ nStrip=ny/nRowsPerStrip+np*nStripsPerPlane;
+ if ( nStrip >= nNumStripOffsets )
+ return FALSE;
+ pTIFF->Seek(pStripOffsets[nStrip]);
+ }
+ nRowBytesLeft = nBytesPerRow;
+ pdst=pMap[ np ];
+ do
+ {
+ *pTIFF >> nRecHeader;
+ if ((nRecHeader&0x80)==0)
+ {
+ nRecCount=0x00000001+((ULONG)nRecHeader);
+ if ( nRecCount > nRowBytesLeft )
+ return FALSE;
+ pTIFF->Read(pdst,nRecCount);
+ pdst+=nRecCount;
+ nRowBytesLeft-=nRecCount;
+ }
+ else if ( nRecHeader != 0x80 )
+ {
+ nRecCount = 0x000000101 - ( (ULONG)nRecHeader );
+ if ( nRecCount > nRowBytesLeft )
+ {
+ nRecCount = nRowBytesLeft;
+
+// bStatus = FALSE;
+// return;
+
+ }
+ *pTIFF >> nRecData;
+ for ( i = 0; i < nRecCount; i++ )
+ *(pdst++) = nRecData;
+ nRowBytesLeft -= nRecCount;
+ }
+ } while ( nRowBytesLeft != 0 );
+ if ( pTIFF->GetError() )
+ return FALSE;
+ MayCallback(nMinPercent+(nMaxPercent-nMinPercent)*(np*nImageLength+ny)/(nImageLength*nPlanes));
+ }
+ if ( !ConvertScanline( ny ) )
+ return FALSE;
+ }
+ }
+ else
+ return FALSE;
+ return TRUE;
+}
+
+ULONG TIFFReader::GetBits( const BYTE * pSrc, ULONG nBitsPos, ULONG nBitsCount )
+{
+ ULONG nRes;
+ if ( bByteSwap )
+ {
+ pSrc += ( nBitsPos >> 3 );
+ nBitsPos &= 7;
+ BYTE nDat = *pSrc;
+ nRes = (ULONG)( BYTESWAP( nDat ) & ( 0xff >> nBitsPos ) );
+
+ if ( nBitsCount <= 8 - nBitsPos )
+ {
+ nRes >>= ( 8 - nBitsPos - nBitsCount );
+ }
+ else
+ {
+ pSrc++;
+ nBitsCount -= 8 - nBitsPos;
+ while ( nBitsCount >= 8 )
+ {
+ nDat = *(pSrc++);
+ nRes = ( nRes << 8 ) | ((ULONG)BYTESWAP( nDat ) );
+ nBitsCount -= 8;
+ }
+ if ( nBitsCount > 0 )
+ {
+ nDat = *pSrc;
+ nRes = ( nRes << nBitsCount ) | (((ULONG)BYTESWAP(nDat))>>(8-nBitsCount));
+ }
+ }
+ }
+ else
+ {
+ pSrc += ( nBitsPos >> 3 );
+ nBitsPos &= 7;
+ nRes = (ULONG)((*pSrc)&(0xff>>nBitsPos));
+ if ( nBitsCount <= 8 - nBitsPos )
+ {
+ nRes >>= ( 8 - nBitsPos - nBitsCount );
+ }
+ else
+ {
+ pSrc++;
+ nBitsCount -= 8 - nBitsPos;
+ while ( nBitsCount >= 8 )
+ {
+ nRes = ( nRes << 8 ) | ((ULONG)*(pSrc++));
+ nBitsCount -= 8;
+ }
+ if ( nBitsCount > 0 )
+ nRes = ( nRes << nBitsCount ) | (((ULONG)*pSrc)>>(8-nBitsCount));
+ }
+ }
+ return nRes;
+}
+
+// ---------------------------------------------------------------------------------
+
+BOOL TIFFReader::ConvertScanline( ULONG nY )
+{
+ UINT32 nRed, nGreen, nBlue, ns, nx, nVal, nByteCount;
+ BYTE nByteVal;
+
+ if ( nDstBitsPerPixel == 24 )
+ {
+ if ( nBitsPerSample == 8 && nSamplesPerPixel >= 3 &&
+ nPlanes == 1 && nPhotometricInterpretation == 2 )
+ {
+ BYTE* pt = pMap[ 0 ];
+
+ // sind die Werte als Differenz abgelegt?
+ if ( 2 == nPredictor )
+ {
+ BYTE nLRed = 0;
+ BYTE nLGreen = 0;
+ BYTE nLBlue = 0;
+ for ( nx = 0; nx < nImageWidth; nx++, pt += nSamplesPerPixel )
+ {
+ nLRed = nLRed + pt[ 0 ];
+ nLGreen = nLGreen + pt[ 1 ];
+ nLBlue = nLBlue + pt[ 2 ];
+ pAcc->SetPixel( nY, nx, Color( nLRed, nLGreen, nLBlue ) );
+ }
+ }
+ else
+ {
+ for ( nx = 0; nx < nImageWidth; nx++, pt += nSamplesPerPixel )
+ {
+ pAcc->SetPixel( nY, nx, Color( pt[0], pt[1], pt[2] ) );
+ }
+ }
+ }
+ else if ( nPhotometricInterpretation == 2 && nSamplesPerPixel >= 3 )
+ {
+ ULONG nMinMax = nMinSampleValue * 255 / ( nMaxSampleValue - nMinSampleValue );
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ if ( nPlanes < 3 )
+ {
+ nRed = GetBits( pMap[ 0 ], ( nx * nSamplesPerPixel + 0 ) * nBitsPerSample, nBitsPerSample );
+ nGreen = GetBits( pMap[ 1 ], ( nx * nSamplesPerPixel + 1 ) * nBitsPerSample, nBitsPerSample );
+ nBlue = GetBits( pMap[ 2 ], ( nx * nSamplesPerPixel + 2 ) * nBitsPerSample, nBitsPerSample );
+ }
+ else
+ {
+ nRed = GetBits( pMap[ 0 ], nx * nBitsPerSample, nBitsPerSample );
+ nGreen = GetBits( pMap[ 1 ], nx * nBitsPerSample, nBitsPerSample );
+ nBlue = GetBits( pMap[ 2 ], nx * nBitsPerSample, nBitsPerSample );
+ }
+ pAcc->SetPixel( nY, nx, Color( (BYTE)( nRed - nMinMax ), (BYTE)( nGreen - nMinMax ), (BYTE)(nBlue - nMinMax) ) );
+ }
+ }
+ else if ( nPhotometricInterpretation == 5 && nSamplesPerPixel == 3 )
+ {
+ ULONG nMinMax = nMinSampleValue * 255 / ( nMaxSampleValue - nMinSampleValue );
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ if ( nPlanes < 3 )
+ {
+ nRed = GetBits( pMap[ 0 ],( nx * nSamplesPerPixel + 0 ) * nBitsPerSample, nBitsPerSample );
+ nGreen = GetBits( pMap[ 0 ],( nx * nSamplesPerPixel + 1 ) * nBitsPerSample, nBitsPerSample );
+ nBlue = GetBits( pMap[ 0 ],( nx * nSamplesPerPixel + 2 ) * nBitsPerSample, nBitsPerSample );
+ }
+ else
+ {
+ nRed = GetBits( pMap[ 0 ], nx * nBitsPerSample, nBitsPerSample );
+ nGreen = GetBits( pMap[ 1 ], nx * nBitsPerSample, nBitsPerSample );
+ nBlue = GetBits( pMap[ 2 ], nx * nBitsPerSample, nBitsPerSample );
+ }
+ nRed = 255 - (BYTE)( nRed - nMinMax );
+ nGreen = 255 - (BYTE)( nGreen - nMinMax );
+ nBlue = 255 - (BYTE)( nBlue - nMinMax );
+ pAcc->SetPixel( nY, nx, Color( (BYTE) nRed, (BYTE) nGreen, (BYTE) nBlue ) );
+ }
+ }
+ else if( nPhotometricInterpretation == 5 && nSamplesPerPixel == 4 )
+ {
+ BYTE nSamp[ 4 ];
+ BYTE nSampLast[ 4 ] = { 0, 0, 0, 0 };
+ long nBlack;
+
+ for( nx = 0; nx < nImageWidth; nx++ )
+ {
+ // sind die Werte als Differenz abgelegt?
+ if( 2 == nPredictor )
+ {
+ for( ns = 0; ns < 4; ns++ )
+ {
+ if( nPlanes < 3 )
+ nSampLast[ ns ] = nSampLast[ ns ] + (BYTE) GetBits( pMap[ 0 ], ( nx * nSamplesPerPixel + ns ) * nBitsPerSample, nBitsPerSample );
+ else
+ nSampLast[ ns ] = nSampLast[ ns ] + (BYTE) GetBits( pMap[ ns ], nx * nBitsPerSample, nBitsPerSample );
+ nSamp[ ns ] = nSampLast[ ns ];
+ }
+ }
+ else
+ {
+ for( ns = 0; ns < 4; ns++ )
+ {
+ if( nPlanes < 3 )
+ nSamp[ ns ] = (BYTE) GetBits( pMap[ 0 ], ( nx * nSamplesPerPixel + ns ) * nBitsPerSample, nBitsPerSample );
+ else
+ nSamp[ ns ]= (BYTE) GetBits( pMap[ ns ], nx * nBitsPerSample, nBitsPerSample );
+ }
+ }
+ nBlack = nSamp[ 3 ];
+ nRed = (BYTE) Max( 0L, 255L - ( ( (long) nSamp[ 0 ] + nBlack - ( ( (long) nMinSampleValue ) << 1 ) ) *
+ 255L/(long)(nMaxSampleValue-nMinSampleValue) ) );
+ nGreen = (BYTE) Max( 0L, 255L - ( ( (long) nSamp[ 1 ] + nBlack - ( ( (long) nMinSampleValue ) << 1 ) ) *
+ 255L/(long)(nMaxSampleValue-nMinSampleValue) ) );
+ nBlue = (BYTE) Max( 0L, 255L - ( ( (long) nSamp[ 2 ] + nBlack - ( ( (long) nMinSampleValue ) << 1 ) ) *
+ 255L/(long)(nMaxSampleValue-nMinSampleValue) ) );
+ pAcc->SetPixel( nY, nx, Color ( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) );
+
+ }
+ }
+ }
+ else if ( nSamplesPerPixel == 1 && ( nPhotometricInterpretation <= 1 || nPhotometricInterpretation == 3 ) )
+ {
+ ULONG nMinMax = ( ( 1 << nDstBitsPerPixel ) - 1 ) / ( nMaxSampleValue - nMinSampleValue );
+ BYTE* pt = pMap[ 0 ];
+ BYTE nShift;
+
+ switch ( nDstBitsPerPixel )
+ {
+ case 8 :
+ {
+ BYTE nLast;
+ if ( bByteSwap )
+ {
+ if ( nPredictor == 2 )
+ {
+ nLast = BYTESWAP( (BYTE)*pt++ );
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ pAcc->SetPixel( nY, nx, nLast );
+ nLast = nLast + *pt++;
+ }
+ }
+ else
+ {
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ nLast = *pt++;
+ pAcc->SetPixel( nY, nx, (BYTE)( ( (BYTESWAP((ULONG)nLast ) - nMinSampleValue ) * nMinMax ) ) );
+ }
+ }
+ }
+ else
+ {
+ if ( nPredictor == 2 )
+ {
+ nLast = *pt++;
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ pAcc->SetPixel( nY, nx, nLast );
+ nLast = nLast + *pt++;
+ }
+ }
+ else
+ {
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ pAcc->SetPixel( nY, nx, (BYTE)( ( (ULONG)*pt++ - nMinSampleValue ) * nMinMax ) );
+
+ }
+ }
+ }
+ }
+ break;
+
+ case 7 :
+ case 6 :
+ case 5 :
+ case 4 :
+ case 3 :
+ case 2 :
+ {
+ for ( nx = 0; nx < nImageWidth; nx++ )
+ {
+ nVal = ( GetBits( pt, nx * nBitsPerSample, nBitsPerSample ) - nMinSampleValue ) * nMinMax;
+ pAcc->SetPixel( nY, nx, (BYTE)nVal );
+ }
+ }
+ break;
+
+ case 1 :
+ {
+ if ( bByteSwap )
+ {
+ nx = 0;
+ nByteCount = ( nImageWidth >> 3 ) + 1;
+ while ( --nByteCount )
+ {
+ nByteVal = *pt++;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, nx++, nByteVal );
+ }
+ if ( nImageWidth & 7 )
+ {
+ nByteVal = *pt++;
+ while ( nx < nImageWidth )
+ {
+ pAcc->SetPixel( nY, nx++, nByteVal & 1 );
+ nByteVal >>= 1;
+ }
+ }
+ }
+ else
+ {
+ nx = 7;
+ nByteCount = ( nImageWidth >> 3 ) + 1;
+ while ( --nByteCount )
+ {
+ nByteVal = *pt++;
+ pAcc->SetPixel( nY, nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal & 1 );
+ nByteVal >>= 1;
+ pAcc->SetPixel( nY, --nx, nByteVal );
+ nx += 15;
+ }
+ if ( nImageWidth & 7 )
+ {
+ nx -= 7;
+ nByteVal = *pt++;
+ nShift = 7;
+ while ( nx < nImageWidth )
+ {
+ pAcc->SetPixel( nY, nx++, ( nByteVal >> nShift ) & 1);
+ }
+ }
+ }
+ }
+ break;
+
+ default :
+ return FALSE;
+ }
+ }
+ else if ( ( nSamplesPerPixel == 2 ) && ( nBitsPerSample == 8 ) &&
+ ( nPlanarConfiguration == 1 ) && ( pColorMap == 0 ) ) // grayscale
+ {
+ ULONG nMinMax = ( ( 1 << 8 /*nDstBitsPerPixel*/ ) - 1 ) / ( nMaxSampleValue - nMinSampleValue );
+ BYTE* pt = pMap[ 0 ];
+ if ( nByte1 == 'I' )
+ pt++;
+ for ( nx = 0; nx < nImageWidth; nx++, pt += 2 )
+ {
+ pAcc->SetPixel( nY, nx, (BYTE)( ( (ULONG)*pt - nMinSampleValue ) * nMinMax ) );
+ }
+ }
+ else
+ return FALSE;
+ return TRUE;
+}
+
+// ---------------------------------------------------------------------------------
+
+void TIFFReader::MakePalCol( void )
+{
+ if ( nDstBitsPerPixel <= 8 )
+ {
+ ULONG i, nVal, n0RGB;
+ if ( pColorMap == NULL )
+ pColorMap = new ULONG[ 256 ];
+ if ( nPhotometricInterpretation <= 1 )
+ {
+ nNumColors = 1 << nBitsPerSample;
+ if ( nNumColors > 256 )
+ nNumColors = 256;
+ pAcc->SetPaletteEntryCount( (USHORT)nNumColors );
+ for ( i = 0; i < nNumColors; i++ )
+ {
+ nVal = ( i * 255 / ( nNumColors - 1 ) ) & 0xff;
+ n0RGB = nVal | ( nVal << 8 ) | ( nVal << 16 );
+ if ( nPhotometricInterpretation == 1 )
+ pColorMap[ i ] = n0RGB;
+ else
+ pColorMap[ nNumColors - i - 1 ] = n0RGB;
+ }
+ }
+ for ( i = 0; i < nNumColors; i++ )
+ {
+ pAcc->SetPaletteColor( (USHORT)i, BitmapColor( (BYTE)( pColorMap[ i ] >> 16 ),
+ (BYTE)( pColorMap[ i ] >> 8 ), (BYTE)pColorMap[ i ] ) );
+ }
+ }
+
+ if ( fXResolution > 1.0 && fYResolution > 1.0 && ( nResolutionUnit == 2 || nResolutionUnit == 3 ) )
+ {
+ ULONG nRX,nRY;
+ if (nResolutionUnit==2)
+ {
+ nRX=(ULONG)(fXResolution+0.5);
+ nRY=(ULONG)(fYResolution+0.5);
+ }
+ else
+ {
+ nRX=(ULONG)(fXResolution*2.54+0.5);
+ nRY=(ULONG)(fYResolution*2.54+0.5);
+ }
+ MapMode aMapMode(MAP_INCH,Point(0,0),Fraction(1,nRX),Fraction(1,nRY));
+ aBitmap.SetPrefMapMode(aMapMode);
+ aBitmap.SetPrefSize(Size(nImageWidth,nImageLength));
+ }
+}
+
+// ---------------------------------------------------------------------------------
+
+void TIFFReader::ReadHeader()
+{
+ BYTE nbyte1, nbyte2;
+ USHORT nushort;
+
+ *pTIFF >> nbyte1;
+ if ( nbyte1 == 'I' )
+ pTIFF->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ else
+ pTIFF->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+
+ *pTIFF >> nbyte2 >> nushort;
+ if ( nbyte1 != nbyte2 || ( nbyte1 != 'I' && nbyte1 != 'M' ) || nushort != 0x002a )
+ bStatus = FALSE;
+}
+
+// ---------------------------------------------------------------------------------
+
+BOOL TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
+{
+ USHORT i, nNumTags, nTagType;
+ ULONG nMaxPos;
+ ULONG nPos;
+ sal_uInt32 nFirstIfd, nDataLen;
+
+ bStatus = TRUE;
+ nLastPercent = 0;
+
+ pTIFF = &rTIFF;
+ nMaxPos = nOrigPos = pTIFF->Tell();
+ nOrigNumberFormat = pTIFF->GetNumberFormatInt();
+
+ MayCallback( 0 );
+
+ // Kopf einlesen:
+ ReadHeader();
+
+ // Ersten IFD einlesen:
+ *pTIFF >> nFirstIfd;
+
+ if( !nFirstIfd || pTIFF->GetError() )
+ bStatus = FALSE;
+
+ if ( bStatus )
+ {
+ sal_uInt32 nOffset = nFirstIfd;
+
+ // calculate length of TIFF file
+ do
+ {
+ pTIFF->Seek( nOrigPos + nOffset );
+
+ if( pTIFF->GetError() )
+ {
+ pTIFF->ResetError();
+ break;
+ };
+ nMaxPos = Max( pTIFF->Tell(), nMaxPos );
+
+ *pTIFF >> nNumTags;
+
+ // Schleife ueber Tags:
+ for( i = 0; i < nNumTags; i++ )
+ {
+ *pTIFF >> nTagType >> nDataType >> nDataLen >> nOffset;
+
+ if( DataTypeSize() * nDataLen > 4 )
+ nMaxPos = Max( nOrigPos + nOffset + DataTypeSize() * nDataLen, nMaxPos );
+ }
+ *pTIFF >> nOffset;
+ if ( pTIFF->IsEof() )
+ nOffset = 0;
+
+ nMaxPos = Max( pTIFF->Tell(), nMaxPos );
+ if ( !nOffset )
+ nMaxPos = Max( pTIFF->Tell(), nMaxPos );
+ }
+ while( nOffset );
+
+ for ( UINT32 nNextIfd = nFirstIfd; nNextIfd && bStatus; )
+ {
+ pTIFF->Seek( nOrigPos + nNextIfd );
+ {
+ bByteSwap = FALSE;
+
+ nNewSubFile = 0;
+ nSubFile = 0;
+ nImageWidth = 0;
+ nImageLength = 0;
+ nBitsPerSample = 1; // Defaultwert laut Doku
+ nCompression = 1;
+ nPhotometricInterpretation = 0;
+ nThresholding = 1; // Defaultwert laut Doku
+ nCellWidth = 1;
+ nCellLength = 1;
+ nFillOrder = 1; // Defaultwert laut Doku
+ nNumStripOffsets = 0;
+ nOrientation = 1;
+ nSamplesPerPixel = 1; // Defaultwert laut Doku
+ nRowsPerStrip = 0xffffffff; // Defaultwert laut Doku
+ nNumStripByteCounts = 0;
+ nMinSampleValue = 0; // Defaultwert laut Doku
+ nMaxSampleValue = 0;
+ fXResolution = 0.0;
+ fYResolution = 0.0;
+ nPlanarConfiguration = 1;
+ nGroup3Options = 0; // Defaultwert laut Doku
+ nGroup4Options = 0; // Defaultwert laut Doku
+ nResolutionUnit = 2; // Defaultwert laut Doku
+ nPredictor = 1;
+ nNumColors = 0;
+
+ pAcc = NULL;
+ pColorMap = NULL;
+ pStripOffsets = NULL;
+ pStripByteCounts = NULL;
+ pMap[ 0 ] = pMap[ 1 ] = pMap[ 2 ] = pMap[ 3 ] = NULL;
+
+ *pTIFF >> nNumTags;
+ nPos = pTIFF->Tell();
+
+ // Schleife ueber Tags:
+ for( i = 0; i < nNumTags; i++ )
+ {
+ *pTIFF >> nTagType >> nDataType >> nDataLen;
+
+ if( DataTypeSize() * nDataLen > 4 )
+ {
+ *pTIFF >> nOffset;
+ pTIFF->Seek( nOrigPos + nOffset );
+ }
+ ReadTagData( nTagType, nDataLen );
+ nPos += 12; pTIFF->Seek( nPos );
+
+ if ( pTIFF->GetError() )
+ bStatus = FALSE;
+
+ if ( bStatus == FALSE )
+ break;
+ }
+ *pTIFF >> nNextIfd;
+ if ( pTIFF->IsEof() )
+ nNextIfd = 0;
+ }
+ if ( bStatus )
+ {
+ if ( nMaxSampleValue == 0 )
+ nMaxSampleValue = ( 1 << nBitsPerSample ) - 1;
+
+ if ( nPhotometricInterpretation == 2 || nPhotometricInterpretation == 5 || nPhotometricInterpretation == 6 )
+ nDstBitsPerPixel = 24;
+ else if ( nBitsPerSample*nSamplesPerPixel <= 1 )
+ nDstBitsPerPixel = 1;
+ else if ( nBitsPerSample*nSamplesPerPixel <= 4 )
+ nDstBitsPerPixel = 4;
+ else
+ nDstBitsPerPixel = 8;
+
+ aBitmap = Bitmap( Size( nImageWidth, nImageLength ), nDstBitsPerPixel );
+ pAcc = aBitmap.AcquireWriteAccess();
+ if ( pAcc )
+ {
+ if ( nPlanarConfiguration == 1 )
+ nPlanes = 1;
+ else
+ nPlanes = nSamplesPerPixel;
+
+ if ( ( nFillOrder == 2 ) && ( nCompression != 5 ) ) // im LZW Mode werden die bits schon invertiert
+ bByteSwap = TRUE;
+
+ nStripsPerPlane = ( nImageLength - 1 ) / nRowsPerStrip + 1;
+ nBytesPerRow = ( nImageWidth * nSamplesPerPixel / nPlanes * nBitsPerSample + 7 ) >> 3;
+
+ for ( ULONG j = 0; j < 4; j++ )
+ {
+ try
+ {
+ pMap[ j ] = new BYTE[ nBytesPerRow ];
+ }
+ catch (std::bad_alloc)
+ {
+ pMap[ j ] = NULL;
+ bStatus = FALSE;
+ break;
+ }
+ }
+
+ if ( bStatus && ReadMap( 10, 60 ) )
+ {
+ nMaxPos = Max( pTIFF->Tell(), nMaxPos );
+ MakePalCol();
+ nMaxPos = Max( pTIFF->Tell(), nMaxPos );
+ }
+ else
+ bStatus = FALSE;
+
+ if( pAcc )
+ {
+ aBitmap.ReleaseAccess( pAcc );
+ if ( bStatus )
+ {
+ AnimationBitmap aAnimationBitmap( aBitmap, Point( 0, 0 ), aBitmap.GetSizePixel(),
+ ANIMATION_TIMEOUT_ON_CLICK, DISPOSE_BACK );
+
+ aAnimation.Insert( aAnimationBitmap );
+ }
+ }
+ // Aufraeumen:
+ for ( i = 0; i < 4; i++ )
+ delete[] pMap[ i ];
+
+ delete[] pColorMap;
+ delete[] pStripOffsets;
+ delete[] pStripByteCounts;
+ }
+ }
+ }
+ }
+
+ // seek to end of TIFF if succeeded
+ pTIFF->SetNumberFormatInt( nOrigNumberFormat );
+ pTIFF->Seek( bStatus ? nMaxPos : nOrigPos );
+
+ if ( aAnimation.Count() )
+ {
+ if ( aAnimation.Count() == 1 )
+ rGraphic = aAnimation.GetBitmapEx();
+ else
+ rGraphic = aAnimation; //aBitmap;
+
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+//================== GraphicImport - die exportierte Funktion ================
+
+extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*, BOOL )
+{
+ TIFFReader aTIFFReader;
+
+ if ( aTIFFReader.ReadTIFF( rStream, rGraphic ) == FALSE )
+ return FALSE;
+
+ return TRUE;
+}
+
+//============================= fuer Windows ==================================
+#ifndef GCC
+#endif
+
+#ifdef WIN
+
+static HINSTANCE hDLLInst = 0; // HANDLE der DLL
+
+extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR )
+{
+#ifndef WNT
+ if ( nHeap )
+ UnlockData( 0 );
+#endif
+
+ hDLLInst = hDLL;
+
+ return TRUE;
+}
+
+extern "C" int CALLBACK WEP( int )
+{
+ return 1;
+}
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/itiff/lzwdecom.cxx b/filter/source/graphicfilter/itiff/lzwdecom.cxx
new file mode 100644
index 000000000000..9460ed6ecf45
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/lzwdecom.cxx
@@ -0,0 +1,192 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include "lzwdecom.hxx"
+
+LZWDecompressor::LZWDecompressor()
+{
+ USHORT i;
+
+ pTable=new LZWTableEntry[4096];
+ pOutBuf=new BYTE[4096];
+ for (i=0; i<4096; i++)
+ {
+ pTable[i].nPrevCode=0;
+ pTable[i].nDataCount=1;
+ pTable[i].nData=(BYTE)i;
+ }
+ pIStream=NULL;
+ bFirst = TRUE;
+ nOldCode = 0;
+}
+
+
+LZWDecompressor::~LZWDecompressor()
+{
+ delete[] pOutBuf;
+ delete[] pTable;
+}
+
+
+void LZWDecompressor::StartDecompression(SvStream & rIStream)
+{
+ pIStream=&rIStream;
+
+ nTableSize=258;
+
+ bEOIFound=FALSE;
+
+ nOutBufDataLen=0;
+
+ *pIStream >> nInputBitsBuf;
+
+ nInputBitsBufSize=8;
+
+ if ( bFirst )
+ {
+ bInvert = nInputBitsBuf == 1;
+ bFirst = FALSE;
+ }
+
+ if ( bInvert )
+ nInputBitsBuf = ( ( nInputBitsBuf & 1 ) << 7 ) | ( ( nInputBitsBuf & 2 ) << 5 ) | ( ( nInputBitsBuf & 4 ) << 3 ) | ( ( nInputBitsBuf & 8 ) << 1 ) | ( ( nInputBitsBuf & 16 ) >> 1 ) | ( ( nInputBitsBuf & 32 ) >> 3 ) | ( ( nInputBitsBuf & 64 ) >> 5 ) | ( (nInputBitsBuf & 128 ) >> 7 );
+}
+
+
+ULONG LZWDecompressor::Decompress(BYTE * pTarget, ULONG nMaxCount)
+{
+ ULONG nCount;
+
+ if (pIStream==NULL) return 0;
+
+ nCount=0;
+ for (;;) {
+
+ if (pIStream->GetError()) break;
+
+ if (((ULONG)nOutBufDataLen)>=nMaxCount) {
+ nOutBufDataLen = nOutBufDataLen - (USHORT)nMaxCount;
+ nCount+=nMaxCount;
+ while (nMaxCount>0) {
+ *(pTarget++)=*(pOutBufData++);
+ nMaxCount--;
+ }
+ break;
+ }
+
+ nMaxCount-=(ULONG)nOutBufDataLen;
+ nCount+=nOutBufDataLen;
+ while (nOutBufDataLen>0) {
+ *(pTarget++)=*(pOutBufData++);
+ nOutBufDataLen--;
+ }
+
+ if (bEOIFound==TRUE) break;
+
+ DecompressSome();
+
+ }
+
+ return nCount;
+}
+
+
+USHORT LZWDecompressor::GetNextCode()
+{
+ USHORT nBits,nCode;
+
+ if (nTableSize<511) nBits=9;
+ else if (nTableSize<1023) nBits=10;
+ else if (nTableSize<2047) nBits=11;
+ else nBits=12;
+
+ nCode=0;
+ do {
+ if (nInputBitsBufSize<=nBits)
+ {
+ nCode=(nCode<<nInputBitsBufSize) | nInputBitsBuf;
+ nBits = nBits - nInputBitsBufSize;
+ *pIStream >> nInputBitsBuf;
+ if ( bInvert )
+ nInputBitsBuf = ( ( nInputBitsBuf & 1 ) << 7 ) | ( ( nInputBitsBuf & 2 ) << 5 ) | ( ( nInputBitsBuf & 4 ) << 3 ) | ( ( nInputBitsBuf & 8 ) << 1 ) | ( ( nInputBitsBuf & 16 ) >> 1 ) | ( ( nInputBitsBuf & 32 ) >> 3 ) | ( ( nInputBitsBuf & 64 ) >> 5 ) | ( (nInputBitsBuf & 128 ) >> 7 );
+ nInputBitsBufSize=8;
+ }
+ else
+ {
+ nCode=(nCode<<nBits) | (nInputBitsBuf>>(nInputBitsBufSize-nBits));
+ nInputBitsBufSize = nInputBitsBufSize - nBits;
+ nInputBitsBuf&=0x00ff>>(8-nInputBitsBufSize);
+ nBits=0;
+ }
+ } while (nBits>0);
+
+ return nCode;
+}
+
+
+void LZWDecompressor::AddToTable(USHORT nPrevCode, USHORT nCodeFirstData)
+{
+ while (pTable[nCodeFirstData].nDataCount>1)
+ nCodeFirstData=pTable[nCodeFirstData].nPrevCode;
+
+ pTable[nTableSize].nPrevCode=nPrevCode;
+ pTable[nTableSize].nDataCount=pTable[nPrevCode].nDataCount+1;
+ pTable[nTableSize].nData=pTable[nCodeFirstData].nData;
+
+ nTableSize++;
+}
+
+
+void LZWDecompressor::DecompressSome()
+{
+ USHORT i,nCode;
+
+ nCode=GetNextCode();
+ if (nCode==256) {
+ nTableSize=258;
+ nCode=GetNextCode();
+ if (nCode==257) { bEOIFound=TRUE; return; }
+ }
+ else if (nCode<nTableSize) AddToTable(nOldCode,nCode);
+ else if (nCode==nTableSize) AddToTable(nOldCode,nOldCode);
+ else { bEOIFound=TRUE; return; }
+
+ nOldCode=nCode;
+
+ nOutBufDataLen=pTable[nCode].nDataCount;
+ pOutBufData=pOutBuf+nOutBufDataLen;
+ for (i=0; i<nOutBufDataLen; i++) {
+ *(--pOutBufData)=pTable[nCode].nData;
+ nCode=pTable[nCode].nPrevCode;
+ }
+}
+
+
+
diff --git a/filter/source/graphicfilter/itiff/lzwdecom.hxx b/filter/source/graphicfilter/itiff/lzwdecom.hxx
new file mode 100644
index 000000000000..164812878865
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/lzwdecom.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * 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 _LZWDECOM_HXX
+#define _LZWDECOM_HXX
+
+#include <tools/stream.hxx>
+
+struct LZWTableEntry {
+ USHORT nPrevCode;
+ USHORT nDataCount;
+ BYTE nData;
+};
+
+class LZWDecompressor {
+
+public:
+
+ LZWDecompressor();
+ ~LZWDecompressor();
+
+ void StartDecompression(SvStream & rIStream);
+
+ ULONG Decompress(BYTE * pTarget, ULONG nMaxCount);
+ // Liefert die Anzahl der geschriebenen Bytes, wenn < nMaxCount,
+ // sind keine weiteren Daten zu entpacken, oder es ist ein
+ // Fehler aufgetreten.
+
+private:
+
+ USHORT GetNextCode();
+ void AddToTable(USHORT nPrevCode, USHORT nCodeFirstData);
+ void DecompressSome();
+
+ SvStream * pIStream;
+
+ LZWTableEntry * pTable;
+ USHORT nTableSize;
+
+ BOOL bEOIFound, bInvert, bFirst;
+
+ USHORT nOldCode;
+
+ BYTE * pOutBuf;
+ BYTE * pOutBufData;
+ USHORT nOutBufDataLen;
+
+ BYTE nInputBitsBuf;
+ USHORT nInputBitsBufSize;
+};
+
+
+#endif
+
+
diff --git a/filter/source/graphicfilter/itiff/makefile.mk b/filter/source/graphicfilter/itiff/makefile.mk
new file mode 100644
index 000000000000..07fcf0ffdff4
--- /dev/null
+++ b/filter/source/graphicfilter/itiff/makefile.mk
@@ -0,0 +1,71 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=filter
+TARGET=itiff
+DEPTARGET=vitiff
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein ----------------------------------------------------------
+
+.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
+CDEFS+= -DEDITDEBUG
+.ENDIF
+.IF "$(L10N_framework)"==""
+SLOFILES = $(SLO)$/itiff.obj \
+ $(SLO)$/lzwdecom.obj \
+ $(SLO)$/ccidecom.obj
+
+EXCEPTIONSNOOPTFILES= $(SLO)$/itiff.obj
+
+# ==========================================================================
+
+SHL1TARGET= iti$(DLLPOSTFIX)
+SHL1IMPLIB= itiff
+SHL1STDLIBS= $(VCLLIB) $(TOOLSLIB) $(SALLIB)
+SHL1LIBS= $(SLB)$/itiff.lib # $(LB)$/rtftoken.lib
+
+.IF "$(GUI)" != "UNX"
+.IF "$(COM)" != "GCC"
+SHL1OBJS= $(SLO)$/itiff.obj
+.ENDIF
+.ENDIF
+
+SHL1VERSIONMAP=exports.map
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME=$(SHL1TARGET)
+.ENDIF
+
+# ==========================================================================
+
+.INCLUDE : target.mk
diff --git a/filter/source/msfilter/countryid.cxx b/filter/source/msfilter/countryid.cxx
new file mode 100644
index 000000000000..3239e5020cfb
--- /dev/null
+++ b/filter/source/msfilter/countryid.cxx
@@ -0,0 +1,342 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+// ============================================================================
+#include "filter/msfilter/countryid.hxx"
+
+#include <algorithm>
+
+// ----------------------------------------------------------------------------
+
+namespace msfilter {
+
+// Mapping table ==============================================================
+
+namespace {
+
+// ----------------------------------------------------------------------------
+
+/** Table entry for Windows country ID <-> language type conversion.
+
+ The first member is the Windows country ID, as defined in the header.
+
+ The second member contains the corresponding language type for each country
+ ID. This must be a full language, not only the primary language type.
+
+ The last bool flag defines, if the sub language type should be evaluated to
+ find the country ID from a language. If not set, all languages map to the
+ country which contain the given primary language type.
+
+ Example: The language entry (COUNTRY_USA,LANGUAGE_ENGLISH_US,false) maps
+ the country ID for USA to the language LANGUAGE_ENGLISH_US. The clear sub
+ language flag causes all english languages LANGUAGE_ENGLISH_*** to map to
+ this country ID by default. To map the special case LANGUAGE_ENGLISH_EIRE
+ to the country ID COUNTRY_IRELAND, the sub language flag must be set in the
+ respective table entry, here (COUNTRY_IRELAND,LANGUAGE_ENGLISH_EIRE,true).
+ */
+struct CountryEntry
+{
+ CountryId meCountry; /// Windows country ID.
+ LanguageType meLanguage; /// Corresponding language type.
+ bool mbUseSubLang; /// false = Primary only, true = Primary and sub language.
+};
+
+// ----------------------------------------------------------------------------
+
+/** Table for Windows country ID <-> language type conversion.
+
+ To map the same language to different country IDs, some of the entries
+ should contain a set sub language flag (see description of CountryEntry).
+ All table entries with a set flag take priority over the entry with the
+ same primary language, but cleared sub language flag, regardless of the
+ position in the table.
+
+ To map different languages to the same country ID, several entries with the
+ same country ID may be inserted. In this case the conversion to a language
+ is done with the first found entry (starting from top) containing the given
+ country ID.
+
+ For now all entries are sorted by country ID, but this is not required.
+ */
+static const CountryEntry pTable[] =
+{
+ { COUNTRY_USA, LANGUAGE_ENGLISH_US, false },
+ { COUNTRY_DOMINICAN_REPUBLIC, LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, true },
+ { COUNTRY_JAMAICA, LANGUAGE_ENGLISH_JAMAICA, true },
+ { COUNTRY_PUERTO_RICO, LANGUAGE_SPANISH_PUERTO_RICO, true },
+ { COUNTRY_TRINIDAD_Y_TOBAGO, LANGUAGE_ENGLISH_TRINIDAD, true },
+ { COUNTRY_CANADA, LANGUAGE_ENGLISH_CAN, true },
+ { COUNTRY_CANADA, LANGUAGE_FRENCH_CANADIAN, true },
+ { COUNTRY_RUSSIA, LANGUAGE_RUSSIAN, false },
+ { COUNTRY_KAZAKHSTAN, LANGUAGE_KAZAK, false },
+ { COUNTRY_TATARSTAN, LANGUAGE_TATAR, false },
+ { COUNTRY_EGYPT, LANGUAGE_ARABIC_EGYPT, true },
+ { COUNTRY_SOUTH_AFRICA, LANGUAGE_AFRIKAANS, false },
+ { COUNTRY_SOUTH_AFRICA, LANGUAGE_ENGLISH_SAFRICA, true },
+ { COUNTRY_SOUTH_AFRICA, LANGUAGE_TSONGA, false },
+ { COUNTRY_SOUTH_AFRICA, LANGUAGE_VENDA, false },
+ { COUNTRY_SOUTH_AFRICA, LANGUAGE_XHOSA, false },
+ { COUNTRY_SOUTH_AFRICA, LANGUAGE_ZULU, false },
+ { COUNTRY_GREECE, LANGUAGE_GREEK, false },
+ { COUNTRY_NETHERLANDS, LANGUAGE_DUTCH, false },
+ { COUNTRY_NETHERLANDS, LANGUAGE_FRISIAN_NETHERLANDS, false },
+ { COUNTRY_BELGIUM, LANGUAGE_DUTCH_BELGIAN, true },
+ { COUNTRY_BELGIUM, LANGUAGE_FRENCH_BELGIAN, true },
+ { COUNTRY_FRANCE, LANGUAGE_FRENCH, false },
+ { COUNTRY_SPAIN, LANGUAGE_SPANISH_MODERN, false },
+ { COUNTRY_SPAIN, LANGUAGE_SPANISH_DATED, false },
+ { COUNTRY_SPAIN, LANGUAGE_CATALAN, false },
+ { COUNTRY_SPAIN, LANGUAGE_BASQUE, false },
+ { COUNTRY_SPAIN, LANGUAGE_GALICIAN, false },
+ { COUNTRY_HUNGARY, LANGUAGE_HUNGARIAN, false },
+ { COUNTRY_ITALY, LANGUAGE_ITALIAN, false },
+ { COUNTRY_ROMANIA, LANGUAGE_ROMANIAN, false },
+ { COUNTRY_SWITZERLAND, LANGUAGE_GERMAN_SWISS, true },
+ { COUNTRY_SWITZERLAND, LANGUAGE_FRENCH_SWISS, true },
+ { COUNTRY_SWITZERLAND, LANGUAGE_ITALIAN_SWISS, true },
+ { COUNTRY_SWITZERLAND, LANGUAGE_RHAETO_ROMAN, false },
+ { COUNTRY_AUSTRIA, LANGUAGE_GERMAN_AUSTRIAN, true },
+ { COUNTRY_UNITED_KINGDOM, LANGUAGE_ENGLISH_UK, true },
+ { COUNTRY_UNITED_KINGDOM, LANGUAGE_GAELIC_SCOTLAND, true },
+ { COUNTRY_UNITED_KINGDOM, LANGUAGE_WELSH, false },
+ { COUNTRY_DENMARK, LANGUAGE_DANISH, false },
+ { COUNTRY_SWEDEN, LANGUAGE_SWEDISH, false },
+ { COUNTRY_SWEDEN, LANGUAGE_SAMI_LAPPISH, false },
+ { COUNTRY_NORWAY, LANGUAGE_NORWEGIAN_BOKMAL, false },
+ { COUNTRY_POLAND, LANGUAGE_POLISH, false },
+ { COUNTRY_GERMANY, LANGUAGE_GERMAN, false },
+ { COUNTRY_GERMANY, LANGUAGE_SORBIAN, false },
+ { COUNTRY_PERU, LANGUAGE_SPANISH_PERU, true },
+ { COUNTRY_MEXICO, LANGUAGE_SPANISH_MEXICAN, true },
+ { COUNTRY_ARGENTINIA, LANGUAGE_SPANISH_ARGENTINA, true },
+ { COUNTRY_BRAZIL, LANGUAGE_PORTUGUESE_BRAZILIAN, true },
+ { COUNTRY_CHILE, LANGUAGE_SPANISH_CHILE, true },
+ { COUNTRY_COLOMBIA, LANGUAGE_SPANISH_COLOMBIA, true },
+ { COUNTRY_VENEZUELA, LANGUAGE_SPANISH_VENEZUELA, true },
+ { COUNTRY_MALAYSIA, LANGUAGE_MALAY_MALAYSIA, false },
+ { COUNTRY_AUSTRALIA, LANGUAGE_ENGLISH_AUS, true },
+ { COUNTRY_INDONESIA, LANGUAGE_INDONESIAN, false },
+ { COUNTRY_PHILIPPINES, LANGUAGE_ENGLISH_PHILIPPINES, true },
+ { COUNTRY_NEW_ZEALAND, LANGUAGE_MAORI_NEW_ZEALAND, false },
+ { COUNTRY_NEW_ZEALAND, LANGUAGE_ENGLISH_NZ, true },
+ { COUNTRY_SINGAPORE, LANGUAGE_CHINESE_SINGAPORE, true },
+ { COUNTRY_THAILAND, LANGUAGE_THAI, false },
+ { COUNTRY_JAPAN, LANGUAGE_JAPANESE, false },
+ { COUNTRY_SOUTH_KOREA, LANGUAGE_KOREAN, false },
+ { COUNTRY_VIET_NAM, LANGUAGE_VIETNAMESE, false },
+ { COUNTRY_PR_CHINA, LANGUAGE_CHINESE_SIMPLIFIED, false },
+ { COUNTRY_TIBET, LANGUAGE_TIBETAN, false },
+ { COUNTRY_TURKEY, LANGUAGE_TURKISH, false },
+ { COUNTRY_INDIA, LANGUAGE_HINDI, false },
+ { COUNTRY_INDIA, LANGUAGE_URDU_INDIA, true },
+ { COUNTRY_INDIA, LANGUAGE_PUNJABI, false },
+ { COUNTRY_INDIA, LANGUAGE_GUJARATI, false },
+ { COUNTRY_INDIA, LANGUAGE_ORIYA, false },
+ { COUNTRY_INDIA, LANGUAGE_TAMIL, false },
+ { COUNTRY_INDIA, LANGUAGE_TELUGU, false },
+ { COUNTRY_INDIA, LANGUAGE_KANNADA, false },
+ { COUNTRY_INDIA, LANGUAGE_MALAYALAM, false },
+ { COUNTRY_INDIA, LANGUAGE_ASSAMESE, false },
+ { COUNTRY_INDIA, LANGUAGE_MARATHI, false },
+ { COUNTRY_INDIA, LANGUAGE_SANSKRIT, false },
+ { COUNTRY_INDIA, LANGUAGE_KONKANI, false },
+ { COUNTRY_INDIA, LANGUAGE_MANIPURI, false },
+ { COUNTRY_INDIA, LANGUAGE_SINDHI, false },
+ { COUNTRY_INDIA, LANGUAGE_KASHMIRI, false },
+ { COUNTRY_PAKISTAN, LANGUAGE_URDU_PAKISTAN, false },
+ { COUNTRY_MYANMAR, LANGUAGE_BURMESE, false },
+ { COUNTRY_MOROCCO, LANGUAGE_ARABIC_MOROCCO, true },
+ { COUNTRY_ALGERIA, LANGUAGE_ARABIC_ALGERIA, true },
+ { COUNTRY_TUNISIA, LANGUAGE_ARABIC_TUNISIA, true },
+ { COUNTRY_LIBYA, LANGUAGE_ARABIC_LIBYA, true },
+ { COUNTRY_SENEGAL, LANGUAGE_FRENCH_SENEGAL, true },
+ { COUNTRY_MALI, LANGUAGE_FRENCH_MALI, true },
+ { COUNTRY_COTE_D_IVOIRE, LANGUAGE_FRENCH_COTE_D_IVOIRE, true },
+ { COUNTRY_CAMEROON, LANGUAGE_FRENCH_CAMEROON, true },
+ { COUNTRY_ZAIRE, LANGUAGE_FRENCH_ZAIRE, true },
+ { COUNTRY_RWANDA, LANGUAGE_KINYARWANDA_RWANDA, false },
+ { COUNTRY_KENYA, LANGUAGE_SWAHILI, false },
+ { COUNTRY_REUNION, LANGUAGE_FRENCH_REUNION, true },
+ { COUNTRY_ZIMBABWE, LANGUAGE_ENGLISH_ZIMBABWE, true },
+ { COUNTRY_LESOTHO, LANGUAGE_SESOTHO, false },
+ { COUNTRY_BOTSWANA, LANGUAGE_TSWANA, false },
+ { COUNTRY_FAEROE_ISLANDS, LANGUAGE_FAEROESE, false },
+ { COUNTRY_PORTUGAL, LANGUAGE_PORTUGUESE, false },
+ { COUNTRY_LUXEMBOURG, LANGUAGE_GERMAN_LUXEMBOURG, true },
+ { COUNTRY_LUXEMBOURG, LANGUAGE_FRENCH_LUXEMBOURG, true },
+ { COUNTRY_IRELAND, LANGUAGE_ENGLISH_EIRE, true },
+ { COUNTRY_IRELAND, LANGUAGE_GAELIC_IRELAND, true },
+ { COUNTRY_ICELAND, LANGUAGE_ICELANDIC, false },
+ { COUNTRY_ALBANIA, LANGUAGE_ALBANIAN, false },
+ { COUNTRY_MALTA, LANGUAGE_MALTESE, false },
+ { COUNTRY_FINLAND, LANGUAGE_FINNISH, false },
+ { COUNTRY_FINLAND, LANGUAGE_SWEDISH_FINLAND, true },
+ { COUNTRY_BULGARIA, LANGUAGE_BULGARIAN, false },
+ { COUNTRY_LITHUANIA, LANGUAGE_LITHUANIAN, false },
+ { COUNTRY_LATVIA, LANGUAGE_LATVIAN, false },
+ { COUNTRY_ESTONIA, LANGUAGE_ESTONIAN, false },
+ { COUNTRY_MOLDOVA, LANGUAGE_ROMANIAN_MOLDOVA, true },
+ { COUNTRY_MOLDOVA, LANGUAGE_RUSSIAN_MOLDOVA, true },
+ { COUNTRY_ARMENIA, LANGUAGE_ARMENIAN, false },
+ { COUNTRY_BELARUS, LANGUAGE_BELARUSIAN, false },
+ { COUNTRY_MONACO, LANGUAGE_FRENCH_MONACO, true },
+ { COUNTRY_UKRAINE, LANGUAGE_UKRAINIAN, false },
+ { COUNTRY_SERBIA, LANGUAGE_SERBIAN_LATIN, false },
+ { COUNTRY_CROATIA, LANGUAGE_CROATIAN, true }, // sub type of LANGUAGE_SERBIAN
+ { COUNTRY_SLOVENIA, LANGUAGE_SLOVENIAN, false },
+ { COUNTRY_MACEDONIA, LANGUAGE_MACEDONIAN, false },
+ { COUNTRY_CZECH, LANGUAGE_CZECH, false },
+ { COUNTRY_SLOVAK, LANGUAGE_SLOVAK, false },
+ { COUNTRY_LIECHTENSTEIN, LANGUAGE_GERMAN_LIECHTENSTEIN, true },
+ { COUNTRY_BELIZE, LANGUAGE_ENGLISH_BELIZE, true },
+ { COUNTRY_GUATEMALA, LANGUAGE_SPANISH_GUATEMALA, true },
+ { COUNTRY_EL_SALVADOR, LANGUAGE_SPANISH_EL_SALVADOR, true },
+ { COUNTRY_HONDURAS, LANGUAGE_SPANISH_HONDURAS, true },
+ { COUNTRY_NICARAGUA, LANGUAGE_SPANISH_NICARAGUA, true },
+ { COUNTRY_COSTA_RICA, LANGUAGE_SPANISH_COSTARICA, true },
+ { COUNTRY_PANAMA, LANGUAGE_SPANISH_PANAMA, true },
+ { COUNTRY_BOLIVIA, LANGUAGE_SPANISH_BOLIVIA, true },
+ { COUNTRY_ECUADOR, LANGUAGE_SPANISH_ECUADOR, true },
+ { COUNTRY_PARAGUAY, LANGUAGE_SPANISH_PARAGUAY, true },
+ { COUNTRY_URUGUAY, LANGUAGE_SPANISH_URUGUAY, true },
+ { COUNTRY_BRUNEI_DARUSSALAM, LANGUAGE_MALAY_BRUNEI_DARUSSALAM, true },
+ { COUNTRY_HONG_KONG, LANGUAGE_CHINESE_HONGKONG, true },
+ { COUNTRY_MACAU, LANGUAGE_CHINESE_MACAU, true },
+ { COUNTRY_CAMBODIA, LANGUAGE_KHMER, false },
+ { COUNTRY_LAOS, LANGUAGE_LAO, false },
+ { COUNTRY_BANGLADESH, LANGUAGE_BENGALI, false },
+ { COUNTRY_TAIWAN, LANGUAGE_CHINESE_TRADITIONAL, true },
+ { COUNTRY_MALDIVES, LANGUAGE_DHIVEHI, false },
+ { COUNTRY_LEBANON, LANGUAGE_ARABIC_LEBANON, true },
+ { COUNTRY_JORDAN, LANGUAGE_ARABIC_JORDAN, true },
+ { COUNTRY_SYRIA, LANGUAGE_ARABIC_SYRIA, true },
+ { COUNTRY_IRAQ, LANGUAGE_ARABIC_IRAQ, true },
+ { COUNTRY_KUWAIT, LANGUAGE_ARABIC_KUWAIT, true },
+ { COUNTRY_SAUDI_ARABIA, LANGUAGE_ARABIC_SAUDI_ARABIA, true },
+ { COUNTRY_YEMEN, LANGUAGE_ARABIC_YEMEN, true },
+ { COUNTRY_OMAN, LANGUAGE_ARABIC_OMAN, true },
+ { COUNTRY_UAE, LANGUAGE_ARABIC_UAE, true },
+ { COUNTRY_ISRAEL, LANGUAGE_HEBREW, false },
+ { COUNTRY_BAHRAIN, LANGUAGE_ARABIC_BAHRAIN, true },
+ { COUNTRY_QATAR, LANGUAGE_ARABIC_QATAR, true },
+ { COUNTRY_MONGOLIA, LANGUAGE_MONGOLIAN, false },
+ { COUNTRY_NEPAL, LANGUAGE_NEPALI, false },
+ { COUNTRY_IRAN, LANGUAGE_FARSI, false },
+ { COUNTRY_TAJIKISTAN, LANGUAGE_TAJIK, false },
+ { COUNTRY_TURKMENISTAN, LANGUAGE_TURKMEN, false },
+ { COUNTRY_AZERBAIJAN, LANGUAGE_AZERI_LATIN, false },
+ { COUNTRY_GEORGIA, LANGUAGE_GEORGIAN, false },
+ { COUNTRY_KYRGYZSTAN, LANGUAGE_KIRGHIZ, false },
+ { COUNTRY_UZBEKISTAN, LANGUAGE_UZBEK_LATIN, false }
+};
+
+const CountryEntry * const pEnd = pTable + sizeof( pTable ) / sizeof( pTable[ 0 ] );
+
+// ----------------------------------------------------------------------------
+
+/** Predicate comparing a country ID with the member of a CountryEntry. */
+struct CountryEntryPred_Country
+{
+ CountryId meCountry;
+
+ inline explicit CountryEntryPred_Country( CountryId eCountry ) :
+ meCountry( eCountry ) {}
+
+ inline bool operator()( const CountryEntry& rCmp ) const
+ { return rCmp.meCountry == meCountry; }
+};
+
+// ----------------------------------------------------------------------------
+
+/** Predicate comparing a language type with the member of a CountryEntry.
+
+ Compares by primary language only, if the passed CountryEntry allows it
+ (the member mbUseSubLang is cleared), otherwise by full language type. */
+struct CountryEntryPred_Language
+{
+ LanguageType meLanguage;
+
+ inline explicit CountryEntryPred_Language( LanguageType eLanguage ) :
+ meLanguage( eLanguage ) {}
+
+ inline bool operator()( const CountryEntry& rCmp ) const;
+};
+
+inline bool CountryEntryPred_Language::operator()( const CountryEntry& rCmp ) const
+{
+ // rCmp.mbUseSubLang==true -> compare full language type
+ // rCmp.mbUseSubLang==false -> compare primary language only
+ return rCmp.mbUseSubLang ? (meLanguage == rCmp.meLanguage) :
+ ((meLanguage & 0x03FF) == (rCmp.meLanguage & 0x03FF));
+}
+
+// ----------------------------------------------------------------------------
+
+} // namespace
+
+// Country ID <-> Language type conversion ====================================
+
+CountryId ConvertLanguageToCountry( LanguageType eLanguage )
+{
+ // country of a found primary language type
+ CountryId ePrimCountry = COUNTRY_DONTKNOW;
+
+ // find an exact match and a primary-language-only match, in one pass
+ const CountryEntry* pEntry = pTable;
+ do
+ {
+ pEntry = std::find_if( pEntry, pEnd, CountryEntryPred_Language( eLanguage ) );
+ if( pEntry != pEnd )
+ {
+ if( pEntry->mbUseSubLang )
+ return pEntry->meCountry; // exact match found -> return
+ if( ePrimCountry == COUNTRY_DONTKNOW )
+ ePrimCountry = pEntry->meCountry;
+ ++pEntry; // one entry forward for next find_if() call
+ }
+ }
+ while( pEntry != pEnd );
+
+ return ePrimCountry;
+}
+
+LanguageType ConvertCountryToLanguage( CountryId eCountry )
+{
+ // just find the first occurance of eCountry and return the language type
+ const CountryEntry* pEntry = std::find_if( pTable, pEnd, CountryEntryPred_Country( eCountry ) );
+ return (pEntry != pEnd) ? pEntry->meLanguage : LANGUAGE_DONTKNOW;
+}
+
+// ============================================================================
+
+} // namespace svx
+
+// ============================================================================
+
diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx
new file mode 100644
index 000000000000..ff5be3476da7
--- /dev/null
+++ b/filter/source/msfilter/escherex.cxx
@@ -0,0 +1,4918 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include "eschesdo.hxx"
+#include <filter/msfilter/escherex.hxx>
+#include <svx/unoapi.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdmodel.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/wrkwin.hxx>
+#include <tools/stream.hxx>
+#include <tools/zcodec.hxx>
+#include <svx/svdopath.hxx>
+#include <stdlib.h>
+#include <svtools/filter.hxx>
+#include "svx/EnhancedCustomShapeTypeNames.hxx"
+#include "svx/EnhancedCustomShapeGeometry.hxx"
+#include <svx/EnhancedCustomShapeFunctionParser.hxx>
+#include "svx/EnhancedCustomShape2d.hxx"
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/awt/GradientStyle.hpp>
+#include <com/sun/star/awt/RasterOperation.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/LineJoint.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/BezierPoint.hpp>
+#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <com/sun/star/drawing/ConnectorType.hpp>
+#include <com/sun/star/drawing/ConnectionType.hpp>
+#include <com/sun/star/drawing/CircleKind.hpp>
+#include <com/sun/star/drawing/PointSequence.hpp>
+#include <com/sun/star/drawing/FlagSequence.hpp>
+#include <com/sun/star/drawing/PolygonFlags.hpp>
+#include <com/sun/star/text/WritingMode.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeGluePointType.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp>
+#include <com/sun/star/drawing/ProjectionMode.hpp>
+#include <com/sun/star/text/XSimpleText.hpp>
+#include <com/sun/star/drawing/ShadeMode.hpp>
+#include <vcl/hatch.hxx>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/drawing/ColorMode.hpp>
+#include <com/sun/star/drawing/Position3D.hpp>
+#include <com/sun/star/drawing/Direction3D.hpp>
+#include <com/sun/star/text/GraphicCrop.hpp>
+#include <unotools/ucbstreamhelper.hxx>
+#include <unotools/localfilehelper.hxx>
+#include <comphelper/extract.hxx>
+#include <toolkit/unohlp.hxx>
+#include <vcl/virdev.hxx>
+#include <rtl/crc.h>
+#include <vos/xception.hxx>
+#ifndef _VOS_NO_NAMESPACE
+using namespace vos;
+#endif
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+
+
+// ---------------------------------------------------------------------------------------------
+
+EscherExContainer::EscherExContainer( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance ) :
+ rStrm ( rSt )
+{
+ rStrm << (sal_uInt32)( ( 0xf | ( nInstance << 4 ) ) | ( nRecType << 16 ) ) << (sal_uInt32)0;
+ nContPos = rStrm.Tell();
+}
+EscherExContainer::~EscherExContainer()
+{
+ sal_uInt32 nPos = rStrm.Tell();
+ sal_uInt32 nSize= nPos - nContPos;
+ if ( nSize )
+ {
+ rStrm.Seek( nContPos - 4 );
+ rStrm << nSize;
+ rStrm.Seek( nPos );
+ }
+}
+
+EscherExAtom::EscherExAtom( SvStream& rSt, const sal_uInt16 nRecType, const sal_uInt16 nInstance, const sal_uInt8 nVersion ) :
+ rStrm ( rSt )
+{
+ rStrm << (sal_uInt32)( ( nVersion | ( nInstance << 4 ) ) | ( nRecType << 16 ) ) << (sal_uInt32)0;
+ nContPos = rStrm.Tell();
+}
+EscherExAtom::~EscherExAtom()
+{
+ sal_uInt32 nPos = rStrm.Tell();
+ sal_uInt32 nSize= nPos - nContPos;
+ if ( nSize )
+ {
+ rStrm.Seek( nContPos - 4 );
+ rStrm << nSize;
+ rStrm.Seek( nPos );
+ }
+}
+
+// ---------------------------------------------------------------------------------------------
+
+EscherExClientRecord_Base::~EscherExClientRecord_Base()
+{
+}
+
+EscherExClientAnchor_Base::~EscherExClientAnchor_Base()
+{
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherPropertyContainer::ImplInit()
+{
+ nSortCount = 0;
+ nCountCount = 0;
+ nCountSize = 0;
+ nSortBufSize = 64;
+ bHasComplexData = sal_False;
+ bSuppressRotation = sal_False;
+ pSortStruct = new EscherPropSortStruct[ nSortBufSize ];
+}
+
+EscherPropertyContainer::EscherPropertyContainer() :
+ pGraphicProvider ( NULL ),
+ pPicOutStrm ( NULL )
+{
+ ImplInit();
+};
+
+EscherPropertyContainer::EscherPropertyContainer(
+ EscherGraphicProvider& rGraphProv,
+ SvStream* pPiOutStrm,
+ Rectangle& rBoundRect ) :
+
+ pGraphicProvider ( &rGraphProv ),
+ pPicOutStrm ( pPiOutStrm ),
+ pShapeBoundRect ( &rBoundRect )
+{
+ ImplInit();
+}
+
+EscherPropertyContainer::~EscherPropertyContainer()
+{
+ if ( bHasComplexData )
+ {
+ while ( nSortCount-- )
+ delete[] pSortStruct[ nSortCount ].pBuf;
+ }
+ delete[] pSortStruct;
+};
+
+void EscherPropertyContainer::AddOpt( sal_uInt16 nPropID, sal_uInt32 nPropValue, sal_Bool bBlib )
+{
+ AddOpt( nPropID, bBlib, nPropValue, NULL, 0 );
+}
+
+void EscherPropertyContainer::AddOpt( sal_uInt16 nPropID, const rtl::OUString& rString )
+{
+ sal_Int32 j, i, nLen = rString.getLength() * 2 + 2;
+ sal_uInt8* pBuf = new sal_uInt8[ nLen ];
+ for ( j = i = 0; i < rString.getLength(); i++ )
+ {
+ sal_uInt16 nChar = (sal_uInt16)rString[ i ];
+ pBuf[ j++ ] = (sal_uInt8)nChar;
+ pBuf[ j++ ] = (sal_uInt8)( nChar >> 8 );
+ }
+ pBuf[ j++ ] = 0;
+ pBuf[ j++ ] = 0;
+ AddOpt( nPropID, sal_True, nLen, pBuf, nLen );
+}
+
+void EscherPropertyContainer::AddOpt( sal_uInt16 nPropID, sal_Bool bBlib, sal_uInt32 nPropValue, sal_uInt8* pProp, sal_uInt32 nPropSize )
+{
+ if ( bBlib ) // bBlib is only valid when fComplex = 0
+ nPropID |= 0x4000;
+ if ( pProp )
+ nPropID |= 0x8000; // fComplex = TRUE;
+
+ sal_uInt32 i;
+ for( i = 0; i < nSortCount; i++ )
+ {
+ if ( ( pSortStruct[ i ].nPropId &~0xc000 ) == ( nPropID &~0xc000 ) ) // pruefen, ob Property nur ersetzt wird
+ {
+ pSortStruct[ i ].nPropId = nPropID;
+ if ( pSortStruct[ i ].pBuf )
+ {
+ nCountSize -= pSortStruct[ i ].nPropSize;
+ delete[] pSortStruct[ i ].pBuf;
+ }
+ pSortStruct[ i ].pBuf = pProp;
+ pSortStruct[ i ].nPropSize = nPropSize;
+ pSortStruct[ i ].nPropValue = nPropValue;
+ if ( pProp )
+ nCountSize += nPropSize;
+ return;
+ }
+ }
+ nCountCount++;
+ nCountSize += 6;
+ if ( nSortCount == nSortBufSize ) // buffer vergroessern
+ {
+ nSortBufSize <<= 1;
+ EscherPropSortStruct* pTemp = new EscherPropSortStruct[ nSortBufSize ];
+ for( i = 0; i < nSortCount; i++ )
+ {
+ pTemp[ i ] = pSortStruct[ i ];
+ }
+ delete pSortStruct;
+ pSortStruct = pTemp;
+ }
+ pSortStruct[ nSortCount ].nPropId = nPropID; // property einfuegen
+ pSortStruct[ nSortCount ].pBuf = pProp;
+ pSortStruct[ nSortCount ].nPropSize = nPropSize;
+ pSortStruct[ nSortCount++ ].nPropValue = nPropValue;
+
+ if ( pProp )
+ {
+ nCountSize += nPropSize;
+ bHasComplexData = sal_True;
+ }
+}
+
+sal_Bool EscherPropertyContainer::GetOpt( sal_uInt16 nPropId, sal_uInt32& rPropValue ) const
+{
+ EscherPropSortStruct aPropStruct;
+
+ if ( GetOpt( nPropId, aPropStruct ) )
+ {
+ rPropValue = aPropStruct.nPropValue;
+ return sal_True;
+ }
+ return sal_False;
+}
+
+sal_Bool EscherPropertyContainer::GetOpt( sal_uInt16 nPropId, EscherPropSortStruct& rPropValue ) const
+{
+ for( sal_uInt32 i = 0; i < nSortCount; i++ )
+ {
+ if ( ( pSortStruct[ i ].nPropId &~0xc000 ) == ( nPropId &~0xc000 ) )
+ {
+ rPropValue = pSortStruct[ i ];
+ return sal_True;
+ }
+ }
+ return sal_False;
+}
+
+EscherProperties EscherPropertyContainer::GetOpts() const
+{
+ EscherProperties aVector;
+
+ for ( sal_uInt32 i = 0; i < nSortCount; ++i )
+ aVector.push_back( pSortStruct[ i ] );
+
+ return aVector;
+}
+
+extern "C" int __LOADONCALLAPI EscherPropSortFunc( const void* p1, const void* p2 )
+{
+ INT16 nID1 = ((EscherPropSortStruct*)p1)->nPropId &~0xc000;
+ INT16 nID2 = ((EscherPropSortStruct*)p2)->nPropId &~0xc000;
+
+ if( nID1 < nID2 )
+ return -1;
+ else if( nID1 > nID2 )
+ return 1;
+ else
+ return 0;
+}
+
+void EscherPropertyContainer::Commit( SvStream& rSt, sal_uInt16 nVersion, sal_uInt16 nRecType )
+{
+ rSt << (sal_uInt16)( ( nCountCount << 4 ) | ( nVersion & 0xf ) ) << nRecType << nCountSize;
+ if ( nSortCount )
+ {
+ qsort( pSortStruct, nSortCount, sizeof( EscherPropSortStruct ), EscherPropSortFunc );
+ sal_uInt32 i;
+
+ for ( i = 0; i < nSortCount; i++ )
+ {
+ sal_uInt32 nPropValue = pSortStruct[ i ].nPropValue;
+ sal_uInt16 nPropId = pSortStruct[ i ].nPropId;
+
+ if ( bSuppressRotation && ( nPropId == ESCHER_Prop_Rotation ) )
+ nPropValue = 0;
+
+ rSt << nPropId
+ << nPropValue;
+ }
+ if ( bHasComplexData )
+ {
+ for ( i = 0; i < nSortCount; i++ )
+ {
+ if ( pSortStruct[ i ].pBuf )
+ rSt.Write( pSortStruct[ i ].pBuf, pSortStruct[ i ].nPropSize );
+ }
+ }
+ }
+}
+
+sal_Bool EscherPropertyContainer::IsFontWork() const
+{
+ sal_uInt32 nTextPathFlags = 0;
+ GetOpt( DFF_Prop_gtextFStrikethrough, nTextPathFlags );
+ return ( nTextPathFlags & 0x4000 ) != 0;
+}
+
+sal_uInt32 EscherPropertyContainer::ImplGetColor( const sal_uInt32 nSOColor, sal_Bool bSwap )
+{
+ if ( bSwap )
+ {
+ sal_uInt32 nColor = nSOColor & 0xff00; // GRUEN
+ nColor |= (sal_uInt8)( nSOColor ) << 16; // ROT
+ nColor |= (sal_uInt8)( nSOColor >> 16 ); // BLAU
+ return nColor;
+ }
+ else
+ return nSOColor & 0xffffff;
+}
+
+sal_uInt32 EscherPropertyContainer::GetGradientColor(
+ const ::com::sun::star::awt::Gradient* pGradient,
+ sal_uInt32 nStartColor )
+{
+ sal_uInt32 nIntensity = 100;
+ Color aColor;
+
+ if ( pGradient )
+ {
+ if ( nStartColor & 1 )
+ {
+ nIntensity = pGradient->StartIntensity;
+ aColor = pGradient->StartColor;
+ }
+ else
+ {
+ nIntensity = pGradient->EndIntensity;
+ aColor = pGradient->EndColor;
+ }
+ }
+ sal_uInt32 nRed = ( ( aColor.GetRed() * nIntensity ) / 100 );
+ sal_uInt32 nGreen = ( ( aColor.GetGreen() * nIntensity ) / 100 ) << 8;
+ sal_uInt32 nBlue = ( ( aColor.GetBlue() * nIntensity ) / 100 ) << 16;
+ return nRed | nGreen | nBlue;
+}
+
+void EscherPropertyContainer::CreateGradientProperties(
+ const ::com::sun::star::awt::Gradient & rGradient )
+{
+ sal_uInt32 nFillType = ESCHER_FillShadeScale;
+ sal_uInt32 nAngle = 0;
+ sal_uInt32 nFillFocus = 0;
+ sal_uInt32 nFillLR = 0;
+ sal_uInt32 nFillTB = 0;
+ sal_uInt32 nFirstColor = 0;
+ bool bWriteFillTo = false;
+
+ switch ( rGradient.Style )
+ {
+ case ::com::sun::star::awt::GradientStyle_LINEAR :
+ case ::com::sun::star::awt::GradientStyle_AXIAL :
+ {
+ nFillType = ESCHER_FillShadeScale;
+ nAngle = (rGradient.Angle * 0x10000) / 10;
+ nFillFocus = (sal::static_int_cast<int>(rGradient.Style) ==
+ sal::static_int_cast<int>(GradientStyle_LINEAR)) ? 0 : 50;
+ }
+ break;
+ case ::com::sun::star::awt::GradientStyle_RADIAL :
+ case ::com::sun::star::awt::GradientStyle_ELLIPTICAL :
+ case ::com::sun::star::awt::GradientStyle_SQUARE :
+ case ::com::sun::star::awt::GradientStyle_RECT :
+ {
+ nFillLR = (rGradient.XOffset * 0x10000) / 100;
+ nFillTB = (rGradient.YOffset * 0x10000) / 100;
+ if ( ((nFillLR > 0) && (nFillLR < 0x10000)) || ((nFillTB > 0) && (nFillTB < 0x10000)) )
+ nFillType = ESCHER_FillShadeShape;
+ else
+ nFillType = ESCHER_FillShadeCenter;
+ nFirstColor = 1;
+ bWriteFillTo = true;
+ }
+ break;
+ case ::com::sun::star::awt::GradientStyle_MAKE_FIXED_SIZE : break;
+ }
+ AddOpt( ESCHER_Prop_fillType, nFillType );
+ AddOpt( ESCHER_Prop_fillAngle, nAngle );
+ AddOpt( ESCHER_Prop_fillColor, GetGradientColor( &rGradient, nFirstColor ) );
+ AddOpt( ESCHER_Prop_fillBackColor, GetGradientColor( &rGradient, nFirstColor ^ 1 ) );
+ AddOpt( ESCHER_Prop_fillFocus, nFillFocus );
+ if ( bWriteFillTo )
+ {
+ AddOpt( ESCHER_Prop_fillToLeft, nFillLR );
+ AddOpt( ESCHER_Prop_fillToTop, nFillTB );
+ AddOpt( ESCHER_Prop_fillToRight, nFillLR );
+ AddOpt( ESCHER_Prop_fillToBottom, nFillTB );
+ }
+}
+
+void EscherPropertyContainer::CreateGradientProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet )
+{
+ ::com::sun::star::uno::Any aAny;
+ ::com::sun::star::awt::Gradient aGradient;
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillGradient" ) ), sal_False ) )
+ {
+ aGradient = *static_cast< const ::com::sun::star::awt::Gradient* >( aAny.getValue() );
+ }
+ CreateGradientProperties( aGradient );
+};
+
+void EscherPropertyContainer::CreateFillProperties(
+ const uno::Reference< beans::XPropertySet > & rXPropSet,
+ sal_Bool bEdge )
+{
+ ::com::sun::star::uno::Any aAny;
+ AddOpt( ESCHER_Prop_WrapText, ESCHER_WrapNone );
+ AddOpt( ESCHER_Prop_AnchorText, ESCHER_AnchorMiddle );
+
+ sal_uInt32 nFillBackColor = 0;
+
+ const rtl::OUString aPropName( String( RTL_CONSTASCII_USTRINGPARAM( "FillStyle" ) ) );
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, aPropName, sal_False ) )
+ {
+ ::com::sun::star::drawing::FillStyle eFS;
+ if ( ! ( aAny >>= eFS ) )
+ eFS = ::com::sun::star::drawing::FillStyle_SOLID;
+ switch( eFS )
+ {
+ case ::com::sun::star::drawing::FillStyle_GRADIENT :
+ {
+ CreateGradientProperties( rXPropSet );
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x140014 );
+ }
+ break;
+
+ case ::com::sun::star::drawing::FillStyle_BITMAP :
+ {
+ CreateGraphicProperties( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapURL" ) ), sal_True );
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x140014 );
+ AddOpt( ESCHER_Prop_fillBackColor, nFillBackColor );
+ }
+ break;
+ case ::com::sun::star::drawing::FillStyle_HATCH :
+ {
+ CreateGraphicProperties( rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillHatch" ) ), sal_True );
+ }
+ break;
+ case ::com::sun::star::drawing::FillStyle_SOLID :
+ default:
+ {
+ ::com::sun::star::beans::PropertyState ePropState = EscherPropertyValueHelper::GetPropertyState(
+ rXPropSet, aPropName );
+ if ( ePropState == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillSolid );
+
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillColor" ) ), sal_False ) )
+ {
+ sal_uInt32 nFillColor = ImplGetColor( *((sal_uInt32*)aAny.getValue()) );
+ nFillBackColor = nFillColor ^ 0xffffff;
+ AddOpt( ESCHER_Prop_fillColor, nFillColor );
+ }
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100010 );
+ AddOpt( ESCHER_Prop_fillBackColor, nFillBackColor );
+ break;
+ }
+ case ::com::sun::star::drawing::FillStyle_NONE :
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 );
+ break;
+ }
+ if ( eFS != ::com::sun::star::drawing::FillStyle_NONE )
+ {
+ sal_uInt16 nTransparency = ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillTransparence" ) ), sal_True ) )
+ ? *((sal_Int16*)aAny.getValue() )
+ : 0;
+ if ( nTransparency )
+ AddOpt( ESCHER_Prop_fillOpacity, ( ( 100 - nTransparency ) << 16 ) / 100 );
+ }
+ }
+ CreateLineProperties( rXPropSet, bEdge );
+}
+
+void EscherPropertyContainer::CreateTextProperties(
+ const uno::Reference< beans::XPropertySet > & rXPropSet, sal_uInt32 nTextId,
+ const sal_Bool bIsCustomShape, const sal_Bool bIsTextFrame )
+{
+ uno::Any aAny;
+ text::WritingMode eWM( text::WritingMode_LR_TB );
+ drawing::TextVerticalAdjust eVA( drawing::TextVerticalAdjust_TOP );
+ drawing::TextHorizontalAdjust eHA( drawing::TextHorizontalAdjust_LEFT );
+
+ sal_Int32 nLeft ( 0 );
+ sal_Int32 nTop ( 0 );
+ sal_Int32 nRight ( 0 );
+ sal_Int32 nBottom ( 0 );
+
+ // used with normal shapes:
+ sal_Bool bAutoGrowWidth ( sal_False );
+ sal_Bool bAutoGrowHeight ( sal_False );
+ // used with ashapes:
+ sal_Bool bWordWrap ( sal_False );
+ sal_Bool bAutoGrowSize ( sal_False );
+
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextWritingMode" ) ), sal_True ) )
+ aAny >>= eWM;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextVerticalAdjust" ) ), sal_True ) )
+ aAny >>= eVA;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextHorizontalAdjust" ) ), sal_True ) )
+ aAny >>= eHA;
+ if ( bIsCustomShape )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextWordWrap" ) ), sal_False ) )
+ aAny >>= bWordWrap;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextAutoGrowHeight" ) ), sal_True ) )
+ aAny >>= bAutoGrowSize;
+ }
+ else if ( bIsTextFrame )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextAutoGrowWidth" ) ), sal_True ) )
+ aAny >>= bAutoGrowWidth;
+
+// i63936 not setting autogrowheight, because otherwise
+// the minframeheight of the text will be ignored
+//
+// if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextAutoGrowHeight" ) ), sal_True ) )
+// aAny >>= bAutoGrowHeight;
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextLeftDistance" ) ) ) )
+ aAny >>= nLeft;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextUpperDistance" ) ) ) )
+ aAny >>= nTop;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextRightDistance" ) ) ) )
+ aAny >>= nRight;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "TextLowerDistance" ) ) ) )
+ aAny >>= nBottom;
+
+/*
+ if ( rObj.ImplGetPropertyValue(
+ ::rtl::OUString::createFromAscii("TextWritingMode") ) )
+ {
+ ::com::sun::star::text::WritingMode eMode;
+ rObj.GetUsrAny() >>= eMode;
+ switch (eMode)
+ {
+ case ::com::sun::star::text::WritingMode_TB_RL:
+ //Well if it so happens that we are fliped 180 we can use
+ //this instead.
+ if (rObj.GetAngle() == 18000)
+ eFlow = ESCHER_txflBtoT;
+ else
+ eFlow = ESCHER_txflTtoBA;
+ break;
+ case ::com::sun::star::text::WritingMode_RL_TB:
+ eDir = ESCHER_txdirRTL;
+ break;
+ }
+ }
+*/
+
+ ESCHER_AnchorText eAnchor = ESCHER_AnchorTop;
+ ESCHER_WrapMode eWrapMode = ESCHER_WrapSquare;
+ sal_uInt32 nTextAttr = 0x40004; // rotate text with shape
+
+ if ( eWM == text::WritingMode_TB_RL )
+ { // verical writing
+ switch ( eHA )
+ {
+ case drawing::TextHorizontalAdjust_LEFT :
+ eAnchor = ESCHER_AnchorBottom;
+ break;
+ case drawing::TextHorizontalAdjust_CENTER :
+ eAnchor = ESCHER_AnchorMiddle;
+ break;
+ default :
+ case drawing::TextHorizontalAdjust_BLOCK :
+ case drawing::TextHorizontalAdjust_RIGHT :
+ eAnchor = ESCHER_AnchorTop;
+ break;
+ }
+ if ( eVA == drawing::TextVerticalAdjust_CENTER )
+ {
+ switch ( eAnchor )
+ {
+ case ESCHER_AnchorMiddle :
+ eAnchor = ESCHER_AnchorMiddleCentered;
+ break;
+ case ESCHER_AnchorBottom :
+ eAnchor = ESCHER_AnchorBottomCentered;
+ break;
+ default :
+ case ESCHER_AnchorTop :
+ eAnchor = ESCHER_AnchorTopCentered;
+ break;
+ }
+ }
+ if ( bIsCustomShape )
+ {
+ if ( bWordWrap )
+ eWrapMode = ESCHER_WrapSquare;
+ else
+ eWrapMode = ESCHER_WrapNone;
+ if ( bAutoGrowSize )
+ nTextAttr |= 0x20002;
+ }
+ else
+ {
+ if ( bAutoGrowHeight )
+ eWrapMode = ESCHER_WrapNone;
+ if ( bAutoGrowWidth )
+ nTextAttr |= 0x20002;
+ }
+
+ AddOpt( ESCHER_Prop_txflTextFlow, ESCHER_txflTtoBA ); // rotate text within shape by 90
+ }
+ else
+ { // normal from left to right
+ switch ( eVA )
+ {
+ case drawing::TextVerticalAdjust_CENTER :
+ eAnchor = ESCHER_AnchorMiddle;
+ break;
+
+ case drawing::TextVerticalAdjust_BOTTOM :
+ eAnchor = ESCHER_AnchorBottom;
+ break;
+
+ default :
+ case drawing::TextVerticalAdjust_TOP :
+ eAnchor = ESCHER_AnchorTop;
+ break;
+ }
+ if ( eHA == drawing::TextHorizontalAdjust_CENTER )
+ {
+ switch( eAnchor )
+ {
+ case ESCHER_AnchorMiddle :
+ eAnchor = ESCHER_AnchorMiddleCentered;
+ break;
+ case ESCHER_AnchorBottom :
+ eAnchor = ESCHER_AnchorBottomCentered;
+ break;
+ case ESCHER_AnchorTop :
+ eAnchor = ESCHER_AnchorTopCentered;
+ break;
+ default: break;
+ }
+ }
+ if ( bIsCustomShape )
+ {
+ if ( bWordWrap )
+ eWrapMode = ESCHER_WrapSquare;
+ else
+ eWrapMode = ESCHER_WrapNone;
+ if ( bAutoGrowSize )
+ nTextAttr |= 0x20002;
+ }
+ else
+ {
+ if ( bAutoGrowWidth )
+ eWrapMode = ESCHER_WrapNone;
+ if ( bAutoGrowHeight )
+ nTextAttr |= 0x20002;
+ }
+ }
+ AddOpt( ESCHER_Prop_dxTextLeft, nLeft * 360 );
+ AddOpt( ESCHER_Prop_dxTextRight, nRight * 360 );
+ AddOpt( ESCHER_Prop_dyTextTop, nTop * 360 );
+ AddOpt( ESCHER_Prop_dyTextBottom, nBottom * 360 );
+
+ AddOpt( ESCHER_Prop_WrapText, eWrapMode );
+ AddOpt( ESCHER_Prop_AnchorText, eAnchor );
+ AddOpt( ESCHER_Prop_FitTextToShape, nTextAttr );
+
+ if ( nTextId )
+ AddOpt( ESCHER_Prop_lTxid, nTextId );
+}
+
+sal_Bool EscherPropertyContainer::GetLineArrow( const sal_Bool bLineStart,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ ESCHER_LineEnd& reLineEnd, sal_Int32& rnArrowLength, sal_Int32& rnArrowWidth )
+{
+ static String sLineStart ( RTL_CONSTASCII_USTRINGPARAM( "LineStart" ) );
+ static String sLineStartName( RTL_CONSTASCII_USTRINGPARAM( "LineStartName" ) );
+ static String sLineEnd ( RTL_CONSTASCII_USTRINGPARAM( "LineEnd" ) );
+ static String sLineEndName ( RTL_CONSTASCII_USTRINGPARAM( "LineEndName" ) );
+
+ const String sLine ( bLineStart ? sLineStart : sLineEnd );
+ const String sLineName ( bLineStart ? sLineStartName : sLineEndName );
+
+ sal_Bool bIsArrow = sal_False;
+
+ ::com::sun::star::uno::Any aAny;
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, sLine, sal_False ) )
+ {
+ PolyPolygon aPolyPoly( EscherPropertyContainer::GetPolyPolygon( aAny ) );
+ if ( aPolyPoly.Count() && aPolyPoly[ 0 ].GetSize() )
+ {
+ bIsArrow = sal_True;
+
+ reLineEnd = ESCHER_LineArrowEnd;
+ rnArrowLength = 1;
+ rnArrowWidth = 1;
+
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, sLineName, sal_False ) )
+ {
+ String aArrowStartName = *(::rtl::OUString*)aAny.getValue();
+ rtl::OUString aApiName;
+ sal_Int16 nWhich = bLineStart ? XATTR_LINESTART : XATTR_LINEEND;
+
+ SvxUnogetApiNameForItem( nWhich, aArrowStartName, aApiName );
+ if ( aApiName.getLength() )
+ {
+
+ /* todo:
+ calculate the best option for ArrowLenght and ArrowWidth
+ */
+ if ( aApiName.equalsAscii( "Arrow concave" ) )
+ reLineEnd = ESCHER_LineArrowStealthEnd;
+ else if ( aApiName.equalsAscii( "Square 45" ) )
+ reLineEnd = ESCHER_LineArrowDiamondEnd;
+ else if ( aApiName.equalsAscii( "Small Arrow" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ else if ( aApiName.equalsAscii( "Dimension Lines" ) )
+ {
+ rnArrowLength = 0;
+ rnArrowWidth = 2;
+ reLineEnd = ESCHER_LineArrowOvalEnd;
+ }
+ else if ( aApiName.equalsAscii( "Double Arrow" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ else if ( aApiName.equalsAscii( "Rounded short Arrow" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ else if ( aApiName.equalsAscii( "Symmetric Arrow" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ else if ( aApiName.equalsAscii( "Line Arrow" ) )
+ reLineEnd = ESCHER_LineArrowOpenEnd;
+ else if ( aApiName.equalsAscii( "Rounded large Arrow" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ else if ( aApiName.equalsAscii( "Circle" ) )
+ reLineEnd = ESCHER_LineArrowOvalEnd;
+ else if ( aApiName.equalsAscii( "Square" ) )
+ reLineEnd = ESCHER_LineArrowDiamondEnd;
+ else if ( aApiName.equalsAscii( "Arrow" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ }
+ else if ( aArrowStartName.GetTokenCount( ' ' ) == 2 )
+ {
+ sal_Bool b = sal_True;
+ String aArrowName( aArrowStartName.GetToken( 0, ' ' ) );
+ if ( aArrowName.EqualsAscii( "msArrowEnd" ) )
+ reLineEnd = ESCHER_LineArrowEnd;
+ else if ( aArrowName.EqualsAscii( "msArrowOpenEnd" ) )
+ reLineEnd = ESCHER_LineArrowOpenEnd;
+ else if ( aArrowName.EqualsAscii( "msArrowStealthEnd" ) )
+ reLineEnd = ESCHER_LineArrowStealthEnd;
+ else if ( aArrowName.EqualsAscii( "msArrowDiamondEnd" ) )
+ reLineEnd = ESCHER_LineArrowDiamondEnd;
+ else if ( aArrowName.EqualsAscii( "msArrowOvalEnd" ) )
+ reLineEnd = ESCHER_LineArrowOvalEnd;
+ else
+ b = sal_False;
+
+ // now we have the arrow, and try to determine the arrow size;
+ if ( b )
+ {
+ String aArrowSize( aArrowStartName.GetToken( 1, ' ' ) );
+ sal_Int32 nArrowSize = aArrowSize.ToInt32();
+ rnArrowWidth = ( nArrowSize - 1 ) / 3;
+ rnArrowLength = nArrowSize - ( rnArrowWidth * 3 ) - 1;
+ }
+ }
+ }
+ }
+ }
+ return bIsArrow;
+}
+
+void EscherPropertyContainer::CreateLineProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ sal_Bool bEdge )
+{
+ ::com::sun::star::uno::Any aAny;
+ sal_uInt32 nLineFlags = 0x80008;
+
+ ESCHER_LineEnd eLineEnd;
+ sal_Int32 nArrowLength;
+ sal_Int32 nArrowWidth;
+
+ sal_Bool bSwapLineEnds = sal_False;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "CircleKind" ) ), sal_True ) )
+ {
+ ::com::sun::star::drawing::CircleKind eCircleKind;
+ if ( aAny >>= eCircleKind )
+ {
+ if ( eCircleKind == ::com::sun::star::drawing::CircleKind_ARC )
+ bSwapLineEnds = sal_True;
+ }
+ }
+ if ( GetLineArrow( bSwapLineEnds ? sal_False : sal_True, rXPropSet, eLineEnd, nArrowLength, nArrowWidth ) )
+ {
+ AddOpt( ESCHER_Prop_lineStartArrowLength, nArrowLength );
+ AddOpt( ESCHER_Prop_lineStartArrowWidth, nArrowWidth );
+ AddOpt( ESCHER_Prop_lineStartArrowhead, eLineEnd );
+ nLineFlags |= 0x100010;
+ }
+ if ( GetLineArrow( bSwapLineEnds ? sal_True : sal_False, rXPropSet, eLineEnd, nArrowLength, nArrowWidth ) )
+ {
+ AddOpt( ESCHER_Prop_lineEndArrowLength, nArrowLength );
+ AddOpt( ESCHER_Prop_lineEndArrowWidth, nArrowWidth );
+ AddOpt( ESCHER_Prop_lineEndArrowhead, eLineEnd );
+ nLineFlags |= 0x100010;
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "LineStyle" ) ), sal_False ) )
+ {
+ ::com::sun::star::drawing::LineStyle eLS;
+ if ( aAny >>= eLS )
+ {
+ switch ( eLS )
+ {
+ case ::com::sun::star::drawing::LineStyle_NONE :
+ AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x90000 ); // 80000
+ break;
+
+ case ::com::sun::star::drawing::LineStyle_DASH :
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "LineDash" ) ), sal_False ) )
+ {
+ ESCHER_LineDashing eDash = ESCHER_LineSolid;
+ ::com::sun::star::drawing::LineDash* pLineDash = (::com::sun::star::drawing::LineDash*)aAny.getValue();
+ sal_Int32 nDistance = pLineDash->Distance << 1;
+ switch ( pLineDash->Style )
+ {
+ case ::com::sun::star::drawing::DashStyle_ROUND :
+ case ::com::sun::star::drawing::DashStyle_ROUNDRELATIVE :
+ AddOpt( ESCHER_Prop_lineEndCapStyle, 0 ); // Style Round setzen
+ break;
+ default : break;
+ }
+ if ( ((!(pLineDash->Dots )) || (!(pLineDash->Dashes )) ) || ( pLineDash->DotLen == pLineDash->DashLen ) )
+ {
+ sal_Int32 nLen = pLineDash->DotLen;
+ if ( pLineDash->Dashes )
+ nLen = pLineDash->DashLen;
+
+ if ( nLen >= nDistance )
+ eDash = ESCHER_LineLongDashGEL;
+ else if ( pLineDash->Dots )
+ eDash = ESCHER_LineDotSys;
+ else
+ eDash = ESCHER_LineDashGEL;
+ }
+ else // X Y
+ {
+ if ( pLineDash->Dots != pLineDash->Dashes )
+ {
+ if ( ( pLineDash->DashLen > nDistance ) || ( pLineDash->DotLen > nDistance ) )
+ eDash = ESCHER_LineLongDashDotDotGEL;
+ else
+ eDash = ESCHER_LineDashDotDotSys;
+ }
+ else // X Y Y
+ {
+ if ( ( pLineDash->DashLen > nDistance ) || ( pLineDash->DotLen > nDistance ) )
+ eDash = ESCHER_LineLongDashDotGEL;
+ else
+ eDash = ESCHER_LineDashDotGEL;
+
+ }
+ }
+ AddOpt( ESCHER_Prop_lineDashing, eDash );
+ }
+ }
+ case ::com::sun::star::drawing::LineStyle_SOLID :
+ default:
+ {
+ AddOpt( ESCHER_Prop_fNoLineDrawDash, nLineFlags );
+ }
+ break;
+ }
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "LineColor" ) ), sal_False ) )
+ {
+ sal_uInt32 nLineColor = ImplGetColor( *((sal_uInt32*)aAny.getValue()) );
+ AddOpt( ESCHER_Prop_lineColor, nLineColor );
+ AddOpt( ESCHER_Prop_lineBackColor, nLineColor ^ 0xffffff );
+ }
+ }
+
+ sal_uInt32 nLineSize = ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "LineWidth" ) ), sal_False ) )
+ ? *((sal_uInt32*)aAny.getValue())
+ : 0;
+ if ( nLineSize > 1 )
+ AddOpt( ESCHER_Prop_lineWidth, nLineSize * 360 ); // 100TH MM -> PT , 1PT = 12700 EMU
+
+ ESCHER_LineJoin eLineJoin = ESCHER_LineJoinMiter;
+ if ( EscherPropertyValueHelper::GetPropertyValue(
+ aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "LineJoint" ) ), sal_True ) )
+ {
+ ::com::sun::star::drawing::LineJoint eLJ;
+ if ( aAny >>= eLJ )
+ {
+ switch ( eLJ )
+ {
+ case com::sun::star::drawing::LineJoint_NONE :
+ case com::sun::star::drawing::LineJoint_MIDDLE :
+ case com::sun::star::drawing::LineJoint_BEVEL :
+ eLineJoin = ESCHER_LineJoinBevel;
+ break;
+ default:
+ case com::sun::star::drawing::LineJoint_MITER :
+ eLineJoin = ESCHER_LineJoinMiter;
+ break;
+ case com::sun::star::drawing::LineJoint_ROUND :
+ eLineJoin = ESCHER_LineJoinRound;
+ break;
+ }
+ }
+ }
+ AddOpt( ESCHER_Prop_lineJoinStyle, eLineJoin );
+
+ if ( bEdge == sal_False )
+ {
+ AddOpt( ESCHER_Prop_fFillOK, 0x1001 );
+ AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 );
+ }
+}
+
+static Size lcl_SizeToEmu(Size aPrefSize, MapMode aPrefMapMode)
+{
+ Size aRetSize;
+ if (aPrefMapMode == MAP_PIXEL)
+ aRetSize = Application::GetDefaultDevice()->PixelToLogic( aPrefSize, MAP_100TH_MM );
+ else
+ aRetSize = Application::GetDefaultDevice()->LogicToLogic( aPrefSize, aPrefMapMode, MAP_100TH_MM );
+ return aRetSize;
+}
+
+void EscherPropertyContainer::ImplCreateGraphicAttributes( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ sal_uInt32 nBlibId, sal_Bool bCreateCroppingAttributes )
+{
+ ::com::sun::star::uno::Any aAny;
+
+ sal_uInt32 nPicFlags = 0;
+ ::com::sun::star::drawing::ColorMode eColorMode( ::com::sun::star::drawing::ColorMode_STANDARD );
+ sal_Int16 nLuminance = 0;
+ sal_Int32 nContrast = 0;
+ sal_Int16 nRed = 0;
+ sal_Int16 nGreen = 0;
+ sal_Int16 nBlue = 0;
+ double fGamma = 1.0;
+ sal_Int16 nTransparency = 0;
+
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "GraphicColorMode" ) ) ) )
+ aAny >>= eColorMode;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustLuminance" ) ) ) )
+ aAny >>= nLuminance;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustContrast" ) ) ) )
+ {
+ sal_Int16 nC = sal_Int16();
+ aAny >>= nC;
+ nContrast = nC;
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustRed" ) ) ) )
+ aAny >>= nRed;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustGreen" ) ) ) )
+ aAny >>= nGreen;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "AdjustBlue" ) ) ) )
+ aAny >>= nBlue;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Gamma" ) ) ) )
+ aAny >>= fGamma;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Transparency" ) ) ) )
+ aAny >>= nTransparency;
+
+ if ( eColorMode == ::com::sun::star::drawing::ColorMode_WATERMARK )
+ {
+ eColorMode = ::com::sun::star::drawing::ColorMode_STANDARD;
+ nLuminance += 70;
+ if ( nLuminance > 100 )
+ nLuminance = 100;
+ nContrast -= 70;
+ if ( nContrast < -100 )
+ nContrast = -100;
+ }
+ if ( eColorMode == ::com::sun::star::drawing::ColorMode_GREYS )
+ nPicFlags |= 0x40004;
+ else if ( eColorMode == ::com::sun::star::drawing::ColorMode_MONO )
+ nPicFlags |= 0x60006;
+
+ if ( nContrast )
+ {
+ nContrast += 100;
+ if ( nContrast == 100)
+ nContrast = 0x10000;
+ else if ( nContrast < 100 )
+ {
+ nContrast *= 0x10000;
+ nContrast /= 100;
+ }
+ else if ( nContrast < 200 )
+ nContrast = ( 100 * 0x10000 ) / ( 200 - nContrast );
+ else
+ nContrast = 0x7fffffff;
+ AddOpt( ESCHER_Prop_pictureContrast, nContrast );
+ }
+ if ( nLuminance )
+ AddOpt( ESCHER_Prop_pictureBrightness, nLuminance * 327 );
+ if ( nPicFlags )
+ AddOpt( ESCHER_Prop_pictureActive, nPicFlags );
+
+ if ( bCreateCroppingAttributes && pGraphicProvider )
+ {
+ Size aPrefSize;
+ MapMode aPrefMapMode;
+ if ( pGraphicProvider->GetPrefSize( nBlibId, aPrefSize, aPrefMapMode ) )
+ {
+ Size aCropSize(lcl_SizeToEmu(aPrefSize, aPrefMapMode));
+ if ( aCropSize.Width() && aCropSize.Height() )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "GraphicCrop" ) ) ) )
+ {
+ ::com::sun::star::text::GraphicCrop aGraphCrop;
+ if ( aAny >>= aGraphCrop )
+ {
+ if ( aGraphCrop.Left )
+ {
+ sal_uInt32 nLeft = ( aGraphCrop.Left * 65536 ) / aCropSize.Width();
+ AddOpt( ESCHER_Prop_cropFromLeft, nLeft );
+ }
+ if ( aGraphCrop.Top )
+ {
+ sal_uInt32 nTop = ( aGraphCrop.Top * 65536 ) / aCropSize.Height();
+ AddOpt( ESCHER_Prop_cropFromTop, nTop );
+ }
+ if ( aGraphCrop.Right )
+ {
+ sal_uInt32 nRight = ( aGraphCrop.Right * 65536 ) / aCropSize.Width();
+ AddOpt( ESCHER_Prop_cropFromRight, nRight );
+ }
+ if ( aGraphCrop.Bottom )
+ {
+ sal_uInt32 nBottom = ( aGraphCrop.Bottom * 65536 ) / aCropSize.Height();
+ AddOpt( ESCHER_Prop_cropFromBottom, nBottom );
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+sal_Bool EscherPropertyContainer::CreateOLEGraphicProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape )
+{
+ sal_Bool bRetValue = sal_False;
+
+ if ( rXShape.is() )
+ {
+ SdrObject* pSdrOLE2( GetSdrObjectFromXShape( rXShape ) ); // SJ: leaving unoapi, because currently there is
+ if ( pSdrOLE2 && pSdrOLE2->ISA( SdrOle2Obj ) ) // no access to the native graphic object
+ {
+ Graphic* pGraphic = ((SdrOle2Obj*)pSdrOLE2)->GetGraphic();
+ if ( pGraphic )
+ {
+ GraphicObject aGraphicObject( *pGraphic );
+ ByteString aUniqueId( aGraphicObject.GetUniqueID() );
+ if ( aUniqueId.Len() )
+ {
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillPicture );
+ uno::Reference< beans::XPropertySet > aXPropSet( rXShape, uno::UNO_QUERY );
+
+ if ( pGraphicProvider && pPicOutStrm && pShapeBoundRect && aXPropSet.is() )
+ {
+ ::com::sun::star::uno::Any aAny;
+ ::com::sun::star::awt::Rectangle* pVisArea = NULL;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "VisibleArea" ) ) ) )
+ {
+ pVisArea = new ::com::sun::star::awt::Rectangle;
+ aAny >>= (*pVisArea);
+ }
+ Rectangle aRect( Point( 0, 0 ), pShapeBoundRect->GetSize() );
+ sal_uInt32 nBlibId = pGraphicProvider->GetBlibID( *pPicOutStrm, aUniqueId, aRect, pVisArea, NULL );
+ if ( nBlibId )
+ {
+ AddOpt( ESCHER_Prop_pib, nBlibId, sal_True );
+ ImplCreateGraphicAttributes( aXPropSet, nBlibId, sal_False );
+ bRetValue = sal_True;
+ }
+ delete pVisArea;
+ }
+ }
+ }
+ }
+ }
+ return bRetValue;
+}
+
+
+sal_Bool EscherPropertyContainer::ImplCreateEmbeddedBmp( const ByteString& rUniqueId )
+{
+ if( rUniqueId.Len() > 0 )
+ {
+ EscherGraphicProvider aProvider;
+ SvMemoryStream aMemStrm;
+ Rectangle aRect;
+ if ( aProvider.GetBlibID( aMemStrm, rUniqueId, aRect ) )
+ {
+ // grab BLIP from stream and insert directly as complex property
+ // ownership of stream memory goes to complex property
+ aMemStrm.ObjectOwnsMemory( FALSE );
+ sal_uInt8* pBuf = (sal_uInt8*) aMemStrm.GetData();
+ sal_uInt32 nSize = aMemStrm.Seek( STREAM_SEEK_TO_END );
+ AddOpt( ESCHER_Prop_fillBlip, sal_True, nSize, pBuf, nSize );
+ return sal_True;
+ }
+ }
+ return sal_False;
+}
+
+sal_Bool EscherPropertyContainer::CreateEmbeddedBitmapProperties(
+ const ::rtl::OUString& rBitmapUrl, ::com::sun::star::drawing::BitmapMode eBitmapMode )
+{
+ sal_Bool bRetValue = sal_False;
+ String aVndUrl( RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.GraphicObject:" ) );
+ String aBmpUrl( rBitmapUrl );
+ xub_StrLen nIndex = aBmpUrl.Search( aVndUrl, 0 );
+ if( nIndex != STRING_NOTFOUND )
+ {
+ // note: += ist not defined for xub_StrLen -> conversion to int and back to xub_StrLen
+ nIndex = nIndex + aVndUrl.Len();
+ if( aBmpUrl.Len() > nIndex )
+ {
+ ByteString aUniqueId( aBmpUrl, nIndex, aBmpUrl.Len() - nIndex, RTL_TEXTENCODING_UTF8 );
+ bRetValue = ImplCreateEmbeddedBmp( aUniqueId );
+ if( bRetValue )
+ {
+ // bitmap mode property
+ bool bRepeat = eBitmapMode == ::com::sun::star::drawing::BitmapMode_REPEAT;
+ AddOpt( ESCHER_Prop_fillType, bRepeat ? ESCHER_FillTexture : ESCHER_FillPicture );
+ }
+ }
+ }
+ return bRetValue;
+}
+
+
+namespace {
+
+GraphicObject lclDrawHatch( const ::com::sun::star::drawing::Hatch& rHatch, const Color& rBackColor, bool bFillBackground )
+{
+ const MapMode aMap100( MAP_100TH_MM );
+ VirtualDevice aVDev( *Application::GetDefaultDevice(), 0, 1 );
+ aVDev.SetMapMode( aMap100 );
+
+ const Size aOutSize = aVDev.PixelToLogic( Size( 28, 28 ) );
+ aVDev.SetOutputSize( aOutSize );
+
+ Rectangle aRectangle( Point( 0, 0 ), aOutSize );
+ const PolyPolygon aPolyPoly( aRectangle );
+
+ aVDev.SetLineColor();
+ aVDev.SetFillColor( bFillBackground ? rBackColor : Color( COL_TRANSPARENT ) );
+ aVDev.DrawRect( Rectangle( Point(), aOutSize ) );
+
+ Hatch aVclHatch( (HatchStyle) rHatch.Style, Color( rHatch.Color ), rHatch.Distance, (sal_uInt16)rHatch.Angle );
+ aVDev.DrawHatch( aPolyPoly, aVclHatch );
+
+ return GraphicObject( Graphic( aVDev.GetBitmapEx( Point(), aOutSize ) ) );
+}
+
+} // namespace
+
+
+sal_Bool EscherPropertyContainer::CreateEmbeddedHatchProperties( const ::com::sun::star::drawing::Hatch& rHatch, const Color& rBackColor, bool bFillBackground )
+{
+ GraphicObject aGraphicObject = lclDrawHatch( rHatch, rBackColor, bFillBackground );
+ ByteString aUniqueId = aGraphicObject.GetUniqueID();
+ sal_Bool bRetValue = ImplCreateEmbeddedBmp( aUniqueId );
+ if ( bRetValue )
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillTexture );
+ return bRetValue;
+}
+
+
+sal_Bool EscherPropertyContainer::CreateGraphicProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ const String& rSource, const sal_Bool bCreateFillBitmap, const sal_Bool bCreateCroppingAttributes,
+ const sal_Bool bFillBitmapModeAllowed )
+{
+ sal_Bool bRetValue = sal_False;
+ sal_Bool bCreateFillStyles = sal_False;
+
+ sal_Bool bMirrored = sal_False;
+ sal_Bool bRotate = sal_True;
+ sal_uInt16 nAngle = 0;
+ GraphicAttr* pGraphicAttr = NULL;
+ GraphicObject aGraphicObject;
+ String aGraphicUrl;
+ ByteString aUniqueId;
+ bool bIsGraphicMtf(false);
+
+ ::com::sun::star::drawing::BitmapMode eBitmapMode( ::com::sun::star::drawing::BitmapMode_NO_REPEAT );
+ ::com::sun::star::uno::Any aAny;
+
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, rSource ) )
+ {
+ if ( rSource == String( RTL_CONSTASCII_USTRINGPARAM( "MetaFile" ) ) )
+ {
+ ::com::sun::star::uno::Sequence<sal_uInt8> aSeq = *(::com::sun::star::uno::Sequence<sal_uInt8>*)aAny.getValue();
+ const sal_uInt8* pAry = aSeq.getArray();
+ sal_uInt32 nAryLen = aSeq.getLength();
+
+ // the metafile is already rotated
+ bRotate = sal_False;
+
+ if ( pAry && nAryLen )
+ {
+ Graphic aGraphic;
+ SvMemoryStream aTemp( (void*)pAry, nAryLen, STREAM_READ );
+ sal_uInt32 nErrCode = GraphicConverter::Import( aTemp, aGraphic, CVT_WMF );
+ if ( nErrCode == ERRCODE_NONE )
+ {
+ aGraphicObject = aGraphic;
+ aUniqueId = aGraphicObject.GetUniqueID();
+ bIsGraphicMtf = aGraphicObject.GetType() == GRAPHIC_GDIMETAFILE;
+ }
+ }
+ }
+ else if ( rSource == String( RTL_CONSTASCII_USTRINGPARAM( "Bitmap" ) ) )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >xBitmap;
+ if ( ::cppu::extractInterface( xBitmap, aAny ) )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap > xBmp;
+ if ( aAny >>= xBmp )
+ {
+ BitmapEx aBitmapEx( VCLUnoHelper::GetBitmap( xBmp ) );
+ Graphic aGraphic( aBitmapEx );
+ aGraphicObject = aGraphic;
+ aUniqueId = aGraphicObject.GetUniqueID();
+ bIsGraphicMtf = aGraphicObject.GetType() == GRAPHIC_GDIMETAFILE;
+ }
+ }
+ }
+ else if ( rSource == String( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapURL" ) ) )
+ {
+ aGraphicUrl = *(::rtl::OUString*)aAny.getValue();
+ }
+ else if ( rSource == String( RTL_CONSTASCII_USTRINGPARAM( "GraphicURL" ) ) )
+ {
+ aGraphicUrl = *(::rtl::OUString*)aAny.getValue();
+ bCreateFillStyles = sal_True;
+ }
+ else if ( rSource == String( RTL_CONSTASCII_USTRINGPARAM( "FillHatch" ) ) )
+ {
+ ::com::sun::star::drawing::Hatch aHatch;
+ if ( aAny >>= aHatch )
+ {
+ Color aBackColor;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "FillColor" ) ), sal_False ) )
+ {
+ aBackColor = ImplGetColor( *((sal_uInt32*)aAny.getValue()), sal_False );
+ }
+ bool bFillBackground = false;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "FillBackground" ) ), sal_True ) )
+ {
+ aAny >>= bFillBackground;
+ }
+ aGraphicObject = lclDrawHatch( aHatch, aBackColor, bFillBackground );
+ aUniqueId = aGraphicObject.GetUniqueID();
+ eBitmapMode = ::com::sun::star::drawing::BitmapMode_REPEAT;
+ bIsGraphicMtf = aGraphicObject.GetType() == GRAPHIC_GDIMETAFILE;
+ }
+ }
+
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "IsMirrored" ) ), sal_True ) )
+ aAny >>= bMirrored;
+
+ if ( bCreateFillBitmap && bFillBitmapModeAllowed )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapMode" ) ), sal_True ) )
+ aAny >>= eBitmapMode;
+ }
+ else
+ {
+ nAngle = bRotate && EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "RotateAngle" ) ), sal_True )
+ ? (sal_uInt16)( ( *((sal_Int32*)aAny.getValue() ) ) + 5 ) / 10
+ : 0;
+ }
+
+ if ( aGraphicUrl.Len() )
+ {
+ String aVndUrl( RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.GraphicObject:" ) );
+ xub_StrLen nIndex = aGraphicUrl.Search( aVndUrl, 0 );
+ if ( nIndex != STRING_NOTFOUND )
+ {
+ nIndex = nIndex + aVndUrl.Len();
+ if ( aGraphicUrl.Len() > nIndex )
+ aUniqueId = ByteString( aGraphicUrl, nIndex, aGraphicUrl.Len() - nIndex, RTL_TEXTENCODING_UTF8 );
+ }
+ else
+ {
+ // externally, linked graphic? convert to embedded
+ // one, if transformations are needed. this is because
+ // everything < msoxp cannot even handle rotated
+ // bitmaps.
+ // And check whether the graphic link target is
+ // actually supported by mso.
+ INetURLObject aTmp( aGraphicUrl );
+ GraphicDescriptor aDescriptor(aTmp);
+ aDescriptor.Detect();
+ const USHORT nFormat = aDescriptor.GetFileFormat();
+
+ // can MSO handle it?
+ if ( bMirrored || nAngle ||
+ (nFormat != GFF_BMP &&
+ nFormat != GFF_GIF &&
+ nFormat != GFF_JPG &&
+ nFormat != GFF_PNG &&
+ nFormat != GFF_TIF &&
+ nFormat != GFF_PCT &&
+ nFormat != GFF_WMF &&
+ nFormat != GFF_EMF) )
+ {
+ SvStream* pIn = ::utl::UcbStreamHelper::CreateStream(
+ aTmp.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ );
+ if ( pIn )
+ {
+ Graphic aGraphic;
+ sal_uInt32 nErrCode = GraphicConverter::Import( *pIn, aGraphic );
+
+ if ( nErrCode == ERRCODE_NONE )
+ {
+ // no.
+ aGraphicObject = aGraphic;
+ aUniqueId = aGraphicObject.GetUniqueID();
+ }
+ // else: simply keep the graphic link
+ delete pIn;
+ }
+ }
+ }
+ }
+
+ if ( aGraphicUrl.Len() || aUniqueId.Len() )
+ {
+ if ( bMirrored || nAngle )
+ {
+ pGraphicAttr = new GraphicAttr;
+ if ( bMirrored )
+ pGraphicAttr->SetMirrorFlags( BMP_MIRROR_HORZ );
+ if ( bIsGraphicMtf )
+ AddOpt( ESCHER_Prop_Rotation, ( ( ((sal_Int32)nAngle << 16 ) / 10 ) + 0x8000 ) &~ 0xffff );
+ else
+ {
+ pGraphicAttr->SetRotation( nAngle );
+ if ( nAngle && pShapeBoundRect ) // up to xp ppoint does not rotate bitmaps !
+ {
+ Polygon aPoly( *pShapeBoundRect );
+ aPoly.Rotate( pShapeBoundRect->TopLeft(), nAngle );
+ *pShapeBoundRect = aPoly.GetBoundRect();
+ bSuppressRotation = sal_True;
+ }
+ }
+ }
+
+ if ( eBitmapMode == ::com::sun::star::drawing::BitmapMode_REPEAT )
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillTexture );
+ else
+ AddOpt( ESCHER_Prop_fillType, ESCHER_FillPicture );
+
+ if ( aUniqueId.Len() )
+ {
+ // write out embedded graphic
+ if ( pGraphicProvider && pPicOutStrm && pShapeBoundRect )
+ {
+ Rectangle aRect( Point( 0, 0 ), pShapeBoundRect->GetSize() );
+
+ sal_uInt32 nBlibId = 0;
+ nBlibId = pGraphicProvider->GetBlibID( *pPicOutStrm, aUniqueId, aRect, NULL, pGraphicAttr );
+ if ( nBlibId )
+ {
+ if ( bCreateFillBitmap )
+ AddOpt( ESCHER_Prop_fillBlip, nBlibId, sal_True );
+ else
+ {
+ AddOpt( ESCHER_Prop_pib, nBlibId, sal_True );
+ ImplCreateGraphicAttributes( rXPropSet, nBlibId, bCreateCroppingAttributes );
+ }
+ bRetValue = sal_True;
+ }
+ }
+ else
+ {
+ EscherGraphicProvider aProvider;
+ SvMemoryStream aMemStrm;
+ Rectangle aRect;
+
+ if ( aProvider.GetBlibID( aMemStrm, aUniqueId, aRect, NULL, pGraphicAttr ) )
+ {
+ // grab BLIP from stream and insert directly as complex property
+ // ownership of stream memory goes to complex property
+ aMemStrm.ObjectOwnsMemory( FALSE );
+ sal_uInt8* pBuf = (sal_uInt8*) aMemStrm.GetData();
+ sal_uInt32 nSize = aMemStrm.Seek( STREAM_SEEK_TO_END );
+ AddOpt( ESCHER_Prop_fillBlip, sal_True, nSize, pBuf, nSize );
+ bRetValue = sal_True;
+ }
+ }
+ }
+ // write out link to graphic
+ else
+ {
+ OSL_ASSERT(aGraphicUrl.Len());
+
+ AddOpt( ESCHER_Prop_pibName, aGraphicUrl );
+ sal_uInt32 nPibFlags=0;
+ GetOpt( ESCHER_Prop_pibFlags, nPibFlags );
+ AddOpt( ESCHER_Prop_pibFlags,
+ ESCHER_BlipFlagLinkToFile|ESCHER_BlipFlagFile|ESCHER_BlipFlagDoNotSave | nPibFlags );
+ }
+ }
+ }
+ delete pGraphicAttr;
+ if ( bCreateFillStyles )
+ CreateFillProperties( rXPropSet, sal_True );
+
+ return bRetValue;
+}
+
+PolyPolygon EscherPropertyContainer::GetPolyPolygon( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape )
+{
+ PolyPolygon aRetPolyPoly;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXPropSet;
+ ::com::sun::star::uno::Any aAny( rXShape->queryInterface(
+ ::getCppuType( (const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >*) 0 ) ));
+
+ String sPolyPolygonBezier( RTL_CONSTASCII_USTRINGPARAM( "PolyPolygonBezier" ) );
+ String sPolyPolygon ( RTL_CONSTASCII_USTRINGPARAM( "PolyPolygon" ) );
+ String sPolygon ( RTL_CONSTASCII_USTRINGPARAM( "Polygon" ) );
+
+ if ( aAny >>= aXPropSet )
+ {
+ sal_Bool bHasProperty = EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sPolyPolygonBezier, sal_True );
+ if ( !bHasProperty )
+ bHasProperty = EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sPolyPolygon, sal_True );
+ if ( !bHasProperty )
+ bHasProperty = EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sPolygon, sal_True );
+ if ( bHasProperty )
+ aRetPolyPoly = GetPolyPolygon( aAny );
+ }
+ return aRetPolyPoly;
+}
+
+PolyPolygon EscherPropertyContainer::GetPolyPolygon( const ::com::sun::star::uno::Any& rAny )
+{
+ sal_Bool bNoError = sal_True;
+
+ Polygon aPolygon;
+ PolyPolygon aPolyPolygon;
+
+ if ( rAny.getValueType() == ::getCppuType( ( const ::com::sun::star::drawing::PolyPolygonBezierCoords* ) 0 ) )
+ {
+ ::com::sun::star::drawing::PolyPolygonBezierCoords* pSourcePolyPolygon
+ = (::com::sun::star::drawing::PolyPolygonBezierCoords*)rAny.getValue();
+ sal_uInt16 nOuterSequenceCount = (sal_uInt16)pSourcePolyPolygon->Coordinates.getLength();
+
+ // Zeiger auf innere sequences holen
+ ::com::sun::star::drawing::PointSequence* pOuterSequence = pSourcePolyPolygon->Coordinates.getArray();
+ ::com::sun::star::drawing::FlagSequence* pOuterFlags = pSourcePolyPolygon->Flags.getArray();
+
+ bNoError = pOuterSequence && pOuterFlags;
+ if ( bNoError )
+ {
+ sal_uInt16 a, b, nInnerSequenceCount;
+ ::com::sun::star::awt::Point* pArray;
+
+ // dies wird ein Polygon set
+ for ( a = 0; a < nOuterSequenceCount; a++ )
+ {
+ ::com::sun::star::drawing::PointSequence* pInnerSequence = pOuterSequence++;
+ ::com::sun::star::drawing::FlagSequence* pInnerFlags = pOuterFlags++;
+
+ bNoError = pInnerSequence && pInnerFlags;
+ if ( bNoError )
+ {
+ // Zeiger auf Arrays holen
+ pArray = pInnerSequence->getArray();
+ ::com::sun::star::drawing::PolygonFlags* pFlags = pInnerFlags->getArray();
+
+ if ( pArray && pFlags )
+ {
+ nInnerSequenceCount = (sal_uInt16)pInnerSequence->getLength();
+ aPolygon = Polygon( nInnerSequenceCount );
+ for( b = 0; b < nInnerSequenceCount; b++)
+ {
+ PolyFlags ePolyFlags( *( (PolyFlags*)pFlags++ ) );
+ ::com::sun::star::awt::Point aPoint( (::com::sun::star::awt::Point)*(pArray++) );
+ aPolygon[ b ] = Point( aPoint.X, aPoint.Y );
+ aPolygon.SetFlags( b, ePolyFlags );
+
+ if ( ePolyFlags == POLY_CONTROL )
+ continue;
+ }
+ aPolyPolygon.Insert( aPolygon, POLYPOLY_APPEND );
+ }
+ }
+ }
+ }
+ }
+ else if ( rAny.getValueType() == ::getCppuType( ( const ::com::sun::star::drawing::PointSequenceSequence* ) 0 ) )
+ {
+ ::com::sun::star::drawing::PointSequenceSequence* pSourcePolyPolygon
+ = (::com::sun::star::drawing::PointSequenceSequence*)rAny.getValue();
+ sal_uInt16 nOuterSequenceCount = (sal_uInt16)pSourcePolyPolygon->getLength();
+
+ // Zeiger auf innere sequences holen
+ ::com::sun::star::drawing::PointSequence* pOuterSequence = pSourcePolyPolygon->getArray();
+ bNoError = pOuterSequence != NULL;
+ if ( bNoError )
+ {
+ sal_uInt16 a, b, nInnerSequenceCount;
+
+ // dies wird ein Polygon set
+ for( a = 0; a < nOuterSequenceCount; a++ )
+ {
+ ::com::sun::star::drawing::PointSequence* pInnerSequence = pOuterSequence++;
+ bNoError = pInnerSequence != NULL;
+ if ( bNoError )
+ {
+ // Zeiger auf Arrays holen
+ ::com::sun::star::awt::Point* pArray =
+ pInnerSequence->getArray();
+ if ( pArray != NULL )
+ {
+ nInnerSequenceCount = (sal_uInt16)pInnerSequence->getLength();
+ aPolygon = Polygon( nInnerSequenceCount );
+ for( b = 0; b < nInnerSequenceCount; b++)
+ {
+ aPolygon[ b ] = Point( pArray->X, pArray->Y );
+ pArray++;
+ }
+ aPolyPolygon.Insert( aPolygon, POLYPOLY_APPEND );
+ }
+ }
+ }
+ }
+ }
+ else if ( rAny.getValueType() == ::getCppuType( ( const ::com::sun::star::drawing::PointSequence* ) 0 ) )
+ {
+ ::com::sun::star::drawing::PointSequence* pInnerSequence =
+ (::com::sun::star::drawing::PointSequence*)rAny.getValue();
+
+ bNoError = pInnerSequence != NULL;
+ if ( bNoError )
+ {
+ sal_uInt16 a, nInnerSequenceCount;
+
+ // Zeiger auf Arrays holen
+ ::com::sun::star::awt::Point* pArray = pInnerSequence->getArray();
+ if ( pArray != NULL )
+ {
+ nInnerSequenceCount = (sal_uInt16)pInnerSequence->getLength();
+ aPolygon = Polygon( nInnerSequenceCount );
+ for( a = 0; a < nInnerSequenceCount; a++)
+ {
+ aPolygon[ a ] = Point( pArray->X, pArray->Y );
+ pArray++;
+ }
+ aPolyPolygon.Insert( aPolygon, POLYPOLY_APPEND );
+ }
+ }
+ }
+ return aPolyPolygon;
+}
+
+sal_Bool EscherPropertyContainer::CreatePolygonProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ sal_uInt32 nFlags,
+ sal_Bool bBezier,
+ ::com::sun::star::awt::Rectangle& rGeoRect,
+ Polygon* pPolygon )
+{
+ static String sPolyPolygonBezier( RTL_CONSTASCII_USTRINGPARAM( "PolyPolygonBezier" ) );
+ static String sPolyPolygon ( RTL_CONSTASCII_USTRINGPARAM( "PolyPolygon" ) );
+
+ sal_Bool bRetValue = sal_True;
+ sal_Bool bLine = ( nFlags & ESCHER_CREATEPOLYGON_LINE ) != 0;
+
+ PolyPolygon aPolyPolygon;
+
+ if ( pPolygon )
+ aPolyPolygon.Insert( *pPolygon, POLYPOLY_APPEND );
+ else
+ {
+ ::com::sun::star::uno::Any aAny;
+ bRetValue = EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ ( bBezier ) ? sPolyPolygonBezier : sPolyPolygon, sal_True );
+ if ( bRetValue )
+ {
+ aPolyPolygon = GetPolyPolygon( aAny );
+ bRetValue = aPolyPolygon.Count() != 0;
+ }
+ }
+ if ( bRetValue )
+ {
+ if ( bLine )
+ {
+ if ( ( aPolyPolygon.Count() == 1 ) && ( aPolyPolygon[ 0 ].GetSize() == 2 ) )
+ {
+ const Polygon& rPoly = aPolyPolygon[ 0 ];
+ rGeoRect = ::com::sun::star::awt::Rectangle(
+ rPoly[ 0 ].X(),
+ rPoly[ 0 ].Y(),
+ rPoly[ 1 ].X() - rPoly[ 0 ].X(),
+ rPoly[ 1 ].Y() - rPoly[ 0 ].Y() );
+ }
+ else
+ bRetValue = sal_False;
+ }
+ else
+ {
+ Polygon aPolygon;
+
+ sal_uInt16 i, j, k, nPoints, nBezPoints, nPolyCount = aPolyPolygon.Count();
+ Rectangle aRect( aPolyPolygon.GetBoundRect() );
+ rGeoRect = ::com::sun::star::awt::Rectangle( aRect.Left(), aRect.Top(), aRect.GetWidth(), aRect.GetHeight() );
+
+ for ( nBezPoints = nPoints = i = 0; i < nPolyCount; i++ )
+ {
+ k = aPolyPolygon[ i ].GetSize();
+ nPoints = nPoints + k;
+ for ( j = 0; j < k; j++ )
+ {
+ if ( aPolyPolygon[ i ].GetFlags( j ) != POLY_CONTROL )
+ nBezPoints++;
+ }
+ }
+ sal_uInt32 nVerticesBufSize = ( nPoints << 2 ) + 6;
+ sal_uInt8* pVerticesBuf = new sal_uInt8[ nVerticesBufSize ];
+
+
+ sal_uInt32 nSegmentBufSize = ( ( nBezPoints << 2 ) + 8 );
+ if ( nPolyCount > 1 )
+ nSegmentBufSize += ( nPolyCount << 1 );
+ sal_uInt8* pSegmentBuf = new sal_uInt8[ nSegmentBufSize ];
+
+ sal_uInt8* pPtr = pVerticesBuf;
+ *pPtr++ = (sal_uInt8)( nPoints ); // Little endian
+ *pPtr++ = (sal_uInt8)( nPoints >> 8 );
+ *pPtr++ = (sal_uInt8)( nPoints );
+ *pPtr++ = (sal_uInt8)( nPoints >> 8 );
+ *pPtr++ = (sal_uInt8)0xf0;
+ *pPtr++ = (sal_uInt8)0xff;
+
+ for ( j = 0; j < nPolyCount; j++ )
+ {
+ aPolygon = aPolyPolygon[ j ];
+ nPoints = aPolygon.GetSize();
+ for ( i = 0; i < nPoints; i++ ) // Punkte aus Polygon in Buffer schreiben
+ {
+ Point aPoint = aPolygon[ i ];
+ aPoint.X() -= rGeoRect.X;
+ aPoint.Y() -= rGeoRect.Y;
+
+ *pPtr++ = (sal_uInt8)( aPoint.X() );
+ *pPtr++ = (sal_uInt8)( aPoint.X() >> 8 );
+ *pPtr++ = (sal_uInt8)( aPoint.Y() );
+ *pPtr++ = (sal_uInt8)( aPoint.Y() >> 8 );
+ }
+ }
+
+ pPtr = pSegmentBuf;
+ *pPtr++ = (sal_uInt8)( ( nSegmentBufSize - 6 ) >> 1 );
+ *pPtr++ = (sal_uInt8)( ( nSegmentBufSize - 6 ) >> 9 );
+ *pPtr++ = (sal_uInt8)( ( nSegmentBufSize - 6 ) >> 1 );
+ *pPtr++ = (sal_uInt8)( ( nSegmentBufSize - 6 ) >> 9 );
+ *pPtr++ = (sal_uInt8)2;
+ *pPtr++ = (sal_uInt8)0;
+
+ for ( j = 0; j < nPolyCount; j++ )
+ {
+ *pPtr++ = 0x0; // Polygon start
+ *pPtr++ = 0x40;
+ aPolygon = aPolyPolygon[ j ];
+ nPoints = aPolygon.GetSize();
+ for ( i = 0; i < nPoints; i++ ) // Polyflags in Buffer schreiben
+ {
+ *pPtr++ = 0;
+ if ( bBezier )
+ *pPtr++ = 0xb3;
+ else
+ *pPtr++ = 0xac;
+ if ( ( i + 1 ) != nPoints )
+ {
+ *pPtr++ = 1;
+ if ( aPolygon.GetFlags( i + 1 ) == POLY_CONTROL )
+ {
+ *pPtr++ = 0x20;
+ i += 2;
+ }
+ else
+ *pPtr++ = 0;
+ }
+ }
+ if ( nPolyCount > 1 )
+ {
+ *pPtr++ = 1; // end of polygon
+ *pPtr++ = 0x60;
+ }
+ }
+ *pPtr++ = 0;
+ *pPtr++ = 0x80;
+
+ AddOpt( ESCHER_Prop_geoRight, rGeoRect.Width );
+ AddOpt( ESCHER_Prop_geoBottom, rGeoRect.Height );
+
+ AddOpt( ESCHER_Prop_shapePath, ESCHER_ShapeComplex );
+ AddOpt( ESCHER_Prop_pVertices, TRUE, nVerticesBufSize - 6, (sal_uInt8*)pVerticesBuf, nVerticesBufSize );
+ AddOpt( ESCHER_Prop_pSegmentInfo, TRUE, nSegmentBufSize, (sal_uInt8*)pSegmentBuf, nSegmentBufSize );
+ }
+ }
+ return bRetValue;
+}
+
+sal_Bool EscherPropertyContainer::CreateConnectorProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape,
+ EscherSolverContainer& rSolverContainer, ::com::sun::star::awt::Rectangle& rGeoRect,
+ sal_uInt16& rShapeType, sal_uInt16& rShapeFlags )
+{
+ static String sEdgeKind ( RTL_CONSTASCII_USTRINGPARAM( "EdgeKind" ) );
+ static String sEdgeStartPoint ( RTL_CONSTASCII_USTRINGPARAM( "EdgeStartPoint" ) );
+ static String sEdgeEndPoint ( RTL_CONSTASCII_USTRINGPARAM( "EdgeEndPoint" ) );
+ static String sEdgeStartConnection ( RTL_CONSTASCII_USTRINGPARAM( "EdgeStartConnection" ) );
+ static String sEdgeEndConnection ( RTL_CONSTASCII_USTRINGPARAM( "EdgeEndConnection" ) );
+
+ sal_Bool bRetValue = sal_False;
+ rShapeType = rShapeFlags = 0;
+
+ if ( rXShape.is() )
+ {
+ ::com::sun::star::awt::Point aStartPoint, aEndPoint;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > aXPropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > aShapeA, aShapeB;
+ ::com::sun::star::uno::Any aAny( rXShape->queryInterface( ::getCppuType( (const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >*) 0 ) ));
+ if ( aAny >>= aXPropSet )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sEdgeKind, sal_True ) )
+ {
+ ::com::sun::star::drawing::ConnectorType eCt;
+ aAny >>= eCt;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sEdgeStartPoint ) )
+ {
+ aStartPoint = *(::com::sun::star::awt::Point*)aAny.getValue();
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sEdgeEndPoint ) )
+ {
+ aEndPoint = *(::com::sun::star::awt::Point*)aAny.getValue();
+
+ rShapeFlags = SHAPEFLAG_HAVEANCHOR | SHAPEFLAG_HAVESPT | SHAPEFLAG_CONNECTOR;
+ rGeoRect = ::com::sun::star::awt::Rectangle( aStartPoint.X, aStartPoint.Y,
+ ( aEndPoint.X - aStartPoint.X ) + 1, ( aEndPoint.Y - aStartPoint.Y ) + 1 );
+ if ( rGeoRect.Height < 0 ) // justify
+ {
+ rShapeFlags |= SHAPEFLAG_FLIPV;
+ rGeoRect.Y = aEndPoint.Y;
+ rGeoRect.Height = -rGeoRect.Height;
+ }
+ if ( rGeoRect.Width < 0 )
+ {
+ rShapeFlags |= SHAPEFLAG_FLIPH;
+ rGeoRect.X = aEndPoint.X;
+ rGeoRect.Width = -rGeoRect.Width;
+ }
+ sal_uInt32 nAdjustValue1, nAdjustValue2, nAdjustValue3;
+ nAdjustValue1 = nAdjustValue2 = nAdjustValue3 = 0x2a30;
+
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sEdgeStartConnection ) )
+ aAny >>= aShapeA;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, sEdgeEndConnection ) )
+ aAny >>= aShapeB;
+/*
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeLine1Delta" ) ) ) )
+ {
+ }
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeLine2Delta" ) ) ) )
+ {
+ }
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeLine3Delta" ) ) ) )
+ {
+ }
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeNode1HorzDist" ) ) ) )
+ {
+ }
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeNode1VertDist" ) ) ) )
+ {
+ }
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeNode2HorzDist" ) ) ) )
+ {
+ }
+ if ( ImplGetPropertyValue( String( RTL_CONSTASCII_USTRINGPARAM( "EdgeNode2VertDist" ) ) ) )
+ {
+ }
+*/
+ rSolverContainer.AddConnector( rXShape, aStartPoint, aShapeA, aEndPoint, aShapeB );
+ switch ( eCt )
+ {
+ case ::com::sun::star::drawing::ConnectorType_CURVE :
+ {
+ rShapeType = ESCHER_ShpInst_CurvedConnector3;
+ AddOpt( ESCHER_Prop_cxstyle, ESCHER_cxstyleCurved );
+ AddOpt( ESCHER_Prop_adjustValue, nAdjustValue1 );
+ AddOpt( ESCHER_Prop_adjust2Value, -(sal_Int32)nAdjustValue2 );
+ }
+ break;
+
+ case ::com::sun::star::drawing::ConnectorType_STANDARD :// Connector 2->5
+ {
+ rShapeType = ESCHER_ShpInst_BentConnector3;
+ AddOpt( ESCHER_Prop_cxstyle, ESCHER_cxstyleBent );
+ }
+ break;
+
+ default:
+ case ::com::sun::star::drawing::ConnectorType_LINE :
+ case ::com::sun::star::drawing::ConnectorType_LINES : // Connector 2->5
+ {
+ rShapeType = ESCHER_ShpInst_StraightConnector1;
+ AddOpt( ESCHER_Prop_cxstyle, ESCHER_cxstyleStraight );
+ }
+ break;
+ }
+ CreateLineProperties( aXPropSet, sal_False );
+ bRetValue = bSuppressRotation = sal_True;
+ }
+ }
+ }
+ }
+ }
+ return bRetValue;
+}
+
+sal_Bool EscherPropertyContainer::CreateShadowProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet )
+{
+ ::com::sun::star::uno::Any aAny;
+
+ sal_Bool bHasShadow = sal_False; // shadow is possible only if at least a fillcolor, linecolor or graphic is set
+ sal_uInt32 nLineFlags = 0; // default : shape has no line
+ sal_uInt32 nFillFlags = 0x10; // shape is filled
+
+ GetOpt( ESCHER_Prop_fNoLineDrawDash, nLineFlags );
+ GetOpt( ESCHER_Prop_fNoFillHitTest, nFillFlags );
+
+ sal_uInt32 nDummy;
+ sal_Bool bGraphic = GetOpt( DFF_Prop_pib, nDummy ) || GetOpt( DFF_Prop_pibName, nDummy ) || GetOpt( DFF_Prop_pibFlags, nDummy );
+
+ sal_uInt32 nShadowFlags = 0x20000;
+ if ( ( nLineFlags & 8 ) || ( nFillFlags & 0x10 ) || bGraphic )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "Shadow" ) ), sal_True ) )
+ {
+ if ( aAny >>= bHasShadow )
+ {
+ if ( bHasShadow )
+ {
+ nShadowFlags |= 2;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "ShadowColor" ) ), sal_False ) )
+ AddOpt( ESCHER_Prop_shadowColor, ImplGetColor( *((sal_uInt32*)aAny.getValue()) ) );
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "ShadowXDistance" ) ), sal_False ) )
+ AddOpt( ESCHER_Prop_shadowOffsetX, *((sal_Int32*)aAny.getValue()) * 360 );
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "ShadowYDistance" ) ), sal_False ) )
+ AddOpt( ESCHER_Prop_shadowOffsetY, *((sal_Int32*)aAny.getValue()) * 360 );
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, rXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "ShadowTransparence" ) ), sal_False ) )
+ AddOpt( ESCHER_Prop_shadowOpacity, 0x10000 - (((sal_uInt32)*((sal_uInt16*)aAny.getValue())) * 655 ) );
+ }
+ }
+ }
+ }
+ AddOpt( ESCHER_Prop_fshadowObscured, nShadowFlags );
+ return bHasShadow;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+sal_Int32 GetValueForEnhancedCustomShapeParameter( const com::sun::star::drawing::EnhancedCustomShapeParameter& rParameter, const std::vector< sal_Int32 >& rEquationOrder )
+{
+ sal_Int32 nValue = 0;
+ if ( rParameter.Value.getValueTypeClass() == uno::TypeClass_DOUBLE )
+ {
+ double fValue;
+ if ( rParameter.Value >>= fValue )
+ nValue = (sal_Int32)fValue;
+ }
+ else
+ rParameter.Value >>= nValue;
+
+ switch( rParameter.Type )
+ {
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::EQUATION :
+ {
+ nValue = (sal_uInt16)rEquationOrder[ nValue ];
+ nValue |= (sal_uInt32)0x80000000;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::NORMAL :
+ {
+
+ }
+ break;
+/* not sure if it is allowed to set following values
+(but they are not yet used)
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::ADJUSTMENT :
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::BOTTOM :
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::RIGHT :
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::TOP :
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::LEFT :
+*/
+ }
+ return nValue;
+}
+
+sal_Bool GetValueForEnhancedCustomShapeHandleParameter( sal_Int32& nRetValue, const com::sun::star::drawing::EnhancedCustomShapeParameter& rParameter )
+{
+ sal_Bool bSpecial = sal_False;
+ nRetValue = 0;
+ if ( rParameter.Value.getValueTypeClass() == uno::TypeClass_DOUBLE )
+ {
+ double fValue;
+ if ( rParameter.Value >>= fValue )
+ nRetValue = (sal_Int32)fValue;
+ }
+ else
+ rParameter.Value >>= nRetValue;
+
+ switch( rParameter.Type )
+ {
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::EQUATION :
+ {
+ nRetValue += 3;
+ bSpecial = sal_True;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::ADJUSTMENT :
+ {
+ nRetValue += 0x100;
+ bSpecial = sal_True;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::TOP :
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::LEFT :
+ {
+ nRetValue = 0;
+ bSpecial = sal_True;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::RIGHT :
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::BOTTOM :
+ {
+ nRetValue = 1;
+ bSpecial = sal_True;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeParameterType::NORMAL :
+ {
+
+ }
+ break;
+ }
+ return bSpecial;
+}
+
+void ConvertEnhancedCustomShapeEquation( SdrObjCustomShape* pCustoShape,
+ std::vector< EnhancedCustomShapeEquation >& rEquations, std::vector< sal_Int32 >& rEquationOrder )
+{
+ if ( pCustoShape )
+ {
+ uno::Sequence< rtl::OUString > sEquationSource;
+ const rtl::OUString sEquations( RTL_CONSTASCII_USTRINGPARAM( "Equations" ) );
+ SdrCustomShapeGeometryItem& rGeometryItem = (SdrCustomShapeGeometryItem&)(const SdrCustomShapeGeometryItem&)
+ pCustoShape->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY );
+ const uno::Any* pAny = ((SdrCustomShapeGeometryItem&)rGeometryItem).GetPropertyValueByName( sEquations );
+ if ( pAny )
+ *pAny >>= sEquationSource;
+ sal_Int32 nEquationSourceCount = sEquationSource.getLength();
+ if ( nEquationSourceCount )
+ {
+ sal_Int32 i;
+ for ( i = 0; i < nEquationSourceCount; i++ )
+ {
+ EnhancedCustomShape2d aCustoShape2d( pCustoShape );
+ try
+ {
+ ::boost::shared_ptr< EnhancedCustomShape::ExpressionNode > aExpressNode(
+ EnhancedCustomShape::FunctionParser::parseFunction( sEquationSource[ i ], aCustoShape2d ) );
+ com::sun::star::drawing::EnhancedCustomShapeParameter aPara( aExpressNode->fillNode( rEquations, NULL, 0 ) );
+ if ( aPara.Type != com::sun::star::drawing::EnhancedCustomShapeParameterType::EQUATION )
+ {
+ EnhancedCustomShapeEquation aEquation;
+ aEquation.nOperation = 0;
+ EnhancedCustomShape::FillEquationParameter( aPara, 0, aEquation );
+ rEquations.push_back( aEquation );
+ }
+ }
+ catch ( EnhancedCustomShape::ParseError& )
+ {
+ EnhancedCustomShapeEquation aEquation; // ups, we should not be here,
+ aEquation.nOperation = 0; // creating a default equation with value 1
+ aEquation.nPara[ 0 ] = 1; // hoping that this will not break anything
+ rEquations.push_back( aEquation );
+ }
+ rEquationOrder.push_back( rEquations.size() - 1 );
+ }
+ // now updating our old equation indices, they are marked with a bit in the hiword of nOperation
+ std::vector< EnhancedCustomShapeEquation >::iterator aIter( rEquations.begin() );
+ std::vector< EnhancedCustomShapeEquation >::iterator aEnd ( rEquations.end() );
+ while( aIter != aEnd )
+ {
+ sal_Int32 nMask = 0x20000000;
+ for( i = 0; i < 3; i++ )
+ {
+ if ( aIter->nOperation & nMask )
+ {
+ aIter->nOperation ^= nMask;
+ aIter->nPara[ i ] = rEquationOrder[ aIter->nPara[ i ] & 0x3ff ] | 0x400;
+ }
+ nMask <<= 1;
+ }
+ aIter++;
+ }
+ }
+ }
+}
+
+sal_Bool EscherPropertyContainer::IsDefaultObject( SdrObjCustomShape* pCustoShape )
+{
+ sal_Bool bIsDefaultObject = sal_False;
+ if ( pCustoShape )
+ {
+ if ( pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_EQUATIONS )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_VIEWBOX )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_PATH )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_GLUEPOINTS )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_SEGMENTS )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_STRETCHX )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_STRETCHY )
+// && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_HANDLES )
+ && pCustoShape->IsDefaultGeometry( SdrObjCustomShape::DEFAULT_TEXTFRAMES ) )
+ bIsDefaultObject = sal_True;
+ }
+
+ return bIsDefaultObject;
+}
+
+void EscherPropertyContainer::LookForPolarHandles( const MSO_SPT eShapeType, sal_Int32& nAdjustmentsWhichNeedsToBeConverted )
+{
+ const mso_CustomShape* pDefCustomShape = GetCustomShapeContent( eShapeType );
+ if ( pDefCustomShape && pDefCustomShape->nHandles && pDefCustomShape->pHandles )
+ {
+ sal_Int32 k, nkCount = pDefCustomShape->nHandles;
+ const SvxMSDffHandle* pData = pDefCustomShape->pHandles;
+ for ( k = 0; k < nkCount; k++, pData++ )
+ {
+ if ( pData->nFlags & MSDFF_HANDLE_FLAGS_POLAR )
+ {
+ if ( ( pData->nPositionY >= 0x256 ) || ( pData->nPositionY <= 0x107 ) )
+ nAdjustmentsWhichNeedsToBeConverted |= ( 1 << k );
+ }
+ }
+ }
+}
+
+sal_Bool EscherPropertyContainer::GetAdjustmentValue( const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue & rkProp, sal_Int32 nIndex, sal_Int32 nAdjustmentsWhichNeedsToBeConverted, sal_Int32& nValue )
+{
+ if ( rkProp.State != beans::PropertyState_DIRECT_VALUE )
+ return FALSE;
+
+ sal_Bool bUseFixedFloat = ( nAdjustmentsWhichNeedsToBeConverted & ( 1 << nIndex ) ) != 0;
+ if ( rkProp.Value.getValueTypeClass() == uno::TypeClass_DOUBLE )
+ {
+ double fValue(0.0);
+ rkProp.Value >>= fValue;
+ if ( bUseFixedFloat )
+ fValue *= 65536.0;
+ nValue = (sal_Int32)fValue;
+ }
+ else
+ {
+ rkProp.Value >>= nValue;
+ if ( bUseFixedFloat )
+ nValue <<= 16;
+ }
+
+ return TRUE;
+}
+
+void EscherPropertyContainer::CreateCustomShapeProperties( const MSO_SPT eShapeType, const uno::Reference< drawing::XShape > & rXShape )
+{
+ uno::Reference< beans::XPropertySet > aXPropSet( rXShape, uno::UNO_QUERY );
+ if ( aXPropSet.is() )
+ {
+ SdrObjCustomShape* pCustoShape = (SdrObjCustomShape*)GetSdrObjectFromXShape( rXShape );
+ const rtl::OUString sCustomShapeGeometry( RTL_CONSTASCII_USTRINGPARAM( "CustomShapeGeometry" ) );
+ uno::Any aGeoPropSet = aXPropSet->getPropertyValue( sCustomShapeGeometry );
+ uno::Sequence< beans::PropertyValue > aGeoPropSeq;
+ if ( aGeoPropSet >>= aGeoPropSeq )
+ {
+ const rtl::OUString sViewBox ( RTL_CONSTASCII_USTRINGPARAM( "ViewBox" ) );
+ const rtl::OUString sTextRotateAngle ( RTL_CONSTASCII_USTRINGPARAM( "TextRotateAngle" ) );
+ const rtl::OUString sExtrusion ( RTL_CONSTASCII_USTRINGPARAM( "Extrusion" ) );
+ const rtl::OUString sEquations ( RTL_CONSTASCII_USTRINGPARAM( "Equations" ) );
+ const rtl::OUString sPath ( RTL_CONSTASCII_USTRINGPARAM( "Path" ) );
+ const rtl::OUString sTextPath ( RTL_CONSTASCII_USTRINGPARAM( "TextPath" ) );
+ const rtl::OUString sHandles ( RTL_CONSTASCII_USTRINGPARAM( "Handles" ) );
+ const rtl::OUString sAdjustmentValues ( RTL_CONSTASCII_USTRINGPARAM( "AdjustmentValues" ) );
+
+ const beans::PropertyValue* pAdjustmentValuesProp = NULL;
+ sal_Int32 nAdjustmentsWhichNeedsToBeConverted = 0;
+ uno::Sequence< beans::PropertyValues > aHandlesPropSeq;
+ sal_Bool bPredefinedHandlesUsed = sal_True;
+ sal_Bool bIsDefaultObject = IsDefaultObject( pCustoShape );
+
+ // convert property "Equations" into std::vector< EnhancedCustomShapeEquationEquation >
+ std::vector< EnhancedCustomShapeEquation > aEquations;
+ std::vector< sal_Int32 > aEquationOrder;
+ ConvertEnhancedCustomShapeEquation( pCustoShape, aEquations, aEquationOrder );
+
+ sal_Int32 i, nCount = aGeoPropSeq.getLength();
+ for ( i = 0; i < nCount; i++ )
+ {
+ const beans::PropertyValue& rProp = aGeoPropSeq[ i ];
+ if ( rProp.Name.equals( sViewBox ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ awt::Rectangle aViewBox;
+ if ( rProp.Value >>= aViewBox )
+ {
+ AddOpt( DFF_Prop_geoLeft, aViewBox.X );
+ AddOpt( DFF_Prop_geoTop, aViewBox.Y );
+ AddOpt( DFF_Prop_geoRight, aViewBox.X + aViewBox.Width );
+ AddOpt( DFF_Prop_geoBottom,aViewBox.Y + aViewBox.Height );
+ }
+ }
+ }
+ else if ( rProp.Name.equals( sTextRotateAngle ) )
+ {
+ double f = 0, fTextRotateAngle;
+ if ( rProp.Value >>= f )
+ {
+ fTextRotateAngle = fmod( f, 360.0 );
+ if ( fTextRotateAngle < 0 )
+ fTextRotateAngle = 360 + fTextRotateAngle;
+ if ( ( fTextRotateAngle < 271.0 ) && ( fTextRotateAngle > 269.0 ) )
+ AddOpt( DFF_Prop_cdirFont, mso_cdir90 );
+ else if ( ( fTextRotateAngle < 181.0 ) && ( fTextRotateAngle > 179.0 ) )
+ AddOpt( DFF_Prop_cdirFont, mso_cdir180 );
+ else if ( ( fTextRotateAngle < 91.0 ) && ( fTextRotateAngle > 79.0 ) )
+ AddOpt( DFF_Prop_cdirFont, mso_cdir270 );
+ }
+ }
+ else if ( rProp.Name.equals( sExtrusion ) )
+ {
+ uno::Sequence< beans::PropertyValue > aExtrusionPropSeq;
+ if ( rProp.Value >>= aExtrusionPropSeq )
+ {
+ sal_uInt32 nLightFaceFlagsOrg, nLightFaceFlags;
+ sal_uInt32 nFillHarshFlagsOrg, nFillHarshFlags;
+ nLightFaceFlagsOrg = nLightFaceFlags = 0x000001;
+ nFillHarshFlagsOrg = nFillHarshFlags = 0x00001e;
+ if ( GetOpt( DFF_Prop_fc3DLightFace, nLightFaceFlags ) )
+ nLightFaceFlagsOrg = nLightFaceFlags;
+ if ( GetOpt( DFF_Prop_fc3DFillHarsh, nFillHarshFlags ) )
+ nFillHarshFlagsOrg = nFillHarshFlags;
+
+ sal_Int32 r, nrCount = aExtrusionPropSeq.getLength();
+ for ( r = 0; r < nrCount; r++ )
+ {
+ const beans::PropertyValue& rrProp = aExtrusionPropSeq[ r ];
+ const rtl::OUString sExtrusionBrightness ( RTL_CONSTASCII_USTRINGPARAM( "Brightness" ) );
+ const rtl::OUString sExtrusionDepth ( RTL_CONSTASCII_USTRINGPARAM( "Depth" ) );
+ const rtl::OUString sExtrusionDiffusion ( RTL_CONSTASCII_USTRINGPARAM( "Diffusion" ) );
+ const rtl::OUString sExtrusionNumberOfLineSegments ( RTL_CONSTASCII_USTRINGPARAM( "NumberOfLineSegments" ) );
+ const rtl::OUString sExtrusionLightFace ( RTL_CONSTASCII_USTRINGPARAM( "LightFace" ) );
+ const rtl::OUString sExtrusionFirstLightHarsh ( RTL_CONSTASCII_USTRINGPARAM( "FirstLightHarsh" ) );
+ const rtl::OUString sExtrusionSecondLightHarsh ( RTL_CONSTASCII_USTRINGPARAM( "SecondLightHarsh" ) );
+ const rtl::OUString sExtrusionFirstLightLevel ( RTL_CONSTASCII_USTRINGPARAM( "FirstLightLevel" ) );
+ const rtl::OUString sExtrusionSecondLightLevel ( RTL_CONSTASCII_USTRINGPARAM( "SecondLightLevel" ) );
+ const rtl::OUString sExtrusionFirstLightDirection ( RTL_CONSTASCII_USTRINGPARAM( "FirstLightDirection" ) );
+ const rtl::OUString sExtrusionSecondLightDirection ( RTL_CONSTASCII_USTRINGPARAM( "SecondLightDirection" ) );
+ const rtl::OUString sExtrusionMetal ( RTL_CONSTASCII_USTRINGPARAM( "Metal" ) );
+ const rtl::OUString sExtrusionShadeMode ( RTL_CONSTASCII_USTRINGPARAM( "ShadeMode" ) );
+ const rtl::OUString sExtrusionRotateAngle ( RTL_CONSTASCII_USTRINGPARAM( "RotateAngle" ) );
+ const rtl::OUString sExtrusionRotationCenter ( RTL_CONSTASCII_USTRINGPARAM( "RotationCenter" ) );
+ const rtl::OUString sExtrusionShininess ( RTL_CONSTASCII_USTRINGPARAM( "Shininess" ) );
+ const rtl::OUString sExtrusionSkew ( RTL_CONSTASCII_USTRINGPARAM( "Skew" ) );
+ const rtl::OUString sExtrusionSpecularity ( RTL_CONSTASCII_USTRINGPARAM( "Specularity" ) );
+ const rtl::OUString sExtrusionProjectionMode ( RTL_CONSTASCII_USTRINGPARAM( "ProjectionMode" ) );
+ const rtl::OUString sExtrusionViewPoint ( RTL_CONSTASCII_USTRINGPARAM( "ViewPoint" ) );
+ const rtl::OUString sExtrusionOrigin ( RTL_CONSTASCII_USTRINGPARAM( "Origin" ) );
+ const rtl::OUString sExtrusionColor ( RTL_CONSTASCII_USTRINGPARAM( "Color" ) );
+
+ if ( rrProp.Name.equals( sExtrusion ) )
+ {
+ sal_Bool bExtrusionOn = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionOn )
+ {
+ nLightFaceFlags |= 0x80000;
+ if ( bExtrusionOn )
+ nLightFaceFlags |= 8;
+ else
+ nLightFaceFlags &=~8;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionBrightness ) )
+ {
+ double fExtrusionBrightness = 0;
+ if ( rrProp.Value >>= fExtrusionBrightness )
+ AddOpt( DFF_Prop_c3DAmbientIntensity, (sal_Int32)( fExtrusionBrightness * 655.36 ) );
+ }
+ else if ( rrProp.Name.equals( sExtrusionDepth ) )
+ {
+ double fDepth = 0;
+ double fFraction = 0;
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aDepthParaPair;
+ if ( ( rrProp.Value >>= aDepthParaPair ) && ( aDepthParaPair.First.Value >>= fDepth ) && ( aDepthParaPair.Second.Value >>= fFraction ) )
+ {
+ double fForeDepth = fDepth * fFraction;
+ double fBackDepth = fDepth - fForeDepth;
+
+ fBackDepth *= 360.0;
+ AddOpt( DFF_Prop_c3DExtrudeBackward, (sal_Int32)fBackDepth );
+
+ if ( fForeDepth != 0.0 )
+ {
+ fForeDepth *= 360.0;
+ AddOpt( DFF_Prop_c3DExtrudeForward, (sal_Int32)fForeDepth );
+ }
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionDiffusion ) )
+ {
+ double fExtrusionDiffusion = 0;
+ if ( rrProp.Value >>= fExtrusionDiffusion )
+ AddOpt( DFF_Prop_c3DDiffuseAmt, (sal_Int32)( fExtrusionDiffusion * 655.36 ) );
+ }
+ else if ( rrProp.Name.equals( sExtrusionNumberOfLineSegments ) )
+ {
+ sal_Int32 nExtrusionNumberOfLineSegments = 0;
+ if ( rrProp.Value >>= nExtrusionNumberOfLineSegments )
+ AddOpt( DFF_Prop_c3DTolerance, nExtrusionNumberOfLineSegments );
+ }
+ else if ( rrProp.Name.equals( sExtrusionLightFace ) )
+ {
+ sal_Bool bExtrusionLightFace = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionLightFace )
+ {
+ nLightFaceFlags |= 0x10000;
+ if ( bExtrusionLightFace )
+ nLightFaceFlags |= 1;
+ else
+ nLightFaceFlags &=~1;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionFirstLightHarsh ) )
+ {
+ sal_Bool bExtrusionFirstLightHarsh = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionFirstLightHarsh )
+ {
+ nFillHarshFlags |= 0x20000;
+ if ( bExtrusionFirstLightHarsh )
+ nFillHarshFlags |= 2;
+ else
+ nFillHarshFlags &=~2;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionSecondLightHarsh ) )
+ {
+ sal_Bool bExtrusionSecondLightHarsh = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionSecondLightHarsh )
+ {
+ nFillHarshFlags |= 0x10000;
+ if ( bExtrusionSecondLightHarsh )
+ nFillHarshFlags |= 1;
+ else
+ nFillHarshFlags &=~1;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionFirstLightLevel ) )
+ {
+ double fExtrusionFirstLightLevel = 0;
+ if ( rrProp.Value >>= fExtrusionFirstLightLevel )
+ AddOpt( DFF_Prop_c3DKeyIntensity, (sal_Int32)( fExtrusionFirstLightLevel * 655.36 ) );
+ }
+ else if ( rrProp.Name.equals( sExtrusionSecondLightLevel ) )
+ {
+ double fExtrusionSecondLightLevel = 0;
+ if ( rrProp.Value >>= fExtrusionSecondLightLevel )
+ AddOpt( DFF_Prop_c3DFillIntensity, (sal_Int32)( fExtrusionSecondLightLevel * 655.36 ) );
+ }
+ else if ( rrProp.Name.equals( sExtrusionFirstLightDirection ) )
+ {
+ drawing::Direction3D aExtrusionFirstLightDirection;
+ if ( rrProp.Value >>= aExtrusionFirstLightDirection )
+ {
+ AddOpt( DFF_Prop_c3DKeyX, (sal_Int32)aExtrusionFirstLightDirection.DirectionX );
+ AddOpt( DFF_Prop_c3DKeyY, (sal_Int32)aExtrusionFirstLightDirection.DirectionY );
+ AddOpt( DFF_Prop_c3DKeyZ, (sal_Int32)aExtrusionFirstLightDirection.DirectionZ );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionSecondLightDirection ) )
+ {
+ drawing::Direction3D aExtrusionSecondLightPosition;
+ if ( rrProp.Value >>= aExtrusionSecondLightPosition )
+ {
+ AddOpt( DFF_Prop_c3DFillX, (sal_Int32)aExtrusionSecondLightPosition.DirectionX );
+ AddOpt( DFF_Prop_c3DFillY, (sal_Int32)aExtrusionSecondLightPosition.DirectionY );
+ AddOpt( DFF_Prop_c3DFillZ, (sal_Int32)aExtrusionSecondLightPosition.DirectionZ );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionMetal ) )
+ {
+ sal_Bool bExtrusionMetal = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionMetal )
+ {
+ nLightFaceFlags |= 0x40000;
+ if ( bExtrusionMetal )
+ nLightFaceFlags |= 4;
+ else
+ nLightFaceFlags &=~4;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionShadeMode ) )
+ {
+ drawing::ShadeMode eExtrusionShadeMode;
+ if ( rrProp.Value >>= eExtrusionShadeMode )
+ {
+ sal_uInt32 nRenderMode;
+ switch( eExtrusionShadeMode )
+ {
+ default:
+ case drawing::ShadeMode_FLAT :
+ case drawing::ShadeMode_PHONG :
+ case drawing::ShadeMode_SMOOTH :
+ nRenderMode = mso_FullRender;
+ break;
+ case drawing::ShadeMode_DRAFT :
+ {
+ nRenderMode = mso_Wireframe;
+ }
+ break;
+ }
+ AddOpt( DFF_Prop_c3DRenderMode, nRenderMode );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionRotateAngle ) )
+ {
+ double fExtrusionAngleX = 0;
+ double fExtrusionAngleY = 0;
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aRotateAnglePair;
+ if ( ( rrProp.Value >>= aRotateAnglePair ) && ( aRotateAnglePair.First.Value >>= fExtrusionAngleX ) && ( aRotateAnglePair.Second.Value >>= fExtrusionAngleY ) )
+ {
+ fExtrusionAngleX *= 65536;
+ fExtrusionAngleY *= 65536;
+ AddOpt( DFF_Prop_c3DXRotationAngle, (sal_Int32)fExtrusionAngleX );
+ AddOpt( DFF_Prop_c3DYRotationAngle, (sal_Int32)fExtrusionAngleY );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionRotationCenter ) )
+ {
+ drawing::Direction3D aExtrusionRotationCenter;
+ if ( rrProp.Value >>= aExtrusionRotationCenter )
+ {
+ AddOpt( DFF_Prop_c3DRotationCenterX, (sal_Int32)( aExtrusionRotationCenter.DirectionX * 360.0 ) );
+ AddOpt( DFF_Prop_c3DRotationCenterY, (sal_Int32)( aExtrusionRotationCenter.DirectionY * 360.0 ) );
+ AddOpt( DFF_Prop_c3DRotationCenterZ, (sal_Int32)( aExtrusionRotationCenter.DirectionZ * 360.0 ) );
+ nFillHarshFlags &=~8; // don't use AutoRotationCenter;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionShininess ) )
+ {
+ double fExtrusionShininess = 0;
+ if ( rrProp.Value >>= fExtrusionShininess )
+ AddOpt( DFF_Prop_c3DShininess, (sal_Int32)( fExtrusionShininess * 655.36 ) );
+ }
+ else if ( rrProp.Name.equals( sExtrusionSkew ) )
+ {
+ double fSkewAmount = 0;
+ double fSkewAngle = 0;
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aSkewParaPair;
+ if ( ( rrProp.Value >>= aSkewParaPair ) && ( aSkewParaPair.First.Value >>= fSkewAmount ) && ( aSkewParaPair.Second.Value >>= fSkewAngle ) )
+ {
+ AddOpt( DFF_Prop_c3DSkewAmount, (sal_Int32)fSkewAmount );
+ AddOpt( DFF_Prop_c3DSkewAngle, (sal_Int32)( fSkewAngle * 65536 ) );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionSpecularity ) )
+ {
+ double fExtrusionSpecularity = 0;
+ if ( rrProp.Value >>= fExtrusionSpecularity )
+ AddOpt( DFF_Prop_c3DSpecularAmt, (sal_Int32)( fExtrusionSpecularity * 1333 ) );
+ }
+ else if ( rrProp.Name.equals( sExtrusionProjectionMode ) )
+ {
+ drawing::ProjectionMode eExtrusionProjectionMode;
+ if ( rrProp.Value >>= eExtrusionProjectionMode )
+ {
+ nFillHarshFlags |= 0x40000;
+ if ( eExtrusionProjectionMode == drawing::ProjectionMode_PARALLEL )
+ nFillHarshFlags |= 4;
+ else
+ nFillHarshFlags &=~4;
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionViewPoint ) )
+ {
+ drawing::Position3D aExtrusionViewPoint;
+ if ( rrProp.Value >>= aExtrusionViewPoint )
+ {
+ aExtrusionViewPoint.PositionX *= 360.0;
+ aExtrusionViewPoint.PositionY *= 360.0;
+ aExtrusionViewPoint.PositionZ *= 360.0;
+ AddOpt( DFF_Prop_c3DXViewpoint, (sal_Int32)aExtrusionViewPoint.PositionX );
+ AddOpt( DFF_Prop_c3DYViewpoint, (sal_Int32)aExtrusionViewPoint.PositionY );
+ AddOpt( DFF_Prop_c3DZViewpoint, (sal_Int32)aExtrusionViewPoint.PositionZ );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionOrigin ) )
+ {
+ double fExtrusionOriginX = 0;
+ double fExtrusionOriginY = 0;
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aOriginPair;
+ if ( ( rrProp.Value >>= aOriginPair ) && ( aOriginPair.First.Value >>= fExtrusionOriginX ) && ( aOriginPair.Second.Value >>= fExtrusionOriginY ) )
+ {
+ AddOpt( DFF_Prop_c3DOriginX, (sal_Int32)( fExtrusionOriginX * 65536 ) );
+ AddOpt( DFF_Prop_c3DOriginY, (sal_Int32)( fExtrusionOriginY * 65536 ) );
+ }
+ }
+ else if ( rrProp.Name.equals( sExtrusionColor ) )
+ {
+ sal_Bool bExtrusionColor = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionColor )
+ {
+ nLightFaceFlags |= 0x20000;
+ if ( bExtrusionColor )
+ {
+ nLightFaceFlags |= 2;
+ uno::Any aFillColor2;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aFillColor2, aXPropSet,
+ String( RTL_CONSTASCII_USTRINGPARAM( "FillColor2" ) ), sal_True ) )
+ {
+ sal_uInt32 nFillColor = ImplGetColor( *((sal_uInt32*)aFillColor2.getValue()) );
+ AddOpt( DFF_Prop_c3DExtrusionColor, nFillColor );
+ }
+ }
+ else
+ nLightFaceFlags &=~2;
+ }
+ }
+ }
+ if ( nLightFaceFlags != nLightFaceFlagsOrg )
+ AddOpt( DFF_Prop_fc3DLightFace, nLightFaceFlags );
+ if ( nFillHarshFlags != nFillHarshFlagsOrg )
+ AddOpt( DFF_Prop_fc3DFillHarsh, nFillHarshFlags );
+ }
+ }
+ else if ( rProp.Name.equals( sEquations ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ sal_uInt16 nElements = (sal_uInt16)aEquations.size();
+ if ( nElements )
+ {
+ sal_uInt16 nElementSize = 8;
+ sal_uInt32 nStreamSize = nElementSize * nElements + 6;
+ SvMemoryStream aOut( nStreamSize );
+ aOut << nElements
+ << nElements
+ << nElementSize;
+
+ std::vector< EnhancedCustomShapeEquation >::const_iterator aIter( aEquations.begin() );
+ std::vector< EnhancedCustomShapeEquation >::const_iterator aEnd ( aEquations.end() );
+ while( aIter != aEnd )
+ {
+ aOut << (sal_uInt16)aIter->nOperation
+ << (sal_Int16)aIter->nPara[ 0 ]
+ << (sal_Int16)aIter->nPara[ 1 ]
+ << (sal_Int16)aIter->nPara[ 2 ];
+ aIter++;
+ }
+ sal_uInt8* pBuf = new sal_uInt8[ nStreamSize ];
+ memcpy( pBuf, aOut.GetData(), nStreamSize );
+ AddOpt( DFF_Prop_pFormulas, sal_True, nStreamSize - 6, pBuf, nStreamSize );
+ }
+ else
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ 1 ];
+ AddOpt( DFF_Prop_pFormulas, sal_True, 0, pBuf, 0 );
+ }
+ }
+ }
+ else if ( rProp.Name.equals( sPath ) )
+ {
+ uno::Sequence< beans::PropertyValue > aPathPropSeq;
+ if ( rProp.Value >>= aPathPropSeq )
+ {
+ sal_uInt32 nPathFlags, nPathFlagsOrg;
+ nPathFlagsOrg = nPathFlags = 0x39;
+ if ( GetOpt( DFF_Prop_fFillOK, nPathFlags ) )
+ nPathFlagsOrg = nPathFlags;
+
+ sal_Int32 r, nrCount = aPathPropSeq.getLength();
+ for ( r = 0; r < nrCount; r++ )
+ {
+ const beans::PropertyValue& rrProp = aPathPropSeq[ r ];
+ const rtl::OUString sPathExtrusionAllowed ( RTL_CONSTASCII_USTRINGPARAM( "ExtrusionAllowed" ) );
+ const rtl::OUString sPathConcentricGradientFillAllowed ( RTL_CONSTASCII_USTRINGPARAM( "ConcentricGradientFillAllowed" ) );
+ const rtl::OUString sPathTextPathAllowed ( RTL_CONSTASCII_USTRINGPARAM( "TextPathAllowed" ) );
+ const rtl::OUString sPathCoordinates ( RTL_CONSTASCII_USTRINGPARAM( "Coordinates" ) );
+ const rtl::OUString sPathGluePoints ( RTL_CONSTASCII_USTRINGPARAM( "GluePoints" ) );
+ const rtl::OUString sPathGluePointType ( RTL_CONSTASCII_USTRINGPARAM( "GluePointType" ) );
+ const rtl::OUString sPathSegments ( RTL_CONSTASCII_USTRINGPARAM( "Segments" ) );
+ const rtl::OUString sPathStretchX ( RTL_CONSTASCII_USTRINGPARAM( "StretchX" ) );
+ const rtl::OUString sPathStretchY ( RTL_CONSTASCII_USTRINGPARAM( "StretchY" ) );
+ const rtl::OUString sPathTextFrames ( RTL_CONSTASCII_USTRINGPARAM( "TextFrames" ) );
+
+ if ( rrProp.Name.equals( sPathExtrusionAllowed ) )
+ {
+ sal_Bool bExtrusionAllowed = sal_Bool();
+ if ( rrProp.Value >>= bExtrusionAllowed )
+ {
+ nPathFlags |= 0x100000;
+ if ( bExtrusionAllowed )
+ nPathFlags |= 16;
+ else
+ nPathFlags &=~16;
+ }
+ }
+ else if ( rrProp.Name.equals( sPathConcentricGradientFillAllowed ) )
+ {
+ sal_Bool bConcentricGradientFillAllowed = sal_Bool();
+ if ( rrProp.Value >>= bConcentricGradientFillAllowed )
+ {
+ nPathFlags |= 0x20000;
+ if ( bConcentricGradientFillAllowed )
+ nPathFlags |= 2;
+ else
+ nPathFlags &=~2;
+ }
+ }
+ else if ( rrProp.Name.equals( sPathTextPathAllowed ) )
+ {
+ sal_Bool bTextPathAllowed = sal_Bool();
+ if ( rrProp.Value >>= bTextPathAllowed )
+ {
+ nPathFlags |= 0x40000;
+ if ( bTextPathAllowed )
+ nPathFlags |= 4;
+ else
+ nPathFlags &=~4;
+ }
+ }
+ else if ( rrProp.Name.equals( sPathCoordinates ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aCoordinates;
+ if ( rrProp.Value >>= aCoordinates )
+ {
+ // creating the vertices
+ if ( (sal_uInt16)aCoordinates.getLength() )
+ {
+ sal_uInt16 j, nElements = (sal_uInt16)aCoordinates.getLength();
+ sal_uInt16 nElementSize = 8;
+ sal_uInt32 nStreamSize = nElementSize * nElements + 6;
+ SvMemoryStream aOut( nStreamSize );
+ aOut << nElements
+ << nElements
+ << nElementSize;
+ for( j = 0; j < nElements; j++ )
+ {
+ sal_Int32 X = GetValueForEnhancedCustomShapeParameter( aCoordinates[ j ].First, aEquationOrder );
+ sal_Int32 Y = GetValueForEnhancedCustomShapeParameter( aCoordinates[ j ].Second, aEquationOrder );
+ aOut << X
+ << Y;
+ }
+ sal_uInt8* pBuf = new sal_uInt8[ nStreamSize ];
+ memcpy( pBuf, aOut.GetData(), nStreamSize );
+ AddOpt( DFF_Prop_pVertices, sal_True, nStreamSize - 6, pBuf, nStreamSize ); // -6
+ }
+ else
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ 1 ];
+ AddOpt( DFF_Prop_pVertices, sal_True, 0, pBuf, 0 );
+ }
+ }
+ }
+ }
+ else if ( rrProp.Name.equals( sPathGluePoints ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair> aGluePoints;
+ if ( rrProp.Value >>= aGluePoints )
+ {
+ // creating the vertices
+ sal_uInt16 nElements = (sal_uInt16)aGluePoints.getLength();
+ if ( nElements )
+ {
+ sal_uInt16 j, nElementSize = 8;
+ sal_uInt32 nStreamSize = nElementSize * nElements + 6;
+ SvMemoryStream aOut( nStreamSize );
+ aOut << nElements
+ << nElements
+ << nElementSize;
+ for( j = 0; j < nElements; j++ )
+ {
+ sal_Int32 X = GetValueForEnhancedCustomShapeParameter( aGluePoints[ j ].First, aEquationOrder );
+ sal_Int32 Y = GetValueForEnhancedCustomShapeParameter( aGluePoints[ j ].Second, aEquationOrder );
+ aOut << X
+ << Y;
+ }
+ sal_uInt8* pBuf = new sal_uInt8[ nStreamSize ];
+ memcpy( pBuf, aOut.GetData(), nStreamSize );
+ AddOpt( DFF_Prop_connectorPoints, sal_True, nStreamSize - 6, pBuf, nStreamSize ); // -6
+ }
+ else
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ 1 ];
+ AddOpt( DFF_Prop_connectorPoints, sal_True, 0, pBuf, 0 );
+ }
+ }
+ }
+ }
+ else if ( rrProp.Name.equals( sPathGluePointType ) )
+ {
+ sal_Int16 nGluePointType = sal_Int16();
+ if ( rrProp.Value >>= nGluePointType )
+ AddOpt( DFF_Prop_connectorType, (sal_uInt16)nGluePointType );
+ }
+ else if ( rrProp.Name.equals( sPathSegments ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment > aSegments;
+ if ( rrProp.Value >>= aSegments )
+ {
+ // creating seginfo
+ if ( (sal_uInt16)aSegments.getLength() )
+ {
+ sal_uInt16 j, nElements = (sal_uInt16)aSegments.getLength();
+ sal_uInt16 nElementSize = 2;
+ sal_uInt32 nStreamSize = nElementSize * nElements + 6;
+ SvMemoryStream aOut( nStreamSize );
+ aOut << nElements
+ << nElements
+ << nElementSize;
+ for ( j = 0; j < nElements; j++ )
+ {
+ sal_uInt16 nVal = (sal_uInt16)aSegments[ j ].Count;
+ switch( aSegments[ j ].Command )
+ {
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::UNKNOWN :
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LINETO : break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::MOVETO :
+ {
+ nVal = 0x4000;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CURVETO :
+ {
+ nVal |= 0x2000;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOSESUBPATH :
+ {
+ nVal = 0x6001;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ENDSUBPATH :
+ {
+ nVal = 0x8000;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::NOFILL :
+ {
+ nVal = 0xaa00;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::NOSTROKE :
+ {
+ nVal = 0xab00;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO :
+ {
+ nVal *= 3;
+ nVal |= 0xa100;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE :
+ {
+ nVal *= 3;
+ nVal |= 0xa200;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ARCTO :
+ {
+ nVal <<= 2;
+ nVal |= 0xa300;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ARC :
+ {
+ nVal <<= 2;
+ nVal |= 0xa400;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO :
+ {
+ nVal <<= 2;
+ nVal |= 0xa500;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOCKWISEARC :
+ {
+ nVal <<= 2;
+ nVal |= 0xa600;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX :
+ {
+ nVal |= 0xa700;
+ }
+ break;
+ case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY :
+ {
+ nVal |= 0xa800;
+ }
+ break;
+ }
+ aOut << nVal;
+ }
+ sal_uInt8* pBuf = new sal_uInt8[ nStreamSize ];
+ memcpy( pBuf, aOut.GetData(), nStreamSize );
+ AddOpt( DFF_Prop_pSegmentInfo, sal_False, nStreamSize - 6, pBuf, nStreamSize );
+ }
+ else
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ 1 ];
+ AddOpt( DFF_Prop_pSegmentInfo, sal_True, 0, pBuf, 0 );
+ }
+ }
+ }
+ }
+ else if ( rrProp.Name.equals( sPathStretchX ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ sal_Int32 nStretchX = 0;
+ if ( rrProp.Value >>= nStretchX )
+ AddOpt( DFF_Prop_stretchPointX, nStretchX );
+ }
+ }
+ else if ( rrProp.Name.equals( sPathStretchY ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ sal_Int32 nStretchY = 0;
+ if ( rrProp.Value >>= nStretchY )
+ AddOpt( DFF_Prop_stretchPointY, nStretchY );
+ }
+ }
+ else if ( rrProp.Name.equals( sPathTextFrames ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeTextFrame > aPathTextFrames;
+ if ( rrProp.Value >>= aPathTextFrames )
+ {
+ if ( (sal_uInt16)aPathTextFrames.getLength() )
+ {
+ sal_uInt16 j, nElements = (sal_uInt16)aPathTextFrames.getLength();
+ sal_uInt16 nElementSize = 16;
+ sal_uInt32 nStreamSize = nElementSize * nElements + 6;
+ SvMemoryStream aOut( nStreamSize );
+ aOut << nElements
+ << nElements
+ << nElementSize;
+ for ( j = 0; j < nElements; j++ )
+ {
+ sal_Int32 nLeft = GetValueForEnhancedCustomShapeParameter( aPathTextFrames[ j ].TopLeft.First, aEquationOrder );
+ sal_Int32 nTop = GetValueForEnhancedCustomShapeParameter( aPathTextFrames[ j ].TopLeft.Second, aEquationOrder );
+ sal_Int32 nRight = GetValueForEnhancedCustomShapeParameter( aPathTextFrames[ j ].BottomRight.First, aEquationOrder );
+ sal_Int32 nBottom = GetValueForEnhancedCustomShapeParameter( aPathTextFrames[ j ].BottomRight.Second, aEquationOrder );
+
+ aOut << nLeft
+ << nTop
+ << nRight
+ << nBottom;
+ }
+ sal_uInt8* pBuf = new sal_uInt8[ nStreamSize ];
+ memcpy( pBuf, aOut.GetData(), nStreamSize );
+ AddOpt( DFF_Prop_textRectangles, sal_True, nStreamSize - 6, pBuf, nStreamSize );
+ }
+ else
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ 1 ];
+ AddOpt( DFF_Prop_textRectangles, sal_True, 0, pBuf, 0 );
+ }
+ }
+ }
+ }
+ }
+ if ( nPathFlags != nPathFlagsOrg )
+ AddOpt( DFF_Prop_fFillOK, nPathFlags );
+ }
+ }
+ else if ( rProp.Name.equals( sTextPath ) )
+ {
+ uno::Sequence< beans::PropertyValue > aTextPathPropSeq;
+ if ( rProp.Value >>= aTextPathPropSeq )
+ {
+ sal_uInt32 nTextPathFlagsOrg, nTextPathFlags;
+ nTextPathFlagsOrg = nTextPathFlags = 0xffff1000; // default
+ if ( GetOpt( DFF_Prop_gtextFStrikethrough, nTextPathFlags ) )
+ nTextPathFlagsOrg = nTextPathFlags;
+
+ sal_Int32 r, nrCount = aTextPathPropSeq.getLength();
+ for ( r = 0; r < nrCount; r++ )
+ {
+ const beans::PropertyValue& rrProp = aTextPathPropSeq[ r ];
+ const rtl::OUString sTextPathMode ( RTL_CONSTASCII_USTRINGPARAM( "TextPathMode" ) );
+ const rtl::OUString sTextPathScaleX ( RTL_CONSTASCII_USTRINGPARAM( "ScaleX" ) );
+ const rtl::OUString sSameLetterHeights ( RTL_CONSTASCII_USTRINGPARAM( "SameLetterHeights" ) );
+
+ if ( rrProp.Name.equals( sTextPath ) )
+ {
+ sal_Bool bTextPathOn = sal_Bool();
+ if ( rrProp.Value >>= bTextPathOn )
+ {
+ nTextPathFlags |= 0x40000000;
+ if ( bTextPathOn )
+ {
+ nTextPathFlags |= 0x4000;
+
+ sal_uInt32 nPathFlags = 0x39;
+ GetOpt( DFF_Prop_fFillOK, nPathFlags ); // SJ: can be removed if we are supporting the TextPathAllowed property in XML
+ nPathFlags |= 0x40004;
+ AddOpt( DFF_Prop_fFillOK, nPathFlags );
+ }
+ else
+ nTextPathFlags &=~0x4000;
+ }
+ }
+ else if ( rrProp.Name.equals( sTextPathMode ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeTextPathMode eTextPathMode;
+ if ( rrProp.Value >>= eTextPathMode )
+ {
+ nTextPathFlags |= 0x05000000;
+ nTextPathFlags &=~0x500; // TextPathMode_NORMAL
+ if ( eTextPathMode == com::sun::star::drawing::EnhancedCustomShapeTextPathMode_PATH )
+ nTextPathFlags |= 0x100;
+ else if ( eTextPathMode == com::sun::star::drawing::EnhancedCustomShapeTextPathMode_SHAPE )
+ nTextPathFlags |= 0x500;
+ }
+ }
+ else if ( rrProp.Name.equals( sTextPathScaleX ) )
+ {
+ sal_Bool bTextPathScaleX = sal_Bool();
+ if ( rrProp.Value >>= bTextPathScaleX )
+ {
+ nTextPathFlags |= 0x00400000;
+ if ( bTextPathScaleX )
+ nTextPathFlags |= 0x40;
+ else
+ nTextPathFlags &=~0x40;
+ }
+ }
+ else if ( rrProp.Name.equals( sSameLetterHeights ) )
+ {
+ sal_Bool bSameLetterHeights = sal_Bool();
+ if ( rrProp.Value >>= bSameLetterHeights )
+ {
+ nTextPathFlags |= 0x00800000;
+ if ( bSameLetterHeights )
+ nTextPathFlags |= 0x80;
+ else
+ nTextPathFlags &=~0x80;
+ }
+ }
+ }
+ if ( nTextPathFlags & 0x4000 ) // Is FontWork ?
+ {
+ // FontWork Text
+ rtl::OUString aText;
+ uno::Reference< text::XSimpleText > xText( rXShape, uno::UNO_QUERY );
+ if ( xText.is() )
+ aText = xText->getString();
+ if ( !aText.getLength() )
+ aText = ::rtl::OUString::createFromAscii( "your text" ); // todo: moving into a resource
+ AddOpt( DFF_Prop_gtextUNICODE, aText );
+
+ // FontWork Font
+ rtl::OUString aFontName;
+ const rtl::OUString sCharFontName ( RTL_CONSTASCII_USTRINGPARAM( "CharFontName" ) );
+ uno::Any aAny = aXPropSet->getPropertyValue( sCharFontName );
+ aAny >>= aFontName;
+ if ( !aFontName.getLength() )
+ aFontName = ::rtl::OUString::createFromAscii( "Arial Black" );
+ AddOpt( DFF_Prop_gtextFont, aFontName );
+
+ sal_Int16 nCharScaleWidth = 100;
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "CharScaleWidth" ) ), sal_True ) )
+ {
+ if ( aAny >>= nCharScaleWidth )
+ {
+ if ( nCharScaleWidth != 100 )
+ {
+ sal_Int32 nVal = nCharScaleWidth * 655;
+ AddOpt( DFF_Prop_gtextSpacing, nVal );
+ }
+ }
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "CharKerning" ) ), sal_True ) )
+ {
+ sal_Int16 nCharKerning = sal_Int16();
+ if ( aAny >>= nCharKerning )
+ {
+ nTextPathFlags |= 0x10000000;
+ if ( nCharKerning )
+ nTextPathFlags |= 0x1000;
+ else
+ nTextPathFlags &=~0x1000;
+ }
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "CharPosture" ) ), sal_True ) )
+ {
+ awt::FontSlant eFontSlant;
+ if ( aAny >>= eFontSlant )
+ {
+ nTextPathFlags |= 0x100010;
+ if ( eFontSlant != awt::FontSlant_NONE )
+ nTextPathFlags |= 0x10;
+ else
+ nTextPathFlags &=~0x10;
+ }
+ }
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny, aXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "CharWeight" ) ), sal_True ) )
+ {
+ float fFontWidth = 0;
+ if ( aAny >>= fFontWidth )
+ {
+ nTextPathFlags |= 0x200020;
+ if ( fFontWidth > awt::FontWeight::NORMAL )
+ nTextPathFlags |= 0x20;
+ else
+ nTextPathFlags &=~0x20;
+ }
+ }
+ }
+ if ( nTextPathFlags != nTextPathFlagsOrg )
+ AddOpt( DFF_Prop_gtextFStrikethrough, nTextPathFlags );
+ }
+ }
+ else if ( rProp.Name.equals( sHandles ) )
+ {
+ if ( !bIsDefaultObject )
+ {
+ bPredefinedHandlesUsed = sal_False;
+ if ( rProp.Value >>= aHandlesPropSeq )
+ {
+ sal_uInt16 nElements = (sal_uInt16)aHandlesPropSeq.getLength();
+ if ( nElements )
+ {
+ const rtl::OUString sHandle ( RTL_CONSTASCII_USTRINGPARAM( "Handle" ) );
+
+ sal_uInt16 k, j, nElementSize = 36;
+ sal_uInt32 nStreamSize = nElementSize * nElements + 6;
+ SvMemoryStream aOut( nStreamSize );
+ aOut << nElements
+ << nElements
+ << nElementSize;
+
+ for ( k = 0; k < nElements; k++ )
+ {
+ sal_uInt32 nFlags = 0;
+ sal_Int32 nXPosition = 0;
+ sal_Int32 nYPosition = 0;
+ sal_Int32 nXMap = 0;
+ sal_Int32 nYMap = 0;
+ sal_Int32 nXRangeMin = 0x80000000;
+ sal_Int32 nXRangeMax = 0x7fffffff;
+ sal_Int32 nYRangeMin = 0x80000000;
+ sal_Int32 nYRangeMax = 0x7fffffff;
+
+ const uno::Sequence< beans::PropertyValue >& rPropSeq = aHandlesPropSeq[ k ];
+ for ( j = 0; j < rPropSeq.getLength(); j++ )
+ {
+ const beans::PropertyValue& rPropVal = rPropSeq[ j ];
+
+ const rtl::OUString sPosition ( RTL_CONSTASCII_USTRINGPARAM( "Position" ) );
+ const rtl::OUString sMirroredX ( RTL_CONSTASCII_USTRINGPARAM( "MirroredX" ) );
+ const rtl::OUString sMirroredY ( RTL_CONSTASCII_USTRINGPARAM( "MirroredY" ) );
+ const rtl::OUString sSwitched ( RTL_CONSTASCII_USTRINGPARAM( "Switched" ) );
+ const rtl::OUString sPolar ( RTL_CONSTASCII_USTRINGPARAM( "Polar" ) );
+ // const rtl::OUString sMap ( RTL_CONSTASCII_USTRINGPARAM( "Map" ) );
+ const rtl::OUString sRadiusRangeMinimum ( RTL_CONSTASCII_USTRINGPARAM( "RadiusRangeMinimum" ) );
+ const rtl::OUString sRadiusRangeMaximum ( RTL_CONSTASCII_USTRINGPARAM( "RadiusRangeMaximum" ) );
+ const rtl::OUString sRangeXMinimum ( RTL_CONSTASCII_USTRINGPARAM( "RangeXMinimum" ) );
+ const rtl::OUString sRangeXMaximum ( RTL_CONSTASCII_USTRINGPARAM( "RangeXMaximum" ) );
+ const rtl::OUString sRangeYMinimum ( RTL_CONSTASCII_USTRINGPARAM( "RangeYMinimum" ) );
+ const rtl::OUString sRangeYMaximum ( RTL_CONSTASCII_USTRINGPARAM( "RangeYMaximum" ) );
+
+ if ( rPropVal.Name.equals( sPosition ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aPosition;
+ if ( rPropVal.Value >>= aPosition )
+ {
+ GetValueForEnhancedCustomShapeHandleParameter( nXPosition, aPosition.First );
+ GetValueForEnhancedCustomShapeHandleParameter( nYPosition, aPosition.Second );
+ }
+ }
+ else if ( rPropVal.Name.equals( sMirroredX ) )
+ {
+ sal_Bool bMirroredX = sal_Bool();
+ if ( rPropVal.Value >>= bMirroredX )
+ {
+ if ( bMirroredX )
+ nFlags |= 1;
+ }
+ }
+ else if ( rPropVal.Name.equals( sMirroredY ) )
+ {
+ sal_Bool bMirroredY = sal_Bool();
+ if ( rPropVal.Value >>= bMirroredY )
+ {
+ if ( bMirroredY )
+ nFlags |= 2;
+ }
+ }
+ else if ( rPropVal.Name.equals( sSwitched ) )
+ {
+ sal_Bool bSwitched = sal_Bool();
+ if ( rPropVal.Value >>= bSwitched )
+ {
+ if ( bSwitched )
+ nFlags |= 4;
+ }
+ }
+ else if ( rPropVal.Name.equals( sPolar ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aPolar;
+ if ( rPropVal.Value >>= aPolar )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nXMap, aPolar.First ) )
+ nFlags |= 0x800;
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nYMap, aPolar.Second ) )
+ nFlags |= 0x1000;
+ nFlags |= 8;
+ }
+ }
+ /* seems not to be used.
+ else if ( rPropVal.Name.equals( sMap ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair aMap;
+ if ( rPropVal.Value >>= aMap )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nXMap, aMap.First ) )
+ nFlags |= 0x800;
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nYMap, aMap.Second ) )
+ nFlags |= 0x1000;
+ nFlags |= 0x10;
+ }
+ }
+ */
+ else if ( rPropVal.Name.equals( sRadiusRangeMinimum ) )
+ {
+ nYRangeMin = (sal_Int32)0xff4c0000; // the range of angles seems to be a not
+ nYRangeMax = (sal_Int32)0x00b40000; // used feature, so we are defaulting this
+
+ com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMinimum;
+ if ( rPropVal.Value >>= aRadiusRangeMinimum )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nXRangeMin, aRadiusRangeMinimum ) )
+ nFlags |= 0x80;
+ nFlags |= 0x2000;
+ }
+ }
+ else if ( rPropVal.Name.equals( sRadiusRangeMaximum ) )
+ {
+ nYRangeMin = (sal_Int32)0xff4c0000; // the range of angles seems to be a not
+ nYRangeMax = (sal_Int32)0x00b40000; // used feature, so we are defaulting this
+
+ com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMaximum;
+ if ( rPropVal.Value >>= aRadiusRangeMaximum )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nXRangeMax, aRadiusRangeMaximum ) )
+ nFlags |= 0x100;
+ nFlags |= 0x2000;
+ }
+ }
+ else if ( rPropVal.Name.equals( sRangeXMinimum ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameter aXRangeMinimum;
+ if ( rPropVal.Value >>= aXRangeMinimum )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nXRangeMin, aXRangeMinimum ) )
+ nFlags |= 0x80;
+ nFlags |= 0x20;
+ }
+ }
+ else if ( rPropVal.Name.equals( sRangeXMaximum ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameter aXRangeMaximum;
+ if ( rPropVal.Value >>= aXRangeMaximum )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nXRangeMax, aXRangeMaximum ) )
+ nFlags |= 0x100;
+ nFlags |= 0x20;
+ }
+ }
+ else if ( rPropVal.Name.equals( sRangeYMinimum ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameter aYRangeMinimum;
+ if ( rPropVal.Value >>= aYRangeMinimum )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nYRangeMin, aYRangeMinimum ) )
+ nFlags |= 0x200;
+ nFlags |= 0x20;
+ }
+ }
+ else if ( rPropVal.Name.equals( sRangeYMaximum ) )
+ {
+ com::sun::star::drawing::EnhancedCustomShapeParameter aYRangeMaximum;
+ if ( rPropVal.Value >>= aYRangeMaximum )
+ {
+ if ( GetValueForEnhancedCustomShapeHandleParameter( nYRangeMax, aYRangeMaximum ) )
+ nFlags |= 0x400;
+ nFlags |= 0x20;
+ }
+ }
+ }
+ aOut << nFlags
+ << nXPosition
+ << nYPosition
+ << nXMap
+ << nYMap
+ << nXRangeMin
+ << nXRangeMax
+ << nYRangeMin
+ << nYRangeMax;
+
+ if ( nFlags & 8 )
+ nAdjustmentsWhichNeedsToBeConverted |= ( 1 << ( nYPosition - 0x100 ) );
+ }
+ sal_uInt8* pBuf = new sal_uInt8[ nStreamSize ];
+ memcpy( pBuf, aOut.GetData(), nStreamSize );
+ AddOpt( DFF_Prop_Handles, sal_True, nStreamSize - 6, pBuf, nStreamSize );
+ }
+ else
+ {
+ sal_uInt8* pBuf = new sal_uInt8[ 1 ];
+ AddOpt( DFF_Prop_Handles, sal_True, 0, pBuf, 0 );
+ }
+ }
+ }
+ }
+ else if ( rProp.Name.equals( sAdjustmentValues ) )
+ {
+ // it is required, that the information which handle is polar has already be read,
+ // so we are able to change the polar value to a fixed float
+ pAdjustmentValuesProp = &rProp;
+ }
+ }
+ if ( pAdjustmentValuesProp )
+ {
+ uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue > aAdjustmentSeq;
+ if ( pAdjustmentValuesProp->Value >>= aAdjustmentSeq )
+ {
+ if ( bPredefinedHandlesUsed )
+ LookForPolarHandles( eShapeType, nAdjustmentsWhichNeedsToBeConverted );
+
+ sal_Int32 k, nValue = 0, nAdjustmentValues = aAdjustmentSeq.getLength();
+ for ( k = 0; k < nAdjustmentValues; k++ )
+ if( GetAdjustmentValue( aAdjustmentSeq[ k ], k, nAdjustmentsWhichNeedsToBeConverted, nValue ) )
+ AddOpt( (sal_uInt16)( DFF_Prop_adjustValue + k ), (sal_uInt32)nValue );
+ }
+ }
+ }
+ }
+}
+
+// ---------------------------------------------------------------------------------------------
+
+MSO_SPT EscherPropertyContainer::GetCustomShapeType( const uno::Reference< drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags, rtl::OUString& rShapeType )
+{
+ MSO_SPT eShapeType = mso_sptNil;
+ nMirrorFlags = 0;
+ uno::Reference< beans::XPropertySet > aXPropSet( rXShape, uno::UNO_QUERY );
+ if ( aXPropSet.is() )
+ {
+ try
+ {
+ const OUString sCustomShapeGeometry( RTL_CONSTASCII_USTRINGPARAM ( "CustomShapeGeometry" ) );
+ uno::Any aGeoPropSet = aXPropSet->getPropertyValue( sCustomShapeGeometry );
+ uno::Sequence< beans::PropertyValue > aGeoPropSeq;
+ if ( aGeoPropSet >>= aGeoPropSeq )
+ {
+ sal_Int32 i, nCount = aGeoPropSeq.getLength();
+ for ( i = 0; i < nCount; i++ )
+ {
+ const beans::PropertyValue& rProp = aGeoPropSeq[ i ];
+ if ( rProp.Name.equalsAscii( "Type" ) )
+ {
+ if ( rProp.Value >>= rShapeType )
+ eShapeType = EnhancedCustomShapeTypeNames::Get( rShapeType );
+ }
+ else if ( rProp.Name.equalsAscii( "MirroredX" ) )
+ {
+ sal_Bool bMirroredX = sal_Bool();
+ if ( ( rProp.Value >>= bMirroredX ) && bMirroredX )
+ nMirrorFlags |= SHAPEFLAG_FLIPH;
+ }
+ else if ( rProp.Name.equalsAscii( "MirroredY" ) )
+ {
+ sal_Bool bMirroredY = sal_Bool();
+ if ( ( rProp.Value >>= bMirroredY ) && bMirroredY )
+ nMirrorFlags |= SHAPEFLAG_FLIPV;
+ }
+ }
+ }
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ }
+ }
+ return eShapeType;
+}
+
+MSO_SPT EscherPropertyContainer::GetCustomShapeType( const uno::Reference< drawing::XShape > & rXShape, sal_uInt32& nMirrorFlags )
+{
+ rtl::OUString aShapeType;
+ return GetCustomShapeType( rXShape, nMirrorFlags, aShapeType );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+EscherPersistTable::EscherPersistTable()
+{
+}
+
+// ---------------------------------------------------------------------------------------------
+
+EscherPersistTable::~EscherPersistTable()
+{
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ delete (EscherPersistEntry*)pPtr;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherPersistTable::PtIsID( UINT32 nID )
+{
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ {
+ if ( ((EscherPersistEntry*)pPtr)->mnID == nID )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherPersistTable::PtInsert( UINT32 nID, UINT32 nOfs )
+{
+ maPersistTable.Insert( new EscherPersistEntry( nID, nOfs ) );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherPersistTable::PtDelete( UINT32 nID )
+{
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ {
+ if ( ((EscherPersistEntry*)pPtr)->mnID == nID )
+ {
+// UINT32 nRetValue = ((EscherPersistEntry*)pPtr)->mnOffset;
+ delete (EscherPersistEntry*) maPersistTable.Remove();
+ }
+ }
+ return 0;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherPersistTable::PtGetOffsetByID( UINT32 nID )
+{
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ {
+ if ( ((EscherPersistEntry*)pPtr)->mnID == nID )
+ return ((EscherPersistEntry*)pPtr)->mnOffset;
+ }
+ return 0;
+};
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherPersistTable::PtReplace( UINT32 nID, UINT32 nOfs )
+{
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ {
+ if ( ((EscherPersistEntry*)pPtr)->mnID == nID )
+ {
+ UINT32 nRetValue = ((EscherPersistEntry*)pPtr)->mnOffset;
+ ((EscherPersistEntry*)pPtr)->mnOffset = nOfs;
+ return nRetValue;
+ }
+ }
+ return 0;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherPersistTable::PtReplaceOrInsert( UINT32 nID, UINT32 nOfs )
+{
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ {
+ if ( ((EscherPersistEntry*)pPtr)->mnID == nID )
+ {
+ UINT32 nRetValue = ((EscherPersistEntry*)pPtr)->mnOffset;
+ ((EscherPersistEntry*)pPtr)->mnOffset = nOfs;
+ return nRetValue;
+ }
+ }
+ PtInsert( nID, nOfs );
+ return 0;
+}
+
+sal_Bool EscherPropertyValueHelper::GetPropertyValue(
+ ::com::sun::star::uno::Any& rAny,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ const String& rString,
+ sal_Bool bTestPropertyAvailability )
+{
+ sal_Bool bRetValue = sal_True;
+ if ( bTestPropertyAvailability )
+ {
+ bRetValue = sal_False;
+ try
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ aXPropSetInfo( rXPropSet->getPropertySetInfo() );
+ if ( aXPropSetInfo.is() )
+ bRetValue = aXPropSetInfo->hasPropertyByName( rString );
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ bRetValue = sal_False;
+ }
+ }
+ if ( bRetValue )
+ {
+ try
+ {
+ rAny = rXPropSet->getPropertyValue( rString );
+ if ( !rAny.hasValue() )
+ bRetValue = sal_False;
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ bRetValue = sal_False;
+ }
+ }
+ return bRetValue;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+::com::sun::star::beans::PropertyState EscherPropertyValueHelper::GetPropertyState(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ const String& rPropertyName )
+{
+ ::com::sun::star::beans::PropertyState eRetValue = ::com::sun::star::beans::PropertyState_AMBIGUOUS_VALUE;
+ try
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState > aXPropState
+ ( rXPropSet, ::com::sun::star::uno::UNO_QUERY );
+ if ( aXPropState.is() )
+ eRetValue = aXPropState->getPropertyState( rPropertyName );
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ //...
+ }
+ return eRetValue;
+}
+
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+
+EscherBlibEntry::EscherBlibEntry( sal_uInt32 nPictureOffset, const GraphicObject& rObject, const ByteString& rId,
+ const GraphicAttr* pGraphicAttr ) :
+ mnPictureOffset ( nPictureOffset ),
+ mnRefCount ( 1 ),
+ mnSizeExtra ( 0 ),
+ maPrefSize ( rObject.GetPrefSize() ),
+ maPrefMapMode ( rObject.GetPrefMapMode() ),
+ mbIsEmpty ( TRUE )
+{
+ mbIsNativeGraphicPossible = ( pGraphicAttr == NULL );
+ meBlibType = UNKNOWN;
+ mnSize = 0;
+
+ sal_uInt32 nLen = rId.Len();
+ const sal_Char* pData = rId.GetBuffer();
+ GraphicType eType( rObject.GetType() );
+ if ( nLen && pData && ( eType != GRAPHIC_NONE ) )
+ {
+ mnIdentifier[ 0 ] = rtl_crc32( 0,pData, nLen );
+ mnIdentifier[ 1 ] = 0;
+
+ if ( pGraphicAttr )
+ {
+ if ( pGraphicAttr->IsSpecialDrawMode()
+ || pGraphicAttr->IsMirrored()
+ || pGraphicAttr->IsCropped()
+ || pGraphicAttr->IsRotated()
+ || pGraphicAttr->IsTransparent()
+ || pGraphicAttr->IsAdjusted() )
+ {
+ SvMemoryStream aSt( sizeof( GraphicAttr ) );
+ aSt << static_cast<sal_uInt16>(pGraphicAttr->GetDrawMode())
+ << static_cast<sal_uInt32>(pGraphicAttr->GetMirrorFlags())
+ << pGraphicAttr->GetLeftCrop()
+ << pGraphicAttr->GetTopCrop()
+ << pGraphicAttr->GetRightCrop()
+ << pGraphicAttr->GetBottomCrop()
+ << pGraphicAttr->GetRotation()
+ << pGraphicAttr->GetLuminance()
+ << pGraphicAttr->GetContrast()
+ << pGraphicAttr->GetChannelR()
+ << pGraphicAttr->GetChannelG()
+ << pGraphicAttr->GetChannelB()
+ << pGraphicAttr->GetGamma()
+ << (BOOL)( pGraphicAttr->IsInvert() == TRUE )
+ << pGraphicAttr->GetTransparency();
+ mnIdentifier[ 1 ] = rtl_crc32( 0, aSt.GetData(), aSt.Tell() );
+ }
+ else
+ mbIsNativeGraphicPossible = TRUE;
+ }
+ sal_uInt32 i, nTmp, n1, n2;
+ n1 = n2 = 0;
+ for ( i = 0; i < nLen; i++ )
+ {
+ nTmp = n2 >> 28; // rotating 4 bit
+ n2 <<= 4;
+ n2 |= n1 >> 28;
+ n1 <<= 4;
+ n1 |= nTmp;
+ n1 ^= *pData++ - '0';
+ }
+ mnIdentifier[ 2 ] = n1;
+ mnIdentifier[ 3 ] = n2;
+ mbIsEmpty = FALSE;
+ }
+};
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherBlibEntry::WriteBlibEntry( SvStream& rSt, sal_Bool bWritePictureOffset, sal_uInt32 nResize )
+{
+ sal_uInt32 nPictureOffset = ( bWritePictureOffset ) ? mnPictureOffset : 0;
+
+ rSt << (sal_uInt32)( ( ESCHER_BSE << 16 ) | ( ( (sal_uInt16)meBlibType << 4 ) | 2 ) )
+ << (sal_uInt32)( 36 + nResize )
+ << (sal_uInt8)meBlibType;
+
+ switch ( meBlibType )
+ {
+ case EMF :
+ case WMF : // EMF/WMF auf OS2 zu Pict Konvertieren
+ rSt << (sal_uInt8)PICT;
+ break;
+ default:
+ rSt << (sal_uInt8)meBlibType;
+ };
+
+ rSt.Write( &mnIdentifier[ 0 ], 16 );
+ rSt << (sal_uInt16)0
+ << (sal_uInt32)( mnSize + mnSizeExtra )
+ << mnRefCount
+ << nPictureOffset
+ << (sal_uInt32)0;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+EscherBlibEntry::~EscherBlibEntry()
+{
+};
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherBlibEntry::operator==( const EscherBlibEntry& rEscherBlibEntry ) const
+{
+ for ( int i = 0; i < 3; i++ )
+ {
+ if ( mnIdentifier[ i ] != rEscherBlibEntry.mnIdentifier[ i ] )
+ return FALSE;
+ }
+ return TRUE;
+}
+
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+
+EscherGraphicProvider::EscherGraphicProvider( sal_uInt32 nFlags ) :
+ mnFlags ( nFlags ),
+ mpBlibEntrys ( NULL ),
+ mnBlibBufSize ( 0 ),
+ mnBlibEntrys ( 0 )
+{
+}
+
+EscherGraphicProvider::~EscherGraphicProvider()
+{
+ for ( UINT32 i = 0; i < mnBlibEntrys; delete mpBlibEntrys[ i++ ] ) ;
+ delete[] mpBlibEntrys;
+}
+
+void EscherGraphicProvider::SetNewBlipStreamOffset( sal_Int32 nOffset )
+{
+ for( sal_uInt32 i = 0; i < mnBlibEntrys; i++ )
+ {
+ EscherBlibEntry* pBlibEntry = mpBlibEntrys[ i ];
+ pBlibEntry->mnPictureOffset += nOffset;
+ }
+}
+
+UINT32 EscherGraphicProvider::ImplInsertBlib( EscherBlibEntry* p_EscherBlibEntry )
+{
+ if ( mnBlibBufSize == mnBlibEntrys )
+ {
+ mnBlibBufSize += 64;
+ EscherBlibEntry** pTemp = new EscherBlibEntry*[ mnBlibBufSize ];
+ for ( UINT32 i = 0; i < mnBlibEntrys; i++ )
+ {
+ pTemp[ i ] = mpBlibEntrys[ i ];
+ }
+ delete[] mpBlibEntrys;
+ mpBlibEntrys = pTemp;
+ }
+ mpBlibEntrys[ mnBlibEntrys++ ] = p_EscherBlibEntry;
+ return mnBlibEntrys;
+}
+
+sal_uInt32 EscherGraphicProvider::GetBlibStoreContainerSize( SvStream* pMergePicStreamBSE ) const
+{
+ sal_uInt32 nSize = 44 * mnBlibEntrys + 8;
+ if ( pMergePicStreamBSE )
+ {
+ for ( sal_uInt32 i = 0; i < mnBlibEntrys; i++ )
+ nSize += mpBlibEntrys[ i ]->mnSize + mpBlibEntrys[ i ]->mnSizeExtra;
+ }
+ return nSize;
+}
+
+sal_Bool EscherGraphicProvider::WriteBlibStoreEntry(SvStream& rSt,
+ sal_uInt32 nBlipId, sal_Bool bWritePictureOffSet, sal_uInt32 nResize)
+{
+ if (nBlipId > mnBlibEntrys || nBlipId == 0)
+ return sal_False;
+ mpBlibEntrys[nBlipId-1]->WriteBlibEntry(rSt, bWritePictureOffSet, nResize);
+ return sal_True;
+}
+
+void EscherGraphicProvider::WriteBlibStoreContainer( SvStream& rSt, SvStream* pMergePicStreamBSE )
+{
+ sal_uInt32 nSize = GetBlibStoreContainerSize( pMergePicStreamBSE );
+ if ( nSize )
+ {
+ rSt << (sal_uInt32)( ( ESCHER_BstoreContainer << 16 ) | 0x1f )
+ << (sal_uInt32)( nSize - 8 );
+
+ if ( pMergePicStreamBSE )
+ {
+ sal_uInt32 i, nBlipSize, nOldPos = pMergePicStreamBSE->Tell();
+ const sal_uInt32 nBuf = 0x40000; // 256KB buffer
+ sal_uInt8* pBuf = new sal_uInt8[ nBuf ];
+
+ for ( i = 0; i < mnBlibEntrys; i++ )
+ {
+ EscherBlibEntry* pBlibEntry = mpBlibEntrys[ i ];
+
+ ESCHER_BlibType nBlibType = pBlibEntry->meBlibType;
+ nBlipSize = pBlibEntry->mnSize + pBlibEntry->mnSizeExtra;
+ pBlibEntry->WriteBlibEntry( rSt, sal_False, nBlipSize );
+
+ // BLIP
+ pMergePicStreamBSE->Seek( pBlibEntry->mnPictureOffset );
+ UINT16 n16;
+ // record version and instance
+ *pMergePicStreamBSE >> n16;
+ rSt << n16;
+ // record type
+ *pMergePicStreamBSE >> n16;
+ rSt << UINT16( ESCHER_BlipFirst + nBlibType );
+ DBG_ASSERT( n16 == ESCHER_BlipFirst + nBlibType , "EscherGraphicProvider::WriteBlibStoreContainer: BLIP record types differ" );
+ UINT32 n32;
+ // record size
+ *pMergePicStreamBSE >> n32;
+ nBlipSize -= 8;
+ rSt << nBlipSize;
+ DBG_ASSERT( nBlipSize == n32, "EscherGraphicProvider::WriteBlibStoreContainer: BLIP sizes differ" );
+ // record
+ while ( nBlipSize )
+ {
+ UINT32 nBytes = ( nBlipSize > nBuf ? nBuf : nBlipSize );
+ pMergePicStreamBSE->Read( pBuf, nBytes );
+ rSt.Write( pBuf, nBytes );
+ nBlipSize -= nBytes;
+ }
+ }
+ delete[] pBuf;
+ pMergePicStreamBSE->Seek( nOldPos );
+ }
+ else
+ {
+ for ( sal_uInt32 i = 0; i < mnBlibEntrys; i++ )
+ mpBlibEntrys[ i ]->WriteBlibEntry( rSt, sal_True );
+ }
+ }
+}
+
+sal_Bool EscherGraphicProvider::GetPrefSize( const sal_uInt32 nBlibId, Size& rPrefSize, MapMode& rPrefMapMode )
+{
+ sal_Bool bInRange = nBlibId && ( ( nBlibId - 1 ) < mnBlibEntrys );
+ if ( bInRange )
+ {
+ EscherBlibEntry* pEntry = mpBlibEntrys[ nBlibId - 1 ];
+ rPrefSize = pEntry->maPrefSize;
+ rPrefMapMode = pEntry->maPrefMapMode;
+ }
+ return bInRange;
+}
+
+sal_uInt32 EscherGraphicProvider::GetBlibID( SvStream& rPicOutStrm, const ByteString& rId,
+ const Rectangle& /* rBoundRect */, const com::sun::star::awt::Rectangle* pVisArea, const GraphicAttr* pGraphicAttr )
+{
+ sal_uInt32 nBlibId = 0;
+ GraphicObject aGraphicObject( rId );
+
+ EscherBlibEntry* p_EscherBlibEntry = new EscherBlibEntry( rPicOutStrm.Tell(), aGraphicObject, rId, pGraphicAttr );
+ if ( !p_EscherBlibEntry->IsEmpty() )
+ {
+ for ( UINT32 i = 0; i < mnBlibEntrys; i++ )
+ {
+ if ( *( mpBlibEntrys[ i ] ) == *p_EscherBlibEntry )
+ {
+ mpBlibEntrys[ i ]->mnRefCount++;
+ delete p_EscherBlibEntry;
+ return i + 1;
+ }
+ }
+
+ sal_Bool bUseNativeGraphic( FALSE );
+
+ Graphic aGraphic( aGraphicObject.GetTransformedGraphic( pGraphicAttr ) );
+ GfxLink aGraphicLink;
+ SvMemoryStream aStream;
+
+ const sal_uInt8* pGraphicAry = NULL;
+
+ if ( p_EscherBlibEntry->mbIsNativeGraphicPossible && aGraphic.IsLink() )
+ {
+ aGraphicLink = aGraphic.GetLink();
+
+ p_EscherBlibEntry->mnSize = aGraphicLink.GetDataSize();
+ pGraphicAry = aGraphicLink.GetData();
+
+ if ( p_EscherBlibEntry->mnSize && pGraphicAry )
+ {
+ switch ( aGraphicLink.GetType() )
+ {
+ case GFX_LINK_TYPE_NATIVE_JPG : p_EscherBlibEntry->meBlibType = PEG; break;
+ case GFX_LINK_TYPE_NATIVE_PNG : p_EscherBlibEntry->meBlibType = PNG; break;
+ case GFX_LINK_TYPE_NATIVE_WMF :
+ {
+ if ( pGraphicAry && ( p_EscherBlibEntry->mnSize > 0x2c ) )
+ {
+ if ( ( pGraphicAry[ 0x28 ] == 0x20 ) && ( pGraphicAry[ 0x29 ] == 0x45 ) // check the magic
+ && ( pGraphicAry[ 0x2a ] == 0x4d ) && ( pGraphicAry[ 0x2b ] == 0x46 ) ) // number ( emf detection )
+ {
+ p_EscherBlibEntry->meBlibType = EMF;
+ }
+ else
+ {
+ p_EscherBlibEntry->meBlibType = WMF;
+ if ( ( pGraphicAry[ 0 ] == 0xd7 ) && ( pGraphicAry[ 1 ] == 0xcd )
+ && ( pGraphicAry[ 2 ] == 0xc6 ) && ( pGraphicAry[ 3 ] == 0x9a ) )
+ { // we have to get rid of the metafileheader
+ pGraphicAry += 22;
+ p_EscherBlibEntry->mnSize -= 22;
+ }
+ }
+ }
+ }
+ break;
+ default: break;
+ }
+ if ( p_EscherBlibEntry->meBlibType != UNKNOWN )
+ bUseNativeGraphic = TRUE;
+ }
+ }
+ if ( !bUseNativeGraphic )
+ {
+ GraphicType eGraphicType = aGraphic.GetType();
+ if ( ( eGraphicType == GRAPHIC_BITMAP ) || ( eGraphicType == GRAPHIC_GDIMETAFILE ) )
+ {
+ sal_uInt32 nErrCode;
+ if ( !aGraphic.IsAnimated() )
+// !EMF nErrCode = GraphicConverter::Export( aStream, aGraphic, ( eGraphicType == GRAPHIC_BITMAP ) ? CVT_PNG : CVT_WMF );
+ nErrCode = GraphicConverter::Export( aStream, aGraphic, ( eGraphicType == GRAPHIC_BITMAP ) ? CVT_PNG : CVT_EMF );
+ else
+ { // to store a animation, a gif has to be included into the msOG chunk of a png #I5583#
+ GraphicFilter* pFilter = GraphicFilter::GetGraphicFilter();
+ SvMemoryStream aGIFStream;
+ ByteString aVersion( "MSOFFICE9.0" );
+ aGIFStream.Write( aVersion.GetBuffer(), aVersion.Len() );
+ nErrCode = pFilter->ExportGraphic( aGraphic, String(), aGIFStream,
+ pFilter->GetExportFormatNumberForShortName( String( RTL_CONSTASCII_USTRINGPARAM( "GIF" ) ) ), NULL );
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aFilterData( 1 );
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aAdditionalChunkSequence( 1 );
+ sal_uInt32 nGIFSreamLen = aGIFStream.Tell();
+ com::sun::star::uno::Sequence< sal_Int8 > aGIFSeq( nGIFSreamLen );
+ sal_Int8* pSeq = aGIFSeq.getArray();
+ aGIFStream.Seek( STREAM_SEEK_TO_BEGIN );
+ aGIFStream.Read( pSeq, nGIFSreamLen );
+ com::sun::star::beans::PropertyValue aChunkProp, aFilterProp;
+ aChunkProp.Name = String( RTL_CONSTASCII_USTRINGPARAM( "msOG" ) );
+ aChunkProp.Value <<= aGIFSeq;
+ aAdditionalChunkSequence[ 0 ] = aChunkProp;
+ aFilterProp.Name = String( RTL_CONSTASCII_USTRINGPARAM( "AdditionalChunks" ) );
+ aFilterProp.Value <<= aAdditionalChunkSequence;
+ aFilterData[ 0 ] = aFilterProp;
+ nErrCode = pFilter->ExportGraphic( aGraphic, String(), aStream,
+ pFilter->GetExportFormatNumberForShortName( String( RTL_CONSTASCII_USTRINGPARAM( "PNG" ) ) ), &aFilterData );
+ }
+ if ( nErrCode == ERRCODE_NONE )
+ {
+// !EMF p_EscherBlibEntry->meBlibType = ( eGraphicType == GRAPHIC_BITMAP ) ? PNG : WMF;
+ p_EscherBlibEntry->meBlibType = ( eGraphicType == GRAPHIC_BITMAP ) ? PNG : EMF;
+ aStream.Seek( STREAM_SEEK_TO_END );
+ p_EscherBlibEntry->mnSize = aStream.Tell();
+ pGraphicAry = (sal_uInt8*)aStream.GetData();
+
+ if ( p_EscherBlibEntry->meBlibType == WMF ) // the fileheader is not used
+ {
+ p_EscherBlibEntry->mnSize -= 22;
+ pGraphicAry += 22;
+ }
+ }
+ }
+ }
+
+ ESCHER_BlibType eBlibType = p_EscherBlibEntry->meBlibType;
+ if ( p_EscherBlibEntry->mnSize && pGraphicAry && ( eBlibType != UNKNOWN ) )
+ {
+ sal_uInt32 nExtra, nAtomSize = 0;
+ sal_uInt32 nInstance, nUncompressedSize = p_EscherBlibEntry->mnSize;
+
+ if ( mnFlags & _E_GRAPH_PROV_USE_INSTANCES )
+ {
+ rPicOutStrm << (UINT32)( 0x7f90000 | (UINT16)( mnBlibEntrys << 4 ) )
+ << (UINT32)0;
+ nAtomSize = rPicOutStrm.Tell();
+ if ( eBlibType == PNG )
+ rPicOutStrm << (sal_uInt16)0x0606;
+ else if ( eBlibType == WMF )
+ rPicOutStrm << (sal_uInt16)0x0403;
+ else if ( eBlibType == EMF )
+ rPicOutStrm << (sal_uInt16)0x0402;
+ else if ( eBlibType == PEG )
+ rPicOutStrm << (sal_uInt16)0x0505;
+ }
+ if ( ( eBlibType == PEG ) || ( eBlibType == PNG ) )
+ {
+ nExtra = 17;
+ p_EscherBlibEntry->mnSizeExtra = nExtra + 8;
+ nInstance = ( eBlibType == PNG ) ? 0xf01e6e00 : 0xf01d46a0;
+ rPicOutStrm << nInstance << (sal_uInt32)( p_EscherBlibEntry->mnSize + nExtra );
+ rPicOutStrm.Write( p_EscherBlibEntry->mnIdentifier, 16 );
+ rPicOutStrm << (sal_uInt8)0xff;
+ rPicOutStrm.Write( pGraphicAry, p_EscherBlibEntry->mnSize );
+ }
+ else
+ {
+ ZCodec aZCodec( 0x8000, 0x8000 );
+ aZCodec.BeginCompression();
+ SvMemoryStream aDestStrm;
+ aZCodec.Write( aDestStrm, pGraphicAry, p_EscherBlibEntry->mnSize );
+ aZCodec.EndCompression();
+ aDestStrm.Seek( STREAM_SEEK_TO_END );
+ p_EscherBlibEntry->mnSize = aDestStrm.Tell();
+ pGraphicAry = (sal_uInt8*)aDestStrm.GetData();
+ if ( p_EscherBlibEntry->mnSize && pGraphicAry )
+ {
+ nExtra = eBlibType == WMF ? 0x42 : 0x32; // !EMF -> no change
+ p_EscherBlibEntry->mnSizeExtra = nExtra + 8;
+ nInstance = ( eBlibType == WMF ) ? 0xf01b2170 : 0xf01a3d40; // !EMF -> no change
+ rPicOutStrm << nInstance << (sal_uInt32)( p_EscherBlibEntry->mnSize + nExtra );
+ if ( eBlibType == WMF ) // !EMF -> no change
+ rPicOutStrm.Write( p_EscherBlibEntry->mnIdentifier, 16 );
+ rPicOutStrm.Write( p_EscherBlibEntry->mnIdentifier, 16 );
+
+ /*
+ ##913##
+ For Word the stored size of the graphic is critical the
+ metafile boundaries must match the actual graphics
+ boundaries, and the width and height must be in EMU's
+
+ If you don't do it this way then objects edited in the
+ msoffice app may show strange behaviour as the size jumps
+ around, and the original size and scaling factor in word
+ will be a very strange figure
+ */
+ UINT32 nPrefWidth = p_EscherBlibEntry->maPrefSize.Width();
+ UINT32 nPrefHeight = p_EscherBlibEntry->maPrefSize.Height();
+ UINT32 nWidth, nHeight;
+ if ( pVisArea )
+ {
+ nWidth = pVisArea->Width * 360;
+ nHeight = pVisArea->Height * 360;
+ }
+ else
+ {
+ Size aPrefSize(lcl_SizeToEmu(p_EscherBlibEntry->maPrefSize, p_EscherBlibEntry->maPrefMapMode));
+ nWidth = aPrefSize.Width() * 360;
+ nHeight = aPrefSize.Height() * 360;
+ }
+ rPicOutStrm << nUncompressedSize // WMFSize without FileHeader
+ << (sal_Int32)0 // da die Originalgroesse des WMF's (ohne FileHeader)
+ << (sal_Int32)0 // nicht mehr feststellbar ist, schreiben wir 10cm / x
+ << nPrefWidth
+ << nPrefHeight
+ << nWidth
+ << nHeight
+ << p_EscherBlibEntry->mnSize
+ << (sal_uInt16)0xfe00; // compression Flags
+ rPicOutStrm.Write( pGraphicAry, p_EscherBlibEntry->mnSize );
+ }
+ }
+ if ( nAtomSize )
+ {
+ sal_uInt32 nPos = rPicOutStrm.Tell();
+ rPicOutStrm.Seek( nAtomSize - 4 );
+ rPicOutStrm << (sal_uInt32)( nPos - nAtomSize );
+ rPicOutStrm.Seek( nPos );
+ }
+ nBlibId = ImplInsertBlib( p_EscherBlibEntry ), p_EscherBlibEntry = NULL;
+ }
+ }
+ if ( p_EscherBlibEntry )
+ delete p_EscherBlibEntry;
+ return nBlibId;
+}
+
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+
+struct EscherConnectorRule
+{
+ sal_uInt32 nRuleId;
+ sal_uInt32 nShapeA; // SPID of shape A
+ sal_uInt32 nShapeB; // SPID of shape B
+ sal_uInt32 nShapeC; // SPID of connector shape
+ sal_uInt32 ncptiA; // Connection site Index of shape A
+ sal_uInt32 ncptiB; // Connection site Index of shape B
+};
+
+struct EscherShapeListEntry
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > aXShape;
+ sal_uInt32 n_EscherId;
+
+ EscherShapeListEntry( const ::com::sun::star::uno::Reference
+ < ::com::sun::star::drawing::XShape > & rShape, sal_uInt32 nId ) :
+ aXShape ( rShape ),
+ n_EscherId ( nId ) {}
+};
+
+sal_uInt32 EscherConnectorListEntry::GetClosestPoint( const Polygon& rPoly, const ::com::sun::star::awt::Point& rPoint )
+{
+ sal_uInt16 nCount = rPoly.GetSize();
+ sal_uInt16 nClosest = nCount;
+ double fDist = (sal_uInt32)0xffffffff;
+ while( nCount-- )
+ {
+ double fDistance = hypot( rPoint.X - rPoly[ nCount ].X(), rPoint.Y - rPoly[ nCount ].Y() );
+ if ( fDistance < fDist )
+ {
+ nClosest = nCount;
+ fDist = fDistance;
+ }
+ }
+ return nClosest;
+};
+
+// ---------------------------------------------------------------------------------------------
+// bei Rechtecken bei Ellipsen bei Polygonen
+//
+// nRule = 0 ->Top 0 ->Top nRule = Index auf ein (Poly)Polygon Punkt
+// 1 ->Left 2 ->Left
+// 2 ->Bottom 4 ->Bottom
+// 3 ->Right 6 ->Right
+
+sal_uInt32 EscherConnectorListEntry::GetConnectorRule( sal_Bool bFirst )
+{
+ sal_uInt32 nRule = 0;
+
+ ::com::sun::star::uno::Any aAny;
+ ::com::sun::star::awt::Point aRefPoint( ( bFirst ) ? maPointA : maPointB );
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
+ aXShape( ( bFirst ) ? mXConnectToA : mXConnectToB );
+
+ String aString( (::rtl::OUString)aXShape->getShapeType() );
+ ByteString aType( aString, RTL_TEXTENCODING_UTF8 );
+ aType.Erase( 0, 13 ); // removing "com.sun.star."
+ sal_uInt16 nPos = aType.Search( "Shape" );
+ aType.Erase( nPos, 5 );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+ aPropertySet( aXShape, ::com::sun::star::uno::UNO_QUERY );
+
+ if ( aType == "drawing.PolyPolygon" || aType == "drawing.PolyLine" )
+ {
+ if ( aPropertySet.is() )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny,
+ aPropertySet, String( RTL_CONSTASCII_USTRINGPARAM( "PolyPolygon" ) ) ) )
+ {
+ ::com::sun::star::drawing::PointSequenceSequence* pSourcePolyPolygon =
+ (::com::sun::star::drawing::PointSequenceSequence*)aAny.getValue();
+ sal_Int32 nOuterSequenceCount = pSourcePolyPolygon->getLength();
+ ::com::sun::star::drawing::PointSequence* pOuterSequence = pSourcePolyPolygon->getArray();
+
+ if ( pOuterSequence )
+ {
+ sal_Int32 a, b, nIndex = 0;
+ sal_uInt32 nDistance = 0xffffffff;
+ for( a = 0; a < nOuterSequenceCount; a++ )
+ {
+ ::com::sun::star::drawing::PointSequence* pInnerSequence = pOuterSequence++;
+ if ( pInnerSequence )
+ {
+ ::com::sun::star::awt::Point* pArray = pInnerSequence->getArray();
+ if ( pArray )
+ {
+ for ( b = 0; b < pInnerSequence->getLength(); b++, nIndex++, pArray++ )
+ {
+ sal_uInt32 nDist = (sal_uInt32)hypot( aRefPoint.X - pArray->X, aRefPoint.Y - pArray->Y );
+ if ( nDist < nDistance )
+ {
+ nRule = nIndex;
+ nDistance = nDist;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ else if ( ( aType == "drawing.OpenBezier" ) || ( aType == "drawing.OpenFreeHand" ) || ( aType == "drawing.PolyLinePath" )
+ || ( aType == "drawing.ClosedBezier" ) || ( aType == "drawing.ClosedFreeHand" ) || ( aType == "drawing.PolyPolygonPath" ) )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+ aPropertySet2( aXShape, ::com::sun::star::uno::UNO_QUERY );
+ if ( aPropertySet2.is() )
+ {
+ if ( EscherPropertyValueHelper::GetPropertyValue( aAny,
+ aPropertySet2, String( RTL_CONSTASCII_USTRINGPARAM( "PolyPolygonBezier" ) ) ) )
+ {
+ ::com::sun::star::drawing::PolyPolygonBezierCoords* pSourcePolyPolygon =
+ (::com::sun::star::drawing::PolyPolygonBezierCoords*)aAny.getValue();
+ sal_Int32 nOuterSequenceCount = pSourcePolyPolygon->Coordinates.getLength();
+
+ // Zeiger auf innere sequences holen
+ ::com::sun::star::drawing::PointSequence* pOuterSequence =
+ pSourcePolyPolygon->Coordinates.getArray();
+ ::com::sun::star::drawing::FlagSequence* pOuterFlags =
+ pSourcePolyPolygon->Flags.getArray();
+
+ if ( pOuterSequence && pOuterFlags )
+ {
+ sal_Int32 a, b, nIndex = 0;
+ sal_uInt32 nDistance = 0xffffffff;
+
+ for ( a = 0; a < nOuterSequenceCount; a++ )
+ {
+ ::com::sun::star::drawing::PointSequence* pInnerSequence = pOuterSequence++;
+ ::com::sun::star::drawing::FlagSequence* pInnerFlags = pOuterFlags++;
+ if ( pInnerSequence && pInnerFlags )
+ {
+ ::com::sun::star::awt::Point* pArray = pInnerSequence->getArray();
+ ::com::sun::star::drawing::PolygonFlags* pFlags = pInnerFlags->getArray();
+ if ( pArray && pFlags )
+ {
+ for ( b = 0; b < pInnerSequence->getLength(); b++, pArray++ )
+ {
+ PolyFlags ePolyFlags = *( (PolyFlags*)pFlags++ );
+ if ( ePolyFlags == POLY_CONTROL )
+ continue;
+ sal_uInt32 nDist = (sal_uInt32)hypot( aRefPoint.X - pArray->X, aRefPoint.Y - pArray->Y );
+ if ( nDist < nDistance )
+ {
+ nRule = nIndex;
+ nDistance = nDist;
+ }
+ nIndex++;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ bool bRectangularConnection = true;
+
+ if ( aType == "drawing.Custom" )
+ {
+ SdrObject* pCustoShape( GetSdrObjectFromXShape( aXShape ) );
+ if ( pCustoShape && pCustoShape->ISA( SdrObjCustomShape ) )
+ {
+ SdrCustomShapeGeometryItem& rGeometryItem = (SdrCustomShapeGeometryItem&)(const SdrCustomShapeGeometryItem&)
+ pCustoShape->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY );
+
+ const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM( "Path" ) );
+ const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
+ const rtl::OUString sGluePointType( RTL_CONSTASCII_USTRINGPARAM( "GluePointType" ) );
+
+ rtl::OUString sShapeType;
+ uno::Any* pType = rGeometryItem.GetPropertyValueByName( sType );
+ if ( pType )
+ *pType >>= sShapeType;
+ MSO_SPT eSpType = EnhancedCustomShapeTypeNames::Get( sShapeType );
+
+ uno::Any* pGluePointType = ((SdrCustomShapeGeometryItem&)rGeometryItem).GetPropertyValueByName( sPath, sGluePointType );
+
+ sal_Int16 nGluePointType = sal_Int16();
+ if ( !( pGluePointType &&
+ ( *pGluePointType >>= nGluePointType ) ) )
+ nGluePointType = GetCustomShapeConnectionTypeDefault( eSpType );
+
+ if ( nGluePointType == com::sun::star::drawing::EnhancedCustomShapeGluePointType::CUSTOM )
+ {
+ const SdrGluePointList* pList = pCustoShape->GetGluePointList();
+ if ( pList )
+ {
+ Polygon aPoly;
+ USHORT nNum, nAnz = pList->GetCount();
+ if ( nAnz )
+ {
+ for ( nNum = 0; nNum < nAnz; nNum++ )
+ {
+ const SdrGluePoint& rGP = (*pList)[ nNum ];
+ Point aPt( rGP.GetAbsolutePos( *pCustoShape ) );
+ aPoly.Insert( POLY_APPEND, aPt );
+ }
+ nRule = GetClosestPoint( aPoly, aRefPoint );
+ bRectangularConnection = false;
+ }
+ }
+ }
+ else if ( nGluePointType == com::sun::star::drawing::EnhancedCustomShapeGluePointType::SEGMENTS )
+ {
+ SdrObject* pPoly = pCustoShape->DoConvertToPolyObj( TRUE );
+ if ( pPoly && pPoly->ISA( SdrPathObj ) )
+ {
+ sal_Int16 a, b, nIndex = 0;
+ sal_uInt32 nDistance = 0xffffffff;
+
+ // #i74631# use explicit constructor here. Also XPolyPolygon is not necessary,
+ // reducing to PolyPolygon
+ const PolyPolygon aPolyPoly(((SdrPathObj*)pPoly)->GetPathPoly());
+
+ for ( a = 0; a < aPolyPoly.Count(); a++ )
+ {
+ const Polygon& rPoly = aPolyPoly.GetObject( a );
+ for ( b = 0; b < rPoly.GetSize(); b++ )
+ {
+ if ( rPoly.GetFlags( b ) != POLY_NORMAL )
+ continue;
+ const Point& rPt = rPoly[ b ];
+ sal_uInt32 nDist = (sal_uInt32)hypot( aRefPoint.X - rPt.X(), aRefPoint.Y - rPt.Y() );
+ if ( nDist < nDistance )
+ {
+ nRule = nIndex;
+ nDistance = nDist;
+ }
+ nIndex++;
+ }
+ }
+ if ( nDistance != 0xffffffff )
+ bRectangularConnection = false;
+ }
+ }
+ }
+ }
+ if ( bRectangularConnection )
+ {
+ ::com::sun::star::awt::Point aPoint( aXShape->getPosition() );
+ ::com::sun::star::awt::Size aSize( aXShape->getSize() );
+
+ Rectangle aRect( Point( aPoint.X, aPoint.Y ), Size( aSize.Width, aSize.Height ) );
+ Point aCenter( aRect.Center() );
+ Polygon aPoly( 4 );
+
+ aPoly[ 0 ] = Point( aCenter.X(), aRect.Top() );
+ aPoly[ 1 ] = Point( aRect.Left(), aCenter.Y() );
+ aPoly[ 2 ] = Point( aCenter.X(), aRect.Bottom() );
+ aPoly[ 3 ] = Point( aRect.Right(), aCenter.Y() );
+
+ sal_Int32 nAngle = ( EscherPropertyValueHelper::GetPropertyValue( aAny,
+ aPropertySet, String( RTL_CONSTASCII_USTRINGPARAM( "RotateAngle" ) ), sal_True ) )
+ ? *((sal_Int32*)aAny.getValue() )
+ : 0;
+ if ( nAngle )
+ aPoly.Rotate( aRect.TopLeft(), (sal_uInt16)( ( nAngle + 5 ) / 10 ) );
+ nRule = GetClosestPoint( aPoly, aRefPoint );
+
+ if ( aType == "drawing.Ellipse" )
+ nRule <<= 1; // In PPT hat eine Ellipse 8 Mglichkeiten sich zu connecten
+ }
+ }
+ return nRule;
+}
+
+EscherSolverContainer::~EscherSolverContainer()
+{
+ void* pP;
+
+ for( pP = maShapeList.First(); pP; pP = maShapeList.Next() )
+ delete (EscherShapeListEntry*)pP;
+ for( pP = maConnectorList.First(); pP; pP = maConnectorList.Next() )
+ delete (EscherConnectorListEntry*)pP;
+}
+
+void EscherSolverContainer::AddShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape, sal_uInt32 nId )
+{
+ maShapeList.Insert( new EscherShapeListEntry( rXShape, nId ), LIST_APPEND );
+}
+
+void EscherSolverContainer::AddConnector( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConnector,
+ const ::com::sun::star::awt::Point& rPA,
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConA,
+ const ::com::sun::star::awt::Point& rPB,
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rConB )
+{
+ maConnectorList.Insert( new EscherConnectorListEntry( rConnector, rPA, rConA, rPB, rConB ), LIST_APPEND );
+}
+
+sal_uInt32 EscherSolverContainer::GetShapeId( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rXShape ) const
+{
+ for ( EscherShapeListEntry* pPtr = (EscherShapeListEntry*)((List&)maShapeList).First();
+ pPtr; pPtr = (EscherShapeListEntry*)((List&)maShapeList).Next() )
+ {
+ if ( rXShape == pPtr->aXShape )
+ return ( pPtr->n_EscherId );
+ }
+ return 0;
+}
+
+void EscherSolverContainer::WriteSolver( SvStream& rStrm )
+{
+ sal_uInt32 nCount = maConnectorList.Count();
+ if ( nCount )
+ {
+ sal_uInt32 nRecHdPos, nCurrentPos, nSize;
+ rStrm << (sal_uInt16)( ( nCount << 4 ) | 0xf ) // open an ESCHER_SolverContainer
+ << (sal_uInt16)ESCHER_SolverContainer //
+ << (sal_uInt32)0; //
+
+ nRecHdPos = rStrm.Tell() - 4;
+
+ EscherConnectorRule aConnectorRule;
+ aConnectorRule.nRuleId = 2;
+ for ( EscherConnectorListEntry* pPtr = (EscherConnectorListEntry*)maConnectorList.First();
+ pPtr; pPtr = (EscherConnectorListEntry*)maConnectorList.Next() )
+ {
+ aConnectorRule.ncptiA = aConnectorRule.ncptiB = 0xffffffff;
+ aConnectorRule.nShapeC = GetShapeId( pPtr->mXConnector );
+ aConnectorRule.nShapeA = GetShapeId( pPtr->mXConnectToA );
+ aConnectorRule.nShapeB = GetShapeId( pPtr->mXConnectToB );
+
+ if ( aConnectorRule.nShapeC )
+ {
+ if ( aConnectorRule.nShapeA )
+ aConnectorRule.ncptiA = pPtr->GetConnectorRule( sal_True );
+ if ( aConnectorRule.nShapeB )
+ aConnectorRule.ncptiB = pPtr->GetConnectorRule( sal_False );
+ }
+ rStrm << (sal_uInt32)( ( ESCHER_ConnectorRule << 16 ) | 1 ) // atom hd
+ << (sal_uInt32)24 //
+ << aConnectorRule.nRuleId
+ << aConnectorRule.nShapeA
+ << aConnectorRule.nShapeB
+ << aConnectorRule.nShapeC
+ << aConnectorRule.ncptiA
+ << aConnectorRule.ncptiB;
+
+ aConnectorRule.nRuleId += 2;
+ }
+
+ nCurrentPos = rStrm.Tell(); // close the ESCHER_SolverContainer
+ nSize = ( nCurrentPos - nRecHdPos ) - 4;//
+ rStrm.Seek( nRecHdPos ); //
+ rStrm << nSize; //
+ rStrm.Seek( nCurrentPos ); //
+ }
+}
+
+// ---------------------------------------------------------------------------------------------
+
+EscherExGlobal::EscherExGlobal( sal_uInt32 nGraphicProvFlags ) :
+ EscherGraphicProvider( nGraphicProvFlags ),
+ mpPicStrm( 0 ),
+ mbHasDggCont( false ),
+ mbPicStrmQueried( false )
+{
+}
+
+EscherExGlobal::~EscherExGlobal()
+{
+}
+
+sal_uInt32 EscherExGlobal::GenerateDrawingId()
+{
+ // new drawing starts a new cluster in the cluster table (cluster identifiers are one-based)
+ sal_uInt32 nClusterId = static_cast< sal_uInt32 >( maClusterTable.size() + 1 );
+ // drawing identifiers are one-based
+ sal_uInt32 nDrawingId = static_cast< sal_uInt32 >( maDrawingInfos.size() + 1 );
+ // prepare new entries in the tables
+ maClusterTable.push_back( ClusterEntry( nDrawingId ) );
+ maDrawingInfos.push_back( DrawingInfo( nClusterId ) );
+ // return the new drawing identifier
+ return nDrawingId;
+}
+
+sal_uInt32 EscherExGlobal::GenerateShapeId( sal_uInt32 nDrawingId, bool bIsInSpgr )
+{
+ // drawing identifier is one-based
+ size_t nDrawingIdx = nDrawingId - 1;
+ OSL_ENSURE( nDrawingIdx < maDrawingInfos.size(), "EscherExGlobal::GenerateShapeId - invalid drawing ID" );
+ if( nDrawingIdx >= maDrawingInfos.size() )
+ return 0;
+ DrawingInfo& rDrawingInfo = maDrawingInfos[ nDrawingIdx ];
+
+ // cluster identifier in drawing info struct is one-based
+ ClusterEntry* pClusterEntry = &maClusterTable[ rDrawingInfo.mnClusterId - 1 ];
+
+ // check cluster overflow, create new cluster entry
+ if( pClusterEntry->mnNextShapeId == DFF_DGG_CLUSTER_SIZE )
+ {
+ // start a new cluster in the cluster table
+ maClusterTable.push_back( ClusterEntry( nDrawingId ) );
+ pClusterEntry = &maClusterTable.back();
+ // new size of maClusterTable is equal to one-based identifier of the new cluster
+ rDrawingInfo.mnClusterId = static_cast< sal_uInt32 >( maClusterTable.size() );
+ }
+
+ // build shape identifier from cluster identifier and next free cluster shape identifier
+ rDrawingInfo.mnLastShapeId = static_cast< sal_uInt32 >( rDrawingInfo.mnClusterId * DFF_DGG_CLUSTER_SIZE + pClusterEntry->mnNextShapeId );
+ // update free shape identifier in cluster entry
+ ++pClusterEntry->mnNextShapeId;
+ /* Old code has counted the shapes only, if we are in a SPGRCONTAINER. Is
+ this really intended? Maybe it's always true... */
+ if( bIsInSpgr )
+ ++rDrawingInfo.mnShapeCount;
+
+ // return the new shape identifier
+ return rDrawingInfo.mnLastShapeId;
+}
+
+sal_uInt32 EscherExGlobal::GetDrawingShapeCount( sal_uInt32 nDrawingId ) const
+{
+ size_t nDrawingIdx = nDrawingId - 1;
+ OSL_ENSURE( nDrawingIdx < maDrawingInfos.size(), "EscherExGlobal::GetDrawingShapeCount - invalid drawing ID" );
+ return (nDrawingIdx < maDrawingInfos.size()) ? maDrawingInfos[ nDrawingIdx ].mnShapeCount : 0;
+}
+
+sal_uInt32 EscherExGlobal::GetLastShapeId( sal_uInt32 nDrawingId ) const
+{
+ size_t nDrawingIdx = nDrawingId - 1;
+ OSL_ENSURE( nDrawingIdx < maDrawingInfos.size(), "EscherExGlobal::GetLastShapeId - invalid drawing ID" );
+ return (nDrawingIdx < maDrawingInfos.size()) ? maDrawingInfos[ nDrawingIdx ].mnLastShapeId : 0;
+}
+
+sal_uInt32 EscherExGlobal::GetDggAtomSize() const
+{
+ // 8 bytes header, 16 bytes fixed DGG data, 8 bytes for each cluster
+ return static_cast< sal_uInt32 >( 24 + 8 * maClusterTable.size() );
+}
+
+void EscherExGlobal::WriteDggAtom( SvStream& rStrm ) const
+{
+ sal_uInt32 nDggSize = GetDggAtomSize();
+
+ // write the DGG record header (do not include the 8 bytes of the header in the data size)
+ rStrm << static_cast< sal_uInt32 >( ESCHER_Dgg << 16 ) << static_cast< sal_uInt32 >( nDggSize - 8 );
+
+ // claculate and write the fixed DGG data
+ sal_uInt32 nShapeCount = 0;
+ sal_uInt32 nLastShapeId = 0;
+ for( DrawingInfoVector::const_iterator aIt = maDrawingInfos.begin(), aEnd = maDrawingInfos.end(); aIt != aEnd; ++aIt )
+ {
+ nShapeCount += aIt->mnShapeCount;
+ nLastShapeId = ::std::max( nLastShapeId, aIt->mnLastShapeId );
+ }
+ // the non-existing cluster with index #0 is counted too
+ sal_uInt32 nClusterCount = static_cast< sal_uInt32 >( maClusterTable.size() + 1 );
+ sal_uInt32 nDrawingCount = static_cast< sal_uInt32 >( maDrawingInfos.size() );
+ rStrm << nLastShapeId << nClusterCount << nShapeCount << nDrawingCount;
+
+ // write the cluster table
+ for( ClusterTable::const_iterator aIt = maClusterTable.begin(), aEnd = maClusterTable.end(); aIt != aEnd; ++aIt )
+ rStrm << aIt->mnDrawingId << aIt->mnNextShapeId;
+}
+
+SvStream* EscherExGlobal::QueryPictureStream()
+{
+ if( !mbPicStrmQueried )
+ {
+ mpPicStrm = ImplQueryPictureStream();
+ mbPicStrmQueried = true;
+ }
+ return mpPicStrm;
+}
+
+SvStream* EscherExGlobal::ImplQueryPictureStream()
+{
+ return 0;
+}
+
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------
+
+EscherEx::EscherEx( const EscherExGlobalRef& rxGlobal, SvStream& rOutStrm ) :
+ mxGlobal ( rxGlobal ),
+ mpOutStrm ( &rOutStrm ),
+
+ mnGroupLevel ( 0 ),
+ mnHellLayerId ( USHRT_MAX ),
+
+ mbEscherSpgr ( FALSE ),
+ mbEscherDg ( FALSE )
+{
+ mnStrmStartOfs = mpOutStrm->Tell();
+ mpImplEscherExSdr.reset( new ImplEscherExSdr( *this ) );
+}
+
+EscherEx::~EscherEx()
+{
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::Flush( SvStream* pPicStreamMergeBSE /* = NULL */ )
+{
+ if ( mxGlobal->HasDggContainer() )
+ {
+ // store the current stream position at ESCHER_Persist_CurrentPosition key
+ PtReplaceOrInsert( ESCHER_Persist_CurrentPosition, mpOutStrm->Tell() );
+ if ( DoSeek( ESCHER_Persist_Dgg ) )
+ {
+ /* The DGG record is still not written. ESCHER_Persist_Dgg seeks
+ to the place where the complete record has to be inserted. */
+ InsertAtCurrentPos( mxGlobal->GetDggAtomSize(), false );
+ mxGlobal->WriteDggAtom( *mpOutStrm );
+
+ if ( mxGlobal->HasGraphics() )
+ {
+ /* Calculate the total size of the BSTORECONTAINER including
+ all BSE records containing the picture data contained in
+ the passed in pPicStreamMergeBSE. */
+ sal_uInt32 nBSCSize = mxGlobal->GetBlibStoreContainerSize( pPicStreamMergeBSE );
+ if ( nBSCSize > 0 )
+ {
+ InsertAtCurrentPos( nBSCSize, false );
+ mxGlobal->WriteBlibStoreContainer( *mpOutStrm, pPicStreamMergeBSE );
+ }
+ }
+
+ /* Forget the stream position stored for the DGG which is invalid
+ after the call to InsertAtCurrentPos() anyway. */
+ PtDelete( ESCHER_Persist_Dgg );
+ }
+ // seek to initial position (may be different due to inserted DGG and BLIPs)
+ mpOutStrm->Seek( PtGetOffsetByID( ESCHER_Persist_CurrentPosition ) );
+ }
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::InsertAtCurrentPos( UINT32 nBytes, bool bExpandEndOfAtom )
+{
+ UINT32 nSize, nType, nSource, nBufSize, nToCopy, nCurPos = mpOutStrm->Tell();
+ BYTE* pBuf;
+
+ // Persist table anpassen
+ for ( void* pPtr = maPersistTable.First(); pPtr; pPtr = maPersistTable.Next() )
+ {
+ UINT32 nOfs = ((EscherPersistEntry*)pPtr)->mnOffset;
+ if ( nOfs >= nCurPos )
+ ((EscherPersistEntry*)pPtr)->mnOffset += nBytes;
+ }
+
+ // container und atom sizes anpassen
+ mpOutStrm->Seek( mnStrmStartOfs );
+ while ( mpOutStrm->Tell() < nCurPos )
+ {
+ *mpOutStrm >> nType >> nSize;
+ sal_uInt32 nEndOfRecord = mpOutStrm->Tell() + nSize;
+ bool bContainer = (nType & 0x0F) == 0x0F;
+ /* Expand the record, if the insertion position is inside, or if the
+ position is at the end of a container (expands always), or at the
+ end of an atom and bExpandEndOfAtom is set. */
+ if ( (nCurPos < nEndOfRecord) || ((nCurPos == nEndOfRecord) && (bContainer || bExpandEndOfAtom)) )
+ {
+ mpOutStrm->SeekRel( -4 );
+ *mpOutStrm << (UINT32)( nSize + nBytes );
+ if ( !bContainer )
+ mpOutStrm->SeekRel( nSize );
+ }
+ else
+ mpOutStrm->SeekRel( nSize );
+ }
+ std::vector< sal_uInt32 >::iterator aIter( mOffsets.begin() );
+ std::vector< sal_uInt32 >::iterator aEnd( mOffsets.end() );
+ while( aIter != aEnd )
+ {
+ if ( *aIter > nCurPos )
+ *aIter += nBytes;
+ aIter++;
+ }
+ mpOutStrm->Seek( STREAM_SEEK_TO_END );
+ nSource = mpOutStrm->Tell();
+ nToCopy = nSource - nCurPos; // Stream um nBytes vergroessern
+ pBuf = new BYTE[ 0x40000 ]; // 256KB Buffer
+ while ( nToCopy )
+ {
+ nBufSize = ( nToCopy >= 0x40000 ) ? 0x40000 : nToCopy;
+ nToCopy -= nBufSize;
+ nSource -= nBufSize;
+ mpOutStrm->Seek( nSource );
+ mpOutStrm->Read( pBuf, nBufSize );
+ mpOutStrm->Seek( nSource + nBytes );
+ mpOutStrm->Write( pBuf, nBufSize );
+ }
+ delete[] pBuf;
+ mpOutStrm->Seek( nCurPos );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherEx::SeekBehindRecHeader( UINT16 nRecType )
+{
+ UINT32 nOldPos, nStreamEnd, nType, nSize;
+
+ nOldPos = mpOutStrm->Tell();
+ nStreamEnd = mpOutStrm->Seek( STREAM_SEEK_TO_END );
+ mpOutStrm->Seek( nOldPos );
+ while ( mpOutStrm->Tell() < nStreamEnd )
+ {
+ *mpOutStrm >> nType >> nSize;
+ if ( ( nType >> 16 ) == nRecType )
+ return TRUE;
+ if ( ( nType & 0xf ) != 0xf )
+ mpOutStrm->SeekRel( nSize );
+ }
+ mpOutStrm->Seek( nOldPos );
+ return FALSE;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::InsertPersistOffset( UINT32 nKey, UINT32 nOffset )
+{
+ PtInsert( ESCHER_Persist_PrivateEntry | nKey, nOffset );
+}
+
+void EscherEx::ReplacePersistOffset( UINT32 nKey, UINT32 nOffset )
+{
+ PtReplace( ESCHER_Persist_PrivateEntry | nKey, nOffset );
+}
+
+UINT32 EscherEx::GetPersistOffset( UINT32 nKey )
+{
+ return PtGetOffsetByID( ESCHER_Persist_PrivateEntry | nKey );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherEx::DoSeek( UINT32 nKey )
+{
+ UINT32 nPos = PtGetOffsetByID( nKey );
+ if ( nPos )
+ mpOutStrm->Seek( nPos );
+ else
+ {
+ if (! PtIsID( nKey ) )
+ return FALSE;
+ mpOutStrm->Seek( 0 );
+ }
+ return TRUE;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherEx::SeekToPersistOffset( UINT32 nKey )
+{
+ return DoSeek( ESCHER_Persist_PrivateEntry | nKey );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherEx::InsertAtPersistOffset( UINT32 nKey, UINT32 nValue )
+{
+ UINT32 nOldPos = mpOutStrm->Tell();
+ BOOL bRetValue = SeekToPersistOffset( nKey );
+ if ( bRetValue )
+ {
+ *mpOutStrm << nValue;
+ mpOutStrm->Seek( nOldPos );
+ }
+ return bRetValue;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::OpenContainer( UINT16 nEscherContainer, int nRecInstance )
+{
+ *mpOutStrm << (UINT16)( ( nRecInstance << 4 ) | 0xf ) << nEscherContainer << (UINT32)0;
+ mOffsets.push_back( mpOutStrm->Tell() - 4 );
+ mRecTypes.push_back( nEscherContainer );
+ switch( nEscherContainer )
+ {
+ case ESCHER_DggContainer :
+ {
+ mxGlobal->SetDggContainer();
+ mnCurrentDg = 0;
+ /* Remember the current position as start position of the DGG
+ record and BSTORECONTAINER, but do not write them actually.
+ This will be done later in Flush() when the number of drawings,
+ the size and contents of the FIDCL cluster table, and the size
+ of the BLIP container are known. */
+ PtReplaceOrInsert( ESCHER_Persist_Dgg, mpOutStrm->Tell() );
+ }
+ break;
+
+ case ESCHER_DgContainer :
+ {
+ if ( mxGlobal->HasDggContainer() )
+ {
+ if ( !mbEscherDg )
+ {
+ mbEscherDg = TRUE;
+ mnCurrentDg = mxGlobal->GenerateDrawingId();
+ AddAtom( 8, ESCHER_Dg, 0, mnCurrentDg );
+ PtReplaceOrInsert( ESCHER_Persist_Dg | mnCurrentDg, mpOutStrm->Tell() );
+ *mpOutStrm << (UINT32)0 // The number of shapes in this drawing
+ << (UINT32)0; // The last MSOSPID given to an SP in this DG
+ }
+ }
+ }
+ break;
+
+ case ESCHER_SpgrContainer :
+ {
+ if ( mbEscherDg )
+ {
+ mbEscherSpgr = TRUE;
+ }
+ }
+ break;
+
+ case ESCHER_SpContainer :
+ {
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::CloseContainer()
+{
+ sal_uInt32 nSize, nPos = mpOutStrm->Tell();
+ nSize = ( nPos - mOffsets.back() ) - 4;
+ mpOutStrm->Seek( mOffsets.back() );
+ *mpOutStrm << nSize;
+
+ switch( mRecTypes.back() )
+ {
+ case ESCHER_DgContainer :
+ {
+ if ( mbEscherDg )
+ {
+ mbEscherDg = FALSE;
+ if ( DoSeek( ESCHER_Persist_Dg | mnCurrentDg ) )
+ *mpOutStrm << mxGlobal->GetDrawingShapeCount( mnCurrentDg ) << mxGlobal->GetLastShapeId( mnCurrentDg );
+ }
+ }
+ break;
+
+ case ESCHER_SpgrContainer :
+ {
+ if ( mbEscherSpgr )
+ {
+ mbEscherSpgr = FALSE;
+
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ mOffsets.pop_back();
+ mRecTypes.pop_back();
+ mpOutStrm->Seek( nPos );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::BeginAtom()
+{
+ mnCountOfs = mpOutStrm->Tell();
+ *mpOutStrm << (UINT32)0 << (UINT32)0; // record header wird spaeter geschrieben
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::EndAtom( UINT16 nRecType, int nRecVersion, int nRecInstance )
+{
+ UINT32 nOldPos = mpOutStrm->Tell();
+ mpOutStrm->Seek( mnCountOfs );
+ sal_uInt32 nSize = nOldPos - mnCountOfs;
+ *mpOutStrm << (UINT16)( ( nRecInstance << 4 ) | ( nRecVersion & 0xf ) ) << nRecType << (UINT32)( nSize - 8 );
+ mpOutStrm->Seek( nOldPos );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::AddAtom( UINT32 nAtomSize, UINT16 nRecType, int nRecVersion, int nRecInstance )
+{
+ *mpOutStrm << (UINT16)( ( nRecInstance << 4 ) | ( nRecVersion & 0xf ) ) << nRecType << nAtomSize;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::AddChildAnchor( const Rectangle& rRect )
+{
+ AddAtom( 16, ESCHER_ChildAnchor );
+ *mpOutStrm << (sal_Int32)rRect.Left()
+ << (sal_Int32)rRect.Top()
+ << (sal_Int32)rRect.Right()
+ << (sal_Int32)rRect.Bottom();
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::AddClientAnchor( const Rectangle& rRect )
+{
+ AddAtom( 8, ESCHER_ClientAnchor );
+ *mpOutStrm << (sal_Int16)rRect.Top()
+ << (sal_Int16)rRect.Left()
+ << (sal_Int16)( rRect.GetWidth() + rRect.Left() )
+ << (sal_Int16)( rRect.GetHeight() + rRect.Top() );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+EscherExHostAppData* EscherEx::EnterAdditionalTextGroup()
+{
+ return NULL;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherEx::EnterGroup( const String& rShapeName, const Rectangle* pBoundRect )
+{
+ Rectangle aRect;
+ if( pBoundRect )
+ aRect = *pBoundRect;
+
+ OpenContainer( ESCHER_SpgrContainer );
+ OpenContainer( ESCHER_SpContainer );
+ AddAtom( 16, ESCHER_Spgr, 1 );
+ PtReplaceOrInsert( ESCHER_Persist_Grouping_Snap | mnGroupLevel,
+ mpOutStrm->Tell() );
+ *mpOutStrm << (INT32)aRect.Left() // Bounding box fuer die Gruppierten shapes an die sie attached werden
+ << (INT32)aRect.Top()
+ << (INT32)aRect.Right()
+ << (INT32)aRect.Bottom();
+
+ sal_uInt32 nShapeId = GenerateShapeId();
+ if ( !mnGroupLevel )
+ AddShape( ESCHER_ShpInst_Min, 5, nShapeId ); // Flags: Group | Patriarch
+ else
+ {
+ AddShape( ESCHER_ShpInst_Min, 0x201, nShapeId ); // Flags: Group | HaveAnchor
+ EscherPropertyContainer aPropOpt;
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x00040004 );
+ aPropOpt.AddOpt( ESCHER_Prop_dxWrapDistLeft, 0 );
+ aPropOpt.AddOpt( ESCHER_Prop_dxWrapDistRight, 0 );
+
+ // #i51348# shape name
+ if( rShapeName.Len() > 0 )
+ aPropOpt.AddOpt( ESCHER_Prop_wzName, rShapeName );
+
+ Commit( aPropOpt, aRect );
+ if ( mnGroupLevel > 1 )
+ AddChildAnchor( aRect );
+
+ EscherExHostAppData* pAppData = mpImplEscherExSdr->ImplGetHostData();
+ if( pAppData )
+ {
+ if ( mnGroupLevel <= 1 )
+ pAppData->WriteClientAnchor( *this, aRect );
+ pAppData->WriteClientData( *this );
+ }
+ }
+ CloseContainer(); // ESCHER_SpContainer
+ mnGroupLevel++;
+ return nShapeId;
+}
+
+UINT32 EscherEx::EnterGroup( const Rectangle* pBoundRect )
+{
+ return EnterGroup( String::EmptyString(), pBoundRect );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherEx::SetGroupSnapRect( UINT32 nGroupLevel, const Rectangle& rRect )
+{
+ BOOL bRetValue = FALSE;
+ if ( nGroupLevel )
+ {
+ UINT32 nCurrentPos = mpOutStrm->Tell();
+ if ( DoSeek( ESCHER_Persist_Grouping_Snap | ( nGroupLevel - 1 ) ) )
+ {
+ *mpOutStrm << (INT32)rRect.Left() // Bounding box fuer die Gruppierten shapes an die sie attached werden
+ << (INT32)rRect.Top()
+ << (INT32)rRect.Right()
+ << (INT32)rRect.Bottom();
+ mpOutStrm->Seek( nCurrentPos );
+ }
+ }
+ return bRetValue;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+BOOL EscherEx::SetGroupLogicRect( UINT32 nGroupLevel, const Rectangle& rRect )
+{
+ BOOL bRetValue = FALSE;
+ if ( nGroupLevel )
+ {
+ UINT32 nCurrentPos = mpOutStrm->Tell();
+ if ( DoSeek( ESCHER_Persist_Grouping_Logic | ( nGroupLevel - 1 ) ) )
+ {
+ *mpOutStrm << (INT16)rRect.Top() << (INT16)rRect.Left() << (INT16)rRect.Right() << (INT16)rRect.Bottom();
+ mpOutStrm->Seek( nCurrentPos );
+ }
+ }
+ return bRetValue;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::LeaveGroup()
+{
+ --mnGroupLevel;
+ PtDelete( ESCHER_Persist_Grouping_Snap | mnGroupLevel );
+ PtDelete( ESCHER_Persist_Grouping_Logic | mnGroupLevel );
+ CloseContainer();
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::AddShape( UINT32 nShpInstance, UINT32 nFlags, UINT32 nShapeID )
+{
+ AddAtom( 8, ESCHER_Sp, 2, nShpInstance );
+
+ if ( !nShapeID )
+ nShapeID = GenerateShapeId();
+
+ if ( nFlags ^ 1 ) // is this a group shape ?
+ { // if not
+ if ( mnGroupLevel > 1 )
+ nFlags |= 2; // this not a topmost shape
+ }
+ *mpOutStrm << nShapeID << nFlags;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+void EscherEx::Commit( EscherPropertyContainer& rProps, const Rectangle& )
+{
+ rProps.Commit( GetStream() );
+}
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherEx::GetColor( const UINT32 nSOColor, BOOL bSwap )
+{
+ if ( bSwap )
+ {
+ UINT32 nColor = nSOColor & 0xff00; // GRUEN
+ nColor |= (BYTE)( nSOColor ) << 16; // ROT
+ nColor |= (BYTE)( nSOColor >> 16 ); // BLAU
+ return nColor;
+ }
+ else
+ return nSOColor & 0xffffff;
+}
+
+// ---------------------------------------------------------------------------------------------
+
+UINT32 EscherEx::GetColor( const Color& rSOColor, BOOL bSwap )
+{
+ UINT32 nColor = ( rSOColor.GetRed() << 16 );
+ nColor |= ( rSOColor.GetGreen() << 8 );
+ nColor |= rSOColor.GetBlue();
+
+ if ( !bSwap )
+ nColor = GetColor( nColor, TRUE );
+
+ return nColor;
+}
+
+// ---------------------------------------------------------------------------------------------
+
diff --git a/filter/source/msfilter/eschesdo.cxx b/filter/source/msfilter/eschesdo.cxx
new file mode 100644
index 000000000000..facc6e799d04
--- /dev/null
+++ b/filter/source/msfilter/eschesdo.cxx
@@ -0,0 +1,1253 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include "eschesdo.hxx"
+#include <svx/svdobj.hxx>
+#include <svx/unoapi.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/unoshape.hxx>
+#include <vcl/outdev.hxx>
+#include <tools/poly.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/graph.hxx>
+#include <tools/debug.hxx>
+#include <svx/fmdpage.hxx>
+#include <toolkit/unohlp.hxx>
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/drawing/PointSequence.hpp>
+#include <com/sun/star/drawing/PointSequenceSequence.hpp>
+#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <com/sun/star/drawing/FlagSequence.hpp>
+#include <com/sun/star/drawing/TextAdjust.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/drawing/CircleKind.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <comphelper/extract.hxx>
+#include <svtools/fltcall.hxx>
+#include <vcl/cvtgrf.hxx>
+
+using ::rtl::OUString;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::task;
+using namespace ::com::sun::star::style;
+
+#define EES_MAP_FRACTION 1440 // 1440 dpi
+
+// ===================================================================
+
+ImplEESdrWriter::ImplEESdrWriter( EscherEx& rEx )
+ :
+ mpEscherEx ( &rEx ),
+ maMapModeSrc ( MAP_100TH_MM ),
+ // PowerPoint: 576 dpi, WinWord: 1440 dpi, Excel: 1440 dpi
+ maMapModeDest( MAP_INCH, Point(), Fraction( 1, EES_MAP_FRACTION ), Fraction( 1, EES_MAP_FRACTION ) ),
+// mXStatusIndicator ( rXStatInd ),
+ mpPicStrm ( NULL ),
+ mpHostAppData ( NULL ),
+ mnPagesWritten ( 0 ),
+ mnShapeMasterTitle ( 0 ),
+ mnShapeMasterBody ( 0 ),
+ mbStatusIndicator ( FALSE ),
+ mbStatus ( FALSE )
+{
+}
+
+
+// -------------------------------------------------------------------
+
+Point ImplEESdrWriter::ImplMapPoint( const Point& rPoint )
+{
+ return OutputDevice::LogicToLogic( rPoint, maMapModeSrc, maMapModeDest );
+}
+
+
+// -------------------------------------------------------------------
+
+Size ImplEESdrWriter::ImplMapSize( const Size& rSize )
+{
+ Size aRetSize( OutputDevice::LogicToLogic( rSize, maMapModeSrc, maMapModeDest ) );
+
+ if ( !aRetSize.Width() )
+ aRetSize.Width()++;
+ if ( !aRetSize.Height() )
+ aRetSize.Height()++;
+ return aRetSize;
+}
+
+// -------------------------------------------------------------------
+
+void ImplEESdrWriter::ImplFlipBoundingBox( ImplEESdrObject& rObj, EscherPropertyContainer& rPropOpt )
+{
+ INT32 nAngle = rObj.GetAngle();
+ Rectangle aRect( rObj.GetRect() );
+
+ if ( nAngle < 0 )
+ nAngle = ( 36000 + nAngle ) % 36000;
+ else
+ nAngle = ( 36000 - ( nAngle % 36000 ) );
+
+ double fVal = (double)nAngle * F_PI18000;
+ double fCos = cos( fVal );
+ double fSin = sin( fVal );
+
+ double nWidthHalf = (double) aRect.GetWidth() / 2;
+ double nHeightHalf = (double) aRect.GetHeight() / 2;
+
+ double nXDiff = fCos * nWidthHalf + fSin * (-nHeightHalf);
+ double nYDiff = - ( fSin * nWidthHalf - fCos * ( -nHeightHalf ) );
+
+ aRect.Move( (sal_Int32)( -( nWidthHalf - nXDiff ) ), (sal_Int32)( - ( nHeightHalf + nYDiff ) ) );
+
+ nAngle *= 655;
+ nAngle += 0x8000;
+ nAngle &=~0xffff; // nAngle auf volle Gradzahl runden
+ rPropOpt.AddOpt( ESCHER_Prop_Rotation, nAngle );
+
+ rObj.SetAngle( nAngle );
+ rObj.SetRect( aRect );
+}
+
+// -----------------------------------------------------------------------
+
+#define ADD_SHAPE( nType, nFlags ) \
+{ \
+ nShapeType = nType; \
+ nShapeID = mpEscherEx->GenerateShapeId(); \
+ rObj.SetShapeId( nShapeID ); \
+ mpEscherEx->AddShape( (UINT32)nType, (UINT32)nFlags, nShapeID ); \
+ rSolverContainer.AddShape( rObj.GetShapeRef(), nShapeID ); \
+}
+
+#define SHAPE_TEXT( bFill ) \
+{ \
+ mpEscherEx->OpenContainer( ESCHER_SpContainer ); \
+ ADD_SHAPE( ESCHER_ShpInst_TextBox, 0xa00 ); \
+ if ( bFill ) \
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True ); \
+ if( rObj.ImplGetText() ) \
+ aPropOpt.CreateTextProperties( rObj.mXPropSet, \
+ mpEscherEx->QueryTextID( rObj.GetShapeRef(), \
+ rObj.GetShapeId() ) ); \
+}
+
+//Map from twips to export units, generally twips as well, only excel and word
+//export is happening here, so native units are export units, leave as
+//placeholder if required in future
+void ImplEESdrWriter::MapRect(ImplEESdrObject& /* rObj */ )
+{
+}
+
+UINT32 ImplEESdrWriter::ImplWriteShape( ImplEESdrObject& rObj,
+ EscherSolverContainer& rSolverContainer,
+ ImplEESdrPageType ePageType )
+{
+ UINT32 nShapeID = 0;
+ UINT16 nShapeType = 0;
+ BOOL bDontWriteText = FALSE; // if a metafile is written as shape replacement, then the text is already part of the metafile
+ BOOL bAdditionalText = FALSE;
+ UINT32 nGrpShapeID = 0;
+
+ do {
+ mpHostAppData = mpEscherEx->StartShape( rObj.GetShapeRef(), (mpEscherEx->GetGroupLevel() > 1) ? &rObj.GetRect() : 0 );
+ if ( mpHostAppData && mpHostAppData->DontWriteShape() )
+ break;
+
+ // #i51348# get shape name
+ String aShapeName;
+ if( const SdrObject* pSdrObj = rObj.GetSdrObject() )
+ if( pSdrObj->GetName().Len() > 0 )
+ aShapeName = pSdrObj->GetName();
+
+ Point aTextRefPoint;
+
+ if( rObj.GetType().EqualsAscii( "drawing.Group" ))
+ {
+ Reference< XIndexAccess > xXIndexAccess( rObj.GetShapeRef(), UNO_QUERY );
+
+ if( xXIndexAccess.is() && 0 != xXIndexAccess->getCount() )
+ {
+ nShapeID = mpEscherEx->EnterGroup( aShapeName, &rObj.GetRect() );
+ nShapeType = ESCHER_ShpInst_Min;
+
+ for( UINT32 n = 0, nCnt = xXIndexAccess->getCount();
+ n < nCnt; ++n )
+ {
+ ImplEESdrObject aObj( *this, *(Reference< XShape >*)
+ xXIndexAccess->getByIndex( n ).getValue() );
+ if( aObj.IsValid() )
+ ImplWriteShape( aObj, rSolverContainer, ePageType );
+ }
+ mpEscherEx->LeaveGroup();
+ }
+ break;
+ }
+ rObj.SetAngle( rObj.ImplGetInt32PropertyValue( ::rtl::OUString::createFromAscii("RotateAngle") ));
+
+ if( ( rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("IsFontwork") ) &&
+ ::cppu::any2bool( rObj.GetUsrAny() ) ) ||
+ rObj.GetType().EqualsAscii( "drawing.Measure" ) || rObj.GetType().EqualsAscii( "drawing.Caption" ) )
+ {
+/*
+ if( rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("BoundRect") ) )
+ {
+ ::com::sun::star::awt::Rectangle aRect( *(::com::sun::star::awt::Rectangle*)rObj.GetUsrAny().getValue() );
+ rObj.SetRect( ImplMapPoint( Point( aRect.X, aRect.Y ) ),
+ ImplMapSize( Size( aRect.Width, aRect.Height ) ) );
+ }
+*/
+ rObj.SetType( String( RTL_CONSTASCII_STRINGPARAM(
+ "drawing.dontknow" ),
+ RTL_TEXTENCODING_MS_1252 ));
+ }
+
+ const ::com::sun::star::awt::Size aSize100thmm( rObj.GetShapeRef()->getSize() );
+ const ::com::sun::star::awt::Point aPoint100thmm( rObj.GetShapeRef()->getPosition() );
+ Rectangle aRect100thmm( Point( aPoint100thmm.X, aPoint100thmm.Y ), Size( aSize100thmm.Width, aSize100thmm.Height ) );
+ if ( !mpPicStrm )
+ mpPicStrm = mpEscherEx->QueryPictureStream();
+ EscherPropertyContainer aPropOpt( mpEscherEx->GetGraphicProvider(), mpPicStrm, aRect100thmm );
+
+ // #i51348# shape name
+ if( aShapeName.Len() > 0 )
+ aPropOpt.AddOpt( ESCHER_Prop_wzName, aShapeName );
+
+ if ( rObj.GetType().EqualsAscii( "drawing.Custom" ) )
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ sal_uInt32 nMirrorFlags;
+
+ rtl::OUString sCustomShapeType;
+ MSO_SPT eShapeType = aPropOpt.GetCustomShapeType( rObj.GetShapeRef(), nMirrorFlags, sCustomShapeType );
+ if ( sCustomShapeType.equalsAscii( "col-502ad400" ) || sCustomShapeType.equalsAscii( "col-60da8460" ) )
+ {
+ ADD_SHAPE( ESCHER_ShpInst_PictureFrame, 0xa00 );
+ if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "MetaFile" ) ), sal_False ) )
+ {
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 ); // no fill
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x90000 ); // no linestyle
+ SdrObject* pObj = GetSdrObjectFromXShape( rObj.GetShapeRef() );
+ if ( pObj )
+ {
+ Rectangle aBound = pObj->GetCurrentBoundRect();
+ Point aPosition( ImplMapPoint( aBound.TopLeft() ) );
+ Size aSize( ImplMapSize( aBound.GetSize() ) );
+ rObj.SetRect( Rectangle( aPosition, aSize ) );
+ rObj.SetAngle( 0 );
+ bDontWriteText = sal_True;
+ }
+ }
+ }
+ else
+ {
+ ADD_SHAPE(
+ sal::static_int_cast< UINT16 >(eShapeType),
+ nMirrorFlags | 0xa00 );
+ aPropOpt.CreateCustomShapeProperties( eShapeType, rObj.GetShapeRef() );
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True );
+ if ( rObj.ImplGetText() )
+ {
+ if ( !aPropOpt.IsFontWork() )
+ aPropOpt.CreateTextProperties( rObj.mXPropSet, mpEscherEx->QueryTextID(
+ rObj.GetShapeRef(), rObj.GetShapeId() ), sal_True, sal_False );
+ }
+ }
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Rectangle" ))
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ sal_Int32 nRadius = (sal_Int32)rObj.ImplGetInt32PropertyValue(
+ ::rtl::OUString::createFromAscii("CornerRadius"));
+ if( nRadius )
+ {
+ nRadius = ImplMapSize( Size( nRadius, 0 )).Width();
+ ADD_SHAPE( ESCHER_ShpInst_RoundRectangle, 0xa00 ); // Flags: Connector | HasSpt
+ INT32 nLenght = rObj.GetRect().GetWidth();
+ if ( nLenght > rObj.GetRect().GetHeight() )
+ nLenght = rObj.GetRect().GetHeight();
+ nLenght >>= 1;
+ if ( nRadius >= nLenght )
+ nRadius = 0x2a30; // 0x2a30 ist PPTs maximum radius
+ else
+ nRadius = ( 0x2a30 * nRadius ) / nLenght;
+ aPropOpt.AddOpt( ESCHER_Prop_adjustValue, nRadius );
+ }
+ else
+ {
+ ADD_SHAPE( ESCHER_ShpInst_Rectangle, 0xa00 ); // Flags: Connector | HasSpt
+ }
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True );
+ if( rObj.ImplGetText() )
+ aPropOpt.CreateTextProperties( rObj.mXPropSet,
+ mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() ), sal_False, sal_False );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Ellipse" ))
+ {
+ CircleKind eCircleKind = CircleKind_FULL;
+ PolyStyle ePolyKind = PolyStyle();
+ if ( rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("CircleKind") ) )
+ {
+ eCircleKind = *( (CircleKind*)rObj.GetUsrAny().getValue() );
+ switch ( eCircleKind )
+ {
+ case CircleKind_SECTION :
+ {
+ ePolyKind = POLY_PIE;
+ }
+ break;
+ case CircleKind_ARC :
+ {
+ ePolyKind = POLY_ARC;
+ }
+ break;
+
+ case CircleKind_CUT :
+ {
+ ePolyKind = POLY_CHORD;
+ }
+ break;
+
+ default:
+ eCircleKind = CircleKind_FULL;
+ }
+ }
+ if ( eCircleKind == CircleKind_FULL )
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_Ellipse, 0xa00 ); // Flags: Connector | HasSpt
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True );;
+ }
+ else
+ {
+ INT32 nStartAngle, nEndAngle;
+ if ( !rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("CircleStartAngle") ) )
+ break;
+ nStartAngle = *( (INT32*)rObj.GetUsrAny().getValue() );
+ if( !rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("CircleEndAngle") ) )
+ break;
+ nEndAngle = *( (INT32*)rObj.GetUsrAny().getValue() );
+
+ Point aStart, aEnd, aCenter;
+ aStart.X() = (INT32)( ( cos( (double)( nStartAngle *
+ F_PI18000 ) ) * 100.0 ) );
+ aStart.Y() = - (INT32)( ( sin( (double)( nStartAngle *
+ F_PI18000 ) ) * 100.0 ) );
+ aEnd.X() = (INT32)( ( cos( (double)( nEndAngle *
+ F_PI18000 ) ) * 100.0 ) );
+ aEnd.Y() = - (INT32)( ( sin( (double)( nEndAngle *
+ F_PI18000 ) ) * 100.0 ) );
+ const Rectangle& rRect = aRect100thmm;
+ aCenter.X() = rRect.Left() + ( rRect.GetWidth() / 2 );
+ aCenter.Y() = rRect.Top() + ( rRect.GetHeight() / 2 );
+ aStart.X() += aCenter.X();
+ aStart.Y() += aCenter.Y();
+ aEnd.X() += aCenter.X();
+ aEnd.Y() += aCenter.Y();
+ Polygon aPolygon( rRect, aStart, aEnd, ePolyKind );
+ if( rObj.GetAngle() )
+ {
+ aPolygon.Rotate( rRect.TopLeft(), (sal_uInt16)( rObj.GetAngle() / 10 ) );
+ rObj.SetAngle( 0 );
+ }
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_NotPrimitive, 0xa00 ); // Flags: Connector | HasSpt
+ ::com::sun::star::awt::Rectangle aNewRect;
+ switch ( ePolyKind )
+ {
+ case POLY_PIE :
+ case POLY_CHORD :
+ {
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_POLYPOLYGON, sal_False, aNewRect, &aPolygon );
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True );
+ }
+ break;
+
+ case POLY_ARC :
+ {
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_POLYLINE, sal_False, aNewRect, &aPolygon );
+ aPropOpt.CreateLineProperties( rObj.mXPropSet, sal_False );
+ }
+ break;
+ }
+ rObj.SetRect( Rectangle( ImplMapPoint( Point( aNewRect.X, aNewRect.Y ) ),
+ ImplMapSize( Size( aNewRect.Width, aNewRect.Height ) ) ) );
+ }
+ if ( rObj.ImplGetText() )
+ aPropOpt.CreateTextProperties( rObj.mXPropSet,
+ mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() ), sal_False, sal_False );
+
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Control" ))
+ {
+ break;
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Connector" ))
+ {
+ sal_uInt16 nSpType, nSpFlags;
+ ::com::sun::star::awt::Rectangle aNewRect;
+ if ( aPropOpt.CreateConnectorProperties( rObj.GetShapeRef(),
+ rSolverContainer, aNewRect, nSpType, nSpFlags ) == sal_False )
+ break;
+ rObj.SetRect( Rectangle( ImplMapPoint( Point( aNewRect.X, aNewRect.Y ) ),
+ ImplMapSize( Size( aNewRect.Width, aNewRect.Height ) ) ) );
+
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( nSpType, nSpFlags );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Measure" ))
+ {
+/*
+ if ( ImplGetPropertyValue( L"MeasureKind" ) )
+ {
+ mpEscherEx->EnterGroup( &maRect );
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ImplWriteAny( ANY_FLAGS_LINE, FALSE );
+ UINT32 nFlags = 0xa00; // Flags: Connector | HasSpt
+ if ( maRect.Top() > maRect.Bottom() )
+ nFlags |= 0x80; // Flags: VertMirror
+ if ( maRect.Left() > maRect.Right() )
+ nFlags |= 0x40; // Flags: HorzMirror
+
+ ADD_SHAPE( ESCHER_ShpInst_Line, nFlags );
+ aPropOpt.AddOpt( ESCHER_Prop_shapePath, ESCHER_ShapeComplex );
+ aPropOpt.CreateLineProperties( rObj.mXPropSet, sal_False );
+ mpEscherEx->EndCount( ESCHER_OPT, 3 );
+ maRect.Justify();
+ mpEscherEx->AddClientAnchor( maRect );
+ mpEscherEx->CloseContainer(); // ESCHER_SpContainer
+
+ if ( ImplGetPropertyValue( L"MeasureTextHorizontalPosition" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextVerticalPosition" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureLineDistance" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureHelpLineOverhang" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureHelpLineDistance" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureHelpLine1Length" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureHelpLine2Length" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureBelowReferenceEdge" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextRotate90" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextUpsideDown" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureOverhang" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureUnit" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureScale" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureShowUnit" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureFormatString" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextAutoAngle" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextAutoAngleView" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextIsFixedAngle" ) )
+ {
+ }
+ if ( ImplGetPropertyValue( L"MeasureTextFixedAngle" ) )
+ {
+ }
+ mpEscherEx->LeaveGroup();
+ }
+*/
+ break;
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Line" ))
+ {
+ ::com::sun::star::awt::Rectangle aNewRect;
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_LINE, sal_False, aNewRect, NULL );
+ MapRect(rObj);
+ //i27942: Poly/Lines/Bezier do not support text.
+
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ UINT32 nFlags = 0xa00; // Flags: Connector | HasSpt
+ if( aNewRect.Height < 0 )
+ nFlags |= 0x80; // Flags: VertMirror
+ if( aNewRect.Width < 0 )
+ nFlags |= 0x40; // Flags: HorzMirror
+
+ ADD_SHAPE( ESCHER_ShpInst_Line, nFlags );
+ aPropOpt.AddOpt( ESCHER_Prop_shapePath, ESCHER_ShapeComplex );
+ aPropOpt.CreateLineProperties( rObj.mXPropSet, sal_False );
+ rObj.SetAngle( 0 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.PolyPolygon" ))
+ {
+ if( rObj.ImplHasText() )
+ {
+ nGrpShapeID = ImplEnterAdditionalTextGroup( rObj.GetShapeRef(), &rObj.GetRect() );
+ bAdditionalText = TRUE;
+ }
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_NotPrimitive, 0xa00 ); // Flags: Connector | HasSpt
+ ::com::sun::star::awt::Rectangle aNewRect;
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_POLYPOLYGON, sal_False, aNewRect, NULL );
+ MapRect(rObj);
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True );
+ rObj.SetAngle( 0 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.PolyLine" ))
+ {
+ //i27942: Poly/Lines/Bezier do not support text.
+
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_NotPrimitive, 0xa00 ); // Flags: Connector | HasSpt
+ ::com::sun::star::awt::Rectangle aNewRect;
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_POLYLINE, sal_False, aNewRect, NULL );
+ MapRect(rObj);
+ aPropOpt.CreateLineProperties( rObj.mXPropSet, sal_False );
+ rObj.SetAngle( 0 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.OpenBezier" ) )
+ {
+ //i27942: Poly/Lines/Bezier do not support text.
+
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_NotPrimitive, 0xa00 ); // Flags: Connector | HasSpt
+ ::com::sun::star::awt::Rectangle aNewRect;
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_POLYLINE, sal_True, aNewRect, NULL );
+ MapRect(rObj);
+ aPropOpt.CreateLineProperties( rObj.mXPropSet, sal_False );
+ rObj.SetAngle( 0 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.ClosedBezier" ) )
+ {
+ if ( rObj.ImplHasText() )
+ {
+ nGrpShapeID = ImplEnterAdditionalTextGroup( rObj.GetShapeRef(), &rObj.GetRect() );
+ bAdditionalText = TRUE;
+ }
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_NotPrimitive, 0xa00 ); // Flags: Connector | HasSpt
+ ::com::sun::star::awt::Rectangle aNewRect;
+ aPropOpt.CreatePolygonProperties( rObj.mXPropSet, ESCHER_CREATEPOLYGON_POLYPOLYGON, sal_True, aNewRect, NULL );
+ MapRect(rObj);
+ aPropOpt.CreateFillProperties( rObj.mXPropSet, sal_True );
+ rObj.SetAngle( 0 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.GraphicObject" ))
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+
+ // ein GraphicObject kann auch ein ClickMe Element sein
+ if( rObj.IsEmptyPresObj() && ( ePageType == NORMAL ) )
+ {
+ ADD_SHAPE( ESCHER_ShpInst_Rectangle, 0x220 ); // Flags: HaveAnchor | HaveMaster
+ UINT32 nTxtBxId = mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() );
+ aPropOpt.AddOpt( ESCHER_Prop_lTxid, nTxtBxId );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x10001 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x10001 );
+ aPropOpt.AddOpt( ESCHER_Prop_hspMaster, mnShapeMasterBody );
+ }
+ else
+ {
+ if( rObj.ImplGetText() )
+ {
+ /* SJ #i34951#: because M. documents are not allowing GraphicObjects containing text, we
+ have to create a simpe Rectangle with fill bitmap instead (while not allowing BitmapMode_Repeat).
+ */
+ ADD_SHAPE( ESCHER_ShpInst_Rectangle, 0xa00 ); // Flags: Connector | HasSpt
+ if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "GraphicURL" ) ), sal_True, sal_True, sal_False ) )
+ {
+ aPropOpt.AddOpt( ESCHER_Prop_WrapText, ESCHER_WrapNone );
+ aPropOpt.AddOpt( ESCHER_Prop_AnchorText, ESCHER_AnchorMiddle );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x140014 );
+ aPropOpt.AddOpt( ESCHER_Prop_fillBackColor, 0x8000000 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x80000 );
+ if ( rObj.ImplGetText() )
+ aPropOpt.CreateTextProperties( rObj.mXPropSet,
+ mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() ), sal_False, sal_False );
+ }
+ }
+ else
+ {
+ ADD_SHAPE( ESCHER_ShpInst_PictureFrame, 0xa00 );
+ if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "GraphicURL" ) ), sal_False, sal_True ) )
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
+ }
+ }
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Text" ))
+ {
+ SHAPE_TEXT( TRUE );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Page" ))
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_Rectangle, 0xa00 );
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x40004 );
+ aPropOpt.AddOpt( ESCHER_Prop_fFillOK, 0x100001 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x110011 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x90008 );
+ aPropOpt.AddOpt( ESCHER_Prop_fshadowObscured, 0x10001 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.Frame" ))
+ {
+ break;
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.OLE2" ))
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ if( rObj.IsEmptyPresObj() && ( ePageType == NORMAL ) )
+ {
+ ADD_SHAPE( ESCHER_ShpInst_Rectangle, 0x220 ); // Flags: HaveAnchor | HaveMaster
+ UINT32 nTxtBxId = mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() );
+ aPropOpt.AddOpt( ESCHER_Prop_lTxid, nTxtBxId );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x10001 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x10001 );
+ aPropOpt.AddOpt( ESCHER_Prop_hspMaster, mnShapeMasterBody );
+ }
+ else
+ {
+ //2do: could be made an option in HostAppData whether OLE object should be written or not
+ BOOL bAppOLE = TRUE;
+ ADD_SHAPE( ESCHER_ShpInst_PictureFrame,
+ 0xa00 | (bAppOLE ? SHAPEFLAG_OLESHAPE : 0) );
+ if ( aPropOpt.CreateOLEGraphicProperties( rObj.GetShapeRef() ) )
+ {
+ if ( bAppOLE )
+ { // snooped from Xcl hex dump, nobody knows the trouble I have seen
+ aPropOpt.AddOpt( ESCHER_Prop_FitTextToShape, 0x00080008 );
+ aPropOpt.AddOpt( ESCHER_Prop_pictureId, 0x00000001 );
+ aPropOpt.AddOpt( ESCHER_Prop_fillColor, 0x08000041 );
+ aPropOpt.AddOpt( ESCHER_Prop_fillBackColor, 0x08000041 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x00110010 );
+ aPropOpt.AddOpt( ESCHER_Prop_lineColor, 0x08000040 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash,0x00080008 );
+// aPropOpt.AddOpt( ESCHER_Prop_fshadowObscured,0x00020000 );
+ aPropOpt.AddOpt( ESCHER_Prop_fPrint, 0x00080000 );
+ }
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
+ }
+ }
+ }
+ else if( '3' == rObj.GetType().GetChar(8 ) &&
+ 'D' == rObj.GetType().GetChar( 9 ) ) // drawing.3D
+ {
+ // SceneObject, CubeObject, SphereObject, LatheObject, ExtrudeObject, PolygonObject
+ if ( !rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("Bitmap") ) )
+ break;
+
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_PictureFrame, 0xa00 );
+
+ if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "Bitmap" ) ), sal_False ) )
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
+ }
+ else if ( rObj.GetType().EqualsAscii( "drawing.dontknow" ))
+ {
+ rObj.SetAngle( 0 );
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ ADD_SHAPE( ESCHER_ShpInst_PictureFrame, 0xa00 );
+ if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, String( RTL_CONSTASCII_USTRINGPARAM( "MetaFile" ) ), sal_False ) )
+ aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x800080 );
+ }
+ else
+ {
+ break;
+ }
+ aPropOpt.CreateShadowProperties( rObj.mXPropSet );
+
+ if( USHRT_MAX != mpEscherEx->GetHellLayerId() &&
+ rObj.ImplGetPropertyValue( ::rtl::OUString::createFromAscii("LayerID") ) &&
+ (*((UINT16*)rObj.GetUsrAny().getValue()) ) == mpEscherEx->GetHellLayerId() )
+ {
+ aPropOpt.AddOpt( ESCHER_Prop_fPrint, 0x200020 );
+ }
+
+ {
+ Rectangle aRect( rObj.GetRect() );
+ aRect.Justify();
+ rObj.SetRect( aRect );
+ }
+
+ if( rObj.GetAngle() )
+ ImplFlipBoundingBox( rObj, aPropOpt );
+
+ mpEscherEx->Commit( aPropOpt, rObj.GetRect() );
+ if( mpEscherEx->GetGroupLevel() > 1 )
+ mpEscherEx->AddChildAnchor( rObj.GetRect() );
+
+ if ( mpHostAppData )
+ { //! with AdditionalText the App has to control whether these are written or not
+ mpHostAppData->WriteClientAnchor( *mpEscherEx, rObj.GetRect() );
+ mpHostAppData->WriteClientData( *mpEscherEx );
+ if ( !bDontWriteText )
+ mpHostAppData->WriteClientTextbox( *mpEscherEx );
+ }
+ mpEscherEx->CloseContainer(); // ESCHER_SpContainer
+
+ if( bAdditionalText )
+ {
+ mpEscherEx->EndShape( nShapeType, nShapeID );
+ ImplWriteAdditionalText( rObj, aTextRefPoint );
+ }
+
+ } while ( 0 );
+
+ if ( bAdditionalText )
+ mpEscherEx->EndShape( ESCHER_ShpInst_Min, nGrpShapeID );
+ else
+ mpEscherEx->EndShape( nShapeType, nShapeID );
+ return nShapeID;
+}
+
+void ImplEESdrWriter::ImplWriteAdditionalText( ImplEESdrObject& rObj,
+ const Point& rTextRefPoint )
+{
+ UINT32 nShapeID = 0;
+ UINT16 nShapeType = 0;
+ do
+ {
+ mpHostAppData = mpEscherEx->StartShape( rObj.GetShapeRef(), (mpEscherEx->GetGroupLevel() > 1) ? &rObj.GetRect() : 0 );
+ if ( mpHostAppData && mpHostAppData->DontWriteShape() )
+ break;
+
+ const ::com::sun::star::awt::Size aSize100thmm( rObj.GetShapeRef()->getSize() );
+ const ::com::sun::star::awt::Point aPoint100thmm( rObj.GetShapeRef()->getPosition() );
+ Rectangle aRect100thmm( Point( aPoint100thmm.X, aPoint100thmm.Y ), Size( aSize100thmm.Width, aSize100thmm.Height ) );
+ if ( !mpPicStrm )
+ mpPicStrm = mpEscherEx->QueryPictureStream();
+ EscherPropertyContainer aPropOpt( mpEscherEx->GetGraphicProvider(), mpPicStrm, aRect100thmm );
+ rObj.SetAngle( rObj.ImplGetInt32PropertyValue( ::rtl::OUString::createFromAscii("RotateAngle")));
+ INT32 nAngle = rObj.GetAngle();
+ if( rObj.GetType().EqualsAscii( "drawing.Line" ))
+ {
+//2do: this does not work right
+ double fDist = hypot( rObj.GetRect().GetWidth(),
+ rObj.GetRect().GetHeight() );
+ rObj.SetRect( Rectangle( rTextRefPoint,
+ Point( (sal_Int32)( rTextRefPoint.X() + fDist ), rTextRefPoint.Y() - 1 ) ) );
+
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ mpEscherEx->AddShape( ESCHER_ShpInst_TextBox, 0xa00 );
+ if ( rObj.ImplGetText() )
+ aPropOpt.CreateTextProperties( rObj.mXPropSet,
+ mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() ) );
+
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x90000 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 );
+ aPropOpt.AddOpt( ESCHER_Prop_FitTextToShape, 0x60006 ); // Size Shape To Fit Text
+ if ( nAngle < 0 )
+ nAngle = ( 36000 + nAngle ) % 36000;
+ if ( nAngle )
+ ImplFlipBoundingBox( rObj, aPropOpt );
+ }
+ else
+ {
+ mpEscherEx->OpenContainer( ESCHER_SpContainer );
+ nShapeID = mpEscherEx->GenerateShapeId();
+ mpEscherEx->AddShape( nShapeType = ESCHER_ShpInst_TextBox, 0xa00, nShapeID );
+ if ( rObj.ImplGetText() )
+ aPropOpt.CreateTextProperties( rObj.mXPropSet,
+ mpEscherEx->QueryTextID( rObj.GetShapeRef(),
+ rObj.GetShapeId() ) );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x90000 );
+ aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x100000 );
+
+ if( nAngle < 0 )
+ nAngle = ( 36000 + nAngle ) % 36000;
+ else
+ nAngle = ( 36000 - ( nAngle % 36000 ) );
+
+ nAngle *= 655;
+ nAngle += 0x8000;
+ nAngle &=~0xffff; // nAngle auf volle Gradzahl runden
+ aPropOpt.AddOpt( ESCHER_Prop_Rotation, nAngle );
+ mpEscherEx->SetGroupSnapRect( mpEscherEx->GetGroupLevel(),
+ rObj.GetRect() );
+ mpEscherEx->SetGroupLogicRect( mpEscherEx->GetGroupLevel(),
+ rObj.GetRect() );
+ }
+ rObj.SetAngle( nAngle );
+ mpEscherEx->Commit( aPropOpt, rObj.GetRect() );
+
+ // write the childanchor
+ mpEscherEx->AddChildAnchor( rObj.GetRect() );
+
+#if defined EES_WRITE_EPP
+ // ClientAnchor
+ mpEscherEx->AddClientAnchor( maRect );
+ // ClientTextbox
+ mpEscherEx->OpenContainer( ESCHER_ClientTextbox );
+ mpEscherEx->AddAtom( 4, EPP_TextHeaderAtom );
+ *mpStrm << (UINT32)EPP_TEXTTYPE_Other; // Text in a Shape
+ ImplWriteTextStyleAtom();
+ mpEscherEx->CloseContainer(); // ESCHER_ClientTextBox
+#else // !EES_WRITE_EPP
+ if ( mpHostAppData )
+ { //! the App has to control whether these are written or not
+ mpHostAppData->WriteClientAnchor( *mpEscherEx, rObj.GetRect() );
+ mpHostAppData->WriteClientData( *mpEscherEx );
+ mpHostAppData->WriteClientTextbox( *mpEscherEx );
+ }
+#endif // EES_WRITE_EPP
+ mpEscherEx->CloseContainer(); // ESCHER_SpContainer
+ } while ( 0 );
+ mpEscherEx->LeaveGroup();
+ mpEscherEx->EndShape( nShapeType, nShapeID );
+}
+
+
+// -------------------------------------------------------------------
+
+UINT32 ImplEESdrWriter::ImplEnterAdditionalTextGroup( const Reference< XShape >& rShape,
+ const Rectangle* pBoundRect )
+{
+ mpHostAppData = mpEscherEx->EnterAdditionalTextGroup();
+ UINT32 nGrpId = mpEscherEx->EnterGroup( pBoundRect );
+ mpHostAppData = mpEscherEx->StartShape( rShape, pBoundRect );
+ return nGrpId;
+}
+
+
+// -------------------------------------------------------------------
+
+BOOL ImplEESdrWriter::ImplInitPageValues()
+{
+ mnIndices = 0;
+ mnOutlinerCount = 0; // die gliederungsobjekte muessen dem layout entsprechen,
+ mnEffectCount = 0;
+ mbIsTitlePossible = TRUE; // bei mehr als einem title geht powerpoint in die knie
+
+ return TRUE;
+}
+
+
+// -------------------------------------------------------------------
+
+void ImplEESdrWriter::ImplWritePage(
+ EscherSolverContainer& rSolverContainer,
+ ImplEESdrPageType ePageType, BOOL /* bBackGround */ )
+{
+ ImplInitPageValues();
+
+ UINT32 nLastPer = 0, nShapes = mXShapes->getCount();
+ for( UINT32 n = 0; n < nShapes; ++n )
+ {
+ UINT32 nPer = ( 5 * n ) / nShapes;
+ if( nPer != nLastPer )
+ {
+ nLastPer = nPer;
+ UINT32 nValue = mnPagesWritten * 5 + nPer;
+ if( nValue > mnStatMaxValue )
+ nValue = mnStatMaxValue;
+ if( mbStatusIndicator )
+ mXStatusIndicator->setValue( nValue );
+ }
+
+ ImplEESdrObject aObj( *this, *(Reference< XShape >*)
+ mXShapes->getByIndex( n ).getValue() );
+ if( aObj.IsValid() )
+ {
+ ImplWriteShape( aObj, rSolverContainer, ePageType );
+ }
+ }
+ mnPagesWritten++;
+}
+
+// ===================================================================
+
+ImplEscherExSdr::ImplEscherExSdr( EscherEx& rEx )
+ :
+ ImplEESdrWriter( rEx ),
+ mpSdrPage( NULL ),
+ mpSolverContainer( NULL )
+{
+}
+
+
+// -------------------------------------------------------------------
+
+ImplEscherExSdr::~ImplEscherExSdr()
+{
+ DBG_ASSERT( !mpSolverContainer, "ImplEscherExSdr::~ImplEscherExSdr: unwritten SolverContainer" );
+ delete mpSolverContainer;
+}
+
+
+// -------------------------------------------------------------------
+
+bool ImplEscherExSdr::ImplInitPage( const SdrPage& rPage )
+{
+ do
+ {
+ SvxDrawPage* pSvxDrawPage;
+ if ( mpSdrPage != &rPage || !mXDrawPage.is() )
+ {
+ // eventually write SolverContainer of current page, deletes the Solver
+ ImplFlushSolverContainer();
+
+ mpSdrPage = NULL;
+ // why not declare a const parameter if the object will not be modified?
+// mXDrawPage = pSvxDrawPage = new SvxDrawPage( (SdrPage*) &rPage );
+ mXDrawPage = pSvxDrawPage = new SvxFmDrawPage( (SdrPage*) &rPage );
+ mXShapes = Reference< XShapes >::query( mXDrawPage );
+ if ( !mXShapes.is() )
+ break;
+ if ( !ImplInitPageValues() ) // ImplEESdrWriter
+ break;
+ mpSdrPage = &rPage;
+
+ mpSolverContainer = new EscherSolverContainer;
+ }
+ else
+ pSvxDrawPage = SvxDrawPage::getImplementation(mXDrawPage);
+
+ return pSvxDrawPage != 0;
+ } while ( 0 );
+
+ return false;
+}
+
+// -------------------------------------------------------------------
+
+bool ImplEscherExSdr::ImplInitUnoShapes( const Reference< XShapes >& rxShapes )
+{
+ // eventually write SolverContainer of current page, deletes the Solver
+ ImplFlushSolverContainer();
+
+ if( !rxShapes.is() )
+ return false;
+
+ mpSdrPage = 0;
+ mXDrawPage.clear();
+ mXShapes = rxShapes;
+
+ if( !ImplInitPageValues() ) // ImplEESdrWriter
+ return false;
+
+ mpSolverContainer = new EscherSolverContainer;
+ return true;
+}
+
+// -------------------------------------------------------------------
+
+void ImplEscherExSdr::ImplExitPage()
+{
+ // close all groups before the solver container is written
+ while( mpEscherEx->GetGroupLevel() )
+ mpEscherEx->LeaveGroup();
+
+ ImplFlushSolverContainer();
+ mpSdrPage = NULL; // reset page for next init
+}
+
+
+// -------------------------------------------------------------------
+
+void ImplEscherExSdr::ImplFlushSolverContainer()
+{
+ if ( mpSolverContainer )
+ {
+ mpSolverContainer->WriteSolver( mpEscherEx->GetStream() );
+ delete mpSolverContainer;
+ mpSolverContainer = NULL;
+ }
+}
+
+
+// -------------------------------------------------------------------
+
+void ImplEscherExSdr::ImplWriteCurrentPage()
+{
+ DBG_ASSERT( mpSolverContainer, "ImplEscherExSdr::ImplWriteCurrentPage: no SolverContainer" );
+ ImplWritePage( *mpSolverContainer, NORMAL );
+ ImplExitPage();
+}
+
+
+// -------------------------------------------------------------------
+
+UINT32 ImplEscherExSdr::ImplWriteTheShape( ImplEESdrObject& rObj )
+{
+ DBG_ASSERT( mpSolverContainer, "ImplEscherExSdr::ImplWriteShape: no SolverContainer" );
+ return ImplWriteShape( rObj, *mpSolverContainer, NORMAL );
+}
+
+
+// ===================================================================
+
+void EscherEx::AddSdrPage( const SdrPage& rPage )
+{
+ if ( mpImplEscherExSdr->ImplInitPage( rPage ) )
+ mpImplEscherExSdr->ImplWriteCurrentPage();
+}
+
+// -------------------------------------------------------------------
+
+void EscherEx::AddUnoShapes( const Reference< XShapes >& rxShapes )
+{
+ if ( mpImplEscherExSdr->ImplInitUnoShapes( rxShapes ) )
+ mpImplEscherExSdr->ImplWriteCurrentPage();
+}
+
+// -------------------------------------------------------------------
+
+UINT32 EscherEx::AddSdrObject( const SdrObject& rObj )
+{
+ ImplEESdrObject aObj( *mpImplEscherExSdr, rObj );
+ if( aObj.IsValid() )
+ return mpImplEscherExSdr->ImplWriteTheShape( aObj );
+ return 0;
+}
+
+
+// -------------------------------------------------------------------
+
+void EscherEx::EndSdrObjectPage()
+{
+ mpImplEscherExSdr->ImplExitPage();
+}
+
+// -------------------------------------------------------------------
+
+EscherExHostAppData* EscherEx::StartShape( const Reference< XShape >& /* rShape */, const Rectangle* /*pChildAnchor*/ )
+{
+ return NULL;
+}
+
+// -------------------------------------------------------------------
+
+void EscherEx::EndShape( UINT16 /* nShapeType */, UINT32 /* nShapeID */ )
+{
+}
+
+// -------------------------------------------------------------------
+
+UINT32 EscherEx::QueryTextID( const Reference< XShape >&, UINT32 )
+{
+ return 0;
+}
+
+// -------------------------------------------------------------------
+// add an dummy rectangle shape into the escher stream
+UINT32 EscherEx::AddDummyShape()
+{
+ OpenContainer( ESCHER_SpContainer );
+ UINT32 nShapeID = GenerateShapeId();
+ AddShape( ESCHER_ShpInst_Rectangle, 0xa00, nShapeID );
+//?? aSolverContainer.AddShape( mXShape, nShapeID );
+ CloseContainer();
+
+ return nShapeID;
+}
+
+// -------------------------------------------------------------------
+
+// static
+const SdrObject* EscherEx::GetSdrObject( const Reference< XShape >& rShape )
+{
+ const SdrObject* pRet = 0;
+ const SvxShape* pSvxShape = SvxShape::getImplementation( rShape );
+ DBG_ASSERT( pSvxShape, "EscherEx::GetSdrObject: no SvxShape" );
+ if( pSvxShape )
+ {
+ pRet = pSvxShape->GetSdrObject();
+ DBG_ASSERT( pRet, "EscherEx::GetSdrObject: no SdrObj" );
+ }
+ return pRet;
+}
+
+
+// -------------------------------------------------------------------
+
+ImplEESdrObject::ImplEESdrObject( ImplEscherExSdr& rEx,
+ const SdrObject& rObj ) :
+ mnShapeId( 0 ),
+ mnTextSize( 0 ),
+ mnAngle( 0 ),
+ mbValid( FALSE ),
+ mbPresObj( FALSE ),
+ mbEmptyPresObj( FALSE )
+{
+ SdrPage* pPage = rObj.GetPage();
+ DBG_ASSERT( pPage, "ImplEESdrObject::ImplEESdrObject: no SdrPage" );
+ if( pPage && rEx.ImplInitPage( *pPage ) )
+ {
+ // why not declare a const parameter if the object will
+ // not be modified?
+ mXShape = uno::Reference< drawing::XShape >::query( ((SdrObject*)&rObj)->getUnoShape() );;
+ Init( rEx );
+ }
+}
+
+ImplEESdrObject::ImplEESdrObject( ImplEESdrWriter& rEx,
+ const Reference< XShape >& rShape ) :
+ mXShape( rShape ),
+ mnShapeId( 0 ),
+ mnTextSize( 0 ),
+ mnAngle( 0 ),
+ mbValid( FALSE ),
+ mbPresObj( FALSE ),
+ mbEmptyPresObj( FALSE )
+{
+ Init( rEx );
+}
+
+
+ImplEESdrObject::~ImplEESdrObject()
+{
+}
+
+void ImplEESdrObject::Init( ImplEESdrWriter& rEx )
+{
+ mXPropSet = Reference< XPropertySet >::query( mXShape );
+ if( mXPropSet.is() )
+ {
+ static const sal_Char aPrefix[] = "com.sun.star.";
+ static const xub_StrLen nPrefix = sizeof(aPrefix)-1;
+ SetRect( rEx.ImplMapPoint( Point( mXShape->getPosition().X, mXShape->getPosition().Y ) ),
+ rEx.ImplMapSize( Size( mXShape->getSize().Width, mXShape->getSize().Height ) ) );
+ mType = String( mXShape->getShapeType() );
+ mType.Erase( 0, nPrefix ); // strip "com.sun.star."
+ xub_StrLen nPos = mType.SearchAscii( "Shape" );
+ mType.Erase( nPos, 5 );
+
+ static const OUString sPresStr(rtl::OUString::createFromAscii("IsPresentationObject"));
+ static const OUString sEmptyPresStr(rtl::OUString::createFromAscii("IsEmptyPresentationObject"));
+
+ if( ImplGetPropertyValue( sPresStr ) )
+ mbPresObj = ::cppu::any2bool( mAny );
+
+ if( mbPresObj && ImplGetPropertyValue( sEmptyPresStr ) )
+ mbEmptyPresObj = ::cppu::any2bool( mAny );
+
+ mbValid = TRUE;
+ }
+}
+
+//BOOL ImplEESdrObject::ImplGetPropertyValue( const OUString& rString )
+BOOL ImplEESdrObject::ImplGetPropertyValue( const sal_Unicode* rString )
+{
+ BOOL bRetValue = FALSE;
+ if( mbValid )
+ {
+ try
+ {
+ mAny = mXPropSet->getPropertyValue( rString );
+ if( mAny.hasValue() )
+ bRetValue = TRUE;
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ bRetValue = FALSE;
+ }
+ }
+ return bRetValue;
+}
+
+#ifdef USED
+BOOL ImplEESdrObject::ImplGetPropertyValue( const Reference< XPropertySet >& rXPropSet,
+ const OUString& rString )
+{
+ BOOL bRetValue = FALSE;
+ if( mbValid )
+ {
+ try
+ {
+ mAny = rXPropSet->getPropertyValue( rString );
+ if( 0 != mAny.get() )
+ bRetValue = TRUE;
+ }
+ catch( ::com::sun::star::uno::Exception& )
+ {
+ bRetValue = FALSE;
+ }
+ }
+ return bRetValue;
+}
+#endif
+
+void ImplEESdrObject::SetRect( const Point& rPos, const Size& rSz )
+{
+ maRect = Rectangle( rPos, rSz );
+}
+
+const SdrObject* ImplEESdrObject::GetSdrObject() const
+{
+ return EscherEx::GetSdrObject( mXShape );
+}
+
+// laedt und konvertiert text aus shape, ergebnis ist mnTextSize gespeichert
+UINT32 ImplEESdrObject::ImplGetText()
+{
+ Reference< XText > xXText( mXShape, UNO_QUERY );
+ mnTextSize = 0;
+ if( xXText.is() )
+ mnTextSize = xXText->getString().getLength();
+ return mnTextSize;
+}
+
+BOOL ImplEESdrObject::ImplHasText() const
+{
+ Reference< XText > xXText( mXShape, UNO_QUERY );
+ return xXText.is() && xXText->getString().getLength();
+}
+
diff --git a/filter/source/msfilter/eschesdo.hxx b/filter/source/msfilter/eschesdo.hxx
new file mode 100644
index 000000000000..754eb6f3a2c0
--- /dev/null
+++ b/filter/source/msfilter/eschesdo.hxx
@@ -0,0 +1,206 @@
+/*************************************************************************
+ *
+ * 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 _ESCHESDO_HXX
+#define _ESCHESDO_HXX
+#include <filter/msfilter/escherex.hxx>
+#include <svx/unopage.hxx>
+#include <vcl/mapmod.hxx>
+
+// ===================================================================
+// fractions of Draw PPTWriter etc.
+
+enum ImplEESdrPageType { NORMAL = 0, MASTER = 1, NOTICE = 2, UNDEFINED = 3 };
+
+class ImplEESdrWriter;
+class ImplEscherExSdr;
+
+class ImplEESdrObject
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXShape;
+// XTextRef mXText; // TextRef des globalen Text
+ ::com::sun::star::uno::Any mAny;
+ Rectangle maRect;
+ String mType;
+ UINT32 mnShapeId;
+ UINT32 mnTextSize;
+ INT32 mnAngle;
+ BOOL mbValid : 1;
+ BOOL mbPresObj : 1;
+ BOOL mbEmptyPresObj : 1;
+
+ void Init( ImplEESdrWriter& rEx );
+public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > mXPropSet;
+
+ ImplEESdrObject( ImplEscherExSdr& rEx, const SdrObject& rObj );
+ ImplEESdrObject( ImplEESdrWriter& rEx, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rShape );
+ ~ImplEESdrObject();
+
+ BOOL ImplGetPropertyValue( const sal_Unicode* pString );
+
+ INT32 ImplGetInt32PropertyValue( const sal_Unicode* pStr, UINT32 nDef = 0 )
+ { return ImplGetPropertyValue( pStr ) ? *(INT32*)mAny.getValue() : nDef; }
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& GetShapeRef() const { return mXShape; }
+ const ::com::sun::star::uno::Any& GetUsrAny() const { return mAny; }
+ const String& GetType() const { return mType; }
+ void SetType( const String& rS ) { mType = rS; }
+
+ const Rectangle& GetRect() const { return maRect; }
+ void SetRect( const Point& rPos, const Size& rSz );
+ void SetRect( const Rectangle& rRect )
+ { maRect = rRect; }
+
+ INT32 GetAngle() const { return mnAngle; }
+ void SetAngle( INT32 nVal ) { mnAngle = nVal; }
+
+ UINT32 GetTextSize() const { return mnTextSize; }
+
+ BOOL IsValid() const { return mbValid; }
+ BOOL IsPresObj() const { return mbPresObj; }
+ BOOL IsEmptyPresObj() const { return mbEmptyPresObj; }
+ UINT32 GetShapeId() const { return mnShapeId; }
+ void SetShapeId( UINT32 nVal ) { mnShapeId = nVal; }
+
+ const SdrObject* GetSdrObject() const;
+
+ UINT32 ImplGetText();
+ BOOL ImplHasText() const;
+};
+
+
+
+// -------------------------------------------------------------------
+// fractions of the Draw PPTWriter
+
+class EscherEx;
+namespace com { namespace sun { namespace star {
+ namespace drawing {
+ class XDrawPage;
+ class XShape;
+ }
+ namespace task {
+ class XStatusIndicator;
+ }
+}}}
+class EscherExHostAppData;
+class Polygon;
+
+class ImplEESdrWriter
+{
+protected:
+ EscherEx* mpEscherEx;
+ MapMode maMapModeSrc;
+ MapMode maMapModeDest;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > mXStatusIndicator;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > mXDrawPage;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > mXShapes;
+
+ SvStream* mpPicStrm;
+
+ // own extensions
+
+ EscherExHostAppData* mpHostAppData;
+
+ UINT32 mnPagesWritten;
+
+ UINT32 mnShapeMasterTitle;
+ UINT32 mnShapeMasterBody;
+
+ // per page values
+ UINT32 mnIndices;
+ UINT32 mnOutlinerCount;
+ UINT32 mnPrevTextStyle;
+ UINT32 mnStatMaxValue;
+
+ UINT16 mnEffectCount;
+
+ BOOL mbIsTitlePossible;
+ BOOL mbStatusIndicator;
+ BOOL mbStatus;
+
+
+ ImplEESdrWriter( EscherEx& rEx );
+
+ BOOL ImplInitPageValues();
+
+ void ImplWritePage(
+ EscherSolverContainer& rSolver,
+ ImplEESdrPageType ePageType,
+ BOOL bBackGround = FALSE );
+
+ UINT32 ImplWriteShape( ImplEESdrObject& rObj,
+ EscherSolverContainer& rSolver,
+ ImplEESdrPageType ePageType ); // returns ShapeID
+
+ void ImplFlipBoundingBox( ImplEESdrObject& rObj, EscherPropertyContainer& rPropOpt );
+ BOOL ImplGetText( ImplEESdrObject& rObj );
+ void ImplWriteAdditionalText(
+ ImplEESdrObject& rObj,
+ const Point& rTextRefPoint );
+ UINT32 ImplEnterAdditionalTextGroup(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rShape,
+ const Rectangle* pBoundRect = NULL );
+
+
+public:
+ Point ImplMapPoint( const Point& rPoint );
+ Size ImplMapSize( const Size& rSize );
+ EscherExHostAppData* ImplGetHostData() { return mpHostAppData; }
+ void MapRect(ImplEESdrObject& rObj);
+};
+
+
+// ===================================================================
+
+class SdrObject;
+class SdrPage;
+
+class ImplEscherExSdr : public ImplEESdrWriter
+{
+private:
+ const SdrPage* mpSdrPage;
+ EscherSolverContainer* mpSolverContainer;
+
+public:
+ ImplEscherExSdr( EscherEx& rEx );
+ virtual ~ImplEscherExSdr();
+
+ bool ImplInitPage( const SdrPage& rPage );
+ bool ImplInitUnoShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes );
+ void ImplWriteCurrentPage();
+
+ UINT32 ImplWriteTheShape( ImplEESdrObject& rObj );
+
+ void ImplExitPage();
+ void ImplFlushSolverContainer();
+};
+
+
+
+#endif // _ESCHESDO_HXX
diff --git a/filter/source/msfilter/makefile.mk b/filter/source/msfilter/makefile.mk
new file mode 100644
index 000000000000..6056213ddecf
--- /dev/null
+++ b/filter/source/msfilter/makefile.mk
@@ -0,0 +1,86 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=../..
+
+PRJNAME=filter
+TARGET=msfilter
+ENABLE_EXCEPTIONS=true
+LIBTARGET=NO
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES= \
+ $(SLO)$/countryid.obj \
+ $(SLO)$/escherex.obj \
+ $(SLO)$/eschesdo.obj \
+ $(SLO)$/msdffimp.obj \
+ $(SLO)$/msoleexp.obj \
+ $(SLO)$/msvbasic.obj \
+ $(SLO)$/svxmsbas.obj \
+ $(SLO)$/msocximex.obj \
+ $(SLO)$/mscodec.obj \
+ $(SLO)$/msfiltertracer.obj \
+ $(SLO)$/svdfppt.obj \
+ $(SLO)$/svxmsbas2.obj
+
+SHL1TARGET= msfilter$(DLLPOSTFIX)
+SHL1IMPLIB= i$(TARGET)
+SHL1OBJS= $(SLOFILES)
+SHL1USE_EXPORTS=name
+SHL1STDLIBS= \
+ $(EDITENGLIB) \
+ $(VBAHELPERLIB) \
+ $(SVXCORELIB) \
+ $(SFX2LIB) \
+ $(XMLOFFLIB) \
+ $(BASEGFXLIB) \
+ $(BASICLIB) \
+ $(SVTOOLLIB) \
+ $(TKLIB) \
+ $(VCLLIB) \
+ $(SVLLIB) \
+ $(SOTLIB) \
+ $(UNOTOOLSLIB) \
+ $(TOOLSLIB) \
+ $(XMLSCRIPTLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME= $(SHL1TARGET)
+
+.INCLUDE : target.mk
+
+
diff --git a/filter/source/msfilter/makefile.pmk b/filter/source/msfilter/makefile.pmk
new file mode 100644
index 000000000000..1b3ae0c70ae0
--- /dev/null
+++ b/filter/source/msfilter/makefile.pmk
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+# Reduction of exported symbols:
+CDEFS += -DMSFILTER_DLLIMPLEMENTATION
+VISIBILITY_HIDDEN=TRUE
diff --git a/filter/source/msfilter/mscodec.cxx b/filter/source/msfilter/mscodec.cxx
new file mode 100644
index 000000000000..de17da6bde59
--- /dev/null
+++ b/filter/source/msfilter/mscodec.cxx
@@ -0,0 +1,534 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include "filter/msfilter/mscodec.hxx"
+
+#include <osl/diagnose.h>
+#include <algorithm>
+#include <string.h>
+#include <tools/solar.h>
+
+#define DEBUG_MSO_ENCRYPTION_STD97 0
+
+#if DEBUG_MSO_ENCRYPTION_STD97
+#include <stdio.h>
+#endif
+
+
+namespace msfilter {
+
+// ============================================================================
+
+namespace {
+
+/** Rotates rnValue left by nBits bits. */
+template< typename Type >
+inline void lclRotateLeft( Type& rnValue, int nBits )
+{
+ OSL_ASSERT(
+ nBits >= 0 &&
+ sal::static_int_cast< unsigned int >(nBits) < sizeof( Type ) * 8 );
+ rnValue = static_cast< Type >( (rnValue << nBits) | (rnValue >> (sizeof( Type ) * 8 - nBits)) );
+}
+
+/** Rotates the lower nWidth bits of rnValue left by nBits bits. */
+template< typename Type >
+inline void lclRotateLeft( Type& rnValue, sal_uInt8 nBits, sal_uInt8 nWidth )
+{
+ OSL_ASSERT( (nBits < nWidth) && (nWidth < sizeof( Type ) * 8) );
+ Type nMask = static_cast< Type >( (1UL << nWidth) - 1 );
+ rnValue = static_cast< Type >(
+ ((rnValue << nBits) | ((rnValue & nMask) >> (nWidth - nBits))) & nMask );
+}
+
+sal_Size lclGetLen( const sal_uInt8* pnPassData, sal_Size nBufferSize )
+{
+ sal_Size nLen = 0;
+ while( (nLen < nBufferSize) && pnPassData[ nLen ] ) ++nLen;
+ return nLen;
+}
+
+sal_uInt16 lclGetKey( const sal_uInt8* pnPassData, sal_Size nBufferSize )
+{
+ sal_Size nLen = lclGetLen( pnPassData, nBufferSize );
+ if( !nLen ) return 0;
+
+ sal_uInt16 nKey = 0;
+ sal_uInt16 nKeyBase = 0x8000;
+ sal_uInt16 nKeyEnd = 0xFFFF;
+ const sal_uInt8* pnChar = pnPassData + nLen - 1;
+ for( sal_Size nIndex = 0; nIndex < nLen; ++nIndex, --pnChar )
+ {
+ sal_uInt8 cChar = *pnChar & 0x7F;
+ for( sal_uInt8 nBit = 0; nBit < 8; ++nBit )
+ {
+ lclRotateLeft( nKeyBase, 1 );
+ if( nKeyBase & 1 ) nKeyBase ^= 0x1020;
+ if( cChar & 1 ) nKey ^= nKeyBase;
+ cChar >>= 1;
+ lclRotateLeft( nKeyEnd, 1 );
+ if( nKeyEnd & 1 ) nKeyEnd ^= 0x1020;
+ }
+ }
+ return nKey ^ nKeyEnd;
+}
+
+sal_uInt16 lclGetHash( const sal_uInt8* pnPassData, sal_Size nBufferSize )
+{
+ sal_Size nLen = lclGetLen( pnPassData, nBufferSize );
+
+ sal_uInt16 nHash = static_cast< sal_uInt16 >( nLen );
+ if( nLen )
+ nHash ^= 0xCE4B;
+
+ const sal_uInt8* pnChar = pnPassData;
+ for( sal_Size nIndex = 0; nIndex < nLen; ++nIndex, ++pnChar )
+ {
+ sal_uInt16 cChar = *pnChar;
+ sal_uInt8 nRot = static_cast< sal_uInt8 >( (nIndex + 1) % 15 );
+ lclRotateLeft( cChar, nRot, 15 );
+ nHash ^= cChar;
+ }
+ return nHash;
+}
+
+
+} // namespace
+
+// ============================================================================
+
+MSCodec_Xor95::MSCodec_Xor95(int nRotateDistance) :
+ mnOffset( 0 ),
+ mnKey( 0 ),
+ mnHash( 0 ),
+ mnRotateDistance( nRotateDistance )
+{
+ (void)memset( mpnKey, 0, sizeof( mpnKey ) );
+}
+
+MSCodec_Xor95::~MSCodec_Xor95()
+{
+ (void)memset( mpnKey, 0, sizeof( mpnKey ) );
+ mnKey = mnHash = 0;
+}
+
+void MSCodec_Xor95::InitKey( const sal_uInt8 pnPassData[ 16 ] )
+{
+ mnKey = lclGetKey( pnPassData, 16 );
+ mnHash = lclGetHash( pnPassData, 16 );
+
+ (void)memcpy( mpnKey, pnPassData, 16 );
+
+ static const sal_uInt8 spnFillChars[] =
+ {
+ 0xBB, 0xFF, 0xFF, 0xBA,
+ 0xFF, 0xFF, 0xB9, 0x80,
+ 0x00, 0xBE, 0x0F, 0x00,
+ 0xBF, 0x0F, 0x00
+ };
+
+ sal_Size nIndex;
+ sal_Size nLen = lclGetLen( pnPassData, 16 );
+ const sal_uInt8* pnFillChar = spnFillChars;
+ for( nIndex = nLen; nIndex < sizeof( mpnKey ); ++nIndex, ++pnFillChar )
+ mpnKey[ nIndex ] = *pnFillChar;
+
+ SVBT16 pnOrigKey;
+ ShortToSVBT16( mnKey, pnOrigKey );
+ sal_uInt8* pnKeyChar = mpnKey;
+ for( nIndex = 0; nIndex < sizeof( mpnKey ); ++nIndex, ++pnKeyChar )
+ {
+ *pnKeyChar ^= pnOrigKey[ nIndex & 0x01 ];
+ lclRotateLeft( *pnKeyChar, mnRotateDistance );
+ }
+}
+
+bool MSCodec_Xor95::VerifyKey( sal_uInt16 nKey, sal_uInt16 nHash ) const
+{
+ return (nKey == mnKey) && (nHash == mnHash);
+}
+
+void MSCodec_Xor95::InitCipher()
+{
+ mnOffset = 0;
+}
+
+void MSCodec_XorXLS95::Decode( sal_uInt8* pnData, sal_Size nBytes )
+{
+ const sal_uInt8* pnCurrKey = mpnKey + mnOffset;
+ const sal_uInt8* pnKeyLast = mpnKey + 0x0F;
+
+ for( const sal_uInt8* pnDataEnd = pnData + nBytes; pnData < pnDataEnd; ++pnData )
+ {
+ lclRotateLeft( *pnData, 3 );
+ *pnData ^= *pnCurrKey;
+ if( pnCurrKey < pnKeyLast ) ++pnCurrKey; else pnCurrKey = mpnKey;
+ }
+
+ // update mnOffset
+ Skip( nBytes );
+}
+
+void MSCodec_XorWord95::Decode( sal_uInt8* pnData, sal_Size nBytes )
+{
+ const sal_uInt8* pnCurrKey = mpnKey + mnOffset;
+ const sal_uInt8* pnKeyLast = mpnKey + 0x0F;
+
+ for( const sal_uInt8* pnDataEnd = pnData + nBytes; pnData < pnDataEnd; ++pnData )
+ {
+ const sal_uInt8 cChar = *pnData ^ *pnCurrKey;
+ if (*pnData && cChar)
+ *pnData = cChar;
+ if( pnCurrKey < pnKeyLast ) ++pnCurrKey; else pnCurrKey = mpnKey;
+ }
+
+ // update mnOffset
+ Skip( nBytes );
+}
+
+
+void MSCodec_Xor95::Skip( sal_Size nBytes )
+{
+ mnOffset = (mnOffset + nBytes) & 0x0F;
+}
+
+sal_uInt16 MSCodec_Xor95::GetHash( const sal_uInt8* pnPassData, sal_Size nSize )
+{
+ return lclGetHash( pnPassData, nSize );
+}
+
+// ============================================================================
+
+MSCodec_Std97::MSCodec_Std97 ()
+{
+ m_hCipher = rtl_cipher_create (
+ rtl_Cipher_AlgorithmARCFOUR, rtl_Cipher_ModeStream);
+ OSL_ASSERT(m_hCipher != 0);
+
+ m_hDigest = rtl_digest_create (
+ rtl_Digest_AlgorithmMD5);
+ OSL_ASSERT(m_hDigest != 0);
+
+ (void)memset (m_pDigestValue, 0, sizeof(m_pDigestValue));
+}
+
+MSCodec_Std97::~MSCodec_Std97 ()
+{
+ (void)memset (m_pDigestValue, 0, sizeof(m_pDigestValue));
+ rtl_digest_destroy (m_hDigest);
+ rtl_cipher_destroy (m_hCipher);
+}
+
+#if DEBUG_MSO_ENCRYPTION_STD97
+static void lcl_PrintKeyData(const sal_uInt8* pKeyData, const char* msg)
+{
+ printf("pKeyData: (%s)\n", msg);
+ for (int j = 0; j < 4; ++j)
+ {
+ for (int i = 0; i < 16; ++i)
+ printf("%2.2x ", pKeyData[j*16+i]);
+ printf("\n");
+ }
+}
+#else
+static void lcl_PrintKeyData(const sal_uInt8* /*pKeyData*/, const char* /*msg*/)
+{
+}
+#endif
+
+#if DEBUG_MSO_ENCRYPTION_STD97
+static void lcl_PrintDigest(const sal_uInt8* pDigest, const char* msg)
+{
+ printf("digest: (%s)\n", msg);
+ for (int i = 0; i < 16; ++i)
+ printf("%2.2x ", pDigest[i]);
+ printf("\n");
+}
+#else
+static void lcl_PrintDigest(const sal_uInt8* /*pDigest*/, const char* /*msg*/)
+{
+}
+#endif
+
+void MSCodec_Std97::InitKey (
+ const sal_uInt16 pPassData[16],
+ const sal_uInt8 pUnique[16])
+{
+#if DEBUG_MSO_ENCRYPTION_STD97
+ fprintf(stdout, "MSCodec_Std97::InitKey: --begin\n");fflush(stdout);
+#endif
+ sal_uInt8 pKeyData[64];
+ int i, n;
+
+ // Fill PassData into KeyData.
+ (void)memset (pKeyData, 0, sizeof(pKeyData));
+ lcl_PrintKeyData(pKeyData, "initial");
+ for (i = 0, n = 16; (i < n) && pPassData[i]; i++)
+ {
+ pKeyData[2*i ] = sal::static_int_cast< sal_uInt8 >(
+ (pPassData[i] >> 0) & 0xff);
+ pKeyData[2*i + 1] = sal::static_int_cast< sal_uInt8 >(
+ (pPassData[i] >> 8) & 0xff);
+ }
+ pKeyData[2*i] = 0x80;
+ pKeyData[ 56] = sal::static_int_cast< sal_uInt8 >(i << 4);
+
+ lcl_PrintKeyData(pKeyData, "password data");
+
+ // Fill raw digest of KeyData into KeyData.
+ (void)rtl_digest_updateMD5 (
+ m_hDigest, pKeyData, sizeof(pKeyData));
+ (void)rtl_digest_rawMD5 (
+ m_hDigest, pKeyData, RTL_DIGEST_LENGTH_MD5);
+
+ lcl_PrintKeyData(pKeyData, "raw digest of key data");
+
+ // Update digest with KeyData and Unique.
+ for (i = 0; i < 16; i++)
+ {
+ rtl_digest_updateMD5 (m_hDigest, pKeyData, 5);
+ rtl_digest_updateMD5 (m_hDigest, pUnique, 16);
+ }
+
+ // Update digest with padding.
+ pKeyData[16] = 0x80;
+ (void)memset (pKeyData + 17, 0, sizeof(pKeyData) - 17);
+ pKeyData[56] = 0x80;
+ pKeyData[57] = 0x0a;
+
+ lcl_PrintKeyData(pKeyData, "update digest with padding");
+
+ rtl_digest_updateMD5 (
+ m_hDigest, &(pKeyData[16]), sizeof(pKeyData) - 16);
+
+ // Fill raw digest of above updates into DigestValue.
+ rtl_digest_rawMD5 (
+ m_hDigest, m_pDigestValue, sizeof(m_pDigestValue));
+
+ lcl_PrintDigest(m_pDigestValue, "digest value");
+
+ // Erase KeyData array and leave.
+ (void)memset (pKeyData, 0, sizeof(pKeyData));
+}
+
+bool MSCodec_Std97::VerifyKey (
+ const sal_uInt8 pSaltData[16],
+ const sal_uInt8 pSaltDigest[16])
+{
+ // both the salt data and salt digest (hash) come from the document being imported.
+
+#if DEBUG_MSO_ENCRYPTION_STD97
+ fprintf(stdout, "MSCodec_Std97::VerifyKey: \n");
+ lcl_PrintDigest(pSaltData, "salt data");
+ lcl_PrintDigest(pSaltDigest, "salt hash");
+#endif
+ bool result = false;
+
+ if (InitCipher(0))
+ {
+ sal_uInt8 pDigest[RTL_DIGEST_LENGTH_MD5];
+ GetDigestFromSalt(pSaltData, pDigest);
+
+ sal_uInt8 pBuffer[16];
+ // Decode original SaltDigest into Buffer.
+ rtl_cipher_decode (
+ m_hCipher, pSaltDigest, 16, pBuffer, sizeof(pBuffer));
+
+ // Compare Buffer with computed Digest.
+ result = (memcmp (pBuffer, pDigest, sizeof(pDigest)) == 0);
+
+ // Erase Buffer and Digest arrays.
+ (void)memset (pBuffer, 0, sizeof(pBuffer));
+ (void)memset (pDigest, 0, sizeof(pDigest));
+ }
+
+ return (result);
+}
+
+bool MSCodec_Std97::InitCipher (sal_uInt32 nCounter)
+{
+ rtlCipherError result;
+ sal_uInt8 pKeyData[64]; // 512-bit message block
+
+ // Initialize KeyData array.
+ (void)memset (pKeyData, 0, sizeof(pKeyData));
+
+ // Fill 40 bit of DigestValue into [0..4].
+ (void)memcpy (pKeyData, m_pDigestValue, 5);
+
+ // Fill counter into [5..8].
+ pKeyData[ 5] = sal_uInt8((nCounter >> 0) & 0xff);
+ pKeyData[ 6] = sal_uInt8((nCounter >> 8) & 0xff);
+ pKeyData[ 7] = sal_uInt8((nCounter >> 16) & 0xff);
+ pKeyData[ 8] = sal_uInt8((nCounter >> 24) & 0xff);
+
+ pKeyData[ 9] = 0x80;
+ pKeyData[56] = 0x48;
+
+ // Fill raw digest of KeyData into KeyData.
+ (void)rtl_digest_updateMD5 (
+ m_hDigest, pKeyData, sizeof(pKeyData));
+ (void)rtl_digest_rawMD5 (
+ m_hDigest, pKeyData, RTL_DIGEST_LENGTH_MD5);
+
+ // Initialize Cipher with KeyData (for decoding).
+ result = rtl_cipher_init (
+ m_hCipher, rtl_Cipher_DirectionBoth,
+ pKeyData, RTL_DIGEST_LENGTH_MD5, 0, 0);
+
+ // Erase KeyData array and leave.
+ (void)memset (pKeyData, 0, sizeof(pKeyData));
+
+ return (result == rtl_Cipher_E_None);
+}
+
+bool MSCodec_Std97::CreateSaltDigest( const sal_uInt8 nSaltData[16], sal_uInt8 nSaltDigest[16] )
+{
+#if DEBUG_MSO_ENCRYPTION_STD97
+ lcl_PrintDigest(pSaltData, "salt data");
+#endif
+ bool result = false;
+
+ if (InitCipher(0))
+ {
+ sal_uInt8 pDigest[RTL_DIGEST_LENGTH_MD5];
+ GetDigestFromSalt(nSaltData, pDigest);
+
+ rtl_cipher_decode (
+ m_hCipher, pDigest, 16, pDigest, sizeof(pDigest));
+
+ (void)memcpy(nSaltDigest, pDigest, 16);
+ }
+
+ return (result);
+}
+
+bool MSCodec_Std97::Encode (
+ const void *pData, sal_Size nDatLen,
+ sal_uInt8 *pBuffer, sal_Size nBufLen)
+{
+ rtlCipherError result;
+
+ result = rtl_cipher_encode (
+ m_hCipher, pData, nDatLen, pBuffer, nBufLen);
+
+ return (result == rtl_Cipher_E_None);
+}
+
+bool MSCodec_Std97::Decode (
+ const void *pData, sal_Size nDatLen,
+ sal_uInt8 *pBuffer, sal_Size nBufLen)
+{
+ rtlCipherError result;
+
+ result = rtl_cipher_decode (
+ m_hCipher, pData, nDatLen, pBuffer, nBufLen);
+
+ return (result == rtl_Cipher_E_None);
+}
+
+bool MSCodec_Std97::Skip( sal_Size nDatLen )
+{
+ sal_uInt8 pnDummy[ 1024 ];
+ sal_Size nDatLeft = nDatLen;
+ bool bResult = true;
+
+ while (bResult && nDatLeft)
+ {
+ sal_Size nBlockLen = ::std::min< sal_Size >( nDatLeft, sizeof(pnDummy) );
+ bResult = Decode( pnDummy, nBlockLen, pnDummy, nBlockLen );
+ nDatLeft -= nBlockLen;
+ }
+
+ return bResult;
+}
+
+void MSCodec_Std97::GetDigestFromSalt( const sal_uInt8 pSaltData[16], sal_uInt8 pDigest[16] )
+{
+ sal_uInt8 pBuffer[64];
+ sal_uInt8 pDigestLocal[16];
+
+ // Decode SaltData into Buffer.
+ rtl_cipher_decode (
+ m_hCipher, pSaltData, 16, pBuffer, sizeof(pBuffer));
+
+ // set the 129th bit to make the buffer 128-bit in length.
+ pBuffer[16] = 0x80;
+
+ // erase the rest of the buffer with zeros.
+ (void)memset (pBuffer + 17, 0, sizeof(pBuffer) - 17);
+
+ // set the 441st bit.
+ pBuffer[56] = 0x80;
+
+ // Fill raw digest of Buffer into Digest.
+ rtl_digest_updateMD5 (
+ m_hDigest, pBuffer, sizeof(pBuffer));
+ rtl_digest_rawMD5 (
+ m_hDigest, pDigestLocal, sizeof(pDigestLocal));
+
+ memcpy(pDigest, pDigestLocal, 16);
+}
+
+void MSCodec_Std97::GetEncryptKey (
+ const sal_uInt8 pSalt[16],
+ sal_uInt8 pSaltData[16],
+ sal_uInt8 pSaltDigest[16])
+{
+ if (InitCipher(0))
+ {
+ sal_uInt8 pDigest[RTL_DIGEST_LENGTH_MD5];
+ sal_uInt8 pBuffer[64];
+
+ rtl_cipher_encode (
+ m_hCipher, pSalt, 16, pSaltData, sizeof(pBuffer));
+
+ (void)memcpy( pBuffer, pSalt, 16 );
+
+ pBuffer[16] = 0x80;
+ (void)memset (pBuffer + 17, 0, sizeof(pBuffer) - 17);
+ pBuffer[56] = 0x80;
+
+ rtl_digest_updateMD5 (
+ m_hDigest, pBuffer, sizeof(pBuffer));
+ rtl_digest_rawMD5 (
+ m_hDigest, pDigest, sizeof(pDigest));
+
+ rtl_cipher_encode (
+ m_hCipher, pDigest, 16, pSaltDigest, 16);
+
+ (void)memset (pBuffer, 0, sizeof(pBuffer));
+ (void)memset (pDigest, 0, sizeof(pDigest));
+ }
+}
+
+// ============================================================================
+
+} // namespace svx
+
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
new file mode 100644
index 000000000000..28e8696a89dd
--- /dev/null
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -0,0 +1,8143 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+#include <com/sun/star/embed/Aspects.hpp>
+
+#include <math.h>
+#include <limits.h>
+#include <vector>
+#include <osl/endian.h>
+#include <tools/solar.h> // UINTXX
+#include <rtl/math.hxx>
+
+#include <sot/clsids.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <unotools/streamwrap.hxx>
+#include <comphelper/processfactory.hxx>
+#include <sot/exchange.hxx>
+#include <sot/storinfo.hxx>
+#include <vcl/cvtgrf.hxx>
+#include "viscache.hxx"
+
+// SvxItem-Mapping. Wird benoetigt um die SvxItem-Header erfolgreich zu includen
+#include <editeng/eeitem.hxx>
+#include <editeng/editdata.hxx>
+#include <svl/urihelper.hxx>
+#include <tools/stream.hxx>
+#include <tools/debug.hxx>
+#include <tools/zcodec.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <unotools/localfilehelper.hxx>
+#include <filter/msfilter/escherex.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <com/sun/star/container/XIdentifierContainer.hpp>
+#include <com/sun/star/drawing/XGluePointsSupplier.hpp>
+#include <com/sun/star/drawing/Position3D.hpp>
+#include <com/sun/star/drawing/Direction3D.hpp>
+#include <com/sun/star/drawing/GluePoint2.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <editeng/charscaleitem.hxx>
+#include <editeng/kernitem.hxx>
+#include <svtools/filter.hxx>
+#include <tools/string.hxx>
+#include <tools/urlobj.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/bmpacc.hxx>
+#include <sot/storage.hxx>
+#include <sfx2/docfac.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/fcontnr.hxx>
+#include <sfx2/module.hxx>
+#include <svx/sdgcpitm.hxx>
+#include <svx/sdgmoitm.hxx>
+#include <editeng/tstpitem.hxx>
+#include <svx/fmmodel.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdocapt.hxx>
+#include <svx/svdoedge.hxx>
+#include <svx/svdocirc.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdopath.hxx>
+#include <editeng/frmdir.hxx>
+#include <editeng/frmdiritem.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/sxenditm.hxx>
+#include <svx/sdgluitm.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/wghtitem.hxx>
+#include <editeng/postitem.hxx>
+#include <editeng/udlnitem.hxx>
+#include <editeng/crsditem.hxx>
+#include <editeng/shdditem.hxx>
+#include <editeng/fontitem.hxx>
+#include <editeng/colritem.hxx>
+#include <svx/sxekitm.hxx>
+#include <editeng/bulitem.hxx>
+#include <svx/polysc3d.hxx>
+#include <svx/extrud3d.hxx>
+#include "svx/svditer.hxx"
+#include <svx/xpoly.hxx>
+#include "svx/xattr.hxx"
+#include <filter/msfilter/msdffimp.hxx> // extern sichtbare Header-Datei
+#include <editeng/outliner.hxx>
+#include <editeng/outlobj.hxx>
+#include <editeng/editobj.hxx>
+#include <editeng/editeng.hxx>
+#include "svx/gallery.hxx"
+#include <com/sun/star/drawing/ShadeMode.hpp>
+#include <svl/itempool.hxx>
+#include <vcl/svapp.hxx>
+#include <svx/svx3ditems.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/sdasaitm.hxx>
+#include <ucbhelper/content.hxx>
+#include <ucbhelper/contentbroker.hxx>
+#include <vos/xception.hxx>
+#ifndef _VOS_NO_NAMESPACE
+using namespace vos;
+#endif
+#include "svx/EnhancedCustomShapeTypeNames.hxx"
+#include "svx/EnhancedCustomShapeGeometry.hxx"
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeGluePointType.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/drawing/ProjectionMode.hpp>
+#include "svx/EnhancedCustomShape2d.hxx"
+
+using namespace ::com::sun::star ;
+using namespace ::com::sun::star::drawing;
+using namespace uno ;
+using namespace beans ;
+using namespace drawing ;
+using namespace container ;
+
+#define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
+
+// static counter for OLE-Objects
+static sal_uInt32 nMSOleObjCntr = 0;
+#define MSO_OLE_Obj "MSO_OLE_Obj"
+
+
+/*************************************************************************/
+BOOL Impl_OlePres::Read( SvStream & rStm )
+{
+ ULONG nBeginPos = rStm.Tell();
+ INT32 n;
+ rStm >> n;
+ if( n != -1 )
+ {
+ pBmp = new Bitmap;
+ rStm >> *pBmp;
+ if( rStm.GetError() == SVSTREAM_OK )
+ {
+ nFormat = FORMAT_BITMAP;
+ aSize = pBmp->GetPrefSize();
+ MapMode aMMSrc;
+ if( !aSize.Width() || !aSize.Height() )
+ {
+ // letzte Chance
+ aSize = pBmp->GetSizePixel();
+ aMMSrc = MAP_PIXEL;
+ }
+ else
+ aMMSrc = pBmp->GetPrefMapMode();
+ MapMode aMMDst( MAP_100TH_MM );
+ aSize = OutputDevice::LogicToLogic( aSize, aMMSrc, aMMDst );
+ return TRUE;
+ }
+ else
+ {
+ delete pBmp;
+ pBmp = NULL;
+
+ pMtf = new GDIMetaFile();
+ rStm.ResetError();
+ rStm >> *pMtf;
+ if( rStm.GetError() == SVSTREAM_OK )
+ {
+ nFormat = FORMAT_GDIMETAFILE;
+ aSize = pMtf->GetPrefSize();
+ MapMode aMMSrc = pMtf->GetPrefMapMode();
+ MapMode aMMDst( MAP_100TH_MM );
+ aSize = OutputDevice::LogicToLogic( aSize, aMMSrc, aMMDst );
+ return TRUE;
+ }
+ else
+ {
+ delete pMtf;
+ pMtf = NULL;
+ }
+ }
+
+ }
+
+ rStm.ResetError();
+ rStm.Seek( nBeginPos );
+ nFormat = ReadClipboardFormat( rStm );
+ // JobSetup, bzw. TargetDevice ueberlesen
+ // Information aufnehmen, um sie beim Schreiben nicht zu verlieren
+ nJobLen = 0;
+ rStm >> nJobLen;
+ if( nJobLen >= 4 )
+ {
+ nJobLen -= 4;
+ if( nJobLen )
+ {
+ pJob = new BYTE[ nJobLen ];
+ rStm.Read( pJob, nJobLen );
+ }
+ }
+ else
+ {
+ rStm.SetError( SVSTREAM_GENERALERROR );
+ return FALSE;
+ }
+ UINT32 nAsp;
+ rStm >> nAsp;
+ USHORT nSvAsp = USHORT( nAsp );
+ SetAspect( nSvAsp );
+ rStm.SeekRel( 4 ); //L-Index ueberlesen
+ rStm >> nAdvFlags;
+ rStm.SeekRel( 4 ); //Compression
+ UINT32 nWidth = 0;
+ UINT32 nHeight = 0;
+ UINT32 nSize = 0;
+ rStm >> nWidth >> nHeight >> nSize;
+ aSize.Width() = nWidth;
+ aSize.Height() = nHeight;
+
+ if( nFormat == FORMAT_GDIMETAFILE )
+ {
+ pMtf = new GDIMetaFile();
+ ReadWindowMetafile( rStm, *pMtf, NULL );
+ }
+ else if( nFormat == FORMAT_BITMAP )
+ {
+ pBmp = new Bitmap();
+ rStm >> *pBmp;
+ }
+ else
+ {
+ BYTE * p = new BYTE[ nSize ];
+ rStm.Read( p, nSize );
+ delete [] p;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/************************************************************************/
+void Impl_OlePres::Write( SvStream & rStm )
+{
+ WriteClipboardFormat( rStm, FORMAT_GDIMETAFILE );
+ rStm << (INT32)(nJobLen +4); // immer leeres TargetDevice
+ if( nJobLen )
+ rStm.Write( pJob, nJobLen );
+ rStm << (UINT32)nAspect;
+ rStm << (INT32)-1; //L-Index immer -1
+ rStm << (INT32)nAdvFlags;
+ rStm << (INT32)0; //Compression
+ rStm << (INT32)aSize.Width();
+ rStm << (INT32)aSize.Height();
+ ULONG nPos = rStm.Tell();
+ rStm << (INT32)0;
+
+ if( GetFormat() == FORMAT_GDIMETAFILE && pMtf )
+ {
+ // Immer auf 1/100 mm, bis Mtf-Loesung gefunden
+ // Annahme (keine Skalierung, keine Org-Verschiebung)
+ DBG_ASSERT( pMtf->GetPrefMapMode().GetScaleX() == Fraction( 1, 1 ),
+ "X-Skalierung im Mtf" );
+ DBG_ASSERT( pMtf->GetPrefMapMode().GetScaleY() == Fraction( 1, 1 ),
+ "Y-Skalierung im Mtf" );
+ DBG_ASSERT( pMtf->GetPrefMapMode().GetOrigin() == Point(),
+ "Origin-Verschiebung im Mtf" );
+ MapUnit nMU = pMtf->GetPrefMapMode().GetMapUnit();
+ if( MAP_100TH_MM != nMU )
+ {
+ Size aPrefS( pMtf->GetPrefSize() );
+ Size aS( aPrefS );
+ aS = OutputDevice::LogicToLogic( aS, nMU, MAP_100TH_MM );
+
+ pMtf->Scale( Fraction( aS.Width(), aPrefS.Width() ),
+ Fraction( aS.Height(), aPrefS.Height() ) );
+ pMtf->SetPrefMapMode( MAP_100TH_MM );
+ pMtf->SetPrefSize( aS );
+ }
+ WriteWindowMetafileBits( rStm, *pMtf );
+ }
+ else
+ {
+ DBG_ERROR( "unknown format" );
+ }
+ ULONG nEndPos = rStm.Tell();
+ rStm.Seek( nPos );
+ rStm << (UINT32)(nEndPos - nPos - 4);
+ rStm.Seek( nEndPos );
+}
+
+Impl_OlePres * CreateCache_Impl( SotStorage * pStor )
+{
+ SotStorageStreamRef xOleObjStm =pStor->OpenSotStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "Ole-Object" ) ),
+ STREAM_READ | STREAM_NOCREATE );
+ if( xOleObjStm->GetError() )
+ return NULL;
+ SotStorageRef xOleObjStor = new SotStorage( *xOleObjStm );
+ if( xOleObjStor->GetError() )
+ return NULL;
+
+ String aStreamName;
+ if( xOleObjStor->IsContained( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\002OlePres000" ) ) ) )
+ aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\002OlePres000" ) );
+ else if( xOleObjStor->IsContained( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\1Ole10Native" ) ) ) )
+ aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\1Ole10Native" ) );
+
+ if( aStreamName.Len() == 0 )
+ return NULL;
+
+
+ for( USHORT i = 1; i < 10; i++ )
+ {
+ SotStorageStreamRef xStm = xOleObjStor->OpenSotStream( aStreamName,
+ STREAM_READ | STREAM_NOCREATE );
+ if( xStm->GetError() )
+ break;
+
+ xStm->SetBufferSize( 8192 );
+ Impl_OlePres * pEle = new Impl_OlePres( 0 );
+ if( pEle->Read( *xStm ) && !xStm->GetError() )
+ {
+ if( pEle->GetFormat() == FORMAT_GDIMETAFILE || pEle->GetFormat() == FORMAT_BITMAP )
+ return pEle;
+ }
+ delete pEle;
+ aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\002OlePres00" ) );
+ aStreamName += String( i );
+ };
+ return NULL;
+}
+
+
+
+//---------------------------------------------------------------------------
+// Hilfs Klassen aus MSDFFDEF.HXX
+//---------------------------------------------------------------------------
+
+SvStream& operator>>( SvStream& rIn, DffRecordHeader& rRec )
+{
+ rRec.nFilePos = rIn.Tell();
+ UINT16 nTmp(0);
+ rIn >> nTmp;
+ rRec.nImpVerInst = nTmp;
+ rRec.nRecVer = sal::static_int_cast< BYTE >(nTmp & 0x000F);
+ rRec.nRecInstance = nTmp >> 4;
+ rIn >> rRec.nRecType;
+ rIn >> rRec.nRecLen;
+ return rIn;
+}
+
+// Masse fuer dashed lines
+#define LLEN_MIDDLE (450)
+#define LLEN_SPACE_MIDDLE (360)
+#define LLEN_LONG (LLEN_MIDDLE * 2)
+#define LLEN_SPACE_LONG (LLEN_SPACE_MIDDLE + 20)
+#define LLEN_POINT (LLEN_MIDDLE / 4)
+#define LLEN_SPACE_POINT (LLEN_SPACE_MIDDLE / 4)
+
+SvStream& operator>>( SvStream& rIn, DffPropSet& rRec )
+{
+ rRec.InitializePropSet();
+
+ DffRecordHeader aHd;
+ rIn >> aHd;
+ UINT32 nPropCount = aHd.nRecInstance;
+
+ // FilePos der ComplexData merken
+ UINT32 nComplexDataFilePos = rIn.Tell() + ( nPropCount * 6 );
+
+ for( UINT32 nPropNum = 0; nPropNum < nPropCount; nPropNum++ )
+ {
+ sal_uInt16 nTmp;
+ sal_uInt32 nRecType, nContent, nContentEx = 0xffff0000;
+ rIn >> nTmp
+ >> nContent;
+
+ nRecType = nTmp & 0x3fff;
+
+ if ( nRecType > 0x3ff )
+ break;
+ if ( ( nRecType & 0x3f ) == 0x3f )
+ { // clear flags that have to be cleared
+ rRec.mpContents[ nRecType ] &= ( ( nContent >> 16 ) ^ 0xffffffff );
+ // set flags that have to be set
+ rRec.mpContents[ nRecType ] |= nContent;
+ nContentEx |= ( nContent >> 16 );
+ rRec.Replace( nRecType, (void*)nContentEx );
+ }
+ else
+ {
+ DffPropFlags aPropFlag = { 1, 0, 0, 0 };
+ if ( nTmp & 0x4000 )
+ aPropFlag.bBlip = sal_True;
+ if ( nTmp & 0x8000 )
+ aPropFlag.bComplex = sal_True;
+ if ( aPropFlag.bComplex && nContent && ( nComplexDataFilePos < aHd.GetRecEndFilePos() ) )
+ {
+ // normally nContent is the complete size of the complex property,
+ // but this is not always true for IMsoArrays ( what the hell is a IMsoArray ? )
+
+ // I love special threatments :-(
+ if ( ( nRecType == DFF_Prop_pVertices ) || ( nRecType == DFF_Prop_pSegmentInfo )
+ || ( nRecType == DFF_Prop_fillShadeColors ) || ( nRecType == DFF_Prop_lineDashStyle )
+ || ( nRecType == DFF_Prop_pWrapPolygonVertices ) || ( nRecType == DFF_Prop_connectorPoints )
+ || ( nRecType == DFF_Prop_Handles ) || ( nRecType == DFF_Prop_pFormulas )
+ || ( nRecType == DFF_Prop_textRectangles ) )
+ {
+ // now check if the current content size is possible, or 6 bytes too small
+ sal_uInt32 nOldPos = rIn.Tell();
+ sal_Int16 nNumElem, nNumElemReserved, nSize;
+
+ rIn.Seek( nComplexDataFilePos );
+ rIn >> nNumElem >> nNumElemReserved >> nSize;
+ if ( nNumElemReserved >= nNumElem )
+ {
+ // the size of these array elements is nowhere defined,
+ // what if the size is negative ?
+ // ok, we will make it positive and shift it.
+ // for -16 this works
+ if ( nSize < 0 )
+ nSize = ( -nSize ) >> 2;
+ sal_uInt32 nDataSize = (sal_uInt32)( nSize * nNumElem );
+
+ // sometimes the content size is 6 bytes too small (array header information is missing )
+ if ( nDataSize == nContent )
+ nContent += 6;
+
+ // check if array fits into the PropertyContainer
+ if ( ( nComplexDataFilePos + nContent ) > aHd.GetRecEndFilePos() )
+ nContent = 0;
+ }
+ else
+ nContent = 0;
+ rIn.Seek( nOldPos );
+ }
+ if ( nContent )
+ {
+ nContentEx = nComplexDataFilePos; // insert the filepos of this property;
+ nComplexDataFilePos += nContent; // store filepos, that is used for the next complex property
+ }
+ else // a complex property needs content
+ aPropFlag.bSet = sal_False; // otherwise something is wrong
+ }
+ rRec.mpContents[ nRecType ] = nContent;
+ rRec.mpFlags[ nRecType ] = aPropFlag;
+ rRec.Insert( nRecType, (void*)nContentEx );
+ }
+ }
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+void DffPropSet::InitializePropSet() const
+{
+ /*
+ cmc:
+ " Boolean properties are grouped in bitfields by property set; note that
+ the Boolean properties in each property set are contiguous. They are saved
+ under the property ID of the last Boolean property in the set, and are
+ placed in the value field in reverse order starting with the last property
+ in the low bit. "
+
+ e.g.
+
+ fEditedWrap
+ fBehindDocument
+ fOnDblClickNotify
+ fIsButton
+ fOneD
+ fHidden
+ fPrint
+
+ are all part of a group and all are by default false except for fPrint,
+ which equates to a default bit sequence for the group of 0000001 -> 0x1
+
+ If at a later stage word sets fBehindDocument away from the default it
+ will be done by having a property named fPrint whose bitsequence will have
+ the fBehindDocument bit set. e.g. a DFF_Prop_fPrint with value 0x200020
+ has set bit 6 on so as to enable fBehindDocument (as well as disabling
+ everything else)
+ */
+
+ memset( ( (DffPropSet*) this )->mpFlags, 0, 0x400 * sizeof(DffPropFlags) );
+ ( (DffPropSet*) this )->Clear();
+
+ DffPropFlags nFlags = { 1, 0, 0, 1 };
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_LockAgainstGrouping ] = 0x0000; //0x01ff0000;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_LockAgainstGrouping ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_LockAgainstGrouping, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_FitTextToShape ] = 0x0010; //0x001f0010;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_FitTextToShape ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_FitTextToShape, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_gtextFStrikethrough ] = 0x0000; //0xffff0000;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_gtextFStrikethrough ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_gtextFStrikethrough, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_pictureActive ] = 0x0000; //0x000f0000;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_pictureActive ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_pictureActive, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fFillOK ] = 0x0039; //0x003f0039;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fFillOK ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fFillOK, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fNoFillHitTest ] = 0x001c; //0x001f001c;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fNoFillHitTest ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fNoFillHitTest, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fNoLineDrawDash ] = 0x001e; //0x001f000e;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fNoLineDrawDash ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fNoLineDrawDash, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fshadowObscured ] = 0x0000; //0x00030000;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fshadowObscured ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fshadowObscured, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fPerspective ] = 0x0000; //0x00010000;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fPerspective ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fPerspective, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fc3DLightFace ] = 0x0001; //0x000f0001;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fc3DLightFace ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fc3DLightFace, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fc3DFillHarsh ] = 0x0016; //0x001f0016;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fc3DFillHarsh ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fc3DFillHarsh, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fBackground ] = 0x0000; //0x001f0000;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fBackground ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fBackground, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fCalloutLengthSpecified ] = 0x0010; //0x00ef0010;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fCalloutLengthSpecified ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fCalloutLengthSpecified, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fPrint ] = 0x0001; //0x00ef0001;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fPrint ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fPrint, (void*)0xffff0000 );
+
+ ( (DffPropSet*) this )->mpContents[ DFF_Prop_fillColor ] = 0xffffff;
+ ( (DffPropSet*) this )->mpFlags[ DFF_Prop_fillColor ] = nFlags;
+ ( (DffPropSet*) this )->Insert( DFF_Prop_fillColor, (void*)0xffff0000 );
+}
+
+void DffPropSet::Merge( DffPropSet& rMaster ) const
+{
+ for ( void* pDummy = rMaster.First(); pDummy; pDummy = rMaster.Next() )
+ {
+ UINT32 nRecType = rMaster.GetCurKey();
+ if ( ( nRecType & 0x3f ) == 0x3f ) // this is something called FLAGS
+ {
+ UINT32 nCurrentFlags = mpContents[ nRecType ];
+ UINT32 nMergeFlags = rMaster.mpContents[ nRecType ];
+ nMergeFlags &= ( nMergeFlags >> 16 ) | 0xffff0000; // clearing low word
+ nMergeFlags &= ( ( nCurrentFlags & 0xffff0000 ) // remove allready hard set
+ | ( nCurrentFlags >> 16 ) ) ^ 0xffffffff; // attributes from mergeflags
+ nCurrentFlags &= ( ( nMergeFlags & 0xffff0000 ) // apply zero master bits
+ | ( nMergeFlags >> 16 ) ) ^ 0xffffffff;
+ nCurrentFlags |= (UINT16)nMergeFlags; // apply filled master bits
+ ( (DffPropSet*) this )->mpContents[ nRecType ] = nCurrentFlags;
+
+
+ sal_uInt32 nNewContentEx = (sal_uInt32)(sal_uIntPtr)rMaster.GetCurObject();
+ if ( ((DffPropSet*)this)->Seek( nRecType ) )
+ nNewContentEx |= (sal_uInt32)(sal_uIntPtr)GetCurObject();
+ ( (DffPropSet*) this )->Replace( nRecType, (void*)nNewContentEx );
+ }
+ else
+ {
+ if ( !IsProperty( nRecType ) || !IsHardAttribute( nRecType ) )
+ {
+ ( (DffPropSet*) this )->mpContents[ nRecType ] = rMaster.mpContents[ nRecType ];
+ DffPropFlags nFlags( rMaster.mpFlags[ nRecType ] );
+ nFlags.bSoftAttr = TRUE;
+ ( (DffPropSet*) this )->mpFlags[ nRecType ] = nFlags;
+ ( (DffPropSet*) this )->Insert( nRecType, pDummy );
+ }
+ }
+ }
+}
+
+BOOL DffPropSet::IsHardAttribute( UINT32 nId ) const
+{
+ BOOL bRetValue = TRUE;
+ nId &= 0x3ff;
+ if ( ( nId & 0x3f ) >= 48 ) // is this a flag id
+ {
+ if ( ((DffPropSet*)this)->Seek( nId | 0x3f ) )
+ {
+ sal_uInt32 nContentEx = (sal_uInt32)(sal_uIntPtr)GetCurObject();
+ bRetValue = ( nContentEx & ( 1 << ( 0xf - ( nId & 0xf ) ) ) ) != 0;
+ }
+ }
+ else
+ bRetValue = ( mpFlags[ nId ].bSoftAttr == 0 );
+ return bRetValue;
+};
+
+UINT32 DffPropSet::GetPropertyValue( UINT32 nId, UINT32 nDefault ) const
+{
+ nId &= 0x3ff;
+ return ( mpFlags[ nId ].bSet ) ? mpContents[ nId ] : nDefault;
+};
+
+bool DffPropSet::GetPropertyBool( UINT32 nId, bool bDefault ) const
+{
+ UINT32 nBaseId = nId | 31; // base ID to get the UINT32 property value
+ UINT32 nMask = 1 << (nBaseId - nId); // bit mask of the boolean property
+
+ UINT32 nPropValue = GetPropertyValue( nBaseId, bDefault ? nMask : 0 );
+ return (nPropValue & nMask) != 0;
+}
+
+::rtl::OUString DffPropSet::GetPropertyString( UINT32 nId, SvStream& rStrm ) const
+{
+ sal_Size nOldPos = rStrm.Tell();
+ ::rtl::OUStringBuffer aBuffer;
+ sal_uInt32 nBufferSize = GetPropertyValue( nId );
+ if( (nBufferSize > 0) && SeekToContent( nId, rStrm ) )
+ {
+ sal_Int32 nStrLen = static_cast< sal_Int32 >( nBufferSize / 2 );
+ aBuffer.ensureCapacity( nStrLen );
+ for( sal_Int32 nCharIdx = 0; nCharIdx < nStrLen; ++nCharIdx )
+ {
+ sal_uInt16 nChar = 0;
+ rStrm >> nChar;
+ if( nChar > 0 )
+ aBuffer.append( static_cast< sal_Unicode >( nChar ) );
+ else
+ break;
+ }
+ }
+ rStrm.Seek( nOldPos );
+ return aBuffer.makeStringAndClear();
+}
+
+void DffPropSet::SetPropertyValue( UINT32 nId, UINT32 nValue ) const
+{
+ if ( !mpFlags[ nId ].bSet )
+ {
+ ( (DffPropSet*) this )->Insert( nId, (void*)nValue );
+ ( (DffPropSet*) this )->mpFlags[ nId ].bSet = TRUE;
+ }
+ ( (DffPropSet*) this )->mpContents[ nId ] = nValue;
+};
+
+BOOL DffPropSet::SeekToContent( UINT32 nRecType, SvStream& rStrm ) const
+{
+ nRecType &= 0x3ff;
+ if ( mpFlags[ nRecType ].bSet )
+ {
+ if ( mpFlags[ nRecType ].bComplex )
+ {
+ if ( ((DffPropSet*)this)->Seek( nRecType ) )
+ {
+ sal_uInt32 nOffset = (sal_uInt32)(sal_uIntPtr)GetCurObject();
+ if ( nOffset && ( ( nOffset & 0xffff0000 ) != 0xffff0000 ) )
+ {
+ rStrm.Seek( nOffset );
+ return TRUE;
+ }
+ }
+ }
+ }
+ return FALSE;
+}
+
+DffPropertyReader::DffPropertyReader( const SvxMSDffManager& rMan ) :
+ rManager( rMan ),
+ pDefaultPropSet( NULL )
+{
+ InitializePropSet();
+}
+
+void DffPropertyReader::SetDefaultPropSet( SvStream& rStCtrl, UINT32 nOffsDgg ) const
+{
+ delete pDefaultPropSet;
+ UINT32 nMerk = rStCtrl.Tell();
+ rStCtrl.Seek( nOffsDgg );
+ DffRecordHeader aRecHd;
+ rStCtrl >> aRecHd;
+ if ( aRecHd.nRecType == DFF_msofbtDggContainer )
+ {
+ if ( rManager.SeekToRec( rStCtrl, DFF_msofbtOPT, aRecHd.GetRecEndFilePos() ) )
+ {
+ ( (DffPropertyReader*) this )->pDefaultPropSet = new DffPropSet;
+ rStCtrl >> *pDefaultPropSet;
+ }
+ }
+ rStCtrl.Seek( nMerk );
+}
+
+#ifdef DBG_CUSTOMSHAPE
+void DffPropertyReader::ReadPropSet( SvStream& rIn, void* pClientData, UINT32 nShapeId ) const
+#else
+void DffPropertyReader::ReadPropSet( SvStream& rIn, void* pClientData ) const
+#endif
+{
+ ULONG nFilePos = rIn.Tell();
+ rIn >> (DffPropertyReader&)*this;
+
+ if ( IsProperty( DFF_Prop_hspMaster ) )
+ {
+ if ( rManager.SeekToShape( rIn, pClientData, GetPropertyValue( DFF_Prop_hspMaster ) ) )
+ {
+ DffRecordHeader aRecHd;
+ rIn >> aRecHd;
+ if ( rManager.SeekToRec( rIn, DFF_msofbtOPT, aRecHd.GetRecEndFilePos() ) )
+ {
+ DffPropSet aMasterPropSet;
+ rIn >> aMasterPropSet;
+ Merge( aMasterPropSet );
+ }
+ }
+ }
+// if ( pDefaultPropSet )
+// Merge( *( pDefaultPropSet ) );
+
+ ( (DffPropertyReader*) this )->mnFix16Angle = Fix16ToAngle( GetPropertyValue( DFF_Prop_Rotation, 0 ) );
+
+#ifdef DBG_CUSTOMSHAPE
+
+ String aURLStr;
+
+ if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( String( RTL_CONSTASCII_STRINGPARAM( "d:\\ashape.dbg" ) ), aURLStr ) )
+ {
+ SvStream* pOut = ::utl::UcbStreamHelper::CreateStream( aURLStr, STREAM_WRITE );
+
+ if( pOut )
+ {
+ pOut->Seek( STREAM_SEEK_TO_END );
+
+ if ( IsProperty( DFF_Prop_adjustValue ) || IsProperty( DFF_Prop_pVertices ) )
+ {
+ pOut->WriteLine( "" );
+ ByteString aString( "ShapeId: " );
+ aString.Append( ByteString::CreateFromInt32( nShapeId ) );
+ pOut->WriteLine( aString );
+ }
+ for ( sal_uInt32 i = DFF_Prop_adjustValue; i <= DFF_Prop_adjust10Value; i++ )
+ {
+ if ( IsProperty( i ) )
+ {
+ ByteString aString( "Prop_adjustValue" );
+ aString.Append( ByteString::CreateFromInt32( ( i - DFF_Prop_adjustValue ) + 1 ) );
+ aString.Append( ":" );
+ aString.Append( ByteString::CreateFromInt32( GetPropertyValue( i ) ) );
+ pOut->WriteLine( aString );
+ }
+ }
+ sal_Int32 i;
+ for ( i = 320; i < 383; i++ )
+ {
+ if ( ( i >= DFF_Prop_adjustValue ) && ( i <= DFF_Prop_adjust10Value ) )
+ continue;
+ if ( IsProperty( i ) )
+ {
+ if ( SeekToContent( i, rIn ) )
+ {
+ INT32 nLen = (INT32)GetPropertyValue( i );
+ if ( nLen )
+ {
+ pOut->WriteLine( "" );
+ ByteString aDesc( "Property:" );
+ aDesc.Append( ByteString::CreateFromInt32( i ) );
+ aDesc.Append( ByteString( " Size:" ) );
+ aDesc.Append( ByteString::CreateFromInt32( nLen ) );
+ pOut->WriteLine( aDesc );
+ INT16 nNumElem, nNumElemMem, nNumSize;
+ rIn >> nNumElem >> nNumElemMem >> nNumSize;
+ aDesc = ByteString( "Entries: " );
+ aDesc.Append( ByteString::CreateFromInt32( nNumElem ) );
+ aDesc.Append( ByteString( " Size:" ) );
+ aDesc.Append( ByteString::CreateFromInt32( nNumSize ) );
+ pOut->WriteLine( aDesc );
+ if ( nNumSize < 0 )
+ nNumSize = ( ( -nNumSize ) >> 2 );
+ if ( !nNumSize )
+ nNumSize = 16;
+ nLen -= 6;
+ while ( nLen > 0 )
+ {
+ ByteString aString;
+ for ( UINT32 j = 0; nLen && ( j < ( nNumSize >> 1 ) ); j++ )
+ {
+ for ( UINT32 k = 0; k < 2; k++ )
+ {
+ if ( nLen )
+ {
+ BYTE nVal;
+ rIn >> nVal;
+ if ( ( nVal >> 4 ) > 9 )
+ *pOut << (BYTE)( ( nVal >> 4 ) + 'A' - 10 );
+ else
+ *pOut << (BYTE)( ( nVal >> 4 ) + '0' );
+
+ if ( ( nVal & 0xf ) > 9 )
+ *pOut << (BYTE)( ( nVal & 0xf ) + 'A' - 10 );
+ else
+ *pOut << (BYTE)( ( nVal & 0xf ) + '0' );
+
+ nLen--;
+ }
+ }
+ *pOut << (char)( ' ' );
+ }
+ pOut->WriteLine( aString );
+ }
+ }
+ }
+ else
+ {
+ ByteString aString( "Property" );
+ aString.Append( ByteString::CreateFromInt32( i ) );
+ aString.Append( ":" );
+ aString.Append( ByteString::CreateFromInt32( GetPropertyValue( i ) ) );
+ pOut->WriteLine( aString );
+ }
+ }
+ }
+
+ delete pOut;
+ }
+ }
+
+#endif
+
+ rIn.Seek( nFilePos );
+}
+
+
+INT32 DffPropertyReader::Fix16ToAngle( INT32 nContent ) const
+{
+ INT32 nAngle = 0;
+ if ( nContent )
+ {
+ nAngle = ( (INT16)( nContent >> 16) * 100L ) + ( ( ( nContent & 0x0000ffff) * 100L ) >> 16 );
+ nAngle = NormAngle360( -nAngle );
+ }
+ return nAngle;
+}
+
+DffPropertyReader::~DffPropertyReader()
+{
+ delete pDefaultPropSet;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, SvxMSDffConnectorRule& rRule )
+{
+ rIn >> rRule.nRuleId
+ >> rRule.nShapeA
+ >> rRule.nShapeB
+ >> rRule.nShapeC
+ >> rRule.ncptiA
+ >> rRule.ncptiB;
+
+ return rIn;
+}
+
+SvxMSDffSolverContainer::SvxMSDffSolverContainer()
+{
+}
+
+SvxMSDffSolverContainer::~SvxMSDffSolverContainer()
+{
+ for ( SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)aCList.First();
+ pPtr; pPtr = (SvxMSDffConnectorRule*)aCList.Next() )
+ delete pPtr;
+}
+
+SvStream& operator>>( SvStream& rIn, SvxMSDffSolverContainer& rContainer )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd;
+ if ( aHd.nRecType == DFF_msofbtSolverContainer )
+ {
+ DffRecordHeader aCRule;
+ while ( ( rIn.GetError() == 0 ) && ( rIn.Tell() < aHd.GetRecEndFilePos() ) )
+ {
+ rIn >> aCRule;
+ if ( aCRule.nRecType == DFF_msofbtConnectorRule )
+ {
+ SvxMSDffConnectorRule* pRule = new SvxMSDffConnectorRule;
+ rIn >> *pRule;
+ rContainer.aCList.Insert( pRule, LIST_APPEND );
+ }
+ aCRule.SeekToEndOfRecord( rIn );
+ }
+ }
+ return rIn;
+}
+
+void SvxMSDffManager::SolveSolver( const SvxMSDffSolverContainer& rSolver )
+{
+ sal_Int32 i, nCnt;
+ for ( i = 0, nCnt = rSolver.aCList.Count(); i < nCnt; i++ )
+ {
+ SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)rSolver.aCList.GetObject( i );
+ if ( pPtr->pCObj )
+ {
+ for ( int nN = 0; nN < 2; nN++ )
+ {
+ SdrObject* pO;
+ sal_uInt32 nC, nSpFlags;
+ sal_Bool bTail;
+ if ( !nN )
+ {
+ bTail = sal_True;
+ pO = pPtr->pAObj;
+ nC = pPtr->ncptiA;
+ nSpFlags = pPtr->nSpFlagsA;
+ }
+ else
+ {
+ bTail = sal_False;
+ pO = pPtr->pBObj;
+ nC = pPtr->ncptiB;
+ nSpFlags = pPtr->nSpFlagsB;
+ }
+ if ( pO )
+ {
+ Any aAny;
+ SdrGluePoint aGluePoint;
+ Reference< XShape > aXShape( pO->getUnoShape(), UNO_QUERY );
+ Reference< XShape > aXConnector( pPtr->pCObj->getUnoShape(), UNO_QUERY );
+ SdrGluePointList* pList = pO->ForceGluePointList();
+
+ sal_Bool bValidGluePoint = sal_False;
+ sal_Int32 nId = nC;
+ sal_uInt32 nInventor = pO->GetObjInventor();
+
+ if( nInventor == SdrInventor )
+ {
+ sal_uInt32 nObjId = pO->GetObjIdentifier();
+ switch( nObjId )
+ {
+ case OBJ_GRUP :
+ case OBJ_GRAF :
+ case OBJ_RECT :
+ case OBJ_TEXT :
+ case OBJ_PAGE :
+ case OBJ_TEXTEXT :
+ case OBJ_wegFITTEXT :
+ case OBJ_wegFITALLTEXT :
+ case OBJ_TITLETEXT :
+ case OBJ_OUTLINETEXT :
+ {
+ if ( nC & 1 )
+ {
+ if ( nSpFlags & SP_FFLIPH )
+ nC ^= 2; // 1 <-> 3
+ }
+ else
+ {
+ if ( nSpFlags & SP_FFLIPV )
+ nC ^= 1; // 0 <-> 2
+ }
+ switch( nC )
+ {
+ case 0 :
+ nId = 0; // SDRVERTALIGN_TOP;
+ break;
+ case 1 :
+ nId = 3; // SDRHORZALIGN_RIGHT;
+ break;
+ case 2 :
+ nId = 2; // SDRVERTALIGN_BOTTOM;
+ break;
+ case 3 :
+ nId = 1; // SDRHORZALIGN_LEFT;
+ break;
+ }
+ if ( nId <= 3 )
+ bValidGluePoint = sal_True;
+ }
+ break;
+ case OBJ_POLY :
+ case OBJ_PLIN :
+ case OBJ_LINE :
+ case OBJ_PATHLINE :
+ case OBJ_PATHFILL :
+ case OBJ_FREELINE :
+ case OBJ_FREEFILL :
+ case OBJ_SPLNLINE :
+ case OBJ_SPLNFILL :
+ case OBJ_PATHPOLY :
+ case OBJ_PATHPLIN :
+ {
+ if ( pList && ( pList->GetCount() > nC ) )
+ {
+ bValidGluePoint = sal_True;
+ nId = (sal_Int32)((*pList)[ (sal_uInt16)nC].GetId() + 3 );
+ }
+ else
+ {
+ sal_Bool bNotFound = sal_True;
+
+ PolyPolygon aPolyPoly( EscherPropertyContainer::GetPolyPolygon( aXShape ) );
+ sal_uInt16 k, j, nPolySize = aPolyPoly.Count();
+ if ( nPolySize )
+ {
+ sal_uInt32 nPointCount = 0;
+ Rectangle aBoundRect( aPolyPoly.GetBoundRect() );
+ if ( aBoundRect.GetWidth() && aBoundRect.GetHeight() )
+ {
+ for ( k = 0; bNotFound && ( k < nPolySize ); k++ )
+ {
+ const Polygon& rPolygon = aPolyPoly.GetObject( k );
+ for ( j = 0; bNotFound && ( j < rPolygon.GetSize() ); j++ )
+ {
+ PolyFlags eFlags = rPolygon.GetFlags( j );
+ if ( eFlags == POLY_NORMAL )
+ {
+ if ( nC == nPointCount )
+ {
+ const Point& rPoint = rPolygon.GetPoint( j );
+ double fXRel = rPoint.X() - aBoundRect.Left();
+ double fYRel = rPoint.Y() - aBoundRect.Top();
+ sal_Int32 nWidth = aBoundRect.GetWidth();
+ if ( !nWidth )
+ nWidth = 1;
+ sal_Int32 nHeight= aBoundRect.GetHeight();
+ if ( !nHeight )
+ nHeight = 1;
+ fXRel /= (double)nWidth;
+ fXRel *= 10000;
+ fYRel /= (double)nHeight;
+ fYRel *= 10000;
+ aGluePoint.SetPos( Point( (sal_Int32)fXRel, (sal_Int32)fYRel ) );
+ aGluePoint.SetPercent( sal_True );
+ aGluePoint.SetAlign( SDRVERTALIGN_TOP | SDRHORZALIGN_LEFT );
+ aGluePoint.SetEscDir( SDRESC_SMART );
+ nId = (sal_Int32)((*pList)[ pList->Insert( aGluePoint ) ].GetId() + 3 );
+ bNotFound = sal_False;
+ }
+ nPointCount++;
+ }
+ }
+ }
+ }
+ }
+ if ( !bNotFound )
+ {
+ bValidGluePoint = sal_True;
+ }
+ }
+ }
+ break;
+
+ case OBJ_CUSTOMSHAPE :
+ {
+ SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pO)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+ const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM ( "Path" ) );
+ const rtl::OUString sGluePointType( RTL_CONSTASCII_USTRINGPARAM ( "GluePointType" ) );
+ sal_Int16 nGluePointType = EnhancedCustomShapeGluePointType::SEGMENTS;
+ com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sPath, sGluePointType );
+ if ( pAny )
+ *pAny >>= nGluePointType;
+ else
+ {
+ const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
+ rtl::OUString sShapeType;
+ pAny = aGeometryItem.GetPropertyValueByName( sType );
+ if ( pAny )
+ *pAny >>= sShapeType;
+ MSO_SPT eSpType = EnhancedCustomShapeTypeNames::Get( sShapeType );
+ nGluePointType = GetCustomShapeConnectionTypeDefault( eSpType );
+ }
+ if ( nGluePointType == EnhancedCustomShapeGluePointType::CUSTOM )
+ {
+ if ( pList && ( pList->GetCount() > nC ) )
+ {
+ bValidGluePoint = sal_True;
+ nId = (sal_Int32)((*pList)[ (sal_uInt16)nC].GetId() + 3 );
+ }
+ }
+ else if ( nGluePointType == EnhancedCustomShapeGluePointType::RECT )
+ {
+ if ( nC & 1 )
+ {
+ if ( nSpFlags & SP_FFLIPH )
+ nC ^= 2; // 1 <-> 3
+ }
+ else
+ {
+ if ( nSpFlags & SP_FFLIPV )
+ nC ^= 1; // 0 <-> 2
+ }
+ switch( nC )
+ {
+ case 0 :
+ nId = 0; // SDRVERTALIGN_TOP;
+ break;
+ case 1 :
+ nId = 3; // SDRHORZALIGN_RIGHT;
+ break;
+ case 2 :
+ nId = 2; // SDRVERTALIGN_BOTTOM;
+ break;
+ case 3 :
+ nId = 1; // SDRHORZALIGN_LEFT;
+ break;
+ }
+ if ( nId <= 3 )
+ bValidGluePoint = sal_True;
+ }
+ else if ( nGluePointType == EnhancedCustomShapeGluePointType::SEGMENTS )
+ {
+ const rtl::OUString sSegments( RTL_CONSTASCII_USTRINGPARAM ( "Segments" ) );
+ const rtl::OUString sCoordinates( RTL_CONSTASCII_USTRINGPARAM ( "Coordinates" ) );
+
+ sal_uInt32 k, nPt = nC;
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment > aSegments;
+ pAny = aGeometryItem.GetPropertyValueByName( sPath, sSegments );
+ if ( pAny )
+ {
+ if ( *pAny >>= aSegments )
+ {
+ for ( nPt = 0, k = 1; nC && ( k < (sal_uInt32)aSegments.getLength() ); k++ )
+ {
+ sal_Int16 j, nCnt2 = aSegments[ k ].Count;
+ if ( aSegments[ k ].Command != EnhancedCustomShapeSegmentCommand::UNKNOWN )
+ {
+ for ( j = 0; nC && ( j < nCnt2 ); j++ )
+ {
+ switch( aSegments[ k ].Command )
+ {
+ case EnhancedCustomShapeSegmentCommand::ENDSUBPATH :
+ case EnhancedCustomShapeSegmentCommand::CLOSESUBPATH :
+ case EnhancedCustomShapeSegmentCommand::LINETO :
+ case EnhancedCustomShapeSegmentCommand::MOVETO :
+ {
+ nC--;
+ nPt++;
+ }
+ break;
+ case EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX :
+ case EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY :
+ break;
+
+ case EnhancedCustomShapeSegmentCommand::CURVETO :
+ {
+ nC--;
+ nPt += 3;
+ }
+ break;
+
+ case EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO :
+ case EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE :
+ {
+ nC--;
+ nPt += 3;
+ }
+ break;
+ case EnhancedCustomShapeSegmentCommand::ARCTO :
+ case EnhancedCustomShapeSegmentCommand::ARC :
+ case EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO :
+ case EnhancedCustomShapeSegmentCommand::CLOCKWISEARC :
+ {
+ nC--;
+ nPt += 4;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ pAny = aGeometryItem.GetPropertyValueByName( sPath, sCoordinates );
+ if ( pAny )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aCoordinates;
+ *pAny >>= aCoordinates;
+ if ( nPt < (sal_uInt32)aCoordinates.getLength() )
+ {
+ nId = 4;
+ com::sun::star::drawing::EnhancedCustomShapeParameterPair& rPara = aCoordinates[ nPt ];
+ sal_Int32 nX = 0, nY = 0;
+ if ( ( rPara.First.Value >>= nX ) && ( rPara.Second.Value >>= nY ) )
+ {
+ const rtl::OUString sGluePoints( RTL_CONSTASCII_USTRINGPARAM ( "GluePoints" ) );
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aGluePoints;
+ pAny = aGeometryItem.GetPropertyValueByName( sPath, sGluePoints );
+ if ( pAny )
+ *pAny >>= aGluePoints;
+ sal_Int32 nGluePoints = aGluePoints.getLength();
+ aGluePoints.realloc( nGluePoints + 1 );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ nGluePoints ].First, nX );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ nGluePoints ].Second, nY );
+ PropertyValue aProp;
+ aProp.Name = sGluePoints;
+ aProp.Value <<= aGluePoints;
+ aGeometryItem.SetPropertyValue( sPath, aProp );
+ bValidGluePoint = sal_True;
+ ((SdrObjCustomShape*)pO)->SetMergedItem( aGeometryItem );
+ SdrGluePointList* pLst = pO->ForceGluePointList();
+ if ( pLst->GetCount() > nGluePoints )
+ nId = (sal_Int32)((*pLst)[ (sal_uInt16)nGluePoints ].GetId() + 3 );
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ if ( bValidGluePoint )
+ {
+ Reference< XPropertySet > xPropSet( aXConnector, UNO_QUERY );
+ if ( xPropSet.is() )
+ {
+ if ( nN )
+ {
+ String aPropName( RTL_CONSTASCII_USTRINGPARAM( "EndShape" ) );
+ aAny <<= aXShape;
+ SetPropValue( aAny, xPropSet, aPropName, sal_True );
+ aPropName = String( RTL_CONSTASCII_USTRINGPARAM( "EndGluePointIndex" ) );
+ aAny <<= nId;
+ SetPropValue( aAny, xPropSet, aPropName, sal_True );
+ }
+ else
+ {
+ String aPropName( RTL_CONSTASCII_USTRINGPARAM( "StartShape" ) );
+ aAny <<= aXShape;
+ SetPropValue( aAny, xPropSet, aPropName, sal_True );
+ aPropName = String( RTL_CONSTASCII_USTRINGPARAM( "StartGluePointIndex" ) );
+ aAny <<= nId;
+ SetPropValue( aAny, xPropSet, aPropName, sal_True );
+ }
+
+ // Not sure what this is good for, repaint or broadcast of object change.
+ //( Thus i am adding repaint here
+ pO->SetChanged();
+ pO->BroadcastObjectChange();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static basegfx::B2DPolygon GetLineArrow( const sal_Int32 nLineWidth, const MSO_LineEnd eLineEnd,
+ const MSO_LineEndWidth eLineWidth, const MSO_LineEndLength eLineLenght,
+ sal_Int32& rnArrowWidth, sal_Bool& rbArrowCenter,
+ String& rsArrowName, sal_Bool bScaleArrow )
+{
+ basegfx::B2DPolygon aRetval;
+ double fLineWidth = nLineWidth < 70 ? 70.0 : nLineWidth;
+ double fLenghtMul, fWidthMul;
+ sal_Int32 nLineNumber;
+ switch( eLineLenght )
+ {
+ default :
+ case mso_lineMediumLenArrow : fLenghtMul = 3.0; nLineNumber = 2; break;
+ case mso_lineShortArrow : fLenghtMul = 2.0; nLineNumber = 1; break;
+ case mso_lineLongArrow : fLenghtMul = 5.0; nLineNumber = 3; break;
+ }
+ switch( eLineWidth )
+ {
+ default :
+ case mso_lineMediumWidthArrow : fWidthMul = 3.0; nLineNumber += 3; break;
+ case mso_lineNarrowArrow : fWidthMul = 2.0; break;
+ case mso_lineWideArrow : fWidthMul = 5.0; nLineNumber += 6; break;
+ }
+
+ if ( bScaleArrow ) // #i33630 arrows imported from Word are too big
+ {
+ fWidthMul /= 1.75;
+ fLenghtMul/= 1.75;
+ }
+
+ rbArrowCenter = sal_False;
+ switch ( eLineEnd )
+ {
+ case mso_lineArrowEnd :
+ {
+ basegfx::B2DPolygon aTriangle;
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50, 0.0 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth, fLenghtMul * fLineWidth ));
+ aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth ));
+ aTriangle.setClosed(true);
+ aRetval = aTriangle;
+ rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowEnd " ), RTL_TEXTENCODING_UTF8 );
+ }
+ break;
+
+ case mso_lineArrowOpenEnd :
+ {
+ switch( eLineLenght )
+ {
+ default :
+ case mso_lineMediumLenArrow : fLenghtMul = 4.5; break;
+ case mso_lineShortArrow : fLenghtMul = 3.5; break;
+ case mso_lineLongArrow : fLenghtMul = 6.0; break;
+ }
+ switch( eLineWidth )
+ {
+ default :
+ case mso_lineMediumWidthArrow : fWidthMul = 4.5; break;
+ case mso_lineNarrowArrow : fWidthMul = 3.5; break;
+ case mso_lineWideArrow : fWidthMul = 6.0; break;
+ }
+ basegfx::B2DPolygon aTriangle;
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , 0.0 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth, fLenghtMul * fLineWidth * 0.91 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.85, fLenghtMul * fLineWidth ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50, fLenghtMul * fLineWidth * 0.36 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.15, fLenghtMul * fLineWidth ));
+ aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth * 0.91 ));
+ aTriangle.setClosed(true);
+ aRetval = aTriangle;
+ rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowOpenEnd " ), RTL_TEXTENCODING_UTF8 );
+ }
+ break;
+ case mso_lineArrowStealthEnd :
+ {
+ basegfx::B2DPolygon aTriangle;
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , 0.0 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth , fLenghtMul * fLineWidth ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , fLenghtMul * fLineWidth * 0.60 ));
+ aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth ));
+ aTriangle.setClosed(true);
+ aRetval = aTriangle;
+ rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowStealthEnd " ), RTL_TEXTENCODING_UTF8 );
+ }
+ break;
+ case mso_lineArrowDiamondEnd :
+ {
+ basegfx::B2DPolygon aTriangle;
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , 0.0 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth , fLenghtMul * fLineWidth * 0.50 ));
+ aTriangle.append(basegfx::B2DPoint( fWidthMul * fLineWidth * 0.50 , fLenghtMul * fLineWidth ));
+ aTriangle.append(basegfx::B2DPoint( 0.0, fLenghtMul * fLineWidth * 0.50 ));
+ aTriangle.setClosed(true);
+ aRetval = aTriangle;
+ rbArrowCenter = sal_True;
+ rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowDiamondEnd " ), RTL_TEXTENCODING_UTF8 );
+ }
+ break;
+ case mso_lineArrowOvalEnd :
+ {
+ aRetval = XPolygon( Point( (sal_Int32)( fWidthMul * fLineWidth * 0.50 ), 0 ),
+ (sal_Int32)( fWidthMul * fLineWidth * 0.50 ),
+ (sal_Int32)( fLenghtMul * fLineWidth * 0.50 ), 0, 3600 ).getB2DPolygon();
+ rbArrowCenter = sal_True;
+ rsArrowName = String( RTL_CONSTASCII_STRINGPARAM( "msArrowOvalEnd " ), RTL_TEXTENCODING_UTF8 );
+ }
+ break;
+ default: break;
+ }
+ rsArrowName.Append( String::CreateFromInt32( nLineNumber ) );
+ rnArrowWidth = (sal_Int32)( fLineWidth * fWidthMul );
+
+ return aRetval;
+}
+
+void DffPropertyReader::ApplyLineAttributes( SfxItemSet& rSet, const MSO_SPT eShapeType ) const // #i28269#
+{
+ UINT32 nLineFlags(GetPropertyValue( DFF_Prop_fNoLineDrawDash ));
+
+ if(!IsHardAttribute( DFF_Prop_fLine ) && !IsCustomShapeStrokedByDefault( eShapeType ))
+ {
+ nLineFlags &= ~0x08;
+ }
+
+ if ( nLineFlags & 8 )
+ {
+ // Linienattribute
+ sal_Int32 nLineWidth = (INT32)GetPropertyValue( DFF_Prop_lineWidth, 9525 );
+
+ MSO_LineDashing eLineDashing = (MSO_LineDashing)GetPropertyValue( DFF_Prop_lineDashing, mso_lineSolid );
+ if ( eLineDashing == mso_lineSolid )
+ rSet.Put(XLineStyleItem( XLINE_SOLID ) );
+ else
+ {
+// MSO_LineCap eLineCap = (MSO_LineCap)GetPropertyValue( DFF_Prop_lineEndCapStyle, mso_lineEndCapSquare );
+
+ XDashStyle eDash = XDASH_RECT;
+ sal_uInt16 nDots = 1;
+ sal_uInt32 nDotLen = nLineWidth / 360;
+ sal_uInt16 nDashes = 0;
+ sal_uInt32 nDashLen = ( 8 * nLineWidth ) / 360;
+ sal_uInt32 nDistance = ( 3 * nLineWidth ) / 360;;
+
+ switch ( eLineDashing )
+ {
+ default:
+ case mso_lineDotSys :
+ {
+ nDots = 1;
+ nDashes = 0;
+ nDistance = nDotLen;
+ }
+ break;
+
+ case mso_lineDashGEL :
+ {
+ nDots = 0;
+ nDashes = 1;
+ nDashLen = ( 4 * nLineWidth ) / 360;
+ }
+ break;
+
+ case mso_lineDashDotGEL :
+ {
+ nDots = 1;
+ nDashes = 1;
+ nDashLen = ( 4 * nLineWidth ) / 360;
+ }
+ break;
+
+ case mso_lineLongDashGEL :
+ {
+ nDots = 0;
+ nDashes = 1;
+ }
+ break;
+
+ case mso_lineLongDashDotGEL :
+ {
+ nDots = 1;
+ nDashes = 1;
+ }
+ break;
+
+ case mso_lineLongDashDotDotGEL:
+ {
+ nDots = 2;
+ nDashes = 1;
+ }
+ break;
+ }
+
+ rSet.Put( XLineDashItem( String(), XDash( eDash, nDots, nDotLen, nDashes, nDashLen, nDistance ) ) );
+ rSet.Put( XLineStyleItem( XLINE_DASH ) );
+ }
+ rSet.Put( XLineColorItem( String(), rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_lineColor ), DFF_Prop_lineColor ) ) );
+ if ( IsProperty( DFF_Prop_lineOpacity ) )
+ {
+ double nTrans = GetPropertyValue(DFF_Prop_lineOpacity, 0x10000);
+ nTrans = (nTrans * 100) / 65536;
+ rSet.Put(XLineTransparenceItem(
+ sal_uInt16(100 - ::rtl::math::round(nTrans))));
+ }
+
+ rManager.ScaleEmu( nLineWidth );
+ rSet.Put( XLineWidthItem( nLineWidth ) );
+
+ // SJ: LineJoint (setting each time a line is set, because our internal joint type has another default)
+ MSO_LineJoin eLineJointDefault = mso_lineJoinMiter;
+ if ( eShapeType == mso_sptMin )
+ eLineJointDefault = mso_lineJoinRound;
+ MSO_LineJoin eLineJoint = (MSO_LineJoin)GetPropertyValue( DFF_Prop_lineJoinStyle, eLineJointDefault );
+ XLineJoint eXLineJoint( XLINEJOINT_MITER );
+ if ( eLineJoint == mso_lineJoinBevel )
+ eXLineJoint = XLINEJOINT_BEVEL;
+ else if ( eLineJoint == mso_lineJoinRound )
+ eXLineJoint = XLINEJOINT_ROUND;
+ rSet.Put( XLineJointItem( eXLineJoint ) );
+
+ if ( nLineFlags & 0x10 )
+ {
+ sal_Bool bScaleArrows = rManager.pSdrModel->GetScaleUnit() == MAP_TWIP;
+ ///////////////
+ // LineStart //
+ ///////////////
+ if ( IsProperty( DFF_Prop_lineStartArrowhead ) )
+ {
+ MSO_LineEnd eLineEnd = (MSO_LineEnd)GetPropertyValue( DFF_Prop_lineStartArrowhead );
+ MSO_LineEndWidth eWidth = (MSO_LineEndWidth)GetPropertyValue( DFF_Prop_lineStartArrowWidth, mso_lineMediumWidthArrow );
+ MSO_LineEndLength eLenght = (MSO_LineEndLength)GetPropertyValue( DFF_Prop_lineStartArrowLength, mso_lineMediumLenArrow );
+
+ sal_Int32 nArrowWidth;
+ sal_Bool bArrowCenter;
+ String aArrowName;
+ basegfx::B2DPolygon aPoly(GetLineArrow( nLineWidth, eLineEnd, eWidth, eLenght, nArrowWidth, bArrowCenter, aArrowName, bScaleArrows ));
+
+ rSet.Put( XLineStartWidthItem( nArrowWidth ) );
+ rSet.Put( XLineStartItem( aArrowName, basegfx::B2DPolyPolygon(aPoly) ) );
+ rSet.Put( XLineStartCenterItem( bArrowCenter ) );
+ }
+ /////////////
+ // LineEnd //
+ /////////////
+ if ( IsProperty( DFF_Prop_lineEndArrowhead ) )
+ {
+ MSO_LineEnd eLineEnd = (MSO_LineEnd)GetPropertyValue( DFF_Prop_lineEndArrowhead );
+ MSO_LineEndWidth eWidth = (MSO_LineEndWidth)GetPropertyValue( DFF_Prop_lineEndArrowWidth, mso_lineMediumWidthArrow );
+ MSO_LineEndLength eLenght = (MSO_LineEndLength)GetPropertyValue( DFF_Prop_lineEndArrowLength, mso_lineMediumLenArrow );
+
+ sal_Int32 nArrowWidth;
+ sal_Bool bArrowCenter;
+ String aArrowName;
+ basegfx::B2DPolygon aPoly(GetLineArrow( nLineWidth, eLineEnd, eWidth, eLenght, nArrowWidth, bArrowCenter, aArrowName, bScaleArrows ));
+
+ rSet.Put( XLineEndWidthItem( nArrowWidth ) );
+ rSet.Put( XLineEndItem( aArrowName, basegfx::B2DPolyPolygon(aPoly) ) );
+ rSet.Put( XLineEndCenterItem( bArrowCenter ) );
+ }
+ if ( IsProperty( DFF_Prop_lineEndCapStyle ) )
+ {
+ MSO_LineCap eLineCap = (MSO_LineCap)GetPropertyValue( DFF_Prop_lineEndCapStyle );
+ const SfxPoolItem* pPoolItem = NULL;
+ if ( rSet.GetItemState( XATTR_LINEDASH, FALSE, &pPoolItem ) == SFX_ITEM_SET )
+ {
+ XDashStyle eNewStyle = XDASH_RECT;
+ if ( eLineCap == mso_lineEndCapRound )
+ eNewStyle = XDASH_ROUND;
+ const XDash& rOldDash = ( (const XLineDashItem*)pPoolItem )->GetDashValue();
+ if ( rOldDash.GetDashStyle() != eNewStyle )
+ {
+ XDash aNew( rOldDash );
+ aNew.SetDashStyle( eNewStyle );
+ rSet.Put( XLineDashItem( XubString(), aNew ) );
+ }
+ }
+ }
+ }
+ }
+ else
+ rSet.Put( XLineStyleItem( XLINE_NONE ) );
+}
+
+struct ShadeColor
+{
+ Color aColor;
+ double fDist;
+
+ ShadeColor( const Color& rC, double fR ) : aColor( rC ), fDist( fR ) {};
+};
+
+void GetShadeColors( const SvxMSDffManager& rManager, const DffPropertyReader& rProperties, SvStream& rIn, std::vector< ShadeColor >& rShadeColors )
+{
+ sal_uInt32 nPos = rIn.Tell();
+ if ( rProperties.IsProperty( DFF_Prop_fillShadeColors ) )
+ {
+ if ( rProperties.SeekToContent( DFF_Prop_fillShadeColors, rIn ) )
+ {
+ sal_uInt16 i = 0, nNumElem = 0, nNumElemReserved = 0, nSize = 0;
+ rIn >> nNumElem >> nNumElemReserved >> nSize;
+ for ( ; i < nNumElem; i++ )
+ {
+ sal_Int32 nColor;
+ sal_Int32 nDist;
+
+ rIn >> nColor >> nDist;
+ rShadeColors.push_back( ShadeColor( rManager.MSO_CLR_ToColor( nColor, DFF_Prop_fillColor ), 1.0 - ( nDist / 65536.0 ) ) );
+ }
+ }
+ }
+ if ( !rShadeColors.size() )
+ {
+ rShadeColors.push_back( ShadeColor( rManager.MSO_CLR_ToColor( rProperties.GetPropertyValue( DFF_Prop_fillBackColor, COL_WHITE ), DFF_Prop_fillBackColor ), 0 ) );
+ rShadeColors.push_back( ShadeColor( rManager.MSO_CLR_ToColor( rProperties.GetPropertyValue( DFF_Prop_fillColor, COL_WHITE ), DFF_Prop_fillColor ), 1 ) );
+ }
+ rIn.Seek( nPos );
+}
+
+struct QuantErr
+{
+ double fRed;
+ double fGreen;
+ double fBlue;
+
+ QuantErr() : fRed( 0.0 ), fGreen( 0.0 ), fBlue( 0.0 ){};
+};
+
+void ApplyRectangularGradientAsBitmap( const SvxMSDffManager& rManager, SvStream& rIn, SfxItemSet& rSet, const std::vector< ShadeColor >& rShadeColors, const DffObjData& rObjData, sal_Int32 nFix16Angle )
+{
+ Size aBitmapSizePixel( static_cast< sal_Int32 >( ( rObjData.aBoundRect.GetWidth() / 2540.0 ) * 90.0 ), // we will create a bitmap with 90 dpi
+ static_cast< sal_Int32 >( ( rObjData.aBoundRect.GetHeight() / 2540.0 ) * 90.0 ) );
+ if ( aBitmapSizePixel.Width() && aBitmapSizePixel.Height() && ( aBitmapSizePixel.Width() <= 1024 ) && ( aBitmapSizePixel.Height() <= 1024 ) )
+ {
+// std::vector< QuantErr > aQuantErrCurrScan( aBitmapSizePixel.Width() + 1 );
+// std::vector< QuantErr > aQuantErrNextScan( aBitmapSizePixel.Width() + 1 );
+
+ double fFocusX = rManager.GetPropertyValue( DFF_Prop_fillToRight, 0 ) / 65536.0;
+ double fFocusY = rManager.GetPropertyValue( DFF_Prop_fillToBottom, 0 ) / 65536.0;
+
+ Bitmap aBitmap( aBitmapSizePixel, 24 );
+ BitmapWriteAccess* pAcc = aBitmap.AcquireWriteAccess();
+ if ( pAcc )
+ {
+ sal_Int32 nX, nY;
+ for ( nY = 0; nY < aBitmapSizePixel.Height(); nY++ )
+ {
+ for ( nX = 0; nX < aBitmapSizePixel.Width(); nX++ )
+ {
+ double fX = static_cast< double >( nX ) / aBitmapSizePixel.Width();
+ double fY = static_cast< double >( nY ) / aBitmapSizePixel.Height();
+
+ double fD, fDist;
+ if ( fX < fFocusX )
+ {
+ if ( fY < fFocusY )
+ {
+ if ( fX > fY )
+ fDist = fY, fD = fFocusY;
+ else
+ fDist = fX, fD = fFocusX;
+ }
+ else
+ {
+ if ( fX > ( 1 - fY ) )
+ fDist = ( 1 - fY ), fD = 1 - fFocusY;
+ else
+ fDist = fX, fD = fFocusX;
+ }
+ }
+ else
+ {
+ if ( fY < fFocusY )
+ {
+ if ( ( 1 - fX ) > fY )
+ fDist = fY, fD = fFocusY;
+ else
+ fDist = ( 1 - fX ), fD = 1 - fFocusX;
+ }
+ else
+ {
+ if ( ( 1 - fX ) > ( 1 - fY ) )
+ fDist = ( 1 - fY ), fD = 1 - fFocusY;
+ else
+ fDist = ( 1 - fX ), fD = 1 - fFocusX;
+ }
+ }
+ if ( fD != 0.0 )
+ fDist /= fD;
+
+ std::vector< ShadeColor >::const_iterator aIter( rShadeColors.begin() );
+ double fA = 0.0;
+ Color aColorA = aIter->aColor;
+ double fB = 1.0;
+ Color aColorB( aColorA );
+ while ( aIter != rShadeColors.end() )
+ {
+ if ( aIter->fDist <= fDist )
+ {
+ if ( aIter->fDist >= fA )
+ {
+ fA = aIter->fDist;
+ aColorA = aIter->aColor;
+ }
+ }
+ if ( aIter->fDist > fDist )
+ {
+ if ( aIter->fDist <= fB )
+ {
+ fB = aIter->fDist;
+ aColorB = aIter->aColor;
+ }
+ }
+ aIter++;
+ }
+ double fRed = aColorA.GetRed(), fGreen = aColorA.GetGreen(), fBlue = aColorA.GetBlue();
+ double fD1 = fB - fA;
+ if ( fD1 != 0.0 )
+ {
+ fRed += ( ( ( fDist - fA ) * ( aColorB.GetRed() - aColorA.GetRed() ) ) / fD1 ); // + aQuantErrCurrScan[ nX ].fRed;
+ fGreen += ( ( ( fDist - fA ) * ( aColorB.GetGreen() - aColorA.GetGreen() ) ) / fD1 ); // + aQuantErrCurrScan[ nX ].fGreen;
+ fBlue += ( ( ( fDist - fA ) * ( aColorB.GetBlue() - aColorA.GetBlue() ) ) / fD1 ); // + aQuantErrCurrScan[ nX ].fBlue;
+ }
+ sal_Int16 nRed = static_cast< sal_Int16 >( fRed + 0.5 );
+ sal_Int16 nGreen = static_cast< sal_Int16 >( fGreen + 0.5 );
+ sal_Int16 nBlue = static_cast< sal_Int16 >( fBlue + 0.5 );
+/*
+ double fErr = fRed - nRed;
+ aQuantErrCurrScan[ nX + 1 ].fRed += 7.0 * fErr / 16.0;
+ if ( nX )
+ aQuantErrNextScan[ nX - 1 ].fRed += 3.0 * fErr / 16.0;
+ aQuantErrNextScan[ nX ].fRed += 5.0 * fErr / 16.0;
+ aQuantErrNextScan[ nX + 1 ].fRed += 1.0 * fErr / 16.0;
+
+ fErr = fGreen - nGreen;
+ aQuantErrCurrScan[ nX + 1 ].fGreen += 7.0 * fErr / 16.0;
+ if ( nX )
+ aQuantErrNextScan[ nX - 1 ].fGreen += 3.0 * fErr / 16.0;
+ aQuantErrNextScan[ nX ].fGreen += 5.0 * fErr / 16.0;
+ aQuantErrNextScan[ nX + 1 ].fGreen += 1.0 * fErr / 16.0;
+
+ fErr = fBlue - nBlue;
+ aQuantErrCurrScan[ nX + 1 ].fBlue += 7.0 * fErr / 16.0;
+ if ( nX )
+ aQuantErrNextScan[ nX - 1 ].fBlue += 3.0 * fErr / 16.0;
+ aQuantErrNextScan[ nX ].fBlue += 5.0 * fErr / 16.0;
+ aQuantErrNextScan[ nX + 1 ].fBlue += 1.0 * fErr / 16.0;
+*/
+ if ( nRed < 0 )
+ nRed = 0;
+ if ( nRed > 255 )
+ nRed = 255;
+ if ( nGreen < 0 )
+ nGreen = 0;
+ if ( nGreen > 255 )
+ nGreen = 255;
+ if ( nBlue < 0 )
+ nBlue = 0;
+ if ( nBlue > 255 )
+ nBlue = 255;
+
+ pAcc->SetPixel( nY, nX, BitmapColor( static_cast< sal_Int8 >( nRed ), static_cast< sal_Int8 >( nGreen ), static_cast< sal_Int8 >( nBlue ) ) );
+ }
+/*
+ aQuantErrCurrScan.swap( aQuantErrNextScan );
+ std::vector< QuantErr >::iterator aIter( aQuantErrNextScan.begin() );
+ while( aIter != aQuantErrNextScan.end() )
+ {
+ *aIter = QuantErr();
+ aIter++;
+ }
+*/
+ }
+ aBitmap.ReleaseAccess( pAcc );
+
+ if ( nFix16Angle )
+ {
+ sal_Bool bRotateWithShape = sal_True; // TRUE seems to be default
+ sal_uInt32 nPos = rIn.Tell();
+ if ( const_cast< SvxMSDffManager& >( rManager ).maShapeRecords.SeekToContent( rIn, DFF_msofbtUDefProp, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ const_cast< SvxMSDffManager& >( rManager ).maShapeRecords.Current()->SeekToBegOfRecord( rIn );
+ DffPropertyReader aSecPropSet( rManager );
+ aSecPropSet.ReadPropSet( rIn, NULL );
+ sal_Int32 nSecFillProperties = aSecPropSet.GetPropertyValue( DFF_Prop_fNoFillHitTest, 0x200020 );
+ bRotateWithShape = ( nSecFillProperties & 0x0020 );
+ }
+ rIn.Seek( nPos );
+ if ( bRotateWithShape )
+ {
+ aBitmap.Rotate( nFix16Angle / 10, rShadeColors[ 0 ].aColor );
+
+ ULONG nMirrorFlags = BMP_MIRROR_NONE;
+ if ( rObjData.nSpFlags & SP_FFLIPV )
+ nMirrorFlags |= BMP_MIRROR_VERT;
+ if ( rObjData.nSpFlags & SP_FFLIPH )
+ nMirrorFlags |= BMP_MIRROR_HORZ;
+ if ( nMirrorFlags != BMP_MIRROR_NONE )
+ aBitmap.Mirror( nMirrorFlags );
+ }
+ }
+
+ XOBitmap aXBmp( aBitmap, XBITMAP_STRETCH );
+ rSet.Put( XFillBmpTileItem( sal_False ) );
+ rSet.Put( XFillBitmapItem( String(), aXBmp ) );
+ }
+ }
+}
+
+void DffPropertyReader::ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const
+{
+ UINT32 nFillFlags(GetPropertyValue( DFF_Prop_fNoFillHitTest ));
+
+ std::vector< ShadeColor > aShadeColors;
+ GetShadeColors( rManager, *this, rIn, aShadeColors );
+
+ if(!IsHardAttribute( DFF_Prop_fFilled ) && !IsCustomShapeFilledByDefault( rObjData.eShapeType ))
+ {
+ nFillFlags &= ~0x10;
+ }
+
+ if ( nFillFlags & 0x10 )
+ {
+ MSO_FillType eMSO_FillType = (MSO_FillType)GetPropertyValue( DFF_Prop_fillType, mso_fillSolid );
+ XFillStyle eXFill = XFILL_NONE;
+ switch( eMSO_FillType )
+ {
+ case mso_fillSolid : // Fill with a solid color
+ eXFill = XFILL_SOLID;
+ break;
+ case mso_fillPattern : // Fill with a pattern (bitmap)
+ case mso_fillTexture : // A texture (pattern with its own color map)
+ case mso_fillPicture : // Center a picture in the shape
+ eXFill = XFILL_BITMAP;
+ break;
+ case mso_fillShadeCenter : // Shade from bounding rectangle to end point
+ {
+ if ( rObjData.aBoundRect.IsEmpty() )// size of object needed to be able
+ eXFill = XFILL_GRADIENT; // to create a bitmap substitution
+ else
+ eXFill = XFILL_BITMAP;
+ }
+ break;
+ case mso_fillShade : // Shade from start to end points
+ case mso_fillShadeShape : // Shade from shape outline to end point
+ case mso_fillShadeScale : // Similar to mso_fillShade, but the fillAngle
+ case mso_fillShadeTitle : // special type - shade to title --- for PP
+ eXFill = XFILL_GRADIENT;
+ break;
+// case mso_fillBackground : // Use the background fill color/pattern
+ default: break;
+ }
+ rSet.Put( XFillStyleItem( eXFill ) );
+
+ if (IsProperty(DFF_Prop_fillOpacity))
+ {
+ double nTrans = GetPropertyValue(DFF_Prop_fillOpacity);
+ nTrans = (nTrans * 100) / 65536;
+ rSet.Put(XFillTransparenceItem(
+ sal_uInt16(100 - ::rtl::math::round(nTrans))));
+ }
+
+ if ( ( eMSO_FillType == mso_fillShadeCenter ) && ( eXFill == XFILL_BITMAP ) )
+ {
+ ApplyRectangularGradientAsBitmap( rManager, rIn, rSet, aShadeColors, rObjData, mnFix16Angle );
+ }
+ else if ( eXFill == XFILL_GRADIENT )
+ {
+ sal_Int32 nAngle = 3600 - ( ( Fix16ToAngle( GetPropertyValue( DFF_Prop_fillAngle, 0 ) ) + 5 ) / 10 );
+
+ // Rotationswinkel in Bereich zwingen
+ while ( nAngle >= 3600 )
+ nAngle -= 3600;
+ while ( nAngle < 0 )
+ nAngle += 3600;
+
+ sal_Int32 nFocus = GetPropertyValue( DFF_Prop_fillFocus, 0 );
+ XGradientStyle eGrad = XGRAD_LINEAR;
+ sal_Int32 nChgColors = 0;
+
+ if ( nFocus < 0 ) // Bei negativem Focus sind die Farben zu tauschen
+ {
+ nFocus =- nFocus;
+ nChgColors ^= 1;
+ }
+ if( nFocus > 40 && nFocus < 60 )
+ {
+ eGrad = XGRAD_AXIAL; // Besser gehts leider nicht
+ }
+
+ USHORT nFocusX = (USHORT)nFocus;
+ USHORT nFocusY = (USHORT)nFocus;
+
+ switch( eMSO_FillType )
+ {
+ case mso_fillShadeShape :
+ {
+ eGrad = XGRAD_RECT;
+ nFocusY = nFocusX = 50;
+ nChgColors ^= 1;
+ }
+ break;
+ case mso_fillShadeCenter :
+ {
+ eGrad = XGRAD_RECT;
+ nFocusX = ( IsProperty( DFF_Prop_fillToRight ) ) ? 100 : 0;
+ nFocusY = ( IsProperty( DFF_Prop_fillToBottom ) ) ? 100 : 0;
+ nChgColors ^= 1;
+ }
+ break;
+ default: break;
+ }
+ Color aCol1( rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillColor, COL_WHITE ), DFF_Prop_fillColor ) );
+ Color aCol2( rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillBackColor, COL_WHITE ), DFF_Prop_fillBackColor ) );
+
+ if ( nChgColors )
+ {
+ Color aZwi( aCol1 );
+ aCol1 = aCol2;
+ aCol2 = aZwi;
+ }
+ XGradient aGrad( aCol2, aCol1, eGrad, nAngle, nFocusX, nFocusY );
+ aGrad.SetStartIntens( 100 );
+ aGrad.SetEndIntens( 100 );
+ rSet.Put( XFillGradientItem( String(), aGrad ) );
+ }
+ else if ( eXFill == XFILL_BITMAP )
+ {
+ if( IsProperty( DFF_Prop_fillBlip ) )
+ {
+ Graphic aGraf;
+ // first try to get BLIP from cache
+ BOOL bOK = rManager.GetBLIP( GetPropertyValue( DFF_Prop_fillBlip ), aGraf, NULL );
+ // then try directly from stream (i.e. Excel chart hatches/bitmaps)
+ if ( !bOK )
+ bOK = SeekToContent( DFF_Prop_fillBlip, rIn ) && rManager.GetBLIPDirect( rIn, aGraf, NULL );
+ if ( bOK )
+ {
+ Bitmap aBmp( aGraf.GetBitmap() );
+
+ if ( eMSO_FillType == mso_fillPattern )
+ {
+ Color aCol1( COL_WHITE ), aCol2( COL_WHITE );
+ if ( IsProperty( DFF_Prop_fillColor ) )
+ aCol1 = rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillColor ), DFF_Prop_fillColor );
+ if ( IsProperty( DFF_Prop_fillBackColor ) )
+ aCol2 = rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillBackColor ), DFF_Prop_fillBackColor );
+
+ XOBitmap aXOBitmap;
+
+ // Bitmap einsetzen
+ aXOBitmap.SetBitmap( aBmp );
+ aXOBitmap.SetBitmapType( XBITMAP_IMPORT );
+
+ if( aBmp.GetSizePixel().Width() == 8 && aBmp.GetSizePixel().Height() == 8 && aBmp.GetColorCount() == 2)
+ {
+ aXOBitmap.Bitmap2Array();
+ aXOBitmap.SetBitmapType( XBITMAP_8X8 );
+ aXOBitmap.SetPixelSize( aBmp.GetSizePixel() );
+
+ if( aXOBitmap.GetBackgroundColor() == COL_BLACK )
+ {
+ aXOBitmap.SetPixelColor( aCol1 );
+ aXOBitmap.SetBackgroundColor( aCol2 );
+ }
+ else
+ {
+ aXOBitmap.SetPixelColor( aCol2 );
+ aXOBitmap.SetBackgroundColor( aCol1 );
+ }
+ }
+ rSet.Put( XFillBitmapItem( String(), aXOBitmap ) );
+ }
+ else if ( eMSO_FillType == mso_fillTexture )
+ {
+ XOBitmap aXBmp( aBmp, XBITMAP_STRETCH );
+ rSet.Put( XFillBmpTileItem( sal_True ) );
+ rSet.Put( XFillBitmapItem( String(), aXBmp ) );
+ rSet.Put( XFillBmpSizeXItem( GetPropertyValue( DFF_Prop_fillWidth, 0 ) / 360 ) );
+ rSet.Put( XFillBmpSizeYItem( GetPropertyValue( DFF_Prop_fillHeight, 0 ) / 360 ) );
+ rSet.Put( XFillBmpSizeLogItem( sal_True ) );
+ }
+ else
+ {
+ XOBitmap aXBmp( aBmp, XBITMAP_STRETCH );
+ rSet.Put( XFillBitmapItem( String(), aXBmp ) );
+ rSet.Put( XFillBmpTileItem( sal_False ) );
+ }
+ }
+ }
+ }
+ }
+ else
+ rSet.Put( XFillStyleItem( XFILL_NONE ) );
+}
+
+void DffPropertyReader::ApplyCustomShapeTextAttributes( SfxItemSet& rSet ) const
+{
+// sal_uInt32 nTextFlags = aTextObj.GetTextFlags();
+ sal_Bool bVerticalText = sal_False;
+ sal_Int32 nTextLeft = GetPropertyValue( DFF_Prop_dxTextLeft, 25 * 3600 ) / 360; // 0.25 cm (emu)
+ sal_Int32 nTextRight = GetPropertyValue( DFF_Prop_dxTextRight, 25 * 3600 ) / 360; // 0.25 cm (emu)
+ sal_Int32 nTextTop = GetPropertyValue( DFF_Prop_dyTextTop, 13 * 3600 ) / 360; // 0.13 cm (emu)
+ sal_Int32 nTextBottom = GetPropertyValue( DFF_Prop_dyTextBottom, 13 * 3600 ) /360; // 0.13 cm (emu)
+
+ SdrTextVertAdjust eTVA;
+ SdrTextHorzAdjust eTHA;
+
+ if ( IsProperty( DFF_Prop_txflTextFlow ) )
+ {
+ MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF );
+ switch( eTextFlow )
+ {
+ case mso_txflTtoBA : /* #68110# */ // Top to Bottom @-font, oben -> unten
+ case mso_txflTtoBN : // Top to Bottom non-@, oben -> unten
+ case mso_txflVertN : // Vertical, non-@, oben -> unten
+ bVerticalText = sal_True; // nTextRotationAngle += 27000;
+ break;
+ default: break;
+ }
+ }
+ sal_Int32 nFontDirection = GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 );
+ if ( ( nFontDirection == 1 ) || ( nFontDirection == 3 ) )
+ bVerticalText = !bVerticalText;
+
+ if ( bVerticalText )
+ {
+ eTVA = SDRTEXTVERTADJUST_BLOCK;
+ eTHA = SDRTEXTHORZADJUST_CENTER;
+
+ // Textverankerung lesen
+ MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop );
+
+ switch( eTextAnchor )
+ {
+ case mso_anchorTop:
+ case mso_anchorTopCentered:
+ case mso_anchorTopBaseline:
+ case mso_anchorTopCenteredBaseline:
+ eTHA = SDRTEXTHORZADJUST_RIGHT;
+ break;
+
+ case mso_anchorMiddle :
+ case mso_anchorMiddleCentered:
+ eTHA = SDRTEXTHORZADJUST_CENTER;
+ break;
+
+ case mso_anchorBottom:
+ case mso_anchorBottomCentered:
+ case mso_anchorBottomBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ eTHA = SDRTEXTHORZADJUST_LEFT;
+ break;
+ }
+ // if there is a 100% use of following attributes, the textbox can been aligned also in vertical direction
+ switch ( eTextAnchor )
+ {
+ case mso_anchorTopCentered :
+ case mso_anchorMiddleCentered :
+ case mso_anchorBottomCentered :
+ case mso_anchorTopCenteredBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ eTVA = SDRTEXTVERTADJUST_CENTER;
+ break;
+
+ default :
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ break;
+ }
+ }
+ else
+ {
+ eTVA = SDRTEXTVERTADJUST_CENTER;
+ eTHA = SDRTEXTHORZADJUST_BLOCK;
+
+ // Textverankerung lesen
+ MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop );
+
+ switch( eTextAnchor )
+ {
+ case mso_anchorTop:
+ case mso_anchorTopCentered:
+ case mso_anchorTopBaseline:
+ case mso_anchorTopCenteredBaseline:
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ break;
+
+ case mso_anchorMiddle :
+ case mso_anchorMiddleCentered:
+ eTVA = SDRTEXTVERTADJUST_CENTER;
+ break;
+
+ case mso_anchorBottom:
+ case mso_anchorBottomCentered:
+ case mso_anchorBottomBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ break;
+ }
+ // if there is a 100% usage of following attributes, the textbox can be aligned also in horizontal direction
+ switch ( eTextAnchor )
+ {
+ case mso_anchorTopCentered :
+ case mso_anchorMiddleCentered :
+ case mso_anchorBottomCentered :
+ case mso_anchorTopCenteredBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ eTHA = SDRTEXTHORZADJUST_CENTER; // the text has to be displayed using the full width;
+ break;
+
+ default :
+ eTHA = SDRTEXTHORZADJUST_LEFT;
+ break;
+ }
+ }
+ rSet.Put( SvxFrameDirectionItem( bVerticalText ? FRMDIR_VERT_TOP_RIGHT : FRMDIR_HORI_LEFT_TOP, EE_PARA_WRITINGDIR ) );
+
+ rSet.Put( SdrTextVertAdjustItem( eTVA ) );
+ rSet.Put( SdrTextHorzAdjustItem( eTHA ) );
+
+ rSet.Put( SdrTextLeftDistItem( nTextLeft ) );
+ rSet.Put( SdrTextRightDistItem( nTextRight ) );
+ rSet.Put( SdrTextUpperDistItem( nTextTop ) );
+ rSet.Put( SdrTextLowerDistItem( nTextBottom ) );
+
+ rSet.Put( SdrTextWordWrapItem( (MSO_WrapMode)GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) != mso_wrapNone ? sal_True : sal_False ) );
+ rSet.Put( SdrTextAutoGrowHeightItem( ( GetPropertyValue( DFF_Prop_FitTextToShape ) & 2 ) != 0 ) );
+
+// rSet.Put( SdrTextAutoGrowWidthItem( (MSO_WrapMode)GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) != mso_wrapNone ? sal_False : sal_True ) );
+// rSet.Put( SdrTextAutoGrowHeightItem( ( GetPropertyValue( DFF_Prop_FitTextToShape ) & 2 ) != 0 ) );
+}
+
+void DffPropertyReader::ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const
+{
+
+ sal_uInt32 nAdjustmentsWhichNeedsToBeConverted = 0;
+
+ ///////////////////////////////////////
+ // creating SdrCustomShapeGeometryItem //
+ ///////////////////////////////////////
+ typedef uno::Sequence< beans::PropertyValue > PropSeq;
+ typedef std::vector< beans::PropertyValue > PropVec;
+ typedef PropVec::iterator PropVecIter;
+ PropVecIter aIter;
+ PropVecIter aEnd;
+
+
+ // aPropVec will be filled with all PropertyValues
+ PropVec aPropVec;
+ PropertyValue aProp;
+
+ /////////////////////////////////////////////////////////////////////
+ // "Type" property, including the predefined CustomShape type name //
+ /////////////////////////////////////////////////////////////////////
+ const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
+ aProp.Name = sType;
+ aProp.Value <<= EnhancedCustomShapeTypeNames::Get( rObjData.eShapeType );
+ aPropVec.push_back( aProp );
+
+/*
+ /////////////////
+ // "MirroredX" //
+ /////////////////
+ if ( nShapeFlags & SP_FFLIPH )
+ {
+ const rtl::OUString sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
+ sal_Bool bMirroredX = sal_True;
+ aProp.Name = sMirroredX;
+ aProp.Value <<= bMirroredX;
+ aPropVec.push_back( aProp );
+ }
+ /////////////////
+ // "MirroredY" //
+ /////////////////
+ if ( nShapeFlags & SP_FFLIPV )
+ {
+ const rtl::OUString sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
+ sal_Bool bMirroredY = sal_True;
+ aProp.Name = sMirroredY;
+ aProp.Value <<= bMirroredY;
+ aPropVec.push_back( aProp );
+ }
+*/
+ ///////////////
+ // "ViewBox" //
+ ///////////////
+
+ sal_Int32 nCoordWidth = 21600; // needed to replace handle type center with absolute value
+ sal_Int32 nCoordHeight= 21600;
+ if ( IsProperty( DFF_Prop_geoLeft ) || IsProperty( DFF_Prop_geoTop ) || IsProperty( DFF_Prop_geoRight ) || IsProperty( DFF_Prop_geoBottom ) )
+ {
+ com::sun::star::awt::Rectangle aViewBox;
+ const rtl::OUString sViewBox( RTL_CONSTASCII_USTRINGPARAM ( "ViewBox" ) );
+ aViewBox.X = GetPropertyValue( DFF_Prop_geoLeft, 0 );
+ aViewBox.Y = GetPropertyValue( DFF_Prop_geoTop, 0 );
+ aViewBox.Width = nCoordWidth = ((sal_Int32)GetPropertyValue( DFF_Prop_geoRight, 21600 ) ) - aViewBox.X;
+ aViewBox.Height = nCoordHeight = ((sal_Int32)GetPropertyValue( DFF_Prop_geoBottom, 21600 ) ) - aViewBox.Y;
+ aProp.Name = sViewBox;
+ aProp.Value <<= aViewBox;
+ aPropVec.push_back( aProp );
+ }
+ /////////////////////
+ // TextRotateAngle //
+ /////////////////////
+ if ( IsProperty( DFF_Prop_txflTextFlow ) || IsProperty( DFF_Prop_cdirFont ) )
+ {
+ sal_Int32 nTextRotateAngle = 0;
+ MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF );
+/* sal_Int32 nFontDirection = GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 ); */
+
+ if ( eTextFlow == mso_txflBtoT ) // Bottom to Top non-@, unten -> oben
+ nTextRotateAngle += 90;
+ switch( GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 ) ) // SJ: mso_cdir90 and mso_cdir270 will be simulated by
+ { // activating vertical writing for the text objects
+ case mso_cdir90 :
+ {
+ if ( eTextFlow == mso_txflTtoBA )
+ nTextRotateAngle -= 180;
+ }
+ break;
+ case mso_cdir180: nTextRotateAngle -= 180; break;
+ case mso_cdir270:
+ {
+ if ( eTextFlow != mso_txflTtoBA )
+ nTextRotateAngle -= 180;
+ }
+ break;
+ default: break;
+ }
+ if ( nTextRotateAngle )
+ {
+ double fTextRotateAngle = nTextRotateAngle;
+ const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextRotateAngle" ) );
+ aProp.Name = sTextRotateAngle;
+ aProp.Value <<= fTextRotateAngle;
+ aPropVec.push_back( aProp );
+ }
+ }
+ //////////////////////////////////////////
+ // "Extrusion" PropertySequence element //
+ //////////////////////////////////////////
+ sal_Bool bExtrusionOn = ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 8 ) != 0;
+ if ( bExtrusionOn )
+ {
+ PropVec aExtrusionPropVec;
+
+ // "Extrusion"
+ const rtl::OUString sExtrusionOn( RTL_CONSTASCII_USTRINGPARAM ( "Extrusion" ) );
+ aProp.Name = sExtrusionOn;
+ aProp.Value <<= bExtrusionOn;
+ aExtrusionPropVec.push_back( aProp );
+
+ // "Brightness"
+ if ( IsProperty( DFF_Prop_c3DAmbientIntensity ) )
+ {
+ const rtl::OUString sExtrusionBrightness( RTL_CONSTASCII_USTRINGPARAM ( "Brightness" ) );
+ double fBrightness = (sal_Int32)GetPropertyValue( DFF_Prop_c3DAmbientIntensity );
+ fBrightness /= 655.36;
+ aProp.Name = sExtrusionBrightness;
+ aProp.Value <<= fBrightness;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "Depth" in 1/100mm
+ if ( IsProperty( DFF_Prop_c3DExtrudeBackward ) || IsProperty( DFF_Prop_c3DExtrudeForward ) )
+ {
+ const rtl::OUString sDepth( RTL_CONSTASCII_USTRINGPARAM ( "Depth" ) );
+ double fBackDepth = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DExtrudeBackward, 1270 * 360 )) / 360.0;
+ double fForeDepth = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DExtrudeForward ), 0 ) / 360.0;
+ double fDepth = fBackDepth + fForeDepth;
+ double fFraction = fDepth != 0.0 ? fForeDepth / fDepth : 0;
+ EnhancedCustomShapeParameterPair aDepthParaPair;
+ aDepthParaPair.First.Value <<= fDepth;
+ aDepthParaPair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aDepthParaPair.Second.Value <<= fFraction;
+ aDepthParaPair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aProp.Name = sDepth;
+ aProp.Value <<= aDepthParaPair;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "Diffusion"
+ if ( IsProperty( DFF_Prop_c3DDiffuseAmt ) )
+ {
+ const rtl::OUString sExtrusionDiffusion( RTL_CONSTASCII_USTRINGPARAM ( "Diffusion" ) );
+ double fDiffusion = (sal_Int32)GetPropertyValue( DFF_Prop_c3DDiffuseAmt );
+ fDiffusion /= 655.36;
+ aProp.Name = sExtrusionDiffusion;
+ aProp.Value <<= fDiffusion;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "NumberOfLineSegments"
+ if ( IsProperty( DFF_Prop_c3DTolerance ) )
+ {
+ const rtl::OUString sExtrusionNumberOfLineSegments( RTL_CONSTASCII_USTRINGPARAM ( "NumberOfLineSegments" ) );
+ aProp.Name = sExtrusionNumberOfLineSegments;
+ aProp.Value <<= (sal_Int32)GetPropertyValue( DFF_Prop_c3DTolerance );
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "LightFace"
+ const rtl::OUString sExtrusionLightFace( RTL_CONSTASCII_USTRINGPARAM ( "LightFace" ) );
+ sal_Bool bExtrusionLightFace = ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 1 ) != 0;
+ aProp.Name = sExtrusionLightFace;
+ aProp.Value <<= bExtrusionLightFace;
+ aExtrusionPropVec.push_back( aProp );
+ // "FirstLightHarsh"
+ const rtl::OUString sExtrusionFirstLightHarsh( RTL_CONSTASCII_USTRINGPARAM ( "FirstLightHarsh" ) );
+ sal_Bool bExtrusionFirstLightHarsh = ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 2 ) != 0;
+ aProp.Name = sExtrusionFirstLightHarsh;
+ aProp.Value <<= bExtrusionFirstLightHarsh;
+ aExtrusionPropVec.push_back( aProp );
+ // "SecondLightHarsh"
+ const rtl::OUString sExtrusionSecondLightHarsh( RTL_CONSTASCII_USTRINGPARAM ( "SecondLightHarsh" ) );
+ sal_Bool bExtrusionSecondLightHarsh = ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 1 ) != 0;
+ aProp.Name = sExtrusionSecondLightHarsh;
+ aProp.Value <<= bExtrusionSecondLightHarsh;
+ aExtrusionPropVec.push_back( aProp );
+ // "FirstLightLevel"
+ if ( IsProperty( DFF_Prop_c3DKeyIntensity ) )
+ {
+ const rtl::OUString sExtrusionFirstLightLevel( RTL_CONSTASCII_USTRINGPARAM ( "FirstLightLevel" ) );
+ double fFirstLightLevel = (sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyIntensity );
+ fFirstLightLevel /= 655.36;
+ aProp.Name = sExtrusionFirstLightLevel;
+ aProp.Value <<= fFirstLightLevel;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "SecondLightLevel"
+ if ( IsProperty( DFF_Prop_c3DFillIntensity ) )
+ {
+ const rtl::OUString sExtrusionSecondLightLevel( RTL_CONSTASCII_USTRINGPARAM ( "SecondLightLevel" ) );
+ double fSecondLightLevel = (sal_Int32)GetPropertyValue( DFF_Prop_c3DFillIntensity );
+ fSecondLightLevel /= 655.36;
+ aProp.Name = sExtrusionSecondLightLevel;
+ aProp.Value <<= fSecondLightLevel;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "FirtstLightDirection"
+ if ( IsProperty( DFF_Prop_c3DKeyX ) || IsProperty( DFF_Prop_c3DKeyY ) || IsProperty( DFF_Prop_c3DKeyZ ) )
+ {
+ double fLightX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyX, 50000 ));
+ double fLightY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyY, 0 ));
+ double fLightZ = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DKeyZ, 10000 ));
+ ::com::sun::star::drawing::Direction3D aExtrusionFirstLightDirection( fLightX, fLightY, fLightZ );
+ const rtl::OUString sExtrusionFirstLightDirection( RTL_CONSTASCII_USTRINGPARAM ( "FirstLightDirection" ) );
+ aProp.Name = sExtrusionFirstLightDirection;
+ aProp.Value <<= aExtrusionFirstLightDirection;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "SecondLightDirection"
+ if ( IsProperty( DFF_Prop_c3DFillX ) || IsProperty( DFF_Prop_c3DFillY ) || IsProperty( DFF_Prop_c3DFillZ ) )
+ {
+ double fLight2X = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DFillX, (sal_uInt32)-50000 ));
+ double fLight2Y = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DFillY, 0 ));
+ double fLight2Z = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DFillZ, 10000 ));
+ ::com::sun::star::drawing::Direction3D aExtrusionSecondLightDirection( fLight2X, fLight2Y, fLight2Z );
+ const rtl::OUString sExtrusionSecondLightDirection( RTL_CONSTASCII_USTRINGPARAM ( "SecondLightDirection" ) );
+ aProp.Name = sExtrusionSecondLightDirection;
+ aProp.Value <<= aExtrusionSecondLightDirection;
+ aExtrusionPropVec.push_back( aProp );
+ }
+
+/* LockRotationCenter, OrientationAngle and Orientation needs to be converted to use the properties AngleX, AngleY and RotationAngle instead.
+ // "LockRotationCenter"
+ const rtl::OUString sExtrusionLockRotationCenter( RTL_CONSTASCII_USTRINGPARAM ( "LockRotationCenter" ) );
+ sal_Bool bExtrusionLockRotationCenter = ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 16 ) != 0;
+ aProp.Name = sExtrusionLockRotationCenter;
+ aProp.Value <<= bExtrusionLockRotationCenter;
+ aExtrusionPropVec.push_back( aProp );
+
+ // "Orientation"
+ if ( IsProperty( DFF_Prop_c3DRotationAxisX ) || IsProperty( DFF_Prop_c3DRotationAxisY ) || IsProperty( DFF_Prop_c3DRotationAxisZ ) )
+ {
+ double fRotX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAxisX, 100 ));
+ double fRotY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAxisY, 0 ));
+ double fRotZ = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAxisZ, 0 ));
+ ::com::sun::star::drawing::Direction3D aExtrusionDirection( fRotX, fRotY, fRotZ );
+ const rtl::OUString sExtrusionDirection( RTL_CONSTASCII_USTRINGPARAM ( "Orientation" ) );
+ aProp.Name = sExtrusionDirection;
+ aProp.Value <<= aExtrusionDirection;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "OrientationAngle" in Grad
+ if ( IsProperty( DFF_Prop_c3DRotationAngle ) )
+ {
+ const rtl::OUString sExtrusionOrientationAngle( RTL_CONSTASCII_USTRINGPARAM ( "OrientationAngle" ) );
+ double fOrientationAngle = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationAngle )) / 65536.0;
+ aProp.Name = sExtrusionOrientationAngle;
+ aProp.Value <<= fOrientationAngle;
+ aExtrusionPropVec.push_back( aProp );
+ }
+*/
+
+ // "Metal"
+ const rtl::OUString sExtrusionMetal( RTL_CONSTASCII_USTRINGPARAM ( "Metal" ) );
+ sal_Bool bExtrusionMetal = ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 4 ) != 0;
+ aProp.Name = sExtrusionMetal;
+ aProp.Value <<= bExtrusionMetal;
+ aExtrusionPropVec.push_back( aProp );
+// if ( IsProperty( DFF_Prop_c3DExtrudePlane ) )
+// {
+// UPS
+// }
+ // "ShadeMode"
+ if ( IsProperty( DFF_Prop_c3DRenderMode ) )
+ {
+ const rtl::OUString sExtrusionShadeMode( RTL_CONSTASCII_USTRINGPARAM ( "ShadeMode" ) );
+ sal_uInt32 nExtrusionRenderMode = GetPropertyValue( DFF_Prop_c3DRenderMode );
+ com::sun::star::drawing::ShadeMode eExtrusionShadeMode( com::sun::star::drawing::ShadeMode_FLAT );
+ if ( nExtrusionRenderMode == mso_Wireframe )
+ eExtrusionShadeMode = com::sun::star::drawing::ShadeMode_DRAFT;
+
+ aProp.Name = sExtrusionShadeMode;
+ aProp.Value <<= eExtrusionShadeMode;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "RotateAngle" in Grad
+ if ( IsProperty( DFF_Prop_c3DXRotationAngle ) || IsProperty( DFF_Prop_c3DYRotationAngle ) )
+ {
+ const rtl::OUString sExtrusionAngle( RTL_CONSTASCII_USTRINGPARAM ( "RotateAngle" ) );
+ double fAngleX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DXRotationAngle, 0 )) / 65536.0;
+ double fAngleY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DYRotationAngle, 0 )) / 65536.0;
+ EnhancedCustomShapeParameterPair aRotateAnglePair;
+ aRotateAnglePair.First.Value <<= fAngleX;
+ aRotateAnglePair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aRotateAnglePair.Second.Value <<= fAngleY;
+ aRotateAnglePair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aProp.Name = sExtrusionAngle;
+ aProp.Value <<= aRotateAnglePair;
+ aExtrusionPropVec.push_back( aProp );
+ }
+
+ // "AutoRotationCenter"
+ if ( ( GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 8 ) == 0 )
+ {
+ // "RotationCenter"
+ if ( IsProperty( DFF_Prop_c3DRotationCenterX ) || IsProperty( DFF_Prop_c3DRotationCenterY ) || IsProperty( DFF_Prop_c3DRotationCenterZ ) )
+ {
+ ::com::sun::star::drawing::Direction3D aRotationCenter(
+ (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationCenterX, 0 )) / 360.0,
+ (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationCenterY, 0 )) / 360.0,
+ (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DRotationCenterZ, 0 )) / 360.0 );
+
+ const rtl::OUString sExtrusionRotationCenter( RTL_CONSTASCII_USTRINGPARAM ( "RotationCenter" ) );
+ aProp.Name = sExtrusionRotationCenter;
+ aProp.Value <<= aRotationCenter;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ }
+ // "Shininess"
+ if ( IsProperty( DFF_Prop_c3DShininess ) )
+ {
+ const rtl::OUString sExtrusionShininess( RTL_CONSTASCII_USTRINGPARAM ( "Shininess" ) );
+ double fShininess = (sal_Int32)GetPropertyValue( DFF_Prop_c3DShininess );
+ fShininess /= 655.36;
+ aProp.Name = sExtrusionShininess;
+ aProp.Value <<= fShininess;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "Skew"
+ if ( IsProperty( DFF_Prop_c3DSkewAmount ) || IsProperty( DFF_Prop_c3DSkewAngle ) )
+ {
+ const rtl::OUString sExtrusionSkew( RTL_CONSTASCII_USTRINGPARAM ( "Skew" ) );
+ double fSkewAmount = (sal_Int32)GetPropertyValue( DFF_Prop_c3DSkewAmount, 50 );
+ double fSkewAngle = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DSkewAngle, sal::static_int_cast< UINT32 >(-135 * 65536) )) / 65536.0;
+
+ EnhancedCustomShapeParameterPair aSkewPair;
+ aSkewPair.First.Value <<= fSkewAmount;
+ aSkewPair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aSkewPair.Second.Value <<= fSkewAngle;
+ aSkewPair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aProp.Name = sExtrusionSkew;
+ aProp.Value <<= aSkewPair;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "Specularity"
+ if ( IsProperty( DFF_Prop_c3DSpecularAmt ) )
+ {
+ const rtl::OUString sExtrusionSpecularity( RTL_CONSTASCII_USTRINGPARAM ( "Specularity" ) );
+ double fSpecularity = (sal_Int32)GetPropertyValue( DFF_Prop_c3DSpecularAmt );
+ fSpecularity /= 1333;
+ aProp.Name = sExtrusionSpecularity;
+ aProp.Value <<= fSpecularity;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "ProjectionMode"
+ const rtl::OUString sExtrusionProjectionMode( RTL_CONSTASCII_USTRINGPARAM ( "ProjectionMode" ) );
+ ProjectionMode eProjectionMode = GetPropertyValue( DFF_Prop_fc3DFillHarsh ) & 4 ? ProjectionMode_PARALLEL : ProjectionMode_PERSPECTIVE;
+ aProp.Name = sExtrusionProjectionMode;
+ aProp.Value <<= eProjectionMode;
+ aExtrusionPropVec.push_back( aProp );
+
+ // "ViewPoint" in 1/100mm
+ if ( IsProperty( DFF_Prop_c3DXViewpoint ) || IsProperty( DFF_Prop_c3DYViewpoint ) || IsProperty( DFF_Prop_c3DZViewpoint ) )
+ {
+ double fViewX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DXViewpoint, 1249920 )) / 360.0;
+ double fViewY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DYViewpoint, (sal_uInt32)-1249920 ))/ 360.0;
+ double fViewZ = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DZViewpoint, 9000000 )) / 360.0;
+ ::com::sun::star::drawing::Position3D aExtrusionViewPoint( fViewX, fViewY, fViewZ );
+ const rtl::OUString sExtrusionViewPoint( RTL_CONSTASCII_USTRINGPARAM ( "ViewPoint" ) );
+ aProp.Name = sExtrusionViewPoint;
+ aProp.Value <<= aExtrusionViewPoint;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "Origin"
+ if ( IsProperty( DFF_Prop_c3DOriginX ) || IsProperty( DFF_Prop_c3DOriginY ) )
+ {
+ const rtl::OUString sExtrusionOrigin( RTL_CONSTASCII_USTRINGPARAM ( "Origin" ) );
+ double fOriginX = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DOriginX, 0 ));
+ double fOriginY = (double)((sal_Int32)GetPropertyValue( DFF_Prop_c3DOriginY, 0 ));
+ fOriginX /= 65536;
+ fOriginY /= 65536;
+ EnhancedCustomShapeParameterPair aOriginPair;
+ aOriginPair.First.Value <<= fOriginX;
+ aOriginPair.First.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aOriginPair.Second.Value <<= fOriginY;
+ aOriginPair.Second.Type = EnhancedCustomShapeParameterType::NORMAL;
+ aProp.Name = sExtrusionOrigin;
+ aProp.Value <<= aOriginPair;
+ aExtrusionPropVec.push_back( aProp );
+ }
+ // "ExtrusionColor"
+ const rtl::OUString sExtrusionColor( RTL_CONSTASCII_USTRINGPARAM ( "Color" ) );
+ sal_Bool bExtrusionColor = IsProperty( DFF_Prop_c3DExtrusionColor ); // ( GetPropertyValue( DFF_Prop_fc3DLightFace ) & 2 ) != 0;
+ aProp.Name = sExtrusionColor;
+ aProp.Value <<= bExtrusionColor;
+ aExtrusionPropVec.push_back( aProp );
+ if ( IsProperty( DFF_Prop_c3DExtrusionColor ) )
+ rSet.Put( XSecondaryFillColorItem( String(), rManager.MSO_CLR_ToColor(
+ GetPropertyValue( DFF_Prop_c3DExtrusionColor ), DFF_Prop_c3DExtrusionColor ) ) );
+ // pushing the whole Extrusion element
+ const rtl::OUString sExtrusion( RTL_CONSTASCII_USTRINGPARAM ( "Extrusion" ) );
+ PropSeq aExtrusionPropSeq( aExtrusionPropVec.size() );
+ aIter = aExtrusionPropVec.begin();
+ aEnd = aExtrusionPropVec.end();
+ beans::PropertyValue* pExtrusionValues = aExtrusionPropSeq.getArray();
+ while ( aIter != aEnd )
+ *pExtrusionValues++ = *aIter++;
+ aProp.Name = sExtrusion;
+ aProp.Value <<= aExtrusionPropSeq;
+ aPropVec.push_back( aProp );
+ }
+
+ /////////////////////////////////////////
+ // "Equations" PropertySequence element //
+ /////////////////////////////////////////
+ if ( IsProperty( DFF_Prop_pFormulas ) )
+ {
+ sal_uInt16 i;
+ sal_uInt16 nNumElem = 0;
+ sal_uInt16 nNumElemMem = 0;
+ sal_uInt16 nElemSize = 8;
+
+ if ( SeekToContent( DFF_Prop_pFormulas, rIn ) )
+ rIn >> nNumElem >> nNumElemMem >> nElemSize;
+
+ sal_Int16 nP1, nP2, nP3;
+ sal_uInt16 nFlags;
+
+ uno::Sequence< rtl::OUString > aEquations( nNumElem );
+ for ( i = 0; i < nNumElem; i++ )
+ {
+ rIn >> nFlags >> nP1 >> nP2 >> nP3;
+ aEquations[ i ] = EnhancedCustomShape2d::GetEquation( nFlags, nP1, nP2, nP3 );
+ }
+ // pushing the whole Equations element
+ const rtl::OUString sEquations( RTL_CONSTASCII_USTRINGPARAM ( "Equations" ) );
+ aProp.Name = sEquations;
+ aProp.Value <<= aEquations;
+ aPropVec.push_back( aProp );
+ }
+
+ ////////////////////////////////////////
+ // "Handles" PropertySequence element //
+ ////////////////////////////////////////
+ if ( IsProperty( DFF_Prop_Handles ) )
+ {
+ sal_uInt16 i;
+ sal_uInt16 nNumElem = 0;
+ sal_uInt16 nNumElemMem = 0;
+ sal_uInt16 nElemSize = 36;
+
+ if ( SeekToContent( DFF_Prop_Handles, rIn ) )
+ rIn >> nNumElem >> nNumElemMem >> nElemSize;
+ if ( nElemSize == 36 )
+ {
+ uno::Sequence< beans::PropertyValues > aHandles( nNumElem );
+ for ( i = 0; i < nNumElem; i++ )
+ {
+ PropVec aHandlePropVec;
+ sal_uInt32 nFlags;
+ sal_Int32 nPositionX, nPositionY, nCenterX, nCenterY, nRangeXMin, nRangeXMax, nRangeYMin, nRangeYMax;
+ rIn >> nFlags
+ >> nPositionX
+ >> nPositionY
+ >> nCenterX
+ >> nCenterY
+ >> nRangeXMin
+ >> nRangeXMax
+ >> nRangeYMin
+ >> nRangeYMax;
+
+ if ( nPositionX == 2 ) // replacing center position with absolute value
+ nPositionX = nCoordWidth / 2;
+ if ( nPositionY == 2 )
+ nPositionY = nCoordHeight / 2;
+ EnhancedCustomShapeParameterPair aPosition;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.First, nPositionX, sal_True, sal_True );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.Second, nPositionY, sal_True, sal_False );
+ const rtl::OUString sHandlePosition( RTL_CONSTASCII_USTRINGPARAM ( "Position" ) );
+ aProp.Name = sHandlePosition;
+ aProp.Value <<= aPosition;
+ aHandlePropVec.push_back( aProp );
+
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
+ {
+ sal_Bool bMirroredX = sal_True;
+ const rtl::OUString sHandleMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
+ aProp.Name = sHandleMirroredX;
+ aProp.Value <<= bMirroredX;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
+ {
+ sal_Bool bMirroredY = sal_True;
+ const rtl::OUString sHandleMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
+ aProp.Name = sHandleMirroredY;
+ aProp.Value <<= bMirroredY;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
+ {
+ sal_Bool bSwitched = sal_True;
+ const rtl::OUString sHandleSwitched( RTL_CONSTASCII_USTRINGPARAM ( "Switched" ) );
+ aProp.Name = sHandleSwitched;
+ aProp.Value <<= bSwitched;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
+ {
+ if ( nCenterX == 2 )
+ nCenterX = nCoordWidth / 2;
+ if ( nCenterY == 2 )
+ nCenterY = nCoordHeight / 2;
+ if ( ( nPositionY >= 0x256 ) || ( nPositionY <= 0x107 ) ) // position y
+ nAdjustmentsWhichNeedsToBeConverted |= ( 1 << i );
+ EnhancedCustomShapeParameterPair aPolar;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPolar.First, nCenterX, ( nFlags & 0x800 ) != 0, sal_True );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPolar.Second, nCenterY, ( nFlags & 0x1000 ) != 0, sal_False );
+ const rtl::OUString sHandlePolar( RTL_CONSTASCII_USTRINGPARAM ( "Polar" ) );
+ aProp.Name = sHandlePolar;
+ aProp.Value <<= aPolar;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MAP )
+ {
+ if ( nCenterX == 2 )
+ nCenterX = nCoordWidth / 2;
+ if ( nCenterY == 2 )
+ nCenterY = nCoordHeight / 2;
+ EnhancedCustomShapeParameterPair aMap;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aMap.First, nCenterX, ( nFlags & 0x800 ) != 0, sal_True );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aMap.Second, nCenterY, ( nFlags & 0x1000 ) != 0, sal_False );
+ const rtl::OUString sHandleMap( RTL_CONSTASCII_USTRINGPARAM ( "Map" ) );
+ aProp.Name = sHandleMap;
+ aProp.Value <<= aMap;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
+ {
+ if ( (sal_uInt32)nRangeXMin != 0x80000000 )
+ {
+ if ( nRangeXMin == 2 )
+ nRangeXMin = nCoordWidth / 2;
+ EnhancedCustomShapeParameter aRangeXMinimum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMinimum, nRangeXMin,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
+ const rtl::OUString sHandleRangeXMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMinimum" ) );
+ aProp.Name = sHandleRangeXMinimum;
+ aProp.Value <<= aRangeXMinimum;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( (sal_uInt32)nRangeXMax != 0x7fffffff )
+ {
+ if ( nRangeXMax == 2 )
+ nRangeXMax = nCoordWidth / 2;
+ EnhancedCustomShapeParameter aRangeXMaximum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMaximum, nRangeXMax,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
+ const rtl::OUString sHandleRangeXMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMaximum" ) );
+ aProp.Name = sHandleRangeXMaximum;
+ aProp.Value <<= aRangeXMaximum;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( (sal_uInt32)nRangeYMin != 0x80000000 )
+ {
+ if ( nRangeYMin == 2 )
+ nRangeYMin = nCoordHeight / 2;
+ EnhancedCustomShapeParameter aRangeYMinimum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMinimum, nRangeYMin,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL ) != 0, sal_True );
+ const rtl::OUString sHandleRangeYMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMinimum" ) );
+ aProp.Name = sHandleRangeYMinimum;
+ aProp.Value <<= aRangeYMinimum;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( (sal_uInt32)nRangeYMax != 0x7fffffff )
+ {
+ if ( nRangeYMax == 2 )
+ nRangeYMax = nCoordHeight / 2;
+ EnhancedCustomShapeParameter aRangeYMaximum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMaximum, nRangeYMax,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL ) != 0, sal_False );
+ const rtl::OUString sHandleRangeYMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMaximum" ) );
+ aProp.Name = sHandleRangeYMaximum;
+ aProp.Value <<= aRangeYMaximum;
+ aHandlePropVec.push_back( aProp );
+ }
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
+ {
+ if ( (sal_uInt32)nRangeXMin != 0x7fffffff )
+ {
+ if ( nRangeXMin == 2 )
+ nRangeXMin = nCoordWidth / 2;
+ EnhancedCustomShapeParameter aRadiusRangeMinimum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMinimum, nRangeXMin,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
+ const rtl::OUString sHandleRadiusRangeMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMinimum" ) );
+ aProp.Name = sHandleRadiusRangeMinimum;
+ aProp.Value <<= aRadiusRangeMinimum;
+ aHandlePropVec.push_back( aProp );
+ }
+ if ( (sal_uInt32)nRangeXMax != 0x80000000 )
+ {
+ if ( nRangeXMax == 2 )
+ nRangeXMax = nCoordWidth / 2;
+ EnhancedCustomShapeParameter aRadiusRangeMaximum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMaximum, nRangeXMax,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
+ const rtl::OUString sHandleRadiusRangeMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMaximum" ) );
+ aProp.Name = sHandleRadiusRangeMaximum;
+ aProp.Value <<= aRadiusRangeMaximum;
+ aHandlePropVec.push_back( aProp );
+ }
+ }
+ if ( aHandlePropVec.size() )
+ {
+ PropSeq aHandlePropSeq( aHandlePropVec.size() );
+ aIter = aHandlePropVec.begin();
+ aEnd = aHandlePropVec.end();
+ beans::PropertyValue* pHandleValues = aHandlePropSeq.getArray();
+ while ( aIter != aEnd )
+ *pHandleValues++ = *aIter++;
+ aHandles[ i ] = aHandlePropSeq;
+ }
+ }
+ // pushing the whole Handles element
+ const rtl::OUString sHandles( RTL_CONSTASCII_USTRINGPARAM ( "Handles" ) );
+ aProp.Name = sHandles;
+ aProp.Value <<= aHandles;
+ aPropVec.push_back( aProp );
+ }
+ }
+ else
+ {
+ const mso_CustomShape* pDefCustomShape = GetCustomShapeContent( rObjData.eShapeType );
+ if ( pDefCustomShape && pDefCustomShape->nHandles && pDefCustomShape->pHandles )
+ {
+ sal_Int32 i, nCnt = pDefCustomShape->nHandles;
+ const SvxMSDffHandle* pData = pDefCustomShape->pHandles;
+ for ( i = 0; i < nCnt; i++, pData++ )
+ {
+ if ( pData->nFlags & MSDFF_HANDLE_FLAGS_POLAR )
+ {
+ if ( ( pData->nPositionY >= 0x256 ) || ( pData->nPositionY <= 0x107 ) )
+ nAdjustmentsWhichNeedsToBeConverted |= ( 1 << i );
+ }
+ }
+ }
+ }
+ /////////////////////////////////////
+ // "Path" PropertySequence element //
+ /////////////////////////////////////
+ {
+ PropVec aPathPropVec;
+
+ // "Path/ExtrusionAllowed"
+ if ( IsHardAttribute( DFF_Prop_f3DOK ) )
+ {
+ const rtl::OUString sExtrusionAllowed( RTL_CONSTASCII_USTRINGPARAM ( "ExtrusionAllowed" ) );
+ sal_Bool bExtrusionAllowed = ( GetPropertyValue( DFF_Prop_fFillOK ) & 16 ) != 0;
+ aProp.Name = sExtrusionAllowed;
+ aProp.Value <<= bExtrusionAllowed;
+ aPathPropVec.push_back( aProp );
+ }
+ // "Path/ConcentricGradientFillAllowed"
+ if ( IsHardAttribute( DFF_Prop_fFillShadeShapeOK ) )
+ {
+ const rtl::OUString sConcentricGradientFillAllowed( RTL_CONSTASCII_USTRINGPARAM ( "ConcentricGradientFillAllowed" ) );
+ sal_Bool bConcentricGradientFillAllowed = ( GetPropertyValue( DFF_Prop_fFillOK ) & 2 ) != 0;
+ aProp.Name = sConcentricGradientFillAllowed;
+ aProp.Value <<= bConcentricGradientFillAllowed;
+ aPathPropVec.push_back( aProp );
+ }
+ // "Path/TextPathAllowed"
+ if ( IsHardAttribute( DFF_Prop_fGtextOK ) || ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x4000 ) )
+ {
+ const rtl::OUString sTextPathAllowed( RTL_CONSTASCII_USTRINGPARAM ( "TextPathAllowed" ) );
+ sal_Bool bTextPathAllowed = ( GetPropertyValue( DFF_Prop_fFillOK ) & 4 ) != 0;
+ aProp.Name = sTextPathAllowed;
+ aProp.Value <<= bTextPathAllowed;
+ aPathPropVec.push_back( aProp );
+ }
+ // Path/Coordinates
+ if ( IsProperty( DFF_Prop_pVertices ) )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aCoordinates;
+
+ sal_uInt16 i;
+ sal_uInt16 nNumElemVert = 0;
+ sal_uInt16 nNumElemMemVert = 0;
+ sal_uInt16 nElemSizeVert = 8;
+
+ if ( SeekToContent( DFF_Prop_pVertices, rIn ) )
+ rIn >> nNumElemVert >> nNumElemMemVert >> nElemSizeVert;
+ if ( nNumElemVert )
+ {
+ sal_Int32 nX, nY;
+ sal_Int16 nTmpA, nTmpB;
+ aCoordinates.realloc( nNumElemVert );
+ for ( i = 0; i < nNumElemVert; i++ )
+ {
+ if ( nElemSizeVert == 8 )
+ {
+ rIn >> nX
+ >> nY;
+ }
+ else
+ {
+ rIn >> nTmpA
+ >> nTmpB;
+
+ nX = nTmpA;
+ nY = nTmpB;
+ }
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aCoordinates[ i ].First, nX );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aCoordinates[ i ].Second, nY );
+ }
+ }
+ const rtl::OUString sCoordinates( RTL_CONSTASCII_USTRINGPARAM ( "Coordinates" ) );
+ aProp.Name = sCoordinates;
+ aProp.Value <<= aCoordinates;
+ aPathPropVec.push_back( aProp );
+ }
+ // Path/Segments
+ if ( IsProperty( DFF_Prop_pSegmentInfo ) )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment > aSegments;
+
+ sal_uInt16 i, nTmp;
+ sal_uInt16 nNumElemSeg = 0;
+ sal_uInt16 nNumElemMemSeg = 0;
+ sal_uInt16 nElemSizeSeg = 2;
+
+ if ( SeekToContent( DFF_Prop_pSegmentInfo, rIn ) )
+ rIn >> nNumElemSeg >> nNumElemMemSeg >> nElemSizeSeg;
+ if ( nNumElemSeg )
+ {
+ sal_Int16 nCommand;
+ sal_Int16 nCnt;
+ aSegments.realloc( nNumElemSeg );
+ for ( i = 0; i < nNumElemSeg; i++ )
+ {
+ rIn >> nTmp;
+ nCommand = EnhancedCustomShapeSegmentCommand::UNKNOWN;
+ nCnt = (sal_Int16)( nTmp & 0xfff );
+ switch( nTmp >> 12 )
+ {
+ case 0x0: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break;
+ case 0x1: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break; // seems to the relative lineto
+ case 0x4: nCommand = EnhancedCustomShapeSegmentCommand::MOVETO; if ( !nCnt ) nCnt = 1; break;
+ case 0x2: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;
+ case 0x3: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break; // seems to be the relative curveto
+ case 0x8: nCommand = EnhancedCustomShapeSegmentCommand::ENDSUBPATH; nCnt = 0; break;
+ case 0x6: nCommand = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH; nCnt = 0; break;
+ case 0xa:
+ case 0xb:
+ {
+ switch ( ( nTmp >> 8 ) & 0xf )
+ {
+ case 0x0:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::LINETO;
+ if ( !nCnt )
+ nCnt = 1;
+ }
+ break;
+ case 0x1:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO;
+ nCnt = ( nTmp & 0xff ) / 3;
+ }
+ break;
+ case 0x2:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE;
+ nCnt = ( nTmp & 0xff ) / 3;
+ }
+ break;
+ case 0x3:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::ARCTO;
+ nCnt = ( nTmp & 0xff ) >> 2;
+ };
+ break;
+ case 0x4:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::ARC;
+ nCnt = ( nTmp & 0xff ) >> 2;
+ }
+ break;
+ case 0x5:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO;
+ nCnt = ( nTmp & 0xff ) >> 2;
+ }
+ break;
+ case 0x6:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::CLOCKWISEARC;
+ nCnt = ( nTmp & 0xff ) >> 2;
+ }
+ break;
+ case 0x7:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX;
+ nCnt = nTmp & 0xff;
+ }
+ break;
+ case 0x8:
+ {
+ nCommand = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY;
+ nCnt = nTmp & 0xff;
+ }
+ break;
+ case 0xa: nCommand = EnhancedCustomShapeSegmentCommand::NOFILL; nCnt = 0; break;
+ case 0xb: nCommand = EnhancedCustomShapeSegmentCommand::NOSTROKE; nCnt = 0; break;
+ }
+ }
+ break;
+ }
+ // if the command is unknown, we will store all the data in nCnt, so it will be possible to export without loss
+ if ( nCommand == EnhancedCustomShapeSegmentCommand::UNKNOWN )
+ nCnt = (sal_Int16)nTmp;
+ aSegments[ i ].Command = nCommand;
+ aSegments[ i ].Count = nCnt;
+ }
+ }
+ const rtl::OUString sSegments( RTL_CONSTASCII_USTRINGPARAM ( "Segments" ) );
+ aProp.Name = sSegments;
+ aProp.Value <<= aSegments;
+ aPathPropVec.push_back( aProp );
+ }
+ // Path/StretchX
+ if ( IsProperty( DFF_Prop_stretchPointX ) )
+ {
+ const rtl::OUString sStretchX( RTL_CONSTASCII_USTRINGPARAM ( "StretchX" ) );
+ sal_Int32 nStretchX = GetPropertyValue( DFF_Prop_stretchPointX, 0 );
+ aProp.Name = sStretchX;
+ aProp.Value <<= nStretchX;
+ aPathPropVec.push_back( aProp );
+ }
+ // Path/StretchX
+ if ( IsProperty( DFF_Prop_stretchPointY ) )
+ {
+ const rtl::OUString sStretchY( RTL_CONSTASCII_USTRINGPARAM ( "StretchY" ) );
+ sal_Int32 nStretchY = GetPropertyValue( DFF_Prop_stretchPointY, 0 );
+ aProp.Name = sStretchY;
+ aProp.Value <<= nStretchY;
+ aPathPropVec.push_back( aProp );
+ }
+ // Path/TextFrames
+ if ( IsProperty( DFF_Prop_textRectangles ) )
+ {
+ sal_uInt16 i;
+ sal_uInt16 nNumElem = 0;
+ sal_uInt16 nNumElemMem = 0;
+ sal_uInt16 nElemSize = 16;
+
+ if ( SeekToContent( DFF_Prop_textRectangles, rIn ) )
+ rIn >> nNumElem >> nNumElemMem >> nElemSize;
+ if ( nElemSize == 16 )
+ {
+ sal_Int32 nLeft, nTop, nRight, nBottom;
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeTextFrame > aTextFrames( nNumElem );
+ for ( i = 0; i < nNumElem; i++ )
+ {
+ rIn >> nLeft
+ >> nTop
+ >> nRight
+ >> nBottom;
+
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].TopLeft.First, nLeft );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].TopLeft.Second, nTop );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].BottomRight.First, nRight );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrames[ i ].BottomRight.Second, nBottom);
+ }
+ const rtl::OUString sTextFrames( RTL_CONSTASCII_USTRINGPARAM ( "TextFrames" ) );
+ aProp.Name = sTextFrames;
+ aProp.Value <<= aTextFrames;
+ aPathPropVec.push_back( aProp );
+ }
+ }
+ //Path/GluePoints
+ if ( IsProperty( DFF_Prop_connectorPoints ) )
+ {
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aGluePoints;
+
+ sal_uInt16 i;
+ sal_uInt16 nNumElemVert = 0;
+ sal_uInt16 nNumElemMemVert = 0;
+ sal_uInt16 nElemSizeVert = 8;
+
+ if ( SeekToContent( DFF_Prop_connectorPoints, rIn ) )
+ rIn >> nNumElemVert >> nNumElemMemVert >> nElemSizeVert;
+
+ sal_Int32 nX, nY;
+ sal_Int16 nTmpA, nTmpB;
+ aGluePoints.realloc( nNumElemVert );
+ for ( i = 0; i < nNumElemVert; i++ )
+ {
+ if ( nElemSizeVert == 8 )
+ {
+ rIn >> nX
+ >> nY;
+ }
+ else
+ {
+ rIn >> nTmpA
+ >> nTmpB;
+
+ nX = nTmpA;
+ nY = nTmpB;
+ }
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ i ].First, nX );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aGluePoints[ i ].Second, nY );
+ }
+ const rtl::OUString sGluePoints( RTL_CONSTASCII_USTRINGPARAM ( "GluePoints" ) );
+ aProp.Name = sGluePoints;
+ aProp.Value <<= aGluePoints;
+ aPathPropVec.push_back( aProp );
+ }
+ if ( IsProperty( DFF_Prop_connectorType ) )
+ {
+ sal_Int16 nGluePointType = (sal_uInt16)GetPropertyValue( DFF_Prop_connectorType );
+ const rtl::OUString sGluePointType( RTL_CONSTASCII_USTRINGPARAM ( "GluePointType" ) );
+ aProp.Name = sGluePointType;
+ aProp.Value <<= nGluePointType;
+ aPathPropVec.push_back( aProp );
+ }
+ // pushing the whole Path element
+ if ( aPathPropVec.size() )
+ {
+ const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM ( "Path" ) );
+ PropSeq aPathPropSeq( aPathPropVec.size() );
+ aIter = aPathPropVec.begin();
+ aEnd = aPathPropVec.end();
+ beans::PropertyValue* pPathValues = aPathPropSeq.getArray();
+ while ( aIter != aEnd )
+ *pPathValues++ = *aIter++;
+ aProp.Name = sPath;
+ aProp.Value <<= aPathPropSeq;
+ aPropVec.push_back( aProp );
+ }
+ }
+ /////////////////////////////////////////
+ // "TextPath" PropertySequence element //
+ /////////////////////////////////////////
+ sal_Bool bTextPathOn = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x4000 ) != 0;
+ if ( bTextPathOn )
+ {
+ PropVec aTextPathPropVec;
+
+ // TextPath
+ const rtl::OUString sTextPathOn( RTL_CONSTASCII_USTRINGPARAM ( "TextPath" ) );
+ aProp.Name = sTextPathOn;
+ aProp.Value <<= bTextPathOn;
+ aTextPathPropVec.push_back( aProp );
+
+ // TextPathMode
+ const rtl::OUString sTextPathMode( RTL_CONSTASCII_USTRINGPARAM ( "TextPathMode" ) );
+ sal_Bool bTextPathFitPath = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x100 ) != 0;
+
+ sal_Bool bTextPathFitShape;
+ if ( IsHardAttribute( DFF_Prop_gtextFStretch ) )
+ bTextPathFitShape = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x400 ) != 0;
+ else
+ {
+ bTextPathFitShape = true;
+ switch( rObjData.eShapeType )
+ {
+ case mso_sptTextArchUpCurve :
+ case mso_sptTextArchDownCurve :
+ case mso_sptTextCircleCurve :
+ case mso_sptTextButtonCurve :
+ bTextPathFitShape = false;
+ default : break;
+ }
+ }
+ EnhancedCustomShapeTextPathMode eTextPathMode( EnhancedCustomShapeTextPathMode_NORMAL );
+ if ( bTextPathFitShape )
+ eTextPathMode = EnhancedCustomShapeTextPathMode_SHAPE;
+ else if ( bTextPathFitPath )
+ eTextPathMode = EnhancedCustomShapeTextPathMode_PATH;
+ aProp.Name = sTextPathMode;
+ aProp.Value <<= eTextPathMode;
+ aTextPathPropVec.push_back( aProp );
+
+ // ScaleX
+ const rtl::OUString sTextPathScaleX( RTL_CONSTASCII_USTRINGPARAM ( "ScaleX" ) );
+ sal_Bool bTextPathScaleX = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x40 ) != 0;
+ aProp.Name = sTextPathScaleX;
+ aProp.Value <<= bTextPathScaleX;
+ aTextPathPropVec.push_back( aProp );
+ // SameLetterHeights
+ const rtl::OUString sSameLetterHeight( RTL_CONSTASCII_USTRINGPARAM ( "SameLetterHeights" ) );
+ sal_Bool bSameLetterHeight = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough ) & 0x80 ) != 0;
+ aProp.Name = sSameLetterHeight;
+ aProp.Value <<= bSameLetterHeight;
+ aTextPathPropVec.push_back( aProp );
+
+ // pushing the whole TextPath element
+ const rtl::OUString sTextPath( RTL_CONSTASCII_USTRINGPARAM ( "TextPath" ) );
+ PropSeq aTextPathPropSeq( aTextPathPropVec.size() );
+ aIter = aTextPathPropVec.begin();
+ aEnd = aTextPathPropVec.end();
+ beans::PropertyValue* pTextPathValues = aTextPathPropSeq.getArray();
+ while ( aIter != aEnd )
+ *pTextPathValues++ = *aIter++;
+ aProp.Name = sTextPath;
+ aProp.Value <<= aTextPathPropSeq;
+ aPropVec.push_back( aProp );
+ }
+ ////////////////////////
+ // "AdjustmentValues" // The AdjustmentValues are imported at last, because depending to the type of the
+ //////////////////////// handle (POLAR) we will convert the adjustment value from a fixed float to double
+
+ // checking the last used adjustment handle, so we can determine how many handles are to allocate
+ sal_Int32 i = DFF_Prop_adjust10Value;
+ while ( ( i >= DFF_Prop_adjustValue ) && !IsProperty( i ) )
+ i--;
+ sal_Int32 nAdjustmentValues = ( i - DFF_Prop_adjustValue ) + 1;
+ if ( nAdjustmentValues )
+ {
+ uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue > aAdjustmentSeq( nAdjustmentValues );
+ while( --nAdjustmentValues >= 0 )
+ {
+ sal_Int32 nValue = 0;
+ beans::PropertyState ePropertyState = beans::PropertyState_DEFAULT_VALUE;
+ if ( IsProperty( i ) )
+ {
+ nValue = GetPropertyValue( i );
+ ePropertyState = beans::PropertyState_DIRECT_VALUE;
+ }
+ if ( nAdjustmentsWhichNeedsToBeConverted & ( 1 << ( i - DFF_Prop_adjustValue ) ) )
+ {
+ double fValue = nValue;
+ fValue /= 65536;
+ aAdjustmentSeq[ nAdjustmentValues ].Value <<= fValue;
+ }
+ else
+ aAdjustmentSeq[ nAdjustmentValues ].Value <<= nValue;
+ aAdjustmentSeq[ nAdjustmentValues ].State = ePropertyState;
+ i--;
+ }
+ const rtl::OUString sAdjustmentValues( RTL_CONSTASCII_USTRINGPARAM ( "AdjustmentValues" ) );
+ aProp.Name = sAdjustmentValues;
+ aProp.Value <<= aAdjustmentSeq;
+ aPropVec.push_back( aProp );
+ }
+
+ // creating the whole property set
+ PropSeq aSeq( aPropVec.size() );
+ beans::PropertyValue* pValues = aSeq.getArray();
+ aIter = aPropVec.begin();
+ aEnd = aPropVec.end();
+ while ( aIter != aEnd )
+ *pValues++ = *aIter++;
+ rSet.Put( SdrCustomShapeGeometryItem( aSeq ) );
+}
+
+void DffPropertyReader::ApplyAttributes( SvStream& rIn, SfxItemSet& rSet ) const
+{
+ Rectangle aEmptyRect;
+ DffRecordHeader aHdTemp;
+ DffObjData aDffObjTemp( aHdTemp, aEmptyRect, 0 );
+ ApplyAttributes( rIn, rSet, aDffObjTemp );
+}
+
+void DffPropertyReader::ApplyAttributes( SvStream& rIn, SfxItemSet& rSet, const DffObjData& rObjData ) const
+{
+// MapUnit eMap( rManager.GetModel()->GetScaleUnit() );
+
+ sal_Bool bHasShadow = sal_False;
+
+ for ( void* pDummy = ((DffPropertyReader*)this)->First(); pDummy; pDummy = ((DffPropertyReader*)this)->Next() )
+ {
+ UINT32 nRecType = GetCurKey();
+ UINT32 nContent = mpContents[ nRecType ];
+ switch ( nRecType )
+ {
+ case DFF_Prop_gtextSize :
+ rSet.Put( SvxFontHeightItem( rManager.ScalePt( nContent ), 100, EE_CHAR_FONTHEIGHT ) );
+ break;
+ // GeoText
+ case DFF_Prop_gtextFStrikethrough :
+ {
+ if ( nContent & 0x20 )
+ rSet.Put( SvxWeightItem( nContent ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
+ if ( nContent & 0x10 )
+ rSet.Put( SvxPostureItem( nContent ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC ) );
+ if ( nContent & 0x08 )
+ rSet.Put( SvxUnderlineItem( nContent ? UNDERLINE_SINGLE : UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
+ if ( nContent & 0x40 )
+ rSet.Put(SvxShadowedItem( nContent != 0, EE_CHAR_SHADOW ) );
+// if ( nContent & 0x02 )
+// rSet.Put( SvxCaseMapItem( nContent ? SVX_CASEMAP_KAPITAELCHEN : SVX_CASEMAP_NOT_MAPPED ) );
+ if ( nContent & 0x01 )
+ rSet.Put( SvxCrossedOutItem( nContent ? STRIKEOUT_SINGLE : STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
+ }
+ break;
+
+ case DFF_Prop_fillColor :
+ rSet.Put( XFillColorItem( String(), rManager.MSO_CLR_ToColor( nContent, DFF_Prop_fillColor ) ) );
+ break;
+
+ // ShadowStyle
+ case DFF_Prop_shadowType :
+ {
+ MSO_ShadowType eShadowType = (MSO_ShadowType)nContent;
+ if( eShadowType != mso_shadowOffset )
+ {
+ // mso_shadowDouble
+ // mso_shadowRich
+ // mso_shadowEmbossOrEngrave
+ // koennen wir nicht, kreiere Default-Schatten mit default-
+ // Abstand
+ rSet.Put( SdrShadowXDistItem( 35 ) ); // 0,35 mm Schattendistanz
+ rSet.Put( SdrShadowYDistItem( 35 ) );
+ }
+ }
+ break;
+ case DFF_Prop_shadowColor :
+ rSet.Put( SdrShadowColorItem( String(), rManager.MSO_CLR_ToColor( nContent, DFF_Prop_shadowColor ) ) );
+ break;
+ case DFF_Prop_shadowOpacity :
+ rSet.Put( SdrShadowTransparenceItem( (sal_uInt16)( ( 0x10000 - nContent ) / 655 ) ) );
+ break;
+ case DFF_Prop_shadowOffsetX :
+ {
+ INT32 nVal = (INT32)nContent;
+ rManager.ScaleEmu( nVal );
+ if ( nVal )
+ rSet.Put( SdrShadowXDistItem( nVal ) );
+ }
+ break;
+ case DFF_Prop_shadowOffsetY :
+ {
+ INT32 nVal = (INT32)nContent;
+ rManager.ScaleEmu( nVal );
+ if ( nVal )
+ rSet.Put( SdrShadowYDistItem( nVal ) );
+ }
+ break;
+ case DFF_Prop_fshadowObscured :
+ {
+ bHasShadow = ( nContent & 2 ) != 0;
+ if ( bHasShadow )
+ {
+ if ( !IsProperty( DFF_Prop_shadowOffsetX ) )
+ rSet.Put( SdrShadowXDistItem( 35 ) );
+ if ( !IsProperty( DFF_Prop_shadowOffsetY ) )
+ rSet.Put( SdrShadowYDistItem( 35 ) );
+ }
+ }
+ break;
+ }
+ }
+
+ if ( bHasShadow )
+ {
+ // #160376# sj: activating shadow only if fill and or linestyle is used
+ // this is required because of the latest drawing layer core changes.
+ // Issue i104085 is related to this.
+ UINT32 nLineFlags(GetPropertyValue( DFF_Prop_fNoLineDrawDash ));
+ if(!IsHardAttribute( DFF_Prop_fLine ) && !IsCustomShapeStrokedByDefault( rObjData.eShapeType ))
+ nLineFlags &= ~0x08;
+ UINT32 nFillFlags(GetPropertyValue( DFF_Prop_fNoFillHitTest ));
+ if(!IsHardAttribute( DFF_Prop_fFilled ) && !IsCustomShapeFilledByDefault( rObjData.eShapeType ))
+ nFillFlags &= ~0x10;
+ if ( nFillFlags & 0x10 )
+ {
+ MSO_FillType eMSO_FillType = (MSO_FillType)GetPropertyValue( DFF_Prop_fillType, mso_fillSolid );
+ switch( eMSO_FillType )
+ {
+ case mso_fillSolid :
+ case mso_fillPattern :
+ case mso_fillTexture :
+ case mso_fillPicture :
+ case mso_fillShade :
+ case mso_fillShadeCenter :
+ case mso_fillShadeShape :
+ case mso_fillShadeScale :
+ case mso_fillShadeTitle :
+ break;
+ // case mso_fillBackground :
+ default:
+ nFillFlags &=~0x10; // no fillstyle used
+ break;
+ }
+ }
+ if ( ( ( nLineFlags & 0x08 ) == 0 ) && ( ( nFillFlags & 0x10 ) == 0 ) ) // if there is no fillstyle and linestyle
+ bHasShadow = sal_False; // we are turning shadow off.
+
+ if ( bHasShadow )
+ rSet.Put( SdrShadowItem( bHasShadow ) );
+ }
+ ApplyLineAttributes( rSet, rObjData.eShapeType ); // #i28269#
+ ApplyFillAttributes( rIn, rSet, rObjData );
+ if ( rObjData.eShapeType != mso_sptNil )
+ {
+ ApplyCustomShapeGeometryAttributes( rIn, rSet, rObjData );
+ ApplyCustomShapeTextAttributes( rSet );
+ }
+}
+
+//---------------------------------------------------------------------------
+//- Record Manager ----------------------------------------------------------
+//---------------------------------------------------------------------------
+
+DffRecordList::DffRecordList( DffRecordList* pList ) :
+ nCount ( 0 ),
+ nCurrent ( 0 ),
+ pPrev ( pList ),
+ pNext ( NULL )
+{
+ if ( pList )
+ pList->pNext = this;
+}
+
+DffRecordList::~DffRecordList()
+{
+ delete pNext;
+}
+
+DffRecordManager::DffRecordManager() :
+ DffRecordList ( NULL ),
+ pCList ( (DffRecordList*)this )
+{
+}
+
+DffRecordManager::DffRecordManager( SvStream& rIn ) :
+ DffRecordList ( NULL ),
+ pCList ( (DffRecordList*)this )
+{
+ Consume( rIn );
+}
+
+DffRecordManager::~DffRecordManager()
+{
+};
+
+
+void DffRecordManager::Consume( SvStream& rIn, BOOL bAppend, UINT32 nStOfs )
+{
+ if ( !bAppend )
+ Clear();
+ UINT32 nOldPos = rIn.Tell();
+ if ( !nStOfs )
+ {
+ DffRecordHeader aHd;
+ rIn >> aHd;
+ if ( aHd.nRecVer == DFF_PSFLAG_CONTAINER )
+ nStOfs = aHd.GetRecEndFilePos();
+ }
+ if ( nStOfs )
+ {
+ pCList = (DffRecordList*)this;
+ while ( pCList->pNext )
+ pCList = pCList->pNext;
+ while ( ( rIn.GetError() == 0 ) && ( ( rIn.Tell() + 8 ) <= nStOfs ) )
+ {
+ if ( pCList->nCount == DFF_RECORD_MANAGER_BUF_SIZE )
+ pCList = new DffRecordList( pCList );
+ rIn >> pCList->mHd[ pCList->nCount ];
+ pCList->mHd[ pCList->nCount++ ].SeekToEndOfRecord( rIn );
+ }
+ rIn.Seek( nOldPos );
+ }
+}
+
+void DffRecordManager::Clear()
+{
+ pCList = (DffRecordList*)this;
+ delete pNext, pNext = NULL;
+ nCurrent = 0;
+ nCount = 0;
+}
+
+DffRecordHeader* DffRecordManager::Current()
+{
+ DffRecordHeader* pRet = NULL;
+ if ( pCList->nCurrent < pCList->nCount )
+ pRet = &pCList->mHd[ pCList->nCurrent ];
+ return pRet;
+}
+
+DffRecordHeader* DffRecordManager::First()
+{
+ DffRecordHeader* pRet = NULL;
+ pCList = (DffRecordList*)this;
+ if ( pCList->nCount )
+ {
+ pCList->nCurrent = 0;
+ pRet = &pCList->mHd[ 0 ];
+ }
+ return pRet;
+}
+
+DffRecordHeader* DffRecordManager::Next()
+{
+ DffRecordHeader* pRet = NULL;
+ UINT32 nC = pCList->nCurrent + 1;
+ if ( nC < pCList->nCount )
+ {
+ pCList->nCurrent++;
+ pRet = &pCList->mHd[ nC ];
+ }
+ else if ( pCList->pNext )
+ {
+ pCList = pCList->pNext;
+ pCList->nCurrent = 0;
+ pRet = &pCList->mHd[ 0 ];
+ }
+ return pRet;
+}
+
+DffRecordHeader* DffRecordManager::Prev()
+{
+ DffRecordHeader* pRet = NULL;
+ UINT32 nCur = pCList->nCurrent;
+ if ( !nCur && pCList->pPrev )
+ {
+ pCList = pCList->pPrev;
+ nCur = pCList->nCount;
+ }
+ if ( nCur-- )
+ {
+ pCList->nCurrent = nCur;
+ pRet = &pCList->mHd[ nCur ];
+ }
+ return pRet;
+}
+
+DffRecordHeader* DffRecordManager::Last()
+{
+ DffRecordHeader* pRet = NULL;
+ while ( pCList->pNext )
+ pCList = pCList->pNext;
+ UINT32 nCnt = pCList->nCount;
+ if ( nCnt-- )
+ {
+ pCList->nCurrent = nCnt;
+ pRet = &pCList->mHd[ nCnt ];
+ }
+ return pRet;
+}
+
+BOOL DffRecordManager::SeekToContent( SvStream& rIn, UINT16 nRecId, DffSeekToContentMode eMode )
+{
+ DffRecordHeader* pHd = GetRecordHeader( nRecId, eMode );
+ if ( pHd )
+ {
+ pHd->SeekToContent( rIn );
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+DffRecordHeader* DffRecordManager::GetRecordHeader( UINT16 nRecId, DffSeekToContentMode eMode )
+{
+ UINT32 nOldCurrent = pCList->nCurrent;
+ DffRecordList* pOldList = pCList;
+ DffRecordHeader* pHd;
+
+ if ( eMode == SEEK_FROM_BEGINNING )
+ pHd = First();
+ else
+ pHd = Next();
+
+ while ( pHd )
+ {
+ if ( pHd->nRecType == nRecId )
+ break;
+ pHd = Next();
+ }
+ if ( !pHd && eMode == SEEK_FROM_CURRENT_AND_RESTART )
+ {
+ DffRecordHeader* pBreak = &pOldList->mHd[ nOldCurrent ];
+ pHd = First();
+ if ( pHd )
+ {
+ while ( pHd != pBreak )
+ {
+ if ( pHd->nRecType == nRecId )
+ break;
+ pHd = Next();
+ }
+ if ( pHd->nRecType != nRecId )
+ pHd = NULL;
+ }
+ }
+ if ( !pHd )
+ {
+ pCList = pOldList;
+ pOldList->nCurrent = nOldCurrent;
+ }
+ return pHd;
+}
+
+//---------------------------------------------------------------------------
+// private Methoden
+//---------------------------------------------------------------------------
+
+struct EscherBlipCacheEntry
+{
+ ByteString aUniqueID;
+ sal_uInt32 nBlip;
+
+ EscherBlipCacheEntry( sal_uInt32 nBlipId, const ByteString& rUniqueID ) :
+ aUniqueID( rUniqueID ),
+ nBlip( nBlipId ) {}
+};
+
+void SvxMSDffManager::Scale( sal_Int32& rVal ) const
+{
+ if ( bNeedMap )
+ rVal = BigMulDiv( rVal, nMapMul, nMapDiv );
+}
+
+void SvxMSDffManager::Scale( Point& rPos ) const
+{
+ rPos.X() += nMapXOfs;
+ rPos.Y() += nMapYOfs;
+ if ( bNeedMap )
+ {
+ rPos.X() = BigMulDiv( rPos.X(), nMapMul, nMapDiv );
+ rPos.Y() = BigMulDiv( rPos.Y(), nMapMul, nMapDiv );
+ }
+}
+
+void SvxMSDffManager::Scale( Size& rSiz ) const
+{
+ if ( bNeedMap )
+ {
+ rSiz.Width() = BigMulDiv( rSiz.Width(), nMapMul, nMapDiv );
+ rSiz.Height() = BigMulDiv( rSiz.Height(), nMapMul, nMapDiv );
+ }
+}
+
+void SvxMSDffManager::Scale( Rectangle& rRect ) const
+{
+ rRect.Move( nMapXOfs, nMapYOfs );
+ if ( bNeedMap )
+ {
+ rRect.Left() =BigMulDiv( rRect.Left() , nMapMul, nMapDiv );
+ rRect.Top() =BigMulDiv( rRect.Top() , nMapMul, nMapDiv );
+ rRect.Right() =BigMulDiv( rRect.Right() , nMapMul, nMapDiv );
+ rRect.Bottom()=BigMulDiv( rRect.Bottom(), nMapMul, nMapDiv );
+ }
+}
+
+void SvxMSDffManager::Scale( Polygon& rPoly ) const
+{
+ if ( !bNeedMap )
+ return;
+ USHORT nPointAnz = rPoly.GetSize();
+ for ( USHORT nPointNum = 0; nPointNum < nPointAnz; nPointNum++ )
+ Scale( rPoly[ nPointNum ] );
+}
+
+void SvxMSDffManager::Scale( PolyPolygon& rPoly ) const
+{
+ if ( !bNeedMap )
+ return;
+ USHORT nPolyAnz = rPoly.Count();
+ for ( USHORT nPolyNum = 0; nPolyNum < nPolyAnz; nPolyNum++ )
+ Scale( rPoly[ nPolyNum ] );
+}
+
+void SvxMSDffManager::ScaleEmu( sal_Int32& rVal ) const
+{
+ rVal = BigMulDiv( rVal, nEmuMul, nEmuDiv );
+}
+
+UINT32 SvxMSDffManager::ScalePt( UINT32 nVal ) const
+{
+ MapUnit eMap = pSdrModel->GetScaleUnit();
+ Fraction aFact( GetMapFactor( MAP_POINT, eMap ).X() );
+ long aMul = aFact.GetNumerator();
+ long aDiv = aFact.GetDenominator() * 65536;
+ aFact = Fraction( aMul, aDiv ); // nochmal versuchen zu kuerzen
+ return BigMulDiv( nVal, aFact.GetNumerator(), aFact.GetDenominator() );
+}
+
+INT32 SvxMSDffManager::ScalePoint( INT32 nVal ) const
+{
+ return BigMulDiv( nVal, nPntMul, nPntDiv );
+};
+
+void SvxMSDffManager::SetModel(SdrModel* pModel, long nApplicationScale)
+{
+ pSdrModel = pModel;
+ if( pModel && (0 < nApplicationScale) )
+ {
+ // PPT arbeitet nur mit Einheiten zu 576DPI
+ // WW hingegen verwendet twips, dh. 1440DPI.
+ MapUnit eMap = pSdrModel->GetScaleUnit();
+ Fraction aFact( GetMapFactor(MAP_INCH, eMap).X() );
+ long nMul=aFact.GetNumerator();
+ long nDiv=aFact.GetDenominator()*nApplicationScale;
+ aFact=Fraction(nMul,nDiv); // nochmal versuchen zu kuerzen
+ // Bei 100TH_MM -> 2540/576=635/144
+ // Bei Twip -> 1440/576=5/2
+ nMapMul = aFact.GetNumerator();
+ nMapDiv = aFact.GetDenominator();
+ bNeedMap = nMapMul!=nMapDiv;
+
+ // MS-DFF-Properties sind grossteils in EMU (English Metric Units) angegeben
+ // 1mm=36000emu, 1twip=635emu
+ aFact=GetMapFactor(MAP_100TH_MM,eMap).X();
+ nMul=aFact.GetNumerator();
+ nDiv=aFact.GetDenominator()*360;
+ aFact=Fraction(nMul,nDiv); // nochmal versuchen zu kuerzen
+ // Bei 100TH_MM -> 1/360
+ // Bei Twip -> 14,40/(25,4*360)=144/91440=1/635
+ nEmuMul=aFact.GetNumerator();
+ nEmuDiv=aFact.GetDenominator();
+
+ // Und noch was fuer typografische Points
+ aFact=GetMapFactor(MAP_POINT,eMap).X();
+ nPntMul=aFact.GetNumerator();
+ nPntDiv=aFact.GetDenominator();
+ }
+ else
+ {
+ pModel = 0;
+ nMapMul = nMapDiv = nMapXOfs = nMapYOfs = nEmuMul = nEmuDiv = nPntMul = nPntDiv = 0;
+ bNeedMap = FALSE;
+ }
+}
+
+BOOL SvxMSDffManager::SeekToShape( SvStream& rSt, void* /* pClientData */, UINT32 nId ) const
+{
+ BOOL bRet = FALSE;
+ if ( mpFidcls )
+ {
+ UINT32 nMerk = rSt.Tell();
+ UINT32 nShapeId, nSec = ( nId >> 10 ) - 1;
+ if ( nSec < mnIdClusters )
+ {
+ sal_IntPtr nOfs = (sal_IntPtr)maDgOffsetTable.Get( mpFidcls[ nSec ].dgid );
+ if ( nOfs )
+ {
+ rSt.Seek( nOfs );
+ DffRecordHeader aEscherF002Hd;
+ rSt >> aEscherF002Hd;
+ ULONG nEscherF002End = aEscherF002Hd.GetRecEndFilePos();
+ DffRecordHeader aEscherObjListHd;
+ while ( rSt.Tell() < nEscherF002End )
+ {
+ rSt >> aEscherObjListHd;
+ if ( aEscherObjListHd.nRecVer != 0xf )
+ aEscherObjListHd.SeekToEndOfRecord( rSt );
+ else if ( aEscherObjListHd.nRecType == DFF_msofbtSpContainer )
+ {
+ DffRecordHeader aShapeHd;
+ if ( SeekToRec( rSt, DFF_msofbtSp, aEscherObjListHd.GetRecEndFilePos(), &aShapeHd ) )
+ {
+ rSt >> nShapeId;
+ if ( nId == nShapeId )
+ {
+ aEscherObjListHd.SeekToBegOfRecord( rSt );
+ bRet = TRUE;
+ break;
+ }
+ }
+ aEscherObjListHd.SeekToEndOfRecord( rSt );
+ }
+ }
+ }
+ }
+ if ( !bRet )
+ rSt.Seek( nMerk );
+ }
+ return bRet;
+}
+
+FASTBOOL SvxMSDffManager::SeekToRec( SvStream& rSt, USHORT nRecId, ULONG nMaxFilePos, DffRecordHeader* pRecHd, ULONG nSkipCount ) const
+{
+ FASTBOOL bRet = FALSE;
+ ULONG nFPosMerk = rSt.Tell(); // FilePos merken fuer ggf. spaetere Restauration
+ DffRecordHeader aHd;
+ do
+ {
+ rSt >> aHd;
+ if ( aHd.nRecType == nRecId )
+ {
+ if ( nSkipCount )
+ nSkipCount--;
+ else
+ {
+ bRet = TRUE;
+ if ( pRecHd != NULL )
+ *pRecHd = aHd;
+ else
+ aHd.SeekToBegOfRecord( rSt );
+ }
+ }
+ if ( !bRet )
+ aHd.SeekToEndOfRecord( rSt );
+ }
+ while ( rSt.GetError() == 0 && rSt.Tell() < nMaxFilePos && !bRet );
+ if ( !bRet )
+ rSt.Seek( nFPosMerk ); // FilePos restaurieren
+ return bRet;
+}
+
+FASTBOOL SvxMSDffManager::SeekToRec2( USHORT nRecId1, USHORT nRecId2, ULONG nMaxFilePos, DffRecordHeader* pRecHd, ULONG nSkipCount ) const
+{
+ FASTBOOL bRet = FALSE;
+ ULONG nFPosMerk = rStCtrl.Tell(); // FilePos merken fuer ggf. spaetere Restauration
+ DffRecordHeader aHd;
+ do
+ {
+ rStCtrl >> aHd;
+ if ( aHd.nRecType == nRecId1 || aHd.nRecType == nRecId2 )
+ {
+ if ( nSkipCount )
+ nSkipCount--;
+ else
+ {
+ bRet = TRUE;
+ if ( pRecHd )
+ *pRecHd = aHd;
+ else
+ aHd.SeekToBegOfRecord( rStCtrl );
+ }
+ }
+ if ( !bRet )
+ aHd.SeekToEndOfRecord( rStCtrl );
+ }
+ while ( rStCtrl.GetError() == 0 && rStCtrl.Tell() < nMaxFilePos && !bRet );
+ if ( !bRet )
+ rStCtrl.Seek( nFPosMerk ); // FilePos restaurieren
+ return bRet;
+}
+
+
+FASTBOOL SvxMSDffManager::GetColorFromPalette( USHORT /* nNum */, Color& rColor ) const
+{
+ // diese Methode ist in der zum Excel-Import
+ // abgeleiteten Klasse zu ueberschreiben...
+ rColor.SetColor( COL_WHITE );
+ return TRUE;
+}
+
+// sj: the documentation is not complete, especially in ppt the normal rgb for text
+// color is written as 0xfeRRGGBB, this can't be explained by the documentation, nearly
+// every bit in the upper code is set -> so there seems to be a special handling for
+// ppt text colors, i decided not to fix this in MSO_CLR_ToColor because of possible
+// side effects, instead MSO_TEXT_CLR_ToColor is called for PPT text colors, to map
+// the color code to something that behaves like the other standard color codes used by
+// fill and line color
+Color SvxMSDffManager::MSO_TEXT_CLR_ToColor( sal_uInt32 nColorCode ) const
+{
+ // Fuer Textfarben: Header ist 0xfeRRGGBB
+ if ( ( nColorCode & 0xfe000000 ) == 0xfe000000 )
+ nColorCode &= 0x00ffffff;
+ else
+ {
+ // for colorscheme colors the color index are the lower three bits of the upper byte
+ if ( ( nColorCode & 0xf8000000 ) == 0 ) // this must be a colorscheme index
+ {
+ nColorCode >>= 24;
+ nColorCode |= 0x8000000;
+ }
+ }
+ return MSO_CLR_ToColor( nColorCode );
+}
+
+Color SvxMSDffManager::MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nContentProperty ) const
+{
+ Color aColor( mnDefaultColor );
+
+ // Fuer Textfarben: Header ist 0xfeRRGGBB
+ if ( ( nColorCode & 0xfe000000 ) == 0xfe000000 ) // sj: it needs to be checked if 0xfe is used in
+ nColorCode &= 0x00ffffff; // other cases than ppt text -> if not this code can be removed
+
+ sal_uInt8 nUpper = (sal_uInt8)( nColorCode >> 24 );
+
+ // sj: below change from 0x1b to 0x19 was done because of i84812 (0x02 -> rgb color),
+ // now I have some problems to fix i104685 (there the color value is 0x02000000 whichs requires
+ // a 0x2 scheme color to be displayed properly), the color docu seems to be incomplete
+ if( nUpper & 0x19 ) // if( nUpper & 0x1f )
+ {
+ if( ( nUpper & 0x08 ) || ( ( nUpper & 0x10 ) == 0 ) )
+ {
+ // SCHEMECOLOR
+ if ( !GetColorFromPalette( ( nUpper & 8 ) ? (sal_uInt16)nColorCode : nUpper, aColor ) )
+ {
+ switch( nContentProperty )
+ {
+ case DFF_Prop_pictureTransparent :
+ case DFF_Prop_shadowColor :
+ case DFF_Prop_fillBackColor :
+ case DFF_Prop_fillColor :
+ aColor = Color( COL_WHITE );
+ break;
+ case DFF_Prop_lineColor :
+ {
+ aColor = Color( COL_BLACK );
+ }
+ break;
+ }
+ }
+ }
+ else // SYSCOLOR
+ {
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+// UINT16 nParameter = (BYTE)( nColorCode >> 16); // SJ: nice compiler optimization bug on windows, though downcasting
+ UINT16 nParameter = sal_uInt16(( nColorCode >> 16 ) & 0x00ff); // the HiByte of nParameter is not zero, an exclusive AND is helping :o
+ UINT16 nFunctionBits = (UINT16)( ( nColorCode & 0x00000f00 ) >> 8 );
+ UINT16 nAdditionalFlags = (UINT16)( ( nColorCode & 0x0000f000) >> 8 );
+ UINT16 nColorIndex = sal_uInt16(nColorCode & 0x00ff);
+ UINT32 nPropColor = 0;
+
+ sal_uInt16 nCProp = 0;
+
+ switch ( nColorIndex )
+ {
+ case mso_syscolorButtonFace : aColor = rStyleSettings.GetFaceColor(); break;
+ case mso_syscolorWindowText : aColor = rStyleSettings.GetWindowTextColor(); break;
+ case mso_syscolorMenu : aColor = rStyleSettings.GetMenuColor(); break;
+ case mso_syscolor3DLight :
+ case mso_syscolorButtonHighlight :
+ case mso_syscolorHighlight : aColor = rStyleSettings.GetHighlightColor(); break;
+ case mso_syscolorHighlightText : aColor = rStyleSettings.GetHighlightTextColor(); break;
+ case mso_syscolorCaptionText : aColor = rStyleSettings.GetMenuTextColor(); break;
+ case mso_syscolorActiveCaption : aColor = rStyleSettings.GetHighlightColor(); break;
+ case mso_syscolorButtonShadow : aColor = rStyleSettings.GetShadowColor(); break;
+ case mso_syscolorButtonText : aColor = rStyleSettings.GetButtonTextColor(); break;
+ case mso_syscolorGrayText : aColor = rStyleSettings.GetDeactiveColor(); break;
+ case mso_syscolorInactiveCaption : aColor = rStyleSettings.GetDeactiveColor(); break;
+ case mso_syscolorInactiveCaptionText : aColor = rStyleSettings.GetDeactiveColor(); break;
+ case mso_syscolorInfoBackground : aColor = rStyleSettings.GetFaceColor(); break;
+ case mso_syscolorInfoText : aColor = rStyleSettings.GetInfoTextColor(); break;
+ case mso_syscolorMenuText : aColor = rStyleSettings.GetMenuTextColor(); break;
+ case mso_syscolorScrollbar : aColor = rStyleSettings.GetFaceColor(); break;
+ case mso_syscolorWindow : aColor = rStyleSettings.GetWindowColor(); break;
+ case mso_syscolorWindowFrame : aColor = rStyleSettings.GetWindowColor(); break;
+
+ case mso_colorFillColor :
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff );
+ nCProp = DFF_Prop_fillColor;
+ }
+ break;
+ case mso_colorLineOrFillColor : // ( use the line color only if there is a line )
+ {
+ if ( GetPropertyValue( DFF_Prop_fNoLineDrawDash ) & 8 )
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_lineColor, 0 );
+ nCProp = DFF_Prop_lineColor;
+ }
+ else
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff );
+ nCProp = DFF_Prop_fillColor;
+ }
+ }
+ break;
+ case mso_colorLineColor :
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_lineColor, 0 );
+ nCProp = DFF_Prop_lineColor;
+ }
+ break;
+ case mso_colorShadowColor :
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_shadowColor, 0x808080 );
+ nCProp = DFF_Prop_shadowColor;
+ }
+ break;
+ case mso_colorThis : // ( use this color ... )
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff ); //?????????????
+ nCProp = DFF_Prop_fillColor;
+ }
+ break;
+ case mso_colorFillBackColor :
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_fillBackColor, 0xffffff );
+ nCProp = DFF_Prop_fillBackColor;
+ }
+ break;
+ case mso_colorLineBackColor :
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_lineBackColor, 0xffffff );
+ nCProp = DFF_Prop_lineBackColor;
+ }
+ break;
+ case mso_colorFillThenLine : // ( use the fillcolor unless no fill and line )
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff ); //?????????????
+ nCProp = DFF_Prop_fillColor;
+ }
+ break;
+ case mso_colorIndexMask : // ( extract the color index ) ?
+ {
+ nPropColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff ); //?????????????
+ nCProp = DFF_Prop_fillColor;
+ }
+ break;
+ }
+ if ( nCProp && ( nPropColor & 0x10000000 ) == 0 ) // beware of looping recursive
+ aColor = MSO_CLR_ToColor( nPropColor, nCProp );
+
+ if( nAdditionalFlags & 0x80 ) // make color gray
+ {
+ UINT8 nZwi = aColor.GetLuminance();
+ aColor = Color( nZwi, nZwi, nZwi );
+ }
+ switch( nFunctionBits )
+ {
+ case 0x01 : // darken color by parameter
+ {
+ aColor.SetRed( sal::static_int_cast< UINT8 >( ( nParameter * aColor.GetRed() ) >> 8 ) );
+ aColor.SetGreen( sal::static_int_cast< UINT8 >( ( nParameter * aColor.GetGreen() ) >> 8 ) );
+ aColor.SetBlue( sal::static_int_cast< UINT8 >( ( nParameter * aColor.GetBlue() ) >> 8 ) );
+ }
+ break;
+ case 0x02 : // lighten color by parameter
+ {
+ UINT16 nInvParameter = ( 0x00ff - nParameter ) * 0xff;
+ aColor.SetRed( sal::static_int_cast< UINT8 >( ( nInvParameter + ( nParameter * aColor.GetRed() ) ) >> 8 ) );
+ aColor.SetGreen( sal::static_int_cast< UINT8 >( ( nInvParameter + ( nParameter * aColor.GetGreen() ) ) >> 8 ) );
+ aColor.SetBlue( sal::static_int_cast< UINT8 >( ( nInvParameter + ( nParameter * aColor.GetBlue() ) ) >> 8 ) );
+ }
+ break;
+ case 0x03 : // add grey level RGB(p,p,p)
+ {
+ INT16 nR = (INT16)aColor.GetRed() + (INT16)nParameter;
+ INT16 nG = (INT16)aColor.GetGreen() + (INT16)nParameter;
+ INT16 nB = (INT16)aColor.GetBlue() + (INT16)nParameter;
+ if ( nR > 0x00ff )
+ nR = 0x00ff;
+ if ( nG > 0x00ff )
+ nG = 0x00ff;
+ if ( nB > 0x00ff )
+ nB = 0x00ff;
+ aColor = Color( (UINT8)nR, (UINT8)nG, (UINT8)nB );
+ }
+ break;
+ case 0x04 : // substract grey level RGB(p,p,p)
+ {
+ INT16 nR = (INT16)aColor.GetRed() - (INT16)nParameter;
+ INT16 nG = (INT16)aColor.GetGreen() - (INT16)nParameter;
+ INT16 nB = (INT16)aColor.GetBlue() - (INT16)nParameter;
+ if ( nR < 0 )
+ nR = 0;
+ if ( nG < 0 )
+ nG = 0;
+ if ( nB < 0 )
+ nB = 0;
+ aColor = Color( (UINT8)nR, (UINT8)nG, (UINT8)nB );
+ }
+ break;
+ case 0x05 : // substract from grey level RGB(p,p,p)
+ {
+ INT16 nR = (INT16)nParameter - (INT16)aColor.GetRed();
+ INT16 nG = (INT16)nParameter - (INT16)aColor.GetGreen();
+ INT16 nB = (INT16)nParameter - (INT16)aColor.GetBlue();
+ if ( nR < 0 )
+ nR = 0;
+ if ( nG < 0 )
+ nG = 0;
+ if ( nB < 0 )
+ nB = 0;
+ aColor = Color( (UINT8)nR, (UINT8)nG, (UINT8)nB );
+ }
+ break;
+ case 0x06 : // per component: black if < p, white if >= p
+ {
+ aColor.SetRed( aColor.GetRed() < nParameter ? 0x00 : 0xff );
+ aColor.SetGreen( aColor.GetGreen() < nParameter ? 0x00 : 0xff );
+ aColor.SetBlue( aColor.GetBlue() < nParameter ? 0x00 : 0xff );
+ }
+ break;
+ }
+ if ( nAdditionalFlags & 0x40 ) // top-bit invert
+ aColor = Color( aColor.GetRed() ^ 0x80, aColor.GetGreen() ^ 0x80, aColor.GetBlue() ^ 0x80 );
+
+ if ( nAdditionalFlags & 0x20 ) // invert color
+ aColor = Color(0xff - aColor.GetRed(), 0xff - aColor.GetGreen(), 0xff - aColor.GetBlue());
+ }
+ }
+ else if ( ( nUpper & 4 ) && ( ( nColorCode & 0xfffff8 ) == 0 ) )
+ { // case of nUpper == 4 powerpoint takes this as agrument for a colorschemecolor
+ GetColorFromPalette( nUpper, aColor );
+ }
+ else // hart attributiert, eventuell mit Hinweis auf SYSTEMRGB
+ aColor = Color( (BYTE)nColorCode, (BYTE)( nColorCode >> 8 ), (BYTE)( nColorCode >> 16 ) );
+ return aColor;
+}
+
+FASTBOOL SvxMSDffManager::ReadDffString(SvStream& rSt, String& rTxt) const
+{
+ FASTBOOL bRet=FALSE;
+ DffRecordHeader aStrHd;
+ if( !ReadCommonRecordHeader(aStrHd, rSt) )
+ rSt.Seek( aStrHd.nFilePos );
+ else if ( aStrHd.nRecType == DFF_PST_TextBytesAtom || aStrHd.nRecType == DFF_PST_TextCharsAtom )
+ {
+ FASTBOOL bUniCode=aStrHd.nRecType==DFF_PST_TextCharsAtom;
+ bRet=TRUE;
+ ULONG nBytes = aStrHd.nRecLen;
+ MSDFFReadZString( rSt, rTxt, nBytes, bUniCode );
+ if( !bUniCode )
+ {
+ for ( xub_StrLen n = 0; n < nBytes; n++ )
+ {
+ if( rTxt.GetChar( n ) == 0x0B )
+ rTxt.SetChar( n, ' ' ); // Weicher Umbruch
+ // TODO: Zeilenumbruch im Absatz via Outliner setzen.
+ }
+ }
+ aStrHd.SeekToEndOfRecord( rSt );
+ }
+ else
+ aStrHd.SeekToBegOfRecord( rSt );
+ return bRet;
+}
+
+// sj: I just want to set a string for a text object that may contain multiple
+// paragraphs. If I now take a look at the follwing code I get the impression that
+// our outliner is too complicate to be used properly,
+void SvxMSDffManager::ReadObjText( const String& rText, SdrObject* pObj ) const
+{
+ SdrTextObj* pText = PTR_CAST( SdrTextObj, pObj );
+ if ( pText )
+ {
+ SdrOutliner& rOutliner = pText->ImpGetDrawOutliner();
+ rOutliner.Init( OUTLINERMODE_TEXTOBJECT );
+
+ BOOL bOldUpdateMode = rOutliner.GetUpdateMode();
+ rOutliner.SetUpdateMode( FALSE );
+ rOutliner.SetVertical( pText->IsVerticalWriting() );
+
+ sal_uInt16 nParaIndex = 0;
+ sal_uInt32 nParaSize;
+ const sal_Unicode* pCurrent, *pBuf = rText.GetBuffer();
+ const sal_Unicode* pEnd = rText.GetBuffer() + rText.Len();
+
+ while( pBuf < pEnd )
+ {
+ pCurrent = pBuf;
+
+ for ( nParaSize = 0; pBuf < pEnd; )
+ {
+ sal_Unicode nChar = *pBuf++;
+ if ( nChar == 0xa )
+ {
+ if ( ( pBuf < pEnd ) && ( *pBuf == 0xd ) )
+ pBuf++;
+ break;
+ }
+ else if ( nChar == 0xd )
+ {
+ if ( ( pBuf < pEnd ) && ( *pBuf == 0xa ) )
+ pBuf++;
+ break;
+ }
+ else
+ nParaSize++;
+ }
+ ESelection aSelection( nParaIndex, 0, nParaIndex, 0 );
+ String aParagraph( pCurrent, (sal_uInt16)nParaSize );
+ if ( !nParaIndex && !aParagraph.Len() ) // SJ: we are crashing if the first paragraph is empty ?
+ aParagraph += (sal_Unicode)' '; // otherwise these two lines can be removed.
+ rOutliner.Insert( aParagraph, nParaIndex, 0 );
+ rOutliner.SetParaAttribs( nParaIndex, rOutliner.GetEmptyItemSet() );
+
+ SfxItemSet aParagraphAttribs( rOutliner.GetEmptyItemSet() );
+ if ( !aSelection.nStartPos )
+ aParagraphAttribs.Put( SfxBoolItem( EE_PARA_BULLETSTATE, FALSE ) );
+ aSelection.nStartPos = 0;
+ rOutliner.QuickSetAttribs( aParagraphAttribs, aSelection );
+ nParaIndex++;
+ }
+ OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
+ rOutliner.Clear();
+ rOutliner.SetUpdateMode( bOldUpdateMode );
+ pText->SetOutlinerParaObject( pNewText );
+ }
+}
+
+FASTBOOL SvxMSDffManager::ReadObjText(SvStream& rSt, SdrObject* pObj) const
+{
+ FASTBOOL bRet=FALSE;
+ SdrTextObj* pText = PTR_CAST(SdrTextObj, pObj);
+ if( pText )
+ {
+ DffRecordHeader aTextHd;
+ if( !ReadCommonRecordHeader(aTextHd, rSt) )
+ rSt.Seek( aTextHd.nFilePos );
+ else if ( aTextHd.nRecType==DFF_msofbtClientTextbox )
+ {
+ bRet=TRUE;
+ ULONG nRecEnd=aTextHd.GetRecEndFilePos();
+ DffRecordHeader aHd;
+ String aText;
+// UINT32 nInvent=pText->GetObjInventor();
+// UINT16 nIdent=pText->GetObjIdentifier();
+
+ SdrOutliner& rOutliner=pText->ImpGetDrawOutliner();
+// sal_Int16 nMinDepth = rOutliner.GetMinDepth();
+ USHORT nOutlMode = rOutliner.GetMode();
+
+ { // Wohl 'nen kleiner Bug der EditEngine, das die
+ // Absastzattribute bei Clear() nicht entfernt werden.
+ FASTBOOL bClearParaAttribs = TRUE;
+ rOutliner.SetStyleSheet( 0, NULL );
+ SfxItemSet aSet(rOutliner.GetEmptyItemSet());
+ aSet.Put(SvxColorItem( COL_BLACK ));
+ rOutliner.SetParaAttribs(0,aSet);
+ pText->SetMergedItemSet(aSet);
+
+ bClearParaAttribs = FALSE;
+ if( bClearParaAttribs )
+ {
+ // Wohl 'nen kleiner Bug der EditEngine, dass die
+ // Absastzattribute bei Clear() nicht entfernt werden.
+ rOutliner.SetParaAttribs(0,rOutliner.GetEmptyItemSet());
+ }
+ }
+ rOutliner.Init( OUTLINERMODE_TEXTOBJECT );
+
+// ULONG nFilePosMerker=rSt.Tell();
+ ////////////////////////////////////
+ // TextString und MetaChars lesen //
+ ////////////////////////////////////
+ do
+ {
+ if( !ReadCommonRecordHeader(aHd, rSt) )
+ rSt.Seek( aHd.nFilePos );
+ else
+ {
+ switch (aHd.nRecType)
+ {
+ //case TextHeaderAtom
+ //case TextSpecInfoAtom
+ case DFF_PST_TextBytesAtom:
+ case DFF_PST_TextCharsAtom:
+ {
+ aHd.SeekToBegOfRecord(rSt);
+ ReadDffString(rSt, aText);
+ }
+ break;
+ case DFF_PST_TextRulerAtom :
+ {
+ UINT16 nLen = (UINT16)aHd.nRecLen;
+ if(nLen)
+ {
+ UINT16 nVal1, nVal2, nVal3;
+ UINT16 nDefaultTab = 2540; // PPT def: 1 Inch //rOutliner.GetDefTab();
+ UINT16 nMostrightTab = 0;
+ SfxItemSet aSet(rOutliner.GetEmptyItemSet());
+ SvxTabStopItem aTabItem(0, 0, SVX_TAB_ADJUST_DEFAULT, EE_PARA_TABS);
+
+ rSt >> nVal1;
+ rSt >> nVal2;
+ nLen -= 4;
+
+ // Allg. TAB verstellt auf Wert in nVal3
+ if(nLen && (nVal1 & 0x0001))
+ {
+ rSt >> nVal3;
+ nLen -= 2;
+ nDefaultTab = (UINT16)(((UINT32)nVal3 * 1000) / 240);
+ }
+
+ // Weitere, frei gesetzte TABs
+ if(nLen && (nVal1 & 0x0004))
+ {
+ rSt >> nVal1;
+ nLen -= 2;
+
+ // fest gesetzte TABs importieren
+ while(nLen && nVal1--)
+ {
+ rSt >> nVal2;
+ rSt >> nVal3;
+ nLen -= 4;
+
+ UINT16 nNewTabPos = (UINT16)(((UINT32)nVal2 * 1000) / 240);
+ if(nNewTabPos > nMostrightTab)
+ nMostrightTab = nNewTabPos;
+
+ SvxTabStop aTabStop(nNewTabPos);
+ aTabItem.Insert(aTabStop);
+ }
+ }
+
+ // evtl. noch default-TABs ergaenzen (immer)
+ UINT16 nObjWidth = sal_uInt16(pObj->GetSnapRect().GetWidth() + 1);
+ UINT16 nDefaultTabPos = nDefaultTab;
+
+ while(nDefaultTabPos <= nObjWidth && nDefaultTabPos <= nMostrightTab)
+ nDefaultTabPos =
+ nDefaultTabPos + nDefaultTab;
+
+ while(nDefaultTabPos <= nObjWidth)
+ {
+ SvxTabStop aTabStop(nDefaultTabPos);
+ aTabItem.Insert(aTabStop);
+ nDefaultTabPos =
+ nDefaultTabPos + nDefaultTab;
+ }
+
+ // Falls TABs angelegt wurden, setze diese
+ if(aTabItem.Count())
+ {
+ aSet.Put(aTabItem);
+ rOutliner.SetParaAttribs(0, aSet);
+ }
+ }
+ }
+ break;
+ }
+ aHd.SeekToEndOfRecord( rSt );
+ }
+ }
+ while ( rSt.GetError() == 0 && rSt.Tell() < nRecEnd );
+
+ ////////////////////////
+ // SHIFT-Ret ersetzen //
+ ////////////////////////
+ if ( aText.Len() )
+ {
+ aText += ' ';
+ aText.SetChar( aText.Len()-1, 0x0D );
+ rOutliner.SetText( aText, rOutliner.GetParagraph( 0 ) );
+
+ // SHIFT-Ret ersetzen im Outliner
+ if(aText.GetTokenCount(0x0B) > 1)
+ {
+ UINT32 nParaCount = rOutliner.GetParagraphCount();
+ for(UINT16 a=0;a<nParaCount;a++)
+ {
+ Paragraph* pActPara = rOutliner.GetParagraph(a);
+ String aParaText = rOutliner.GetText(pActPara);
+ for(UINT16 b=0;b<aParaText.Len();b++)
+ {
+ if( aParaText.GetChar( b ) == 0x0B)
+ {
+ ESelection aSelection(a, b, a, b+1);
+ rOutliner.QuickInsertLineBreak(aSelection);
+ }
+ }
+ }
+ }
+ }
+ OutlinerParaObject* pNewText=rOutliner.CreateParaObject();
+ rOutliner.Init( nOutlMode );
+ pText->NbcSetOutlinerParaObject(pNewText);
+ }
+ else
+ aTextHd.SeekToBegOfRecord(rSt);
+
+ }
+ return bRet;
+}
+
+//static
+void SvxMSDffManager::MSDFFReadZString( SvStream& rIn, String& rStr,
+ ULONG nRecLen, FASTBOOL bUniCode )
+{
+ sal_uInt16 nLen = (sal_uInt16)nRecLen;
+ if( nLen )
+ {
+ if ( bUniCode )
+ nLen >>= 1;
+
+ String sBuf;
+ sal_Unicode* pBuf = sBuf.AllocBuffer( nLen );
+
+ if( bUniCode )
+ {
+ rIn.Read( (sal_Char*)pBuf, nLen << 1 );
+
+#ifdef OSL_BIGENDIAN
+ for( sal_uInt16 n = 0; n < nLen; ++n, ++pBuf )
+ *pBuf = SWAPSHORT( *pBuf );
+#endif // ifdef OSL_BIGENDIAN
+ }
+ else
+ {
+ // use the String-Data as buffer for the 8bit characters and
+ // change then all to unicode
+ sal_Char* pReadPos = ((sal_Char*)pBuf) + nLen;
+ rIn.Read( (sal_Char*)pReadPos, nLen );
+ for( sal_uInt16 n = 0; n < nLen; ++n, ++pBuf, ++pReadPos )
+ *pBuf = ByteString::ConvertToUnicode( *pReadPos, RTL_TEXTENCODING_MS_1252 );
+ }
+
+ rStr = sBuf.EraseTrailingChars( 0 );
+ }
+ else
+ rStr.Erase();
+}
+
+SdrObject* SvxMSDffManager::ImportFontWork( SvStream& rStCt, SfxItemSet& rSet, Rectangle& rBoundRect ) const
+{
+ SdrObject* pRet = NULL;
+ String aObjectText;
+ String aFontName;
+ BOOL bTextRotate = FALSE;
+
+ ((SvxMSDffManager*)this)->mnFix16Angle = 0; // we don't want to use this property in future
+ if ( SeekToContent( DFF_Prop_gtextUNICODE, rStCt ) )
+ MSDFFReadZString( rStCt, aObjectText, GetPropertyValue( DFF_Prop_gtextUNICODE ), TRUE );
+ if ( SeekToContent( DFF_Prop_gtextFont, rStCt ) )
+ MSDFFReadZString( rStCt, aFontName, GetPropertyValue( DFF_Prop_gtextFont ), TRUE );
+ if ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x2000 )
+ {
+ // Text ist senkrecht formatiert, Box Kippen
+ INT32 nHalfWidth = ( rBoundRect.GetWidth() + 1) >> 1;
+ INT32 nHalfHeight = ( rBoundRect.GetHeight() + 1) >> 1;
+ Point aTopLeft( rBoundRect.Left() + nHalfWidth - nHalfHeight,
+ rBoundRect.Top() + nHalfHeight - nHalfWidth);
+ Size aNewSize( rBoundRect.GetHeight(), rBoundRect.GetWidth() );
+ Rectangle aNewRect( aTopLeft, aNewSize );
+ rBoundRect = aNewRect;
+
+ String aSrcText( aObjectText );
+ aObjectText.Erase();
+ for( UINT16 a = 0; a < aSrcText.Len(); a++ )
+ {
+ aObjectText += aSrcText.GetChar( a );
+ aObjectText += '\n';
+ }
+ rSet.Put( SdrTextHorzAdjustItem( SDRTEXTHORZADJUST_CENTER ) );
+ bTextRotate = TRUE;
+ }
+ if ( aObjectText.Len() )
+ { // FontWork-Objekt Mit dem Text in aObjectText erzeugen
+ SdrObject* pNewObj = new SdrRectObj( OBJ_TEXT, rBoundRect );
+ if( pNewObj )
+ {
+ pNewObj->SetModel( pSdrModel );
+ ((SdrRectObj*)pNewObj)->SetText( aObjectText );
+ SdrFitToSizeType eFTS = SDRTEXTFIT_PROPORTIONAL;
+ rSet.Put( SdrTextFitToSizeTypeItem( eFTS ) );
+ rSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
+ rSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
+ rSet.Put( SvxFontItem( FAMILY_DONTKNOW, aFontName, String(),
+ PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO ));
+
+ pNewObj->SetMergedItemSet(rSet);
+
+ pRet = pNewObj->ConvertToPolyObj( FALSE, FALSE );
+ if( !pRet )
+ pRet = pNewObj;
+ else
+ {
+ pRet->NbcSetSnapRect( rBoundRect );
+ SdrObject::Free( pNewObj );
+ }
+ if( bTextRotate )
+ {
+ double a = 9000 * nPi180;
+ pRet->NbcRotate( rBoundRect.Center(), 9000, sin( a ), cos( a ) );
+ }
+ }
+ }
+ return pRet;
+}
+
+static Size lcl_GetPrefSize(const Graphic& rGraf, MapMode aWanted)
+{
+ MapMode aPrefMapMode(rGraf.GetPrefMapMode());
+ if (aPrefMapMode == aWanted)
+ return rGraf.GetPrefSize();
+ Size aRetSize;
+ if (aPrefMapMode == MAP_PIXEL)
+ {
+ aRetSize = Application::GetDefaultDevice()->PixelToLogic(
+ rGraf.GetPrefSize(), aWanted);
+ }
+ else
+ {
+ aRetSize = Application::GetDefaultDevice()->LogicToLogic(
+ rGraf.GetPrefSize(), rGraf.GetPrefMapMode(), aWanted);
+ }
+ return aRetSize;
+}
+
+// sj: if the parameter pSet is null, then the resulting crop bitmap will be stored in rGraf,
+// otherwise rGraf is untouched and pSet is used to store the corresponding SdrGrafCropItem
+static void lcl_ApplyCropping( const DffPropSet& rPropSet, SfxItemSet* pSet, Graphic& rGraf )
+{
+ sal_Int32 nCropTop = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromTop, 0 );
+ sal_Int32 nCropBottom = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromBottom, 0 );
+ sal_Int32 nCropLeft = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromLeft, 0 );
+ sal_Int32 nCropRight = (sal_Int32)rPropSet.GetPropertyValue( DFF_Prop_cropFromRight, 0 );
+
+ if( nCropTop || nCropBottom || nCropLeft || nCropRight )
+ {
+ double fFactor;
+ Size aCropSize;
+ BitmapEx aCropBitmap;
+ sal_uInt32 nTop( 0 ), nBottom( 0 ), nLeft( 0 ), nRight( 0 );
+
+ if ( pSet ) // use crop attributes ?
+ aCropSize = lcl_GetPrefSize( rGraf, MAP_100TH_MM );
+ else
+ {
+ aCropBitmap = rGraf.GetBitmapEx();
+ aCropSize = aCropBitmap.GetSizePixel();
+ }
+ if ( nCropTop )
+ {
+ fFactor = (double)nCropTop / 65536.0;
+ nTop = (sal_uInt32)( ( (double)( aCropSize.Height() + 1 ) * fFactor ) + 0.5 );
+ }
+ if ( nCropBottom )
+ {
+ fFactor = (double)nCropBottom / 65536.0;
+ nBottom = (sal_uInt32)( ( (double)( aCropSize.Height() + 1 ) * fFactor ) + 0.5 );
+ }
+ if ( nCropLeft )
+ {
+ fFactor = (double)nCropLeft / 65536.0;
+ nLeft = (sal_uInt32)( ( (double)( aCropSize.Width() + 1 ) * fFactor ) + 0.5 );
+ }
+ if ( nCropRight )
+ {
+ fFactor = (double)nCropRight / 65536.0;
+ nRight = (sal_uInt32)( ( (double)( aCropSize.Width() + 1 ) * fFactor ) + 0.5 );
+ }
+ if ( pSet ) // use crop attributes ?
+ pSet->Put( SdrGrafCropItem( nLeft, nTop, nRight, nBottom ) );
+ else
+ {
+ Rectangle aCropRect( nLeft, nTop, aCropSize.Width() - nRight, aCropSize.Height() - nBottom );
+ aCropBitmap.Crop( aCropRect );
+ rGraf = aCropBitmap;
+ }
+ }
+}
+
+SdrObject* SvxMSDffManager::ImportGraphic( SvStream& rSt, SfxItemSet& rSet, const DffObjData& rObjData ) const
+{
+ SdrObject* pRet = NULL;
+ String aFilename;
+ String aLinkFileName, aLinkFilterName;
+ Rectangle aVisArea;
+
+ MSO_BlipFlags eFlags = (MSO_BlipFlags)GetPropertyValue( DFF_Prop_pibFlags, mso_blipflagDefault );
+ sal_uInt32 nBlipId = GetPropertyValue( DFF_Prop_pib, 0 );
+ sal_Bool bGrfRead = sal_False,
+
+ // Grafik verlinkt
+ bLinkGrf = 0 != ( eFlags & mso_blipflagLinkToFile );
+ {
+ Graphic aGraf; // be sure this graphic is deleted before swapping out
+ if( SeekToContent( DFF_Prop_pibName, rSt ) )
+ MSDFFReadZString( rSt, aFilename, GetPropertyValue( DFF_Prop_pibName ), TRUE );
+
+ // UND, ODER folgendes:
+ if( !( eFlags & mso_blipflagDoNotSave ) ) // Grafik embedded
+ {
+ bGrfRead = GetBLIP( nBlipId, aGraf, &aVisArea );
+ if ( !bGrfRead )
+ {
+ /*
+ Still no luck, lets look at the end of this record for a FBSE pool,
+ this fallback is a specific case for how word does it sometimes
+ */
+ rObjData.rSpHd.SeekToEndOfRecord( rSt );
+ DffRecordHeader aHd;
+ rSt >> aHd;
+ if( DFF_msofbtBSE == aHd.nRecType )
+ {
+ const ULONG nSkipBLIPLen = 20;
+ const ULONG nSkipShapePos = 4;
+ const ULONG nSkipBLIP = 4;
+ const ULONG nSkip =
+ nSkipBLIPLen + 4 + nSkipShapePos + 4 + nSkipBLIP;
+
+ if (nSkip <= aHd.nRecLen)
+ {
+ rSt.SeekRel(nSkip);
+ if (0 == rSt.GetError())
+ bGrfRead = GetBLIPDirect( rSt, aGraf, &aVisArea );
+ }
+ }
+ }
+ }
+ if ( bGrfRead )
+ {
+ // the writer is doing it's own cropping, so this part affects only impress and calc
+ if ( GetSvxMSDffSettings() & SVXMSDFF_SETTINGS_CROP_BITMAPS )
+ lcl_ApplyCropping( *this, ( rObjData.nSpFlags & SP_FOLESHAPE ) == 0 ? &rSet : NULL, aGraf );
+
+ if ( IsProperty( DFF_Prop_pictureTransparent ) )
+ {
+ UINT32 nTransColor = GetPropertyValue( DFF_Prop_pictureTransparent, 0 );
+
+ if ( aGraf.GetType() == GRAPHIC_BITMAP )
+ {
+ BitmapEx aBitmapEx( aGraf.GetBitmapEx() );
+ Bitmap aBitmap( aBitmapEx.GetBitmap() );
+ Bitmap aMask( aBitmap.CreateMask( MSO_CLR_ToColor( nTransColor, DFF_Prop_pictureTransparent ), 9 ) );
+ if ( aBitmapEx.IsTransparent() )
+ aMask.CombineSimple( aBitmapEx.GetMask(), BMP_COMBINE_OR );
+ aGraf = BitmapEx( aBitmap, aMask );
+ }
+ }
+
+ sal_Int32 nContrast = GetPropertyValue( DFF_Prop_pictureContrast, 0x10000 );
+ /*
+ 0x10000 is msoffice 50%
+ < 0x10000 is in units of 1/50th of 0x10000 per 1%
+ > 0x10000 is in units where
+ a msoffice x% is stored as 50/(100-x) * 0x10000
+
+ plus, a (ui) microsoft % ranges from 0 to 100, OOO
+ from -100 to 100, so also normalize into that range
+ */
+ if ( nContrast > 0x10000 )
+ {
+ double fX = nContrast;
+ fX /= 0x10000;
+ fX /= 51; // 50 + 1 to round
+ fX = 1/fX;
+ nContrast = static_cast<sal_Int32>(fX);
+ nContrast -= 100;
+ nContrast = -nContrast;
+ nContrast = (nContrast-50)*2;
+ }
+ else if ( nContrast == 0x10000 )
+ nContrast = 0;
+ else
+ {
+ nContrast *= 101; //100 + 1 to round
+ nContrast /= 0x10000;
+ nContrast -= 100;
+ }
+ sal_Int16 nBrightness = (sal_Int16)( (sal_Int32)GetPropertyValue( DFF_Prop_pictureBrightness, 0 ) / 327 );
+ sal_Int32 nGamma = GetPropertyValue( DFF_Prop_pictureGamma, 0x10000 );
+ GraphicDrawMode eDrawMode = GRAPHICDRAWMODE_STANDARD;
+ switch ( GetPropertyValue( DFF_Prop_pictureActive ) & 6 )
+ {
+ case 4 : eDrawMode = GRAPHICDRAWMODE_GREYS; break;
+ case 6 : eDrawMode = GRAPHICDRAWMODE_MONO; break;
+ case 0 :
+ {
+ //office considers the converted values of (in OOo) 70 to be the
+ //"watermark" values, which can vary slightly due to rounding from the
+ //above values
+ if (( nContrast == -70 ) && ( nBrightness == 70 ))
+ {
+ nContrast = 0;
+ nBrightness = 0;
+ eDrawMode = GRAPHICDRAWMODE_WATERMARK;
+ };
+ }
+ break;
+ }
+
+ if ( nContrast || nBrightness || ( nGamma != 0x10000 ) || ( eDrawMode != GRAPHICDRAWMODE_STANDARD ) )
+ {
+ if ( ( rObjData.nSpFlags & SP_FOLESHAPE ) == 0 )
+ {
+ if ( nBrightness )
+ rSet.Put( SdrGrafLuminanceItem( nBrightness ) );
+ if ( nContrast )
+ rSet.Put( SdrGrafContrastItem( (sal_Int16)nContrast ) );
+ if ( nGamma != 0x10000 )
+ rSet.Put( SdrGrafGamma100Item( nGamma / 655 ) );
+ if ( eDrawMode != GRAPHICDRAWMODE_STANDARD )
+ rSet.Put( SdrGrafModeItem( eDrawMode ) );
+ }
+ else
+ {
+ if ( eDrawMode == GRAPHICDRAWMODE_WATERMARK )
+ {
+ nContrast = 60;
+ nBrightness = 70;
+ eDrawMode = GRAPHICDRAWMODE_STANDARD;
+ }
+ switch ( aGraf.GetType() )
+ {
+ case GRAPHIC_BITMAP :
+ {
+ BitmapEx aBitmapEx( aGraf.GetBitmapEx() );
+ if ( nBrightness || nContrast || ( nGamma != 0x10000 ) )
+ aBitmapEx.Adjust( nBrightness, (sal_Int16)nContrast, 0, 0, 0, (double)nGamma / 0x10000, FALSE );
+ if ( eDrawMode == GRAPHICDRAWMODE_GREYS )
+ aBitmapEx.Convert( BMP_CONVERSION_8BIT_GREYS );
+ else if ( eDrawMode == GRAPHICDRAWMODE_MONO )
+ aBitmapEx.Convert( BMP_CONVERSION_1BIT_THRESHOLD );
+ aGraf = aBitmapEx;
+
+ }
+ break;
+
+ case GRAPHIC_GDIMETAFILE :
+ {
+ GDIMetaFile aGdiMetaFile( aGraf.GetGDIMetaFile() );
+ if ( nBrightness || nContrast || ( nGamma != 0x10000 ) )
+ aGdiMetaFile.Adjust( nBrightness, (sal_Int16)nContrast, 0, 0, 0, (double)nGamma / 0x10000, FALSE );
+ if ( eDrawMode == GRAPHICDRAWMODE_GREYS )
+ aGdiMetaFile.Convert( MTF_CONVERSION_8BIT_GREYS );
+ else if ( eDrawMode == GRAPHICDRAWMODE_MONO )
+ aGdiMetaFile.Convert( MTF_CONVERSION_1BIT_THRESHOLD );
+ aGraf = aGdiMetaFile;
+ }
+ break;
+ default: break;
+ }
+ }
+ }
+ }
+
+ // sollte es ein OLE-Object sein?
+ if( bGrfRead && !bLinkGrf && IsProperty( DFF_Prop_pictureId ) )
+ {
+ // TODO/LATER: in future probably the correct aspect should be provided here
+ sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
+ // --> OD 2004-12-14 #i32596# - pass <nCalledByGroup> to method
+ pRet = ImportOLE( GetPropertyValue( DFF_Prop_pictureId ), aGraf, rObjData.aBoundRect, aVisArea, rObjData.nCalledByGroup, nAspect );
+ // <--
+ }
+ if( !pRet )
+ {
+ pRet = new SdrGrafObj;
+ if( bGrfRead )
+ ((SdrGrafObj*)pRet)->SetGraphic( aGraf );
+
+ if( bLinkGrf && !bGrfRead ) // sj: #i55484# if the graphic was embedded ( bGrfRead == true ) then
+ { // we do not need to set a link. TODO: not to lose the information where the graphic is linked from
+ UniString aName( ::URIHelper::SmartRel2Abs( INetURLObject(maBaseURL), aFilename, URIHelper::GetMaybeFileHdl(), true, false,
+ INetURLObject::WAS_ENCODED,
+ INetURLObject::DECODE_UNAMBIGUOUS ) );
+
+ String aFilterName;
+ INetURLObject aURLObj( aName );
+
+ if( aURLObj.GetProtocol() == INET_PROT_NOT_VALID )
+ {
+ String aValidURL;
+
+ if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( aName, aValidURL ) )
+ aURLObj = INetURLObject( aValidURL );
+ }
+
+ if( aURLObj.GetProtocol() != INET_PROT_NOT_VALID )
+ {
+ GraphicFilter* pGrfFilter = GraphicFilter::GetGraphicFilter();
+ aFilterName = pGrfFilter->GetImportFormatName(
+ pGrfFilter->GetImportFormatNumberForShortName( aURLObj.getExtension() ) );
+ }
+
+ aLinkFileName = aName;
+ aLinkFilterName = aFilterName;
+ }
+ }
+
+ // set the size from BLIP if there is one
+ if ( pRet && bGrfRead && !aVisArea.IsEmpty() )
+ pRet->SetBLIPSizeRectangle( aVisArea );
+
+ if ( !pRet->GetName().Len() ) // SJ 22.02.00 : PPT OLE IMPORT:
+ { // name is already set in ImportOLE !!
+ // JP 01.12.99: SetName before SetModel - because in the other order the Bug 70098 is active
+ if ( ( eFlags & mso_blipflagType ) != mso_blipflagComment )
+ {
+ INetURLObject aURL;
+ aURL.SetSmartURL( aFilename );
+ pRet->SetName( aURL.getBase() );
+ }
+ else
+ pRet->SetName( aFilename );
+ }
+ }
+ pRet->SetModel( pSdrModel ); // fuer GraphicLink erforderlich
+ pRet->SetLogicRect( rObjData.aBoundRect );
+
+ if ( pRet->ISA( SdrGrafObj ) )
+ {
+ if( aLinkFileName.Len() )
+ ((SdrGrafObj*)pRet)->SetGraphicLink( aLinkFileName, aLinkFilterName );
+
+ if ( bLinkGrf && !bGrfRead )
+ {
+ ((SdrGrafObj*)pRet)->ForceSwapIn();
+ Graphic aGraf(((SdrGrafObj*)pRet)->GetGraphic());
+ lcl_ApplyCropping( *this, &rSet, aGraf );
+ }
+ ((SdrGrafObj*)pRet)->ForceSwapOut();
+ }
+
+ return pRet;
+}
+
+// PptSlidePersistEntry& rPersistEntry, SdPage* pPage
+SdrObject* SvxMSDffManager::ImportObj( SvStream& rSt, void* pClientData,
+ Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup, sal_Int32* pShapeId )
+{
+ SdrObject* pRet = NULL;
+ DffRecordHeader aObjHd;
+ rSt >> aObjHd;
+ if ( aObjHd.nRecType == DFF_msofbtSpgrContainer )
+ {
+ pRet = ImportGroup( aObjHd, rSt, pClientData, rClientRect, rGlobalChildRect, nCalledByGroup, pShapeId );
+ }
+ else if ( aObjHd.nRecType == DFF_msofbtSpContainer )
+ {
+ pRet = ImportShape( aObjHd, rSt, pClientData, rClientRect, rGlobalChildRect, nCalledByGroup, pShapeId );
+ }
+ aObjHd.SeekToBegOfRecord( rSt ); // FilePos restaurieren
+ return pRet;
+}
+
+SdrObject* SvxMSDffManager::ImportGroup( const DffRecordHeader& rHd, SvStream& rSt, void* pClientData,
+ Rectangle& rClientRect, const Rectangle& rGlobalChildRect,
+ int nCalledByGroup, sal_Int32* pShapeId )
+{
+ SdrObject* pRet = NULL;
+
+ if( pShapeId )
+ *pShapeId = 0;
+
+ rHd.SeekToContent( rSt );
+ DffRecordHeader aRecHd; // the first atom has to be the SpContainer for the GroupObject
+ rSt >> aRecHd;
+ if ( aRecHd.nRecType == DFF_msofbtSpContainer )
+ {
+ INT32 nGroupRotateAngle = 0;
+ INT32 nSpFlags = 0;
+ mnFix16Angle = 0;
+ aRecHd.SeekToBegOfRecord( rSt );
+ pRet = ImportObj( rSt, pClientData, rClientRect, rGlobalChildRect, nCalledByGroup + 1, pShapeId );
+ if ( pRet )
+ {
+ nSpFlags = nGroupShapeFlags;
+ nGroupRotateAngle = mnFix16Angle;
+
+ Rectangle aClientRect( rClientRect );
+
+ Rectangle aGlobalChildRect;
+ if ( !nCalledByGroup || rGlobalChildRect.IsEmpty() )
+ aGlobalChildRect = GetGlobalChildAnchor( rHd, rSt, aClientRect );
+ else
+ aGlobalChildRect = rGlobalChildRect;
+
+ if ( ( nGroupRotateAngle > 4500 && nGroupRotateAngle <= 13500 )
+ || ( nGroupRotateAngle > 22500 && nGroupRotateAngle <= 31500 ) )
+ {
+ sal_Int32 nHalfWidth = ( aClientRect.GetWidth() + 1 ) >> 1;
+ sal_Int32 nHalfHeight = ( aClientRect.GetHeight() + 1 ) >> 1;
+ Point aTopLeft( aClientRect.Left() + nHalfWidth - nHalfHeight,
+ aClientRect.Top() + nHalfHeight - nHalfWidth );
+ Size aNewSize( aClientRect.GetHeight(), aClientRect.GetWidth() );
+ Rectangle aNewRect( aTopLeft, aNewSize );
+ aClientRect = aNewRect;
+ }
+
+ // now importing the inner objects of the group
+ aRecHd.SeekToEndOfRecord( rSt );
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < rHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aRecHd2;
+ rSt >> aRecHd2;
+ if ( aRecHd2.nRecType == DFF_msofbtSpgrContainer )
+ {
+ Rectangle aGroupClientAnchor, aGroupChildAnchor;
+ GetGroupAnchors( aRecHd2, rSt, aGroupClientAnchor, aGroupChildAnchor, aClientRect, aGlobalChildRect );
+ aRecHd2.SeekToBegOfRecord( rSt );
+ sal_Int32 nShapeId;
+ SdrObject* pTmp = ImportGroup( aRecHd2, rSt, pClientData, aGroupClientAnchor, aGroupChildAnchor, nCalledByGroup + 1, &nShapeId );
+ if ( pTmp )
+ {
+ ((SdrObjGroup*)pRet)->GetSubList()->NbcInsertObject( pTmp );
+ if( nShapeId )
+ insertShapeId( nShapeId, pTmp );
+ }
+ }
+ else if ( aRecHd2.nRecType == DFF_msofbtSpContainer )
+ {
+ aRecHd2.SeekToBegOfRecord( rSt );
+ sal_Int32 nShapeId;
+ SdrObject* pTmp = ImportShape( aRecHd2, rSt, pClientData, aClientRect, aGlobalChildRect, nCalledByGroup + 1, &nShapeId );
+ if ( pTmp )
+ {
+ ((SdrObjGroup*)pRet)->GetSubList()->NbcInsertObject( pTmp );
+ if( nShapeId )
+ insertShapeId( nShapeId, pTmp );
+ }
+ }
+ aRecHd2.SeekToEndOfRecord( rSt );
+ }
+
+ // pRet->NbcSetSnapRect( aGroupBound );
+ if ( nGroupRotateAngle )
+ {
+ double a = nGroupRotateAngle * nPi180;
+ pRet->NbcRotate( aClientRect.Center(), nGroupRotateAngle, sin( a ), cos( a ) );
+ }
+ if ( nSpFlags & SP_FFLIPV ) // Vertikal gespiegelt?
+ { // BoundRect in aBoundRect
+ Point aLeft( aClientRect.Left(), ( aClientRect.Top() + aClientRect.Bottom() ) >> 1 );
+ Point aRight( aLeft.X() + 1000, aLeft.Y() );
+ pRet->NbcMirror( aLeft, aRight );
+ }
+ if ( nSpFlags & SP_FFLIPH ) // Horizontal gespiegelt?
+ { // BoundRect in aBoundRect
+ Point aTop( ( aClientRect.Left() + aClientRect.Right() ) >> 1, aClientRect.Top() );
+ Point aBottom( aTop.X(), aTop.Y() + 1000 );
+ pRet->NbcMirror( aTop, aBottom );
+ }
+ }
+ }
+ return pRet;
+}
+
+SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& rSt, void* pClientData,
+ Rectangle& rClientRect, const Rectangle& rGlobalChildRect,
+ int nCalledByGroup, sal_Int32* pShapeId )
+{
+ SdrObject* pRet = NULL;
+
+ if( pShapeId )
+ *pShapeId = 0;
+
+ rHd.SeekToBegOfRecord( rSt );
+ DffObjData aObjData( rHd, rClientRect, nCalledByGroup );
+ maShapeRecords.Consume( rSt, FALSE );
+ aObjData.bShapeType = maShapeRecords.SeekToContent( rSt, DFF_msofbtSp, SEEK_FROM_BEGINNING );
+ if ( aObjData.bShapeType )
+ {
+ rSt >> aObjData.nShapeId
+ >> aObjData.nSpFlags;
+ aObjData.eShapeType = (MSO_SPT)maShapeRecords.Current()->nRecInstance;
+ }
+ else
+ {
+ aObjData.nShapeId = 0;
+ aObjData.nSpFlags = 0;
+ aObjData.eShapeType = mso_sptNil;
+ }
+
+ if( pShapeId )
+ *pShapeId = aObjData.nShapeId;
+
+ if ( mbTracing )
+ mpTracer->AddAttribute( aObjData.nSpFlags & SP_FGROUP
+ ? rtl::OUString::createFromAscii( "GroupShape" )
+ : rtl::OUString::createFromAscii( "Shape" ),
+ rtl::OUString::valueOf( (sal_Int32)aObjData.nShapeId ) );
+ aObjData.bOpt = maShapeRecords.SeekToContent( rSt, DFF_msofbtOPT, SEEK_FROM_CURRENT_AND_RESTART );
+ if ( aObjData.bOpt )
+ {
+ maShapeRecords.Current()->SeekToBegOfRecord( rSt );
+#ifdef DBG_AUTOSHAPE
+ ReadPropSet( rSt, pClientData, (UINT32)aObjData.eShapeType );
+#else
+ ReadPropSet( rSt, pClientData );
+#endif
+ }
+ else
+ {
+ InitializePropSet(); // get the default PropSet
+ ( (DffPropertyReader*) this )->mnFix16Angle = 0;
+ }
+
+ aObjData.bChildAnchor = maShapeRecords.SeekToContent( rSt, DFF_msofbtChildAnchor, SEEK_FROM_CURRENT_AND_RESTART );
+ if ( aObjData.bChildAnchor )
+ {
+ INT32 l, o, r, u;
+ rSt >> l >> o >> r >> u;
+ Scale( l );
+ Scale( o );
+ Scale( r );
+ Scale( u );
+ aObjData.aChildAnchor = Rectangle( l, o, r, u );
+ if ( !rGlobalChildRect.IsEmpty() && !rClientRect.IsEmpty() && rGlobalChildRect.GetWidth() && rGlobalChildRect.GetHeight() )
+ {
+ double fl = l;
+ double fo = o;
+ double fWidth = r - l;
+ double fHeight= u - o;
+ double fXScale = (double)rClientRect.GetWidth() / (double)rGlobalChildRect.GetWidth();
+ double fYScale = (double)rClientRect.GetHeight() / (double)rGlobalChildRect.GetHeight();
+ fl = ( ( l - rGlobalChildRect.Left() ) * fXScale ) + rClientRect.Left();
+ fo = ( ( o - rGlobalChildRect.Top() ) * fYScale ) + rClientRect.Top();
+ fWidth *= fXScale;
+ fHeight *= fYScale;
+ aObjData.aChildAnchor = Rectangle( Point( (sal_Int32)fl, (sal_Int32)fo ), Size( (sal_Int32)( fWidth + 1 ), (sal_Int32)( fHeight + 1 ) ) );
+ }
+ }
+
+ aObjData.bClientAnchor = maShapeRecords.SeekToContent( rSt, DFF_msofbtClientAnchor, SEEK_FROM_CURRENT_AND_RESTART );
+ if ( aObjData.bClientAnchor )
+ ProcessClientAnchor2( rSt, *maShapeRecords.Current(), pClientData, aObjData );
+
+ if ( aObjData.bChildAnchor )
+ aObjData.aBoundRect = aObjData.aChildAnchor;
+
+ if ( aObjData.nSpFlags & SP_FBACKGROUND )
+ aObjData.aBoundRect = Rectangle( Point(), Size( 1, 1 ) );
+
+ Rectangle aTextRect;
+ if ( !aObjData.aBoundRect.IsEmpty() )
+ { // Rotation auf BoundingBox anwenden, BEVOR ien Objekt generiert wurde
+ if( mnFix16Angle )
+ {
+ long nAngle = mnFix16Angle;
+ if ( ( nAngle > 4500 && nAngle <= 13500 ) || ( nAngle > 22500 && nAngle <= 31500 ) )
+ {
+ INT32 nHalfWidth = ( aObjData.aBoundRect.GetWidth() + 1 ) >> 1;
+ INT32 nHalfHeight = ( aObjData.aBoundRect.GetHeight() + 1 ) >> 1;
+ Point aTopLeft( aObjData.aBoundRect.Left() + nHalfWidth - nHalfHeight,
+ aObjData.aBoundRect.Top() + nHalfHeight - nHalfWidth );
+ Size aNewSize( aObjData.aBoundRect.GetHeight(), aObjData.aBoundRect.GetWidth() );
+ Rectangle aNewRect( aTopLeft, aNewSize );
+ aObjData.aBoundRect = aNewRect;
+ }
+ }
+ aTextRect = aObjData.aBoundRect;
+ FASTBOOL bGraphic = IsProperty( DFF_Prop_pib ) ||
+ IsProperty( DFF_Prop_pibName ) ||
+ IsProperty( DFF_Prop_pibFlags );
+
+ if ( aObjData.nSpFlags & SP_FGROUP )
+ {
+ pRet = new SdrObjGroup;
+ /* After CWS aw033 has been integrated, an empty group object
+ cannot store its resulting bounding rectangle anymore. We have
+ to return this rectangle via rClientRect now, but only, if
+ caller has not passed an own bounding ractangle. */
+ if ( rClientRect.IsEmpty() )
+ rClientRect = aObjData.aBoundRect;
+ nGroupShapeFlags = aObjData.nSpFlags; // #73013#
+ }
+ else if ( ( aObjData.eShapeType != mso_sptNil ) || IsProperty( DFF_Prop_pVertices ) || bGraphic )
+ {
+ SfxItemSet aSet( pSdrModel->GetItemPool() );
+
+ sal_Bool bIsConnector = ( ( aObjData.eShapeType >= mso_sptStraightConnector1 ) && ( aObjData.eShapeType <= mso_sptCurvedConnector5 ) );
+ sal_Bool bIsCustomShape = sal_False;
+ sal_Int32 nObjectRotation = mnFix16Angle;
+ sal_uInt32 nSpFlags = aObjData.nSpFlags;
+
+ if ( bGraphic )
+ {
+ pRet = ImportGraphic( rSt, aSet, aObjData ); // SJ: #68396# is no longer true (fixed in ppt2000)
+ ApplyAttributes( rSt, aSet, aObjData );
+ pRet->SetMergedItemSet(aSet);
+ }
+ else if ( aObjData.eShapeType == mso_sptLine )
+ {
+ basegfx::B2DPolygon aPoly;
+ aPoly.append(basegfx::B2DPoint(aObjData.aBoundRect.Left(), aObjData.aBoundRect.Top()));
+ aPoly.append(basegfx::B2DPoint(aObjData.aBoundRect.Right(), aObjData.aBoundRect.Bottom()));
+ pRet = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aPoly));
+ pRet->SetModel( pSdrModel );
+ ApplyAttributes( rSt, aSet, aObjData );
+ pRet->SetMergedItemSet(aSet);
+ }
+ else
+ {
+ if ( GetCustomShapeContent( aObjData.eShapeType ) || IsProperty( DFF_Prop_pVertices ) )
+ {
+
+ ApplyAttributes( rSt, aSet, aObjData );
+
+// the com.sun.star.drawing.EnhancedCustomShapeEngine is default, so we do not need to set a hard attribute
+// aSet.Put( SdrCustomShapeEngineItem( String::CreateFromAscii( "com.sun.star.drawing.EnhancedCustomShapeEngine" ) ) );
+ pRet = new SdrObjCustomShape();
+ pRet->SetModel( pSdrModel );
+
+ sal_Bool bIsFontwork = ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x4000 ) != 0;
+
+ // in case of a FontWork, the text is set by the escher import
+ if ( bIsFontwork )
+ {
+ String aObjectText;
+ String aFontName;
+ MSO_GeoTextAlign eGeoTextAlign;
+
+ if ( SeekToContent( DFF_Prop_gtextFont, rSt ) )
+ {
+ SvxFontItem aLatin(EE_CHAR_FONTINFO), aAsian(EE_CHAR_FONTINFO_CJK), aComplex(EE_CHAR_FONTINFO_CTL);
+ GetDefaultFonts( aLatin, aAsian, aComplex );
+
+ MSDFFReadZString( rSt, aFontName, GetPropertyValue( DFF_Prop_gtextFont ), TRUE );
+ aSet.Put( SvxFontItem( aLatin.GetFamily(), aFontName, aLatin.GetStyleName(),
+ PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO ));
+ aSet.Put( SvxFontItem( aLatin.GetFamily(), aFontName, aLatin.GetStyleName(),
+ PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO_CJK ) );
+ aSet.Put( SvxFontItem( aLatin.GetFamily(), aFontName, aLatin.GetStyleName(),
+ PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, EE_CHAR_FONTINFO_CTL ) );
+ }
+
+ // SJ: applying fontattributes for Fontwork :
+ if ( IsHardAttribute( DFF_Prop_gtextFItalic ) )
+ aSet.Put( SvxPostureItem( ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x0010 ) != 0 ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC ) );
+
+ if ( IsHardAttribute( DFF_Prop_gtextFBold ) )
+ aSet.Put( SvxWeightItem( ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x0020 ) != 0 ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
+
+ // SJ TODO: Vertical Writing is not correct, instead this should be
+ // replaced through "CharacterRotation" by 90, therefore a new Item has to be
+ // supported by svx core, api and xml file format
+ ((SdrObjCustomShape*)pRet)->SetVerticalWriting( ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x2000 ) != 0 );
+
+ if ( SeekToContent( DFF_Prop_gtextUNICODE, rSt ) )
+ {
+ MSDFFReadZString( rSt, aObjectText, GetPropertyValue( DFF_Prop_gtextUNICODE ), TRUE );
+ ReadObjText( aObjectText, pRet );
+ }
+
+ eGeoTextAlign = ( (MSO_GeoTextAlign)GetPropertyValue( DFF_Prop_gtextAlign, mso_alignTextCenter ) );
+ {
+ SdrTextHorzAdjust eHorzAdjust;
+ switch( eGeoTextAlign )
+ {
+ case mso_alignTextLetterJust :
+ case mso_alignTextWordJust :
+ case mso_alignTextStretch : eHorzAdjust = SDRTEXTHORZADJUST_BLOCK; break;
+ default:
+ case mso_alignTextInvalid :
+ case mso_alignTextCenter : eHorzAdjust = SDRTEXTHORZADJUST_CENTER; break;
+ case mso_alignTextLeft : eHorzAdjust = SDRTEXTHORZADJUST_LEFT; break;
+ case mso_alignTextRight : eHorzAdjust = SDRTEXTHORZADJUST_RIGHT; break;
+ }
+ aSet.Put( SdrTextHorzAdjustItem( eHorzAdjust ) );
+
+ SdrFitToSizeType eFTS = SDRTEXTFIT_NONE;
+ if ( eGeoTextAlign == mso_alignTextStretch )
+ eFTS = SDRTEXTFIT_ALLLINES;
+ aSet.Put( SdrTextFitToSizeTypeItem( eFTS ) );
+ }
+ if ( IsProperty( DFF_Prop_gtextSpacing ) )
+ {
+ sal_Int32 nTextWidth = GetPropertyValue( DFF_Prop_gtextSpacing, 100 < 16 ) / 655;
+ if ( nTextWidth != 100 )
+ aSet.Put( SvxCharScaleWidthItem( (sal_uInt16)nTextWidth, EE_CHAR_FONTWIDTH ) );
+ }
+ if ( GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 ) & 0x1000 ) // SJ: Font Kerning On ?
+ aSet.Put( SvxKerningItem( 1, EE_CHAR_KERNING ) );
+ }
+ pRet->SetMergedItemSet( aSet );
+
+ // sj: taking care of rtl, ltr. In case of fontwork mso. seems not to be able to set
+ // proper text directions, instead the text default is depending to the string.
+ // so we have to calculate the a text direction from string:
+ if ( bIsFontwork )
+ {
+ OutlinerParaObject* pParaObj = ((SdrObjCustomShape*)pRet)->GetOutlinerParaObject();
+ if ( pParaObj )
+ {
+ SdrOutliner& rOutliner = ((SdrObjCustomShape*)pRet)->ImpGetDrawOutliner();
+ BOOL bOldUpdateMode = rOutliner.GetUpdateMode();
+ SdrModel* pModel = pRet->GetModel();
+ if ( pModel )
+ rOutliner.SetStyleSheetPool( (SfxStyleSheetPool*)pModel->GetStyleSheetPool() );
+ rOutliner.SetUpdateMode( FALSE );
+ rOutliner.SetText( *pParaObj );
+ VirtualDevice aVirDev( 1 );
+ aVirDev.SetMapMode( MAP_100TH_MM );
+ sal_uInt32 i, nParagraphs = rOutliner.GetParagraphCount();
+ if ( nParagraphs )
+ {
+ sal_Bool bCreateNewParaObject = sal_False;
+ for ( i = 0; i < nParagraphs; i++ )
+ {
+ BOOL bIsRTL = aVirDev.GetTextIsRTL( rOutliner.GetText( rOutliner.GetParagraph( i ) ), 0, STRING_LEN );
+ if ( bIsRTL )
+ {
+ SfxItemSet aSet2( rOutliner.GetParaAttribs( (USHORT)i ) );
+ aSet2.Put( SvxFrameDirectionItem( FRMDIR_HORI_RIGHT_TOP, EE_PARA_WRITINGDIR ) );
+ rOutliner.SetParaAttribs( (USHORT)i, aSet2 );
+ bCreateNewParaObject = sal_True;
+ }
+ }
+ if ( bCreateNewParaObject )
+ {
+ OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
+ rOutliner.Init( OUTLINERMODE_TEXTOBJECT );
+ ((SdrObjCustomShape*)pRet)->NbcSetOutlinerParaObject( pNewText );
+ }
+ }
+ rOutliner.Clear();
+ rOutliner.SetUpdateMode( bOldUpdateMode );
+ }
+ }
+
+ // mso_sptArc special treating:
+ // sj: since we actually can't render the arc because of its weird SnapRect settings,
+ // we will create a new CustomShape, that can be saved/loaded without problems.
+ // We will change the shape type, so this code applys only if importing arcs from msoffice.
+ if ( aObjData.eShapeType == mso_sptArc )
+ {
+ const rtl::OUString sAdjustmentValues( RTL_CONSTASCII_USTRINGPARAM ( "AdjustmentValues" ) );
+ const rtl::OUString sCoordinates( RTL_CONSTASCII_USTRINGPARAM ( "Coordinates" ) );
+ const rtl::OUString sHandles( RTL_CONSTASCII_USTRINGPARAM ( "Handles" ) );
+ const rtl::OUString sEquations( RTL_CONSTASCII_USTRINGPARAM ( "Equations" ) );
+ const rtl::OUString sViewBox( RTL_CONSTASCII_USTRINGPARAM ( "ViewBox" ) );
+ const rtl::OUString sPath( RTL_CONSTASCII_USTRINGPARAM ( "Path" ) );
+ const rtl::OUString sTextFrames( RTL_CONSTASCII_USTRINGPARAM ( "TextFrames" ) );
+ SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pRet)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair> seqCoordinates;
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue > seqAdjustmentValues;
+
+ // before clearing the GeometryItem we have to store the current Coordinates
+ const uno::Any* pAny = ((SdrCustomShapeGeometryItem&)aGeometryItem).GetPropertyValueByName( sPath, sCoordinates );
+ Rectangle aPolyBoundRect;
+ if ( pAny && ( *pAny >>= seqCoordinates ) && ( seqCoordinates.getLength() >= 4 ) )
+ {
+ sal_Int32 nPtNum, nNumElemVert = seqCoordinates.getLength();
+ XPolygon aXP( (sal_uInt16)nNumElemVert );
+// const EnhancedCustomShapeParameterPair* pTmp = seqCoordinates.getArray();
+ for ( nPtNum = 0; nPtNum < nNumElemVert; nPtNum++ )
+ {
+ Point aP;
+ sal_Int32 nX = 0, nY = 0;
+ seqCoordinates[ nPtNum ].First.Value >>= nX;
+ seqCoordinates[ nPtNum ].Second.Value >>= nY;
+ aP.X() = nX;
+ aP.Y() = nY;
+ aXP[ (sal_uInt16)nPtNum ] = aP;
+ }
+ aPolyBoundRect = Rectangle( aXP.GetBoundRect() );
+ }
+ else
+ aPolyBoundRect = Rectangle( -21600, 0, 21600, 43200 ); // defaulting
+
+ // clearing items, so MergeDefaultAttributes will set the corresponding defaults from EnhancedCustomShapeGeometry
+ aGeometryItem.ClearPropertyValue( sHandles );
+ aGeometryItem.ClearPropertyValue( sEquations );
+ aGeometryItem.ClearPropertyValue( sViewBox );
+ aGeometryItem.ClearPropertyValue( sPath );
+
+ sal_Int32 nEndAngle = 9000;
+ sal_Int32 nStartAngle = 0;
+ pAny = ((SdrCustomShapeGeometryItem&)aGeometryItem).GetPropertyValueByName( sAdjustmentValues );
+ if ( pAny && ( *pAny >>= seqAdjustmentValues ) && seqAdjustmentValues.getLength() > 1 )
+ {
+ double fNumber;
+ if ( seqAdjustmentValues[ 0 ].State == com::sun::star::beans::PropertyState_DIRECT_VALUE )
+ {
+ seqAdjustmentValues[ 0 ].Value >>= fNumber;
+ nEndAngle = NormAngle360( - (sal_Int32)fNumber * 100 );
+ }
+ else
+ {
+ fNumber = 270.0;
+ seqAdjustmentValues[ 0 ].Value <<= fNumber;
+ seqAdjustmentValues[ 0 ].State = com::sun::star::beans::PropertyState_DIRECT_VALUE; // so this value will properly be stored
+ }
+
+ if ( seqAdjustmentValues[ 1 ].State == com::sun::star::beans::PropertyState_DIRECT_VALUE )
+ {
+ seqAdjustmentValues[ 1 ].Value >>= fNumber;
+ nStartAngle = NormAngle360( - (sal_Int32)fNumber * 100 );
+ }
+ else
+ {
+ fNumber = 0.0;
+ seqAdjustmentValues[ 1 ].Value <<= fNumber;
+ seqAdjustmentValues[ 1 ].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
+ }
+
+ PropertyValue aPropVal;
+ aPropVal.Name = sAdjustmentValues;
+ aPropVal.Value <<= seqAdjustmentValues;
+ aGeometryItem.SetPropertyValue( aPropVal ); // storing the angle attribute
+ }
+ if ( nStartAngle != nEndAngle )
+ {
+ XPolygon aXPoly( aPolyBoundRect.Center(), aPolyBoundRect.GetWidth() / 2, aPolyBoundRect.GetHeight() / 2,
+ (USHORT)nStartAngle / 10, (USHORT)nEndAngle / 10, TRUE );
+ Rectangle aPolyPieRect( aXPoly.GetBoundRect() );
+
+ double fYScale, fXScale;
+ double fYOfs, fXOfs;
+
+ Point aP( aObjData.aBoundRect.Center() );
+ Size aS( aObjData.aBoundRect.GetSize() );
+ aP.X() -= aS.Width() / 2;
+ aP.Y() -= aS.Height() / 2;
+ Rectangle aLogicRect( aP, aS );
+
+ fYOfs = fXOfs = 0.0;
+
+ if ( aPolyBoundRect.GetWidth() && aPolyPieRect.GetWidth() )
+ {
+ fXScale = (double)aLogicRect.GetWidth() / (double)aPolyPieRect.GetWidth();
+ if ( nSpFlags & SP_FFLIPH )
+ fXOfs = ( (double)aPolyPieRect.Right() - (double)aPolyBoundRect.Right() ) * fXScale;
+ else
+ fXOfs = ( (double)aPolyBoundRect.Left() - (double)aPolyPieRect.Left() ) * fXScale;
+ }
+ if ( aPolyBoundRect.GetHeight() && aPolyPieRect.GetHeight() )
+ {
+ fYScale = (double)aLogicRect.GetHeight() / (double)aPolyPieRect.GetHeight();
+ if ( nSpFlags & SP_FFLIPV )
+ fYOfs = ( (double)aPolyPieRect.Bottom() - (double)aPolyBoundRect.Bottom() ) * fYScale;
+ else
+ fYOfs = ((double)aPolyBoundRect.Top() - (double)aPolyPieRect.Top() ) * fYScale;
+ }
+
+ fXScale = (double)aPolyBoundRect.GetWidth() / (double)aPolyPieRect.GetWidth();
+ fYScale = (double)aPolyBoundRect.GetHeight() / (double)aPolyPieRect.GetHeight();
+
+ Rectangle aOldBoundRect( aObjData.aBoundRect );
+ aObjData.aBoundRect = Rectangle( Point( aLogicRect.Left() + (sal_Int32)fXOfs, aLogicRect.Top() + (sal_Int32)fYOfs ),
+ Size( (sal_Int32)( aLogicRect.GetWidth() * fXScale ), (sal_Int32)( aLogicRect.GetHeight() * fYScale ) ) );
+
+ // creating the text frame -> scaling into (0,0),(21600,21600) destination coordinate system
+ double fTextFrameScaleX = (double)21600 / (double)aPolyBoundRect.GetWidth();
+ double fTextFrameScaleY = (double)21600 / (double)aPolyBoundRect.GetHeight();
+ sal_Int32 nLeft = (sal_Int32)(( aPolyPieRect.Left() - aPolyBoundRect.Left() ) * fTextFrameScaleX );
+ sal_Int32 nTop = (sal_Int32)(( aPolyPieRect.Top() - aPolyBoundRect.Top() ) * fTextFrameScaleY );
+ sal_Int32 nRight = (sal_Int32)(( aPolyPieRect.Right() - aPolyBoundRect.Left() ) * fTextFrameScaleX );
+ sal_Int32 nBottom= (sal_Int32)(( aPolyPieRect.Bottom()- aPolyBoundRect.Top() ) * fTextFrameScaleY );
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeTextFrame > aTextFrame( 1 );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].TopLeft.First, nLeft );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].TopLeft.Second, nTop );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].BottomRight.First, nRight );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeParameter( aTextFrame[ 0 ].BottomRight.Second,nBottom );
+ PropertyValue aProp;
+ aProp.Name = sTextFrames;
+ aProp.Value <<= aTextFrame;
+ aGeometryItem.SetPropertyValue( sPath, aProp );
+
+ // sj: taking care of the different rotation points, since the new arc is having a bigger snaprect
+ if ( mnFix16Angle )
+ {
+ sal_Int32 nAngle = mnFix16Angle;
+ if ( nSpFlags & SP_FFLIPH )
+ nAngle = 36000 - nAngle;
+ if ( nSpFlags & SP_FFLIPV )
+ nAngle = -nAngle;
+ double a = nAngle * F_PI18000;
+ double ss = sin( a );
+ double cc = cos( a );
+ Point aP1( aOldBoundRect.TopLeft() );
+ Point aC1( aObjData.aBoundRect.Center() );
+ Point aP2( aOldBoundRect.TopLeft() );
+ Point aC2( aOldBoundRect.Center() );
+ RotatePoint( aP1, aC1, ss, cc );
+ RotatePoint( aP2, aC2, ss, cc );
+ aObjData.aBoundRect.Move( aP2.X() - aP1.X(), aP2.Y() - aP1.Y() );
+ }
+ }
+ ((SdrObjCustomShape*)pRet)->SetMergedItem( aGeometryItem );
+ ((SdrObjCustomShape*)pRet)->MergeDefaultAttributes();
+
+ // now setting a new name, so the above correction is only done once when importing from ms
+ SdrCustomShapeGeometryItem aGeoName( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pRet)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+ const rtl::OUString sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
+ const rtl::OUString sName( RTL_CONSTASCII_USTRINGPARAM ( "mso-spt100" ) );
+ PropertyValue aPropVal;
+ aPropVal.Name = sType;
+ aPropVal.Value <<= sName;
+ aGeoName.SetPropertyValue( aPropVal );
+ ((SdrObjCustomShape*)pRet)->SetMergedItem( aGeoName );
+ }
+ else
+ ((SdrObjCustomShape*)pRet)->MergeDefaultAttributes();
+
+ pRet->SetSnapRect( aObjData.aBoundRect );
+ EnhancedCustomShape2d aCustomShape2d( pRet );
+ aTextRect = aCustomShape2d.GetTextRect();
+
+ bIsCustomShape = TRUE;
+
+ if( bIsConnector )
+ {
+ if( nObjectRotation )
+ {
+ double a = nObjectRotation * nPi180;
+ pRet->NbcRotate( aObjData.aBoundRect.Center(), nObjectRotation, sin( a ), cos( a ) );
+ }
+ // Horizontal gespiegelt?
+ if ( nSpFlags & SP_FFLIPH )
+ {
+ Rectangle aBndRect( pRet->GetSnapRect() );
+ Point aTop( ( aBndRect.Left() + aBndRect.Right() ) >> 1, aBndRect.Top() );
+ Point aBottom( aTop.X(), aTop.Y() + 1000 );
+ pRet->NbcMirror( aTop, aBottom );
+ }
+ // Vertikal gespiegelt?
+ if ( nSpFlags & SP_FFLIPV )
+ {
+ Rectangle aBndRect( pRet->GetSnapRect() );
+ Point aLeft( aBndRect.Left(), ( aBndRect.Top() + aBndRect.Bottom() ) >> 1 );
+ Point aRight( aLeft.X() + 1000, aLeft.Y() );
+ pRet->NbcMirror( aLeft, aRight );
+ }
+ basegfx::B2DPolyPolygon aPoly( SdrObjCustomShape::GetLineGeometry( (SdrObjCustomShape*)pRet, sal_True ) );
+ SdrObject::Free( pRet );
+
+ pRet = new SdrEdgeObj();
+ ApplyAttributes( rSt, aSet, aObjData );
+ pRet->SetLogicRect( aObjData.aBoundRect );
+ pRet->SetMergedItemSet(aSet);
+
+ // Konnektoren
+ MSO_ConnectorStyle eConnectorStyle = (MSO_ConnectorStyle)GetPropertyValue( DFF_Prop_cxstyle, mso_cxstyleStraight );
+
+ ((SdrEdgeObj*)pRet)->ConnectToNode(TRUE, NULL);
+ ((SdrEdgeObj*)pRet)->ConnectToNode(FALSE, NULL);
+
+ Point aPoint1( aObjData.aBoundRect.TopLeft() );
+ Point aPoint2( aObjData.aBoundRect.BottomRight() );
+
+ // Rotationen beachten
+ if ( nObjectRotation )
+ {
+ double a = nObjectRotation * nPi180;
+ Point aCenter( aObjData.aBoundRect.Center() );
+ double ss = sin(a);
+ double cc = cos(a);
+
+ RotatePoint(aPoint1, aCenter, ss, cc);
+ RotatePoint(aPoint2, aCenter, ss, cc);
+ }
+
+ // Linie innerhalb des Bereiches zurechtdrehen/spiegeln
+ if ( nSpFlags & SP_FFLIPH )
+ {
+ INT32 n = aPoint1.X();
+ aPoint1.X() = aPoint2.X();
+ aPoint2.X() = n;
+ }
+ if ( nSpFlags & SP_FFLIPV )
+ {
+ INT32 n = aPoint1.Y();
+ aPoint1.Y() = aPoint2.Y();
+ aPoint2.Y() = n;
+ }
+ nSpFlags &= ~( SP_FFLIPV | SP_FFLIPH );
+
+ pRet->NbcSetPoint(aPoint1, 0L); // Startpunkt
+ pRet->NbcSetPoint(aPoint2, 1L); // Endpunkt
+
+ sal_Int32 n1HorzDist, n1VertDist, n2HorzDist, n2VertDist;
+ n1HorzDist = n1VertDist = n2HorzDist = n2VertDist = 0;
+ switch( eConnectorStyle )
+ {
+ case mso_cxstyleBent:
+ {
+ aSet.Put( SdrEdgeKindItem( SDREDGE_ORTHOLINES ) );
+ n1HorzDist = n1VertDist = n2HorzDist = n2VertDist = 630;
+ }
+ break;
+ case mso_cxstyleCurved:
+ aSet.Put( SdrEdgeKindItem( SDREDGE_BEZIER ) );
+ break;
+ default: // mso_cxstyleStraight || mso_cxstyleNone
+ aSet.Put( SdrEdgeKindItem( SDREDGE_ONELINE ) );
+ break;
+ }
+ aSet.Put( SdrEdgeNode1HorzDistItem( n1HorzDist ) );
+ aSet.Put( SdrEdgeNode1VertDistItem( n1VertDist ) );
+ aSet.Put( SdrEdgeNode2HorzDistItem( n2HorzDist ) );
+ aSet.Put( SdrEdgeNode2VertDistItem( n2VertDist ) );
+
+ ((SdrEdgeObj*)pRet)->SetEdgeTrackPath( aPoly );
+ }
+ }
+ }
+
+ if ( pRet )
+ {
+ if( nObjectRotation )
+ {
+ double a = nObjectRotation * nPi180;
+ pRet->NbcRotate( aObjData.aBoundRect.Center(), nObjectRotation, sin( a ), cos( a ) );
+ }
+ // Horizontal gespiegelt?
+ if ( nSpFlags & SP_FFLIPH )
+ {
+ Rectangle aBndRect( pRet->GetSnapRect() );
+ Point aTop( ( aBndRect.Left() + aBndRect.Right() ) >> 1, aBndRect.Top() );
+ Point aBottom( aTop.X(), aTop.Y() + 1000 );
+ pRet->NbcMirror( aTop, aBottom );
+ }
+ // Vertikal gespiegelt?
+ if ( nSpFlags & SP_FFLIPV )
+ {
+ Rectangle aBndRect( pRet->GetSnapRect() );
+ Point aLeft( aBndRect.Left(), ( aBndRect.Top() + aBndRect.Bottom() ) >> 1 );
+ Point aRight( aLeft.X() + 1000, aLeft.Y() );
+ pRet->NbcMirror( aLeft, aRight );
+ }
+ }
+ }
+ }
+
+ // #i51348# #118052# name of the shape
+ if( pRet )
+ {
+ ::rtl::OUString aObjName = GetPropertyString( DFF_Prop_wzName, rSt );
+ if( aObjName.getLength() > 0 )
+ pRet->SetName( aObjName );
+ }
+
+ pRet =
+ ProcessObj( rSt, aObjData, pClientData, aTextRect, pRet);
+
+ if ( mbTracing )
+ mpTracer->RemoveAttribute( aObjData.nSpFlags & SP_FGROUP
+ ? rtl::OUString::createFromAscii( "GroupShape" )
+ : rtl::OUString::createFromAscii( "Shape" ) );
+ return pRet;
+}
+
+Rectangle SvxMSDffManager::GetGlobalChildAnchor( const DffRecordHeader& rHd, SvStream& rSt, Rectangle& aClientRect )
+{
+ Rectangle aChildAnchor;
+ rHd.SeekToContent( rSt );
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < rHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aShapeHd;
+ rSt >> aShapeHd;
+ if ( ( aShapeHd.nRecType == DFF_msofbtSpContainer ) ||
+ ( aShapeHd.nRecType == DFF_msofbtSpgrContainer ) )
+ {
+ DffRecordHeader aShapeHd2( aShapeHd );
+ if ( aShapeHd.nRecType == DFF_msofbtSpgrContainer )
+ rSt >> aShapeHd2;
+ while( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aShapeHd2.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aShapeAtom;
+ rSt >> aShapeAtom;
+
+ if ( aShapeAtom.nRecType == DFF_msofbtClientAnchor )
+ {
+ if ( GetSvxMSDffSettings() & SVXMSDFF_SETTINGS_IMPORT_PPT )
+ {
+ sal_Int32 l, t, r, b;
+ if ( aShapeAtom.nRecLen == 16 )
+ {
+ rSt >> l >> t >> r >> b;
+ }
+ else
+ {
+ INT16 ls, ts, rs, bs;
+ rSt >> ts >> ls >> rs >> bs; // etwas seltsame Koordinatenreihenfolge ...
+ l = ls, t = ts, r = rs, b = bs;
+ }
+ Scale( l );
+ Scale( t );
+ Scale( r );
+ Scale( b );
+ aClientRect = Rectangle( l, t, r, b );
+ }
+ break;
+ }
+ else if ( aShapeAtom.nRecType == DFF_msofbtChildAnchor )
+ {
+ sal_Int32 l, o, r, u;
+ rSt >> l >> o >> r >> u;
+ Scale( l );
+ Scale( o );
+ Scale( r );
+ Scale( u );
+ Rectangle aChild( l, o, r, u );
+ aChildAnchor.Union( aChild );
+ break;
+ }
+ aShapeAtom.SeekToEndOfRecord( rSt );
+ }
+ }
+ aShapeHd.SeekToEndOfRecord( rSt );
+ }
+ return aChildAnchor;
+}
+
+void SvxMSDffManager::GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt,
+ Rectangle& rGroupClientAnchor, Rectangle& rGroupChildAnchor,
+ const Rectangle& rClientRect, const Rectangle& rGlobalChildRect )
+{
+ sal_Bool bFirst = sal_True;
+ rHd.SeekToContent( rSt );
+ DffRecordHeader aShapeHd;
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < rHd.GetRecEndFilePos() ) )
+ {
+ rSt >> aShapeHd;
+ if ( ( aShapeHd.nRecType == DFF_msofbtSpContainer ) ||
+ ( aShapeHd.nRecType == DFF_msofbtSpgrContainer ) )
+ {
+ DffRecordHeader aShapeHd2( aShapeHd );
+ if ( aShapeHd.nRecType == DFF_msofbtSpgrContainer )
+ rSt >> aShapeHd2;
+ while( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aShapeHd2.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aShapeAtom;
+ rSt >> aShapeAtom;
+ if ( aShapeAtom.nRecType == DFF_msofbtChildAnchor )
+ {
+ sal_Int32 l, o, r, u;
+ rSt >> l >> o >> r >> u;
+ Scale( l );
+ Scale( o );
+ Scale( r );
+ Scale( u );
+ Rectangle aChild( l, o, r, u );
+
+ if ( bFirst )
+ {
+ if ( !rGlobalChildRect.IsEmpty() && !rClientRect.IsEmpty() && rGlobalChildRect.GetWidth() && rGlobalChildRect.GetHeight() )
+ {
+ double fl = l;
+ double fo = o;
+ double fWidth = r - l;
+ double fHeight= u - o;
+ double fXScale = (double)rClientRect.GetWidth() / (double)rGlobalChildRect.GetWidth();
+ double fYScale = (double)rClientRect.GetHeight() / (double)rGlobalChildRect.GetHeight();
+ fl = ( ( l - rGlobalChildRect.Left() ) * fXScale ) + rClientRect.Left();
+ fo = ( ( o - rGlobalChildRect.Top() ) * fYScale ) + rClientRect.Top();
+ fWidth *= fXScale;
+ fHeight *= fYScale;
+ rGroupClientAnchor = Rectangle( Point( (sal_Int32)fl, (sal_Int32)fo ), Size( (sal_Int32)( fWidth + 1 ), (sal_Int32)( fHeight + 1 ) ) );
+ }
+ bFirst = sal_False;
+ }
+ else
+ rGroupChildAnchor.Union( aChild );
+ break;
+ }
+ aShapeAtom.SeekToEndOfRecord( rSt );
+ }
+ }
+ aShapeHd.SeekToEndOfRecord( rSt );
+ }
+}
+
+SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
+ DffObjData& rObjData,
+ void* pData,
+ Rectangle& rTextRect,
+ SdrObject* pObj
+ )
+{
+ if( !rTextRect.IsEmpty() )
+ {
+ SvxMSDffImportData& rImportData = *(SvxMSDffImportData*)pData;
+ SvxMSDffImportRec* pImpRec = new SvxMSDffImportRec;
+ SvxMSDffImportRec* pTextImpRec = pImpRec;
+
+ // fill Import Record with data
+ pImpRec->nShapeId = rObjData.nShapeId;
+ pImpRec->eShapeType = rObjData.eShapeType;
+
+ MSO_WrapMode eWrapMode( (MSO_WrapMode)GetPropertyValue(
+ DFF_Prop_WrapText,
+ mso_wrapSquare ) );
+ rObjData.bClientAnchor = maShapeRecords.SeekToContent( rSt,
+ DFF_msofbtClientAnchor,
+ SEEK_FROM_CURRENT_AND_RESTART );
+ if( rObjData.bClientAnchor )
+ ProcessClientAnchor( rSt,
+ maShapeRecords.Current()->nRecLen,
+ pImpRec->pClientAnchorBuffer, pImpRec->nClientAnchorLen );
+
+ rObjData.bClientData = maShapeRecords.SeekToContent( rSt,
+ DFF_msofbtClientData,
+ SEEK_FROM_CURRENT_AND_RESTART );
+ if( rObjData.bClientData )
+ ProcessClientData( rSt,
+ maShapeRecords.Current()->nRecLen,
+ pImpRec->pClientDataBuffer, pImpRec->nClientDataLen );
+
+
+ // process user (== Winword) defined parameters in 0xF122 record
+ if( maShapeRecords.SeekToContent( rSt,
+ DFF_msofbtUDefProp,
+ SEEK_FROM_CURRENT_AND_RESTART )
+ && maShapeRecords.Current()->nRecLen )
+ {
+ UINT32 nBytesLeft = maShapeRecords.Current()->nRecLen;
+ UINT32 nUDData;
+ UINT16 nPID;
+ while( 5 < nBytesLeft )
+ {
+ rSt >> nPID;
+ if ( rSt.GetError() != 0 )
+ break;
+ rSt >> nUDData;
+ switch( nPID )
+ {
+ case 0x038F: pImpRec->nXAlign = nUDData; break;
+ case 0x0390: pImpRec->nXRelTo = nUDData; break;
+ case 0x0391: pImpRec->nYAlign = nUDData; break;
+ case 0x0392: pImpRec->nYRelTo = nUDData; break;
+ case 0x03BF: pImpRec->nLayoutInTableCell = nUDData; break;
+ }
+ if ( rSt.GetError() != 0 )
+ break;
+ pImpRec->bHasUDefProp = TRUE;
+ nBytesLeft -= 6;
+ }
+ }
+
+ // Textrahmen, auch Title oder Outline
+ SdrObject* pOrgObj = pObj;
+ SdrRectObj* pTextObj = 0;
+ UINT32 nTextId = GetPropertyValue( DFF_Prop_lTxid, 0 );
+ if( nTextId )
+ {
+ SfxItemSet aSet( pSdrModel->GetItemPool() );
+
+ //Originally anything that as a mso_sptTextBox was created as a
+ //textbox, this was changed for #88277# to be created as a simple
+ //rect to keep impress happy. For the rest of us we'd like to turn
+ //it back into a textbox again.
+ FASTBOOL bTextFrame = (pImpRec->eShapeType == mso_sptTextBox);
+ if (!bTextFrame)
+ {
+ //Either
+ //a) its a simple text object or
+ //b) its a rectangle with text and square wrapping.
+ bTextFrame =
+ (
+ (pImpRec->eShapeType == mso_sptTextSimple) ||
+ (
+ (pImpRec->eShapeType == mso_sptRectangle)
+ && (eWrapMode == mso_wrapSquare)
+ && ShapeHasText(pImpRec->nShapeId, rObjData.rSpHd.GetRecBegFilePos() )
+ )
+ );
+ }
+
+ if (bTextFrame)
+ {
+ SdrObject::Free( pObj );
+ pObj = pOrgObj = 0;
+ }
+
+ // Distance of Textbox to it's surrounding Customshape
+ INT32 nTextLeft = GetPropertyValue( DFF_Prop_dxTextLeft, 91440L);
+ INT32 nTextRight = GetPropertyValue( DFF_Prop_dxTextRight, 91440L );
+ INT32 nTextTop = GetPropertyValue( DFF_Prop_dyTextTop, 45720L );
+ INT32 nTextBottom = GetPropertyValue( DFF_Prop_dyTextBottom, 45720L );
+
+ ScaleEmu( nTextLeft );
+ ScaleEmu( nTextRight );
+ ScaleEmu( nTextTop );
+ ScaleEmu( nTextBottom );
+
+ INT32 nTextRotationAngle=0;
+ bool bVerticalText = false;
+ if ( IsProperty( DFF_Prop_txflTextFlow ) )
+ {
+ MSO_TextFlow eTextFlow = (MSO_TextFlow)(GetPropertyValue(
+ DFF_Prop_txflTextFlow) & 0xFFFF);
+ switch( eTextFlow )
+ {
+ case mso_txflBtoT:
+ nTextRotationAngle = 9000;
+ break;
+ case mso_txflVertN:
+ case mso_txflTtoBN:
+ nTextRotationAngle = 27000;
+ break;
+ case mso_txflTtoBA:
+ bVerticalText = true;
+ break;
+ case mso_txflHorzA:
+ bVerticalText = true;
+ nTextRotationAngle = 9000;
+ case mso_txflHorzN:
+ default :
+ break;
+ }
+ }
+
+ if (nTextRotationAngle)
+ {
+ while (nTextRotationAngle > 360000)
+ nTextRotationAngle-=9000;
+ switch (nTextRotationAngle)
+ {
+ case 9000:
+ {
+ long nWidth = rTextRect.GetWidth();
+ rTextRect.Right() = rTextRect.Left() + rTextRect.GetHeight();
+ rTextRect.Bottom() = rTextRect.Top() + nWidth;
+
+ INT32 nOldTextLeft = nTextLeft;
+ INT32 nOldTextRight = nTextRight;
+ INT32 nOldTextTop = nTextTop;
+ INT32 nOldTextBottom = nTextBottom;
+
+ nTextLeft = nOldTextBottom;
+ nTextRight = nOldTextTop;
+ nTextTop = nOldTextLeft;
+ nTextBottom = nOldTextRight;
+ }
+ break;
+ case 27000:
+ {
+ long nWidth = rTextRect.GetWidth();
+ rTextRect.Right() = rTextRect.Left() + rTextRect.GetHeight();
+ rTextRect.Bottom() = rTextRect.Top() + nWidth;
+
+ INT32 nOldTextLeft = nTextLeft;
+ INT32 nOldTextRight = nTextRight;
+ INT32 nOldTextTop = nTextTop;
+ INT32 nOldTextBottom = nTextBottom;
+
+ nTextLeft = nOldTextTop;
+ nTextRight = nOldTextBottom;
+ nTextTop = nOldTextRight;
+ nTextBottom = nOldTextLeft;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ pTextObj = new SdrRectObj(OBJ_TEXT, rTextRect);
+ pTextImpRec = new SvxMSDffImportRec(*pImpRec);
+
+ // Die vertikalen Absatzeinrueckungen sind im BoundRect mit drin,
+ // hier rausrechnen
+ Rectangle aNewRect(rTextRect);
+ aNewRect.Bottom() -= nTextTop + nTextBottom;
+ aNewRect.Right() -= nTextLeft + nTextRight;
+
+ // Nur falls es eine einfache Textbox ist, darf der Writer
+ // das Objekt durch einen Rahmen ersetzen, ansonsten
+ if( bTextFrame )
+ {
+ SvxMSDffShapeInfo aTmpRec( 0, pImpRec->nShapeId );
+ aTmpRec.bSortByShapeId = TRUE;
+
+ USHORT nFound;
+ if( pShapeInfos->Seek_Entry( &aTmpRec, &nFound ) )
+ {
+ SvxMSDffShapeInfo& rInfo = *pShapeInfos->GetObject(nFound);
+ pTextImpRec->bReplaceByFly = rInfo.bReplaceByFly;
+ pTextImpRec->bLastBoxInChain = rInfo.bLastBoxInChain;
+ }
+ }
+
+ if( !pObj )
+ ApplyAttributes( rSt, aSet, rObjData );
+
+ bool bFitText = false;
+ if (GetPropertyValue(DFF_Prop_FitTextToShape) & 2)
+ {
+ aSet.Put( SdrTextAutoGrowHeightItem( TRUE ) );
+ aSet.Put( SdrTextMinFrameHeightItem(
+ aNewRect.Bottom() - aNewRect.Top() ) );
+ aSet.Put( SdrTextMinFrameWidthItem(
+ aNewRect.Right() - aNewRect.Left() ) );
+ bFitText = true;
+ }
+ else
+ {
+ aSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
+ aSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
+ }
+
+ switch ( (MSO_WrapMode)
+ GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) )
+ {
+ case mso_wrapNone :
+ aSet.Put( SdrTextAutoGrowWidthItem( TRUE ) );
+ if (bFitText)
+ {
+ //can't do autowidth in flys #i107184#
+ pTextImpRec->bReplaceByFly = false;
+ }
+ break;
+ case mso_wrapByPoints :
+ aSet.Put( SdrTextContourFrameItem( TRUE ) );
+ break;
+ default: break;
+ }
+
+ // Abstaende an den Raendern der Textbox setzen
+ aSet.Put( SdrTextLeftDistItem( nTextLeft ) );
+ aSet.Put( SdrTextRightDistItem( nTextRight ) );
+ aSet.Put( SdrTextUpperDistItem( nTextTop ) );
+ aSet.Put( SdrTextLowerDistItem( nTextBottom ) );
+ pTextImpRec->nDxTextLeft = nTextLeft;
+ pTextImpRec->nDyTextTop = nTextTop;
+ pTextImpRec->nDxTextRight = nTextRight;
+ pTextImpRec->nDyTextBottom = nTextBottom;
+
+ // Textverankerung lesen
+ if ( IsProperty( DFF_Prop_anchorText ) )
+ {
+ MSO_Anchor eTextAnchor =
+ (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText );
+
+ SdrTextVertAdjust eTVA = SDRTEXTVERTADJUST_CENTER;
+ BOOL bTVASet(FALSE);
+ SdrTextHorzAdjust eTHA = SDRTEXTHORZADJUST_CENTER;
+ BOOL bTHASet(FALSE);
+
+ switch( eTextAnchor )
+ {
+ case mso_anchorTop:
+ {
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ bTVASet = TRUE;
+ }
+ break;
+ case mso_anchorTopCentered:
+ {
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ bTVASet = TRUE;
+ bTHASet = TRUE;
+ }
+ break;
+
+ case mso_anchorMiddle:
+ bTVASet = TRUE;
+ break;
+ case mso_anchorMiddleCentered:
+ {
+ bTVASet = TRUE;
+ bTHASet = TRUE;
+ }
+ break;
+ case mso_anchorBottom:
+ {
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ bTVASet = TRUE;
+ }
+ break;
+ case mso_anchorBottomCentered:
+ {
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ bTVASet = TRUE;
+ bTHASet = TRUE;
+ }
+ break;
+ /*
+ case mso_anchorTopBaseline:
+ case mso_anchorBottomBaseline:
+ case mso_anchorTopCenteredBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ break;
+ */
+ default : break;
+ }
+ // Einsetzen
+ if ( bTVASet )
+ aSet.Put( SdrTextVertAdjustItem( eTVA ) );
+ if ( bTHASet )
+ aSet.Put( SdrTextHorzAdjustItem( eTHA ) );
+ }
+
+ pTextObj->SetMergedItemSet(aSet);
+ pTextObj->SetModel(pSdrModel);
+
+ if (bVerticalText)
+ pTextObj->SetVerticalWriting(sal_True);
+
+ if (nTextRotationAngle)
+ {
+ long nMinWH = rTextRect.GetWidth() < rTextRect.GetHeight() ?
+ rTextRect.GetWidth() : rTextRect.GetHeight();
+ nMinWH /= 2;
+ Point aPivot(rTextRect.TopLeft());
+ aPivot.X() += nMinWH;
+ aPivot.Y() += nMinWH;
+ double a = nTextRotationAngle * nPi180;
+ pTextObj->NbcRotate(aPivot, nTextRotationAngle, sin(a), cos(a));
+ }
+
+ // rotate text with shape ?
+ if ( mnFix16Angle )
+ {
+ double a = mnFix16Angle * nPi180;
+ pTextObj->NbcRotate( rObjData.aBoundRect.Center(), mnFix16Angle,
+ sin( a ), cos( a ) );
+ }
+
+ if( !pObj )
+ {
+ pObj = pTextObj;
+ }
+ else
+ {
+ if( pTextObj != pObj )
+ {
+ SdrObject* pGroup = new SdrObjGroup;
+ pGroup->GetSubList()->NbcInsertObject( pObj );
+ pGroup->GetSubList()->NbcInsertObject( pTextObj );
+ if (pOrgObj == pObj)
+ pOrgObj = pGroup;
+ else
+ pOrgObj = pObj;
+ pObj = pGroup;
+ }
+ }
+ }
+ else if( !pObj )
+ {
+ // simple rectangular objects are ignored by ImportObj() :-(
+ // this is OK for Draw but not for Calc and Writer
+ // cause here these objects have a default border
+ pObj = new SdrRectObj(rTextRect);
+ pOrgObj = pObj;
+ pObj->SetModel( pSdrModel );
+ SfxItemSet aSet( pSdrModel->GetItemPool() );
+ ApplyAttributes( rSt, aSet, rObjData );
+
+ const SfxPoolItem* pPoolItem=NULL;
+ SfxItemState eState = aSet.GetItemState( XATTR_FILLCOLOR,
+ FALSE, &pPoolItem );
+ if( SFX_ITEM_DEFAULT == eState )
+ aSet.Put( XFillColorItem( String(),
+ Color( mnDefaultColor ) ) );
+ pObj->SetMergedItemSet(aSet);
+ }
+
+ //Means that fBehindDocument is set
+ if (GetPropertyValue(DFF_Prop_fPrint) & 0x20)
+ pImpRec->bDrawHell = TRUE;
+ else
+ pImpRec->bDrawHell = FALSE;
+ if (GetPropertyValue(DFF_Prop_fPrint) & 0x02)
+ pImpRec->bHidden = TRUE;
+ pTextImpRec->bDrawHell = pImpRec->bDrawHell;
+ pTextImpRec->bHidden = pImpRec->bHidden;
+ pImpRec->nNextShapeId = GetPropertyValue( DFF_Prop_hspNext, 0 );
+ pTextImpRec->nNextShapeId=pImpRec->nNextShapeId;
+
+ if ( nTextId )
+ {
+ pTextImpRec->aTextId.nTxBxS = (UINT16)( nTextId >> 16 );
+ pTextImpRec->aTextId.nSequence = (UINT16)nTextId;
+ }
+
+ pTextImpRec->nDxWrapDistLeft = GetPropertyValue(
+ DFF_Prop_dxWrapDistLeft, 114935L ) / 635L;
+ pTextImpRec->nDyWrapDistTop = GetPropertyValue(
+ DFF_Prop_dyWrapDistTop, 0 ) / 635L;
+ pTextImpRec->nDxWrapDistRight = GetPropertyValue(
+ DFF_Prop_dxWrapDistRight, 114935L ) / 635L;
+ pTextImpRec->nDyWrapDistBottom = GetPropertyValue(
+ DFF_Prop_dyWrapDistBottom, 0 ) / 635L;
+ // 16.16 fraction times total image width or height, as appropriate.
+
+ if (SeekToContent(DFF_Prop_pWrapPolygonVertices, rSt))
+ {
+ delete pTextImpRec->pWrapPolygon;
+ sal_uInt16 nNumElemVert, nNumElemMemVert, nElemSizeVert;
+ rSt >> nNumElemVert >> nNumElemMemVert >> nElemSizeVert;
+ if (nNumElemVert && ((nElemSizeVert == 8) || (nElemSizeVert == 4)))
+ {
+ pTextImpRec->pWrapPolygon = new Polygon(nNumElemVert);
+ for (sal_uInt16 i = 0; i < nNumElemVert; ++i)
+ {
+ sal_Int32 nX, nY;
+ if (nElemSizeVert == 8)
+ rSt >> nX >> nY;
+ else
+ {
+ sal_Int16 nSmallX, nSmallY;
+ rSt >> nSmallX >> nSmallY;
+ nX = nSmallX;
+ nY = nSmallY;
+ }
+ (*(pTextImpRec->pWrapPolygon))[i].X() = nX;
+ (*(pTextImpRec->pWrapPolygon))[i].Y() = nY;
+ }
+ }
+ }
+
+ pImpRec->nCropFromTop = GetPropertyValue(
+ DFF_Prop_cropFromTop, 0 );
+ pImpRec->nCropFromBottom = GetPropertyValue(
+ DFF_Prop_cropFromBottom, 0 );
+ pImpRec->nCropFromLeft = GetPropertyValue(
+ DFF_Prop_cropFromLeft, 0 );
+ pImpRec->nCropFromRight = GetPropertyValue(
+ DFF_Prop_cropFromRight, 0 );
+
+ pImpRec->bVFlip = (rObjData.nSpFlags & SP_FFLIPV) ? true : false;
+ pImpRec->bHFlip = (rObjData.nSpFlags & SP_FFLIPH) ? true : false;
+
+ UINT32 nLineFlags = GetPropertyValue( DFF_Prop_fNoLineDrawDash );
+ pImpRec->eLineStyle = (nLineFlags & 8)
+ ? (MSO_LineStyle)GetPropertyValue(
+ DFF_Prop_lineStyle,
+ mso_lineSimple )
+ : (MSO_LineStyle)USHRT_MAX;
+ pTextImpRec->eLineStyle = pImpRec->eLineStyle;
+
+ if( pImpRec->nShapeId )
+ {
+ // Import-Record-Liste ergaenzen
+ if( pOrgObj )
+ {
+ pImpRec->pObj = pOrgObj;
+ rImportData.aRecords.Insert( pImpRec );
+ }
+
+ if( pTextObj && (pOrgObj != pTextObj) )
+ {
+ // Modify ShapeId (must be unique)
+ pImpRec->nShapeId |= 0x8000000;
+ pTextImpRec->pObj = pTextObj;
+ rImportData.aRecords.Insert( pTextImpRec );
+ }
+
+ // Eintrag in Z-Order-Liste um Zeiger auf dieses Objekt ergaenzen
+ /*Only store objects which are not deep inside the tree*/
+ if( ( rObjData.nCalledByGroup == 0 )
+ ||
+ ( (rObjData.nSpFlags & SP_FGROUP)
+ && (rObjData.nCalledByGroup < 2) )
+ )
+ StoreShapeOrder( pImpRec->nShapeId,
+ ( ( (ULONG)pImpRec->aTextId.nTxBxS ) << 16 )
+ + pImpRec->aTextId.nSequence, pObj );
+ }
+ else
+ delete pImpRec;
+ }
+
+ return pObj;
+};
+
+void SvxMSDffManager::StoreShapeOrder(ULONG nId,
+ ULONG nTxBx,
+ SdrObject* pObject,
+ SwFlyFrmFmt* pFly,
+ short nHdFtSection) const
+{
+ USHORT nShpCnt = pShapeOrders->Count();
+ for (USHORT nShapeNum=0; nShapeNum < nShpCnt; nShapeNum++)
+ {
+ SvxMSDffShapeOrder& rOrder
+ = *(SvxMSDffShapeOrder*)(pShapeOrders->GetObject( nShapeNum ));
+
+ if( rOrder.nShapeId == nId )
+ {
+ rOrder.nTxBxComp = nTxBx;
+ rOrder.pObj = pObject;
+ rOrder.pFly = pFly;
+ rOrder.nHdFtSection = nHdFtSection;
+ }
+ }
+}
+
+
+void SvxMSDffManager::ExchangeInShapeOrder( SdrObject* pOldObject,
+ ULONG nTxBx,
+ SwFlyFrmFmt* pFly,
+ SdrObject* pObject) const
+{
+ USHORT nShpCnt = pShapeOrders->Count();
+ for (USHORT nShapeNum=0; nShapeNum < nShpCnt; nShapeNum++)
+ {
+ SvxMSDffShapeOrder& rOrder
+ = *(SvxMSDffShapeOrder*)(pShapeOrders->GetObject( nShapeNum ));
+
+ if( rOrder.pObj == pOldObject )
+ {
+ rOrder.pFly = pFly;
+ rOrder.pObj = pObject;
+ rOrder.nTxBxComp = nTxBx;
+ }
+ }
+}
+
+
+void SvxMSDffManager::RemoveFromShapeOrder( SdrObject* pObject ) const
+{
+ USHORT nShpCnt = pShapeOrders->Count();
+ for (USHORT nShapeNum=0; nShapeNum < nShpCnt; nShapeNum++)
+ {
+ SvxMSDffShapeOrder& rOrder
+ = *(SvxMSDffShapeOrder*)(pShapeOrders->GetObject( nShapeNum ));
+
+ if( rOrder.pObj == pObject )
+ {
+ rOrder.pObj = 0;
+ rOrder.pFly = 0;
+ rOrder.nTxBxComp = 0;
+ }
+ }
+}
+
+
+
+
+//---------------------------------------------------------------------------
+// Hilfs Deklarationen
+//---------------------------------------------------------------------------
+
+/*struct SvxMSDffBLIPInfo -> in's Header-File
+{
+ USHORT nBLIPType; // Art des BLIP: z.B. 6 fuer PNG
+ ULONG nFilePos; // Offset des BLIP im Daten-Stream
+ ULONG nBLIPSize; // Anzahl Bytes, die der BLIP im Stream einnimmt
+ SvxMSDffBLIPInfo(USHORT nBType, ULONG nFPos, ULONG nBSize):
+ nBLIPType( nBType ), nFilePos( nFPos ), nBLIPSize( nBSize ){}
+};
+*/
+
+SV_IMPL_PTRARR( SvxMSDffBLIPInfos, SvxMSDffBLIPInfo_Ptr );
+
+SV_IMPL_PTRARR( SvxMSDffShapeOrders, SvxMSDffShapeOrder_Ptr );
+
+SV_IMPL_OP_PTRARR_SORT( SvxMSDffShapeInfos, SvxMSDffShapeInfo_Ptr );
+
+SV_IMPL_OP_PTRARR_SORT( SvxMSDffShapeTxBxSort, SvxMSDffShapeOrder_Ptr );
+
+
+// Liste aller SvxMSDffImportRec fuer eine Gruppe
+SV_IMPL_OP_PTRARR_SORT(MSDffImportRecords, MSDffImportRec_Ptr)
+
+//---------------------------------------------------------------------------
+// exportierte Klasse: oeffentliche Methoden
+//---------------------------------------------------------------------------
+
+SvxMSDffManager::SvxMSDffManager(SvStream& rStCtrl_,
+ const String& rBaseURL,
+ long nOffsDgg_,
+ SvStream* pStData_,
+ SdrModel* pSdrModel_,// s. unten: SetModel()
+ long nApplicationScale,
+ ColorData mnDefaultColor_,
+ ULONG nDefaultFontHeight_,
+ SvStream* pStData2_,
+ MSFilterTracer* pTracer )
+ :DffPropertyReader( *this ),
+ pFormModel( NULL ),
+ pBLIPInfos( new SvxMSDffBLIPInfos ),
+ pShapeInfos( new SvxMSDffShapeInfos ),
+ pShapeOrders( new SvxMSDffShapeOrders ),
+ nDefaultFontHeight( nDefaultFontHeight_),
+ nOffsDgg( nOffsDgg_ ),
+ nBLIPCount( USHRT_MAX ), // mit Error initialisieren, da wir erst pruefen,
+ nShapeCount( USHRT_MAX ), // ob Kontroll-Stream korrekte Daten enthaellt
+ maBaseURL( rBaseURL ),
+ mpFidcls( NULL ),
+ rStCtrl( rStCtrl_ ),
+ pStData( pStData_ ),
+ pStData2( pStData2_ ),
+ nSvxMSDffSettings( 0 ),
+ nSvxMSDffOLEConvFlags( 0 ),
+ pEscherBlipCache( NULL ),
+ mnDefaultColor( mnDefaultColor_),
+ mpTracer( pTracer ),
+ mbTracing( sal_False )
+{
+ if ( mpTracer )
+ {
+ uno::Any aAny( mpTracer->GetProperty( rtl::OUString::createFromAscii( "On" ) ) );
+ aAny >>= mbTracing;
+ }
+ SetModel( pSdrModel_, nApplicationScale );
+
+ // FilePos des/der Stream(s) merken
+ ULONG nOldPosCtrl = rStCtrl.Tell();
+ ULONG nOldPosData = pStData ? pStData->Tell() : nOldPosCtrl;
+
+ // Falls kein Datenstream angegeben, gehen wir davon aus,
+ // dass die BLIPs im Steuerstream stehen.
+ if( !pStData )
+ pStData = &rStCtrl;
+
+ SetDefaultPropSet( rStCtrl, nOffsDgg );
+
+ // Steuer Stream auslesen, im Erfolgsfall nBLIPCount setzen
+ GetCtrlData( nOffsDgg );
+
+ // Text-Box-Story-Ketten-Infos ueberpruefen
+ CheckTxBxStoryChain();
+
+ // alte FilePos des/der Stream(s) restaurieren
+ rStCtrl.Seek( nOldPosCtrl );
+ if( &rStCtrl != pStData )
+ pStData->Seek( nOldPosData );
+}
+
+SvxMSDffManager::SvxMSDffManager( SvStream& rStCtrl_, const String& rBaseURL, MSFilterTracer* pTracer )
+ :DffPropertyReader( *this ),
+ pFormModel( NULL ),
+ pBLIPInfos( new SvxMSDffBLIPInfos ),
+ pShapeInfos( new SvxMSDffShapeInfos ),
+ pShapeOrders( new SvxMSDffShapeOrders ),
+ nDefaultFontHeight( 24 ),
+ nOffsDgg( 0 ),
+ nBLIPCount( USHRT_MAX ), // mit Error initialisieren, da wir erst pruefen,
+ nShapeCount( USHRT_MAX ), // ob Kontroll-Stream korrekte Daten enthaellt
+ maBaseURL( rBaseURL ),
+ mpFidcls( NULL ),
+ rStCtrl( rStCtrl_ ),
+ pStData( 0 ),
+ pStData2( 0 ),
+ nSvxMSDffSettings( 0 ),
+ nSvxMSDffOLEConvFlags( 0 ),
+ pEscherBlipCache( NULL ),
+ mnDefaultColor( COL_DEFAULT ),
+ mpTracer( pTracer ),
+ mbTracing( sal_False )
+{
+ if ( mpTracer )
+ {
+ uno::Any aAny( mpTracer->GetProperty( rtl::OUString::createFromAscii( "On" ) ) );
+ aAny >>= mbTracing;
+ }
+ SetModel( NULL, 0 );
+}
+
+SvxMSDffManager::~SvxMSDffManager()
+{
+ if ( pEscherBlipCache )
+ {
+ void* pPtr;
+ for ( pPtr = pEscherBlipCache->First(); pPtr; pPtr = pEscherBlipCache->Next() )
+ delete (EscherBlipCacheEntry*)pPtr;
+ delete pEscherBlipCache;
+ }
+ delete pBLIPInfos;
+ delete pShapeInfos;
+ delete pShapeOrders;
+ delete pFormModel;
+ delete[] mpFidcls;
+}
+
+void SvxMSDffManager::InitSvxMSDffManager( long nOffsDgg_, SvStream* pStData_, sal_uInt32 nOleConvFlags )
+{
+ nOffsDgg = nOffsDgg_;
+ pStData = pStData_;
+ nSvxMSDffOLEConvFlags = nOleConvFlags;
+
+ // FilePos des/der Stream(s) merken
+ ULONG nOldPosCtrl = rStCtrl.Tell();
+
+ SetDefaultPropSet( rStCtrl, nOffsDgg );
+
+ // insert fidcl cluster table
+ GetFidclData( nOffsDgg );
+
+ // Steuer Stream auslesen, im Erfolgsfall nBLIPCount setzen
+ GetCtrlData( nOffsDgg );
+
+ // Text-Box-Story-Ketten-Infos ueberpruefen
+ CheckTxBxStoryChain();
+
+ // alte FilePos des/der Stream(s) restaurieren
+ rStCtrl.Seek( nOldPosCtrl );
+}
+
+void SvxMSDffManager::SetDgContainer( SvStream& rSt )
+{
+ UINT32 nFilePos = rSt.Tell();
+ DffRecordHeader aDgContHd;
+ rSt >> aDgContHd;
+ // insert this container only if there is also a DgAtom
+ if ( SeekToRec( rSt, DFF_msofbtDg, aDgContHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aRecHd;
+ rSt >> aRecHd;
+ UINT32 nDrawingId = aRecHd.nRecInstance;
+ maDgOffsetTable.Insert( nDrawingId, (void*)nFilePos );
+ rSt.Seek( nFilePos );
+ }
+}
+
+void SvxMSDffManager::GetFidclData( long nOffsDggL )
+{
+ if ( nOffsDggL )
+ {
+ UINT32 nDummy, nMerk = rStCtrl.Tell();
+ rStCtrl.Seek( nOffsDggL );
+
+ DffRecordHeader aRecHd;
+ rStCtrl >> aRecHd;
+
+ DffRecordHeader aDggAtomHd;
+ if ( SeekToRec( rStCtrl, DFF_msofbtDgg, aRecHd.GetRecEndFilePos(), &aDggAtomHd ) )
+ {
+ aDggAtomHd.SeekToContent( rStCtrl );
+ rStCtrl >> mnCurMaxShapeId
+ >> mnIdClusters
+ >> nDummy
+ >> mnDrawingsSaved;
+
+ if ( mnIdClusters-- > 2 )
+ {
+ if ( aDggAtomHd.nRecLen == ( mnIdClusters * sizeof( FIDCL ) + 16 ) )
+ {
+ mpFidcls = new FIDCL[ mnIdClusters ];
+ for ( UINT32 i = 0; i < mnIdClusters; i++ )
+ {
+ rStCtrl >> mpFidcls[ i ].dgid
+ >> mpFidcls[ i ].cspidCur;
+ }
+ }
+ }
+ }
+ rStCtrl.Seek( nMerk );
+ }
+}
+
+void SvxMSDffManager::CheckTxBxStoryChain()
+{
+ SvxMSDffShapeInfos* pOld = pShapeInfos;
+ USHORT nCnt = pOld->Count();
+ pShapeInfos = new SvxMSDffShapeInfos( (nCnt < 255)
+ ? nCnt
+ : 255 );
+ // altes Info-Array ueberarbeiten
+ // (ist sortiert nach nTxBxComp)
+ ULONG nChain = ULONG_MAX;
+ USHORT nObjMark = 0;
+ BOOL bSetReplaceFALSE = FALSE;
+ USHORT nObj;
+ for( nObj = 0; nObj < nCnt; ++nObj )
+ {
+ SvxMSDffShapeInfo* pObj = pOld->GetObject( nObj );
+ if( pObj->nTxBxComp )
+ {
+ pObj->bLastBoxInChain = FALSE;
+ // Gruppenwechsel ?
+ // --> OD 2008-07-28 #156763#
+ // the text id also contains an internal drawing container id
+ // to distinguish between text id of drawing objects in different
+ // drawing containers.
+// if( nChain != (pObj->nTxBxComp & 0xFFFF0000) )
+ if( nChain != pObj->nTxBxComp )
+ // <--
+ {
+ // voriger war letzter seiner Gruppe
+ if( nObj )
+ pOld->GetObject( nObj-1 )->bLastBoxInChain = TRUE;
+ // Merker und Hilfs-Flag zuruecksetzen
+ nObjMark = nObj;
+ // --> OD 2008-07-28 #156763#
+// nChain = pObj->nTxBxComp & 0xFFFF0000;
+ nChain = pObj->nTxBxComp;
+ // <--
+ bSetReplaceFALSE = !pObj->bReplaceByFly;
+ }
+ else
+ if( !pObj->bReplaceByFly )
+ {
+ // Objekt, das NICHT durch Rahmen ersetzt werden darf ?
+ // Hilfs-Flag setzen
+ bSetReplaceFALSE = TRUE;
+ // ggfs Flag in Anfang der Gruppe austragen
+ for( USHORT nObj2 = nObjMark; nObj2 < nObj; ++nObj2 )
+ pOld->GetObject( nObj2 )->bReplaceByFly = FALSE;
+ }
+
+ if( bSetReplaceFALSE )
+ {
+ pObj->bReplaceByFly = FALSE;
+ }
+ }
+ // alle Shape-Info-Objekte in pShapeInfos umkopieren
+ // (aber nach nShapeId sortieren)
+ pObj->bSortByShapeId = TRUE;
+ // --> OD 2008-07-28 #156763#
+ pObj->nTxBxComp = pObj->nTxBxComp & 0xFFFF0000;
+ // <--
+ pShapeInfos->Insert( pObj );
+ }
+ // voriger war letzter seiner Gruppe
+ if( nObj )
+ pOld->GetObject( nObj-1 )->bLastBoxInChain = TRUE;
+ // urspruengliches Array freigeben, ohne Objekte zu zerstoeren
+ pOld->Remove((USHORT)0, nCnt);
+ delete pOld;
+}
+
+
+/*****************************************************************************
+
+ Einlesen der Shape-Infos im Ctor:
+ ---------------------------------
+ merken der Shape-Ids und zugehoerigen Blip-Nummern und TextBox-Infos
+ ========= ============ =============
+ und merken des File-Offsets fuer jedes Blip
+ ============
+******************************************************************************/
+void SvxMSDffManager::GetCtrlData( long nOffsDgg_ )
+{
+ // Start Offset unbedingt merken, falls wir nochmal aufsetzen muessen
+ long nOffsDggL = nOffsDgg_;
+
+ // Kontroll Stream positionieren
+ rStCtrl.Seek( nOffsDggL );
+
+ BYTE nVer;
+ USHORT nInst;
+ USHORT nFbt;
+ UINT32 nLength;
+ if( !this->ReadCommonRecordHeader( rStCtrl, nVer, nInst, nFbt, nLength ) ) return;
+
+ BOOL bOk;
+ ULONG nPos = nOffsDggL + DFF_COMMON_RECORD_HEADER_SIZE;
+
+ // Fall A: erst Drawing Group Container, dann n Mal Drawing Container
+ if( DFF_msofbtDggContainer == nFbt )
+ {
+ GetDrawingGroupContainerData( rStCtrl, nLength );
+
+ rStCtrl.Seek( STREAM_SEEK_TO_END );
+ UINT32 nMaxStrPos = rStCtrl.Tell();
+
+ nPos += nLength;
+ // --> OD 2008-07-28 #156763#
+ unsigned long nDrawingContainerId = 1;
+ // <--
+ do
+ {
+ rStCtrl.Seek( nPos );
+
+ bOk = ReadCommonRecordHeader( rStCtrl, nVer, nInst, nFbt, nLength ) && ( DFF_msofbtDgContainer == nFbt );
+
+ if( !bOk )
+ {
+ nPos++;
+ rStCtrl.Seek( nPos );
+ bOk = ReadCommonRecordHeader( rStCtrl, nVer, nInst, nFbt, nLength )
+ && ( DFF_msofbtDgContainer == nFbt );
+ }
+ if( bOk )
+ {
+ // --> OD 2008-07-28 #156763#
+ GetDrawingContainerData( rStCtrl, nLength, nDrawingContainerId );
+ // <--
+ }
+ nPos += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
+ // --> OD 2008-07-28 #156763#
+ ++nDrawingContainerId;
+ // <--
+ }
+ while( nPos < nMaxStrPos && bOk );
+ }
+}
+
+
+// ab hier: Drawing Group Container d.h. Dokument - weit gueltige Daten
+// ======================= ========
+//
+void SvxMSDffManager::GetDrawingGroupContainerData( SvStream& rSt, ULONG nLenDgg )
+{
+ BYTE nVer;
+ USHORT nInst;
+ USHORT nFbt;
+ UINT32 nLength;
+
+ ULONG nLenBStoreCont = 0, nLenFBSE = 0, nRead = 0;
+
+ // Nach einem BStore Container suchen
+ do
+ {
+ if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
+ nRead += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
+ if( DFF_msofbtBstoreContainer == nFbt )
+ {
+ nLenBStoreCont = nLength; break;
+ }
+ rSt.SeekRel( nLength );
+ }
+ while( nRead < nLenDgg );
+
+ if( !nLenBStoreCont ) return;
+
+ // Im BStore Container alle Header der Container und Atome auslesen und die
+ // relevanten Daten aller enthaltenen FBSEs in unserem Pointer Array ablegen.
+ // Dabei zaehlen wir die gefundenen FBSEs im Member nBLIPCount mit.
+
+ const ULONG nSkipBLIPLen = 20; // bis zu nBLIPLen zu ueberspringende Bytes
+ const ULONG nSkipBLIPPos = 4; // dahinter bis zu nBLIPPos zu skippen
+
+ sal_uInt32 nBLIPLen = 0, nBLIPPos = 0;
+
+ nRead = 0;
+ do
+ {
+ if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
+ nRead += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
+ if( DFF_msofbtBSE == nFbt )
+ {
+ nLenFBSE = nLength;
+ // ist FBSE gross genug fuer unsere Daten
+ BOOL bOk = ( nSkipBLIPLen + 4 + nSkipBLIPPos + 4 <= nLenFBSE );
+
+ if( bOk )
+ {
+ rSt.SeekRel( nSkipBLIPLen );
+ rSt >> nBLIPLen;
+ rSt.SeekRel( nSkipBLIPPos );
+ rSt >> nBLIPPos;
+ bOk = rSt.GetError() == 0;
+
+ nLength -= nSkipBLIPLen+ 4 + nSkipBLIPPos + 4;
+ }
+
+ if( bOk )
+ {
+ // Besonderheit:
+ // Falls nBLIPLen kleiner ist als nLenFBSE UND nBLIPPos Null ist,
+ // nehmen wir an, dass das Bild IM FBSE drin steht!
+ if( (!nBLIPPos) && (nBLIPLen < nLenFBSE) )
+ nBLIPPos = rSt.Tell() + 4;
+
+ // Das hat ja fein geklappt!
+ // Wir merken uns, dass wir einen FBSE mehr im Pointer Array haben.
+ nBLIPPos = Calc_nBLIPPos(nBLIPPos, rSt.Tell());
+
+ if( USHRT_MAX == nBLIPCount )
+ nBLIPCount = 1;
+ else
+ nBLIPCount++;
+
+ // Jetzt die Infos fuer spaetere Zugriffe speichern
+ pBLIPInfos->Insert( new SvxMSDffBLIPInfo( nInst, nBLIPPos, nBLIPLen ),
+ pBLIPInfos->Count() );
+ }
+ }
+ rSt.SeekRel( nLength );
+ }
+ while( nRead < nLenBStoreCont );
+}
+
+
+// ab hier: Drawing Container d.h. Seiten (Blatt, Dia) - weit gueltige Daten
+// ================= ======
+//
+void SvxMSDffManager::GetDrawingContainerData( SvStream& rSt, ULONG nLenDg,
+ const unsigned long nDrawingContainerId )
+{
+ BYTE nVer;USHORT nInst;USHORT nFbt;UINT32 nLength;
+
+ ULONG nReadDg = 0;
+
+ // Wir stehen in einem Drawing Container (je einer pro Seite)
+ // und muessen nun
+ // alle enthaltenen Shape Group Container abklappern
+ do
+ {
+ if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
+ nReadDg += DFF_COMMON_RECORD_HEADER_SIZE;
+ // Patriarch gefunden (der oberste Shape Group Container) ?
+ if( DFF_msofbtSpgrContainer == nFbt )
+ {
+ if(!this->GetShapeGroupContainerData( rSt, nLength, TRUE, nDrawingContainerId )) return;
+ }
+ else
+ // blanker Shape Container ? (ausserhalb vom Shape Group Container)
+ if( DFF_msofbtSpContainer == nFbt )
+ {
+ if(!this->GetShapeContainerData( rSt, nLength, ULONG_MAX, nDrawingContainerId )) return;
+ }
+ else
+ rSt.SeekRel( nLength );
+ nReadDg += nLength;
+ }
+ while( nReadDg < nLenDg );
+}
+
+BOOL SvxMSDffManager::GetShapeGroupContainerData( SvStream& rSt,
+ ULONG nLenShapeGroupCont,
+ BOOL bPatriarch,
+ const unsigned long nDrawingContainerId )
+{
+ BYTE nVer;USHORT nInst;USHORT nFbt;UINT32 nLength;
+ long nStartShapeGroupCont = rSt.Tell();
+ // Wir stehen in einem Shape Group Container (ggfs. mehrere pro Seite)
+ // und muessen nun
+ // alle enthaltenen Shape Container abklappern
+ BOOL bFirst = !bPatriarch;
+ ULONG nReadSpGrCont = 0;
+ do
+ {
+ if( !this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength ) )
+ return FALSE;
+ nReadSpGrCont += DFF_COMMON_RECORD_HEADER_SIZE;
+ // Shape Container ?
+ if( DFF_msofbtSpContainer == nFbt )
+ {
+ ULONG nGroupOffs = bFirst ? nStartShapeGroupCont - DFF_COMMON_RECORD_HEADER_SIZE : ULONG_MAX;
+ if ( !this->GetShapeContainerData( rSt, nLength, nGroupOffs, nDrawingContainerId ) )
+ return FALSE;
+ bFirst = FALSE;
+ }
+ else
+ // eingeschachtelter Shape Group Container ?
+ if( DFF_msofbtSpgrContainer == nFbt )
+ {
+ if ( !this->GetShapeGroupContainerData( rSt, nLength, FALSE, nDrawingContainerId ) )
+ return FALSE;
+ }
+ else
+ rSt.SeekRel( nLength );
+ nReadSpGrCont += nLength;
+ }
+ while( nReadSpGrCont < nLenShapeGroupCont );
+ // den Stream wieder korrekt positionieren
+ rSt.Seek( nStartShapeGroupCont + nLenShapeGroupCont );
+ return TRUE;
+}
+
+BOOL SvxMSDffManager::GetShapeContainerData( SvStream& rSt,
+ ULONG nLenShapeCont,
+ ULONG nPosGroup,
+ const unsigned long nDrawingContainerId )
+{
+ BYTE nVer;USHORT nInst;USHORT nFbt;UINT32 nLength;
+ long nStartShapeCont = rSt.Tell();
+ // Wir stehen in einem Shape Container (ggfs. mehrere pro Sh. Group)
+ // und muessen nun
+ // die Shape Id und File-Pos (fuer spaetere, erneute Zugriffe)
+ // und den ersten BStore Verweis (falls vorhanden) entnehmen
+ ULONG nLenShapePropTbl = 0;
+ ULONG nReadSpCont = 0;
+
+ // File Offset des Shape-Containers bzw. der Gruppe(!) vermerken
+ //
+ ULONG nStartOffs = (ULONG_MAX > nPosGroup) ?
+ nPosGroup : nStartShapeCont - DFF_COMMON_RECORD_HEADER_SIZE;
+ SvxMSDffShapeInfo aInfo( nStartOffs );
+
+ // duerfte das Shape durch einen Rahmen ersetzt werden ?
+ // (vorausgesetzt, es zeigt sich, dass es eine TextBox ist,
+ // und der Text nicht gedreht ist)
+ BOOL bCanBeReplaced = (ULONG_MAX > nPosGroup) ? FALSE : TRUE;
+
+ // wir wissen noch nicht, ob es eine TextBox ist
+ MSO_SPT eShapeType = mso_sptNil;
+ MSO_WrapMode eWrapMode = mso_wrapSquare;
+// BOOL bIsTextBox = FALSE;
+
+ // Shape analysieren
+ //
+ do
+ {
+ if(!this->ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return FALSE;
+ nReadSpCont += DFF_COMMON_RECORD_HEADER_SIZE;
+ // FSP ?
+ if( ( DFF_msofbtSp == nFbt ) && ( 4 <= nLength ) )
+ {
+ // Wir haben den FSP gefunden: Shape Typ und Id vermerken!
+ eShapeType = (MSO_SPT)nInst;
+ rSt >> aInfo.nShapeId;
+ rSt.SeekRel( nLength - 4 );
+ nReadSpCont += nLength;
+ }
+ else if( DFF_msofbtOPT == nFbt ) // Shape Property Table ?
+ {
+ // Wir haben die Property Table gefunden:
+ // nach der Blip Property suchen!
+ ULONG nPropRead = 0;
+ USHORT nPropId;
+ sal_uInt32 nPropVal;
+ nLenShapePropTbl = nLength;
+// UINT32 nPropCount = nInst;
+ long nStartShapePropTbl = rSt.Tell();
+// UINT32 nComplexDataFilePos = nStartShapePropTbl + (nPropCount * 6);
+ do
+ {
+ rSt >> nPropId
+ >> nPropVal;
+ nPropRead += 6;
+
+ switch( nPropId )
+ {
+ case DFF_Prop_txflTextFlow :
+ //Writer can now handle vertical textflows in its
+ //native frames, to only need to do this for the
+ //other two formats
+
+ //Writer will handle all textflow except BtoT
+ if (GetSvxMSDffSettings() &
+ (SVXMSDFF_SETTINGS_IMPORT_PPT |
+ SVXMSDFF_SETTINGS_IMPORT_EXCEL))
+ {
+ if( 0 != nPropVal )
+ bCanBeReplaced = false;
+ }
+ else if (
+ (nPropVal != mso_txflHorzN) &&
+ (nPropVal != mso_txflTtoBA)
+ )
+ {
+ bCanBeReplaced = false;
+ }
+ break;
+ case DFF_Prop_cdirFont :
+ //Writer can now handle right to left and left
+ //to right in its native frames, so only do
+ //this for the other two formats.
+ if (GetSvxMSDffSettings() &
+ (SVXMSDFF_SETTINGS_IMPORT_PPT |
+ SVXMSDFF_SETTINGS_IMPORT_EXCEL))
+ {
+ if( 0 != nPropVal )
+ bCanBeReplaced = FALSE;
+ }
+ break;
+ case DFF_Prop_Rotation :
+ if( 0 != nPropVal )
+ bCanBeReplaced = FALSE;
+ break;
+
+ case DFF_Prop_gtextFStrikethrough :
+ if( ( 0x20002000 & nPropVal ) == 0x20002000 )
+ bCanBeReplaced = FALSE;
+ break;
+
+ case DFF_Prop_fc3DLightFace :
+ if( ( 0x00080008 & nPropVal ) == 0x00080008 )
+ bCanBeReplaced = FALSE;
+ break;
+
+ case DFF_Prop_WrapText :
+ eWrapMode = (MSO_WrapMode)nPropVal;
+ break;
+
+ default:
+ {
+ // Bit gesetzt und gueltig?
+ if( 0x4000 == ( nPropId & 0xC000 ) )
+ {
+ // Blip Property gefunden: BStore Idx vermerken!
+ nPropRead = nLenShapePropTbl;
+ }
+ else if( 0x8000 & nPropId )
+ {
+ // komplexe Prop gefunden:
+ // Laenge ist immer 6, nur die Laenge der nach der
+ // eigentlichen Prop-Table anhaengenden Extra-Daten
+ // ist unterschiedlich
+ nPropVal = 6;
+ }
+ }
+ break;
+ }
+
+/*
+//JP 21.04.99: Bug 64510
+// alte Version, die unter OS/2 zu Compilerfehlern fuehrt und damit arge
+// Performance einbussen hat.
+
+ if( 0x4000 == ( nPropId & 0xC000 ) )// Bit gesetzt und gueltig?
+ {
+ // Blip Property gefunden: BStore Idx vermerken!
+ aInfo.nBStoreIdx = nPropVal; // Index im BStore Container
+ break;
+ }
+ else
+ if( ( ( (DFF_Prop_txflTextFlow == nPropId)
+ || (DFF_Prop_Rotation == nPropId)
+ || (DFF_Prop_cdirFont == nPropId) )
+ && (0 != nPropVal) )
+
+ || ( (DFF_Prop_gtextFStrikethrough == nPropId)
+ && ( (0x20002000 & nPropVal) == 0x20002000) ) // also DFF_Prop_gtextFVertical
+ || ( (DFF_Prop_fc3DLightFace == nPropId)
+ && ( (0x00080008 & nPropVal) == 0x00080008) ) // also DFF_Prop_f3D
+ )
+ {
+ bCanBeReplaced = FALSE; // Mist: gedrehter Text oder 3D-Objekt!
+ }
+ else
+ if( DFF_Prop_WrapText == nPropId )
+ {
+ eWrapMode = (MSO_WrapMode)nPropVal;
+ }
+ ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////
+ // keine weitere Property-Auswertung: folge beim Shape-Import //
+ ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////
+ else
+ if( 0x8000 & nPropId )
+ {
+ // komplexe Prop gefunden: Laenge lesen und ueberspringen
+ if(!SkipBytes( rSt, nPropVal )) return FALSE;
+ nPropRead += nPropVal;
+ }
+*/
+ }
+ while( nPropRead < nLenShapePropTbl );
+ rSt.Seek( nStartShapePropTbl + nLenShapePropTbl );
+ nReadSpCont += nLenShapePropTbl;
+ }
+ else if( ( DFF_msofbtClientTextbox == nFbt ) && ( 4 == nLength ) ) // Text-Box-Story-Eintrag gefunden
+ {
+ rSt >> aInfo.nTxBxComp;
+ // --> OD 2008-07-28 #156763#
+ // Add internal drawing container id to text id.
+ // Note: The text id uses the first two bytes, while the internal
+ // drawing container id used the second two bytes.
+ aInfo.nTxBxComp = ( aInfo.nTxBxComp & 0xFFFF0000 ) +
+ nDrawingContainerId;
+ DBG_ASSERT( (aInfo.nTxBxComp & 0x0000FFFF) == nDrawingContainerId,
+ "<SvxMSDffManager::GetShapeContainerData(..)> - internal drawing container Id could not be correctly merged into DFF_msofbtClientTextbox value." );
+ // <--
+ }
+ else
+ {
+ rSt.SeekRel( nLength );
+ nReadSpCont += nLength;
+ }
+ }
+ while( nReadSpCont < nLenShapeCont );
+
+ //
+ // Jetzt ggfs. die Infos fuer spaetere Zugriffe auf das Shape speichern
+ //
+ if( aInfo.nShapeId )
+ {
+ // fuer Textboxen ggfs. ersetzen durch Rahmen erlauben
+ if( bCanBeReplaced
+ && aInfo.nTxBxComp
+ && (
+ ( eShapeType == mso_sptTextSimple )
+ || ( eShapeType == mso_sptTextBox )
+ || ( ( ( eShapeType == mso_sptRectangle )
+ || ( eShapeType == mso_sptRoundRectangle )
+ )
+ ) ) )
+ {
+ aInfo.bReplaceByFly = TRUE;
+ }
+ pShapeInfos->Insert( new SvxMSDffShapeInfo( aInfo ) );
+ pShapeOrders->Insert( new SvxMSDffShapeOrder( aInfo.nShapeId ),
+ pShapeOrders->Count() );
+ }
+
+ // und den Stream wieder korrekt positionieren
+ rSt.Seek( nStartShapeCont + nLenShapeCont );
+ return TRUE;
+}
+
+
+
+/*****************************************************************************
+
+ Zugriff auf ein Shape zur Laufzeit (ueber die Shape-Id)
+ ----------------------------------
+******************************************************************************/
+BOOL SvxMSDffManager::GetShape(ULONG nId, SdrObject*& rpShape,
+ SvxMSDffImportData& rData)
+{
+ SvxMSDffShapeInfo aTmpRec(0, nId);
+ aTmpRec.bSortByShapeId = TRUE;
+
+ USHORT nFound;
+ if( pShapeInfos->Seek_Entry(&aTmpRec, &nFound) )
+ {
+ SvxMSDffShapeInfo& rInfo = *pShapeInfos->GetObject( nFound );
+
+ // eventuell altes Errorflag loeschen
+ if( rStCtrl.GetError() )
+ rStCtrl.ResetError();
+ // FilePos des/der Stream(s) merken
+ ULONG nOldPosCtrl = rStCtrl.Tell();
+ ULONG nOldPosData = pStData ? pStData->Tell() : nOldPosCtrl;
+ // das Shape im Steuer Stream anspringen
+ rStCtrl.Seek( rInfo.nFilePos );
+
+ // Falls missglueckt, den Fehlerstatus zuruecksetzen und Pech gehabt!
+ if( rStCtrl.GetError() )
+ rStCtrl.ResetError();
+ else
+ rpShape = ImportObj( rStCtrl, &rData, rData.aParentRect, rData.aParentRect );
+
+ // alte FilePos des/der Stream(s) restaurieren
+ rStCtrl.Seek( nOldPosCtrl );
+ if( &rStCtrl != pStData )
+ pStData->Seek( nOldPosData );
+ return ( 0 != rpShape );
+ }
+ return FALSE;
+}
+
+
+
+/* Zugriff auf ein BLIP zur Laufzeit (bei bereits bekannter Blip-Nr)
+ ---------------------------------
+******************************************************************************/
+BOOL SvxMSDffManager::GetBLIP( ULONG nIdx_, Graphic& rData, Rectangle* pVisArea ) const
+{
+ BOOL bOk = FALSE; // Ergebnisvariable initialisieren
+ if ( pStData )
+ {
+ // check if a graphic for this blipId is already imported
+ if ( nIdx_ && pEscherBlipCache )
+ {
+ EscherBlipCacheEntry* pEntry;
+ for ( pEntry = (EscherBlipCacheEntry*)pEscherBlipCache->First(); pEntry;
+ pEntry = (EscherBlipCacheEntry*)pEscherBlipCache->Next() )
+ {
+ if ( pEntry->nBlip == nIdx_ )
+ { /* if this entry is available, then it should be possible
+ to get the Graphic via GraphicObject */
+ GraphicObject aGraphicObject( pEntry->aUniqueID );
+ rData = aGraphicObject.GetGraphic();
+ if ( rData.GetType() != GRAPHIC_NONE )
+ bOk = sal_True;
+ else
+ delete (EscherBlipCacheEntry*)pEscherBlipCache->Remove();
+ break;
+ }
+ }
+ }
+ if ( !bOk )
+ {
+ USHORT nIdx = USHORT( nIdx_ );
+ if( !nIdx || (pBLIPInfos->Count() < nIdx) ) return FALSE;
+
+ // eventuell alte(s) Errorflag(s) loeschen
+ if( rStCtrl.GetError() )
+ rStCtrl.ResetError();
+ if( ( &rStCtrl != pStData )
+ && pStData->GetError() )
+ pStData->ResetError();
+
+ // FilePos des/der Stream(s) merken
+ ULONG nOldPosCtrl = rStCtrl.Tell();
+ ULONG nOldPosData = pStData ? pStData->Tell() : nOldPosCtrl;
+
+ // passende Info-Struct aus unserem Pointer Array nehmen
+ SvxMSDffBLIPInfo& rInfo = *(*pBLIPInfos)[ nIdx-1 ];
+
+ // das BLIP Atom im Daten Stream anspringen
+ pStData->Seek( rInfo.nFilePos );
+ // ggfs. Fehlerstatus zuruecksetzen
+ if( pStData->GetError() )
+ pStData->ResetError();
+ else
+ bOk = GetBLIPDirect( *pStData, rData, pVisArea );
+ if( pStData2 && !bOk )
+ {
+ // Fehler, aber zweite Chance: es gibt noch einen zweiten
+ // Datenstream, in dem die Grafik liegen koennte!
+ if( pStData2->GetError() )
+ pStData2->ResetError();
+ ULONG nOldPosData2 = pStData2->Tell();
+ // das BLIP Atom im zweiten Daten Stream anspringen
+ pStData2->Seek( rInfo.nFilePos );
+ // ggfs. Fehlerstatus zuruecksetzen
+ if( pStData2->GetError() )
+ pStData2->ResetError();
+ else
+ bOk = GetBLIPDirect( *pStData2, rData, pVisArea );
+ // alte FilePos des zweiten Daten-Stream restaurieren
+ pStData2->Seek( nOldPosData2 );
+ }
+ // alte FilePos des/der Stream(s) restaurieren
+ rStCtrl.Seek( nOldPosCtrl );
+ if( &rStCtrl != pStData )
+ pStData->Seek( nOldPosData );
+
+ if ( bOk )
+ {
+ // create new BlipCacheEntry for this graphic
+ GraphicObject aGraphicObject( rData );
+ if ( !pEscherBlipCache )
+ const_cast <SvxMSDffManager*> (this)->pEscherBlipCache = new List();
+ EscherBlipCacheEntry* pNewEntry = new EscherBlipCacheEntry( nIdx_, aGraphicObject.GetUniqueID() );
+ pEscherBlipCache->Insert( pNewEntry, LIST_APPEND );
+ }
+ }
+ }
+ return bOk;
+}
+
+/* Zugriff auf ein BLIP zur Laufzeit (mit korrekt positioniertem Stream)
+ ---------------------------------
+******************************************************************************/
+BOOL SvxMSDffManager::GetBLIPDirect( SvStream& rBLIPStream, Graphic& rData, Rectangle* pVisArea ) const
+{
+ ULONG nOldPos = rBLIPStream.Tell();
+
+ int nRes = GRFILTER_OPENERROR; // Fehlervariable initialisieren
+
+ // nachschauen, ob es sich auch wirklich um ein BLIP handelt
+ UINT32 nLength;
+ USHORT nInst, nFbt( 0 );
+ BYTE nVer;
+ if( ReadCommonRecordHeader( rBLIPStream, nVer, nInst, nFbt, nLength) && ( 0xF018 <= nFbt ) && ( 0xF117 >= nFbt ) )
+ {
+ Size aMtfSize100;
+ BOOL bMtfBLIP = FALSE;
+ BOOL bZCodecCompression = FALSE;
+ // Nun exakt auf den Beginn der eingebetteten Grafik positionieren
+ ULONG nSkip = ( nInst & 0x0001 ) ? 32 : 16;
+
+ switch( nInst & 0xFFFE )
+ {
+ case 0x216 : // Metafile header then compressed WMF
+ case 0x3D4 : // Metafile header then compressed EMF
+ case 0x542 : // Metafile hd. then compressed PICT
+ {
+ rBLIPStream.SeekRel( nSkip + 20 );
+
+ // read in size of metafile in EMUS
+ rBLIPStream >> aMtfSize100.Width() >> aMtfSize100.Height();
+
+ // scale to 1/100mm
+ aMtfSize100.Width() /= 360, aMtfSize100.Height() /= 360;
+
+ if ( pVisArea ) // seem that we currently are skipping the visarea position
+ *pVisArea = Rectangle( Point(), aMtfSize100 );
+
+ // skip rest of header
+ nSkip = 6;
+ bMtfBLIP = bZCodecCompression = TRUE;
+ }
+ break;
+ case 0x46A : // One byte tag then JPEG (= JFIF) data
+ case 0x6E0 : // One byte tag then PNG data
+ case 0x7A8 :
+ nSkip += 1; // One byte tag then DIB data
+ break;
+ }
+ rBLIPStream.SeekRel( nSkip );
+
+ SvStream* pGrStream = &rBLIPStream;
+ SvMemoryStream* pOut = NULL;
+ if( bZCodecCompression )
+ {
+ pOut = new SvMemoryStream( 0x8000, 0x4000 );
+ ZCodec aZCodec( 0x8000, 0x8000 );
+ aZCodec.BeginCompression();
+ aZCodec.Decompress( rBLIPStream, *pOut );
+ aZCodec.EndCompression();
+ pOut->Seek( STREAM_SEEK_TO_BEGIN );
+ pOut->SetResizeOffset( 0 ); // sj: #i102257# setting ResizeOffset of 0 prevents from seeking
+ // behind the stream end (allocating too much memory)
+ pGrStream = pOut;
+ }
+
+//#define DBG_EXTRACTGRAPHICS
+#ifdef DBG_EXTRACTGRAPHICS
+
+ static sal_Int32 nCount;
+
+ String aFileName( String( RTL_CONSTASCII_STRINGPARAM( "dbggfx" ) ) );
+ aFileName.Append( String::CreateFromInt32( nCount++ ) );
+ switch( nInst &~ 1 )
+ {
+ case 0x216 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".wmf" ) ) ); break;
+ case 0x3d4 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".emf" ) ) ); break;
+ case 0x542 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".pct" ) ) ); break;
+ case 0x46a : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".jpg" ) ) ); break;
+ case 0x6e0 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".png" ) ) ); break;
+ case 0x7a8 : aFileName.Append( String( RTL_CONSTASCII_STRINGPARAM( ".bmp" ) ) ); break;
+ }
+
+ String aURLStr;
+
+ if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( Application::GetAppFileName(), aURLStr ) )
+ {
+ INetURLObject aURL( aURLStr );
+
+ aURL.removeSegment();
+ aURL.removeFinalSlash();
+ aURL.Append( aFileName );
+
+ SvStream* pDbgOut = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_TRUNC | STREAM_WRITE );
+
+ if( pDbgOut )
+ {
+ if ( bZCodecCompression )
+ {
+ pOut->Seek( STREAM_SEEK_TO_END );
+ pDbgOut->Write( pOut->GetData(), pOut->Tell() );
+ pOut->Seek( STREAM_SEEK_TO_BEGIN );
+ }
+ else
+ {
+ sal_Int32 nDbgLen = nLength - nSkip;
+ if ( nDbgLen )
+ {
+ sal_Char* pDat = new sal_Char[ nDbgLen ];
+ pGrStream->Read( pDat, nDbgLen );
+ pDbgOut->Write( pDat, nDbgLen );
+ pGrStream->SeekRel( -nDbgLen );
+ delete[] pDat;
+ }
+ }
+
+ delete pDbgOut;
+ }
+ }
+#endif
+
+ if( ( nInst & 0xFFFE ) == 0x7A8 )
+ { // DIBs direkt holen
+ Bitmap aNew;
+ if( aNew.Read( *pGrStream, FALSE ) )
+ {
+ rData = Graphic( aNew );
+ nRes = GRFILTER_OK;
+ }
+ }
+ else
+ { // und unsere feinen Filter darauf loslassen
+ GraphicFilter* pGF = GraphicFilter::GetGraphicFilter();
+ String aEmptyStr;
+ nRes = pGF->ImportGraphic( rData, aEmptyStr, *pGrStream, GRFILTER_FORMAT_DONTKNOW );
+
+ // SJ: I40472, sometimes the aspect ratio (aMtfSize100) does not match and we get scaling problems,
+ // then it is better to use the prefsize that is stored within the metafile. Bug #72846# for what the
+ // scaling has been implemented does not happen anymore.
+ //
+ // For pict graphics we will furthermore scale the metafile, because font scaling leads to error if the
+ // dxarray is empty (this has been solved in wmf/emf but not for pict)
+ if( bMtfBLIP && ( GRFILTER_OK == nRes ) && ( rData.GetType() == GRAPHIC_GDIMETAFILE ) && ( ( nInst & 0xFFFE ) == 0x542 ) )
+ {
+ if ( ( aMtfSize100.Width() >= 1000 ) && ( aMtfSize100.Height() >= 1000 ) )
+ { // #75956#, scaling does not work properly, if the graphic is less than 1cm
+ GDIMetaFile aMtf( rData.GetGDIMetaFile() );
+ const Size aOldSize( aMtf.GetPrefSize() );
+
+ if( aOldSize.Width() && ( aOldSize.Width() != aMtfSize100.Width() ) &&
+ aOldSize.Height() && ( aOldSize.Height() != aMtfSize100.Height() ) )
+ {
+ aMtf.Scale( (double) aMtfSize100.Width() / aOldSize.Width(),
+ (double) aMtfSize100.Height() / aOldSize.Height() );
+ aMtf.SetPrefSize( aMtfSize100 );
+ aMtf.SetPrefMapMode( MAP_100TH_MM );
+ rData = aMtf;
+ }
+ }
+ }
+ }
+ // ggfs. Fehlerstatus zuruecksetzen
+ if ( ERRCODE_IO_PENDING == pGrStream->GetError() )
+ pGrStream->ResetError();
+ delete pOut;
+ }
+ rBLIPStream.Seek( nOldPos ); // alte FilePos des Streams restaurieren
+
+ return ( GRFILTER_OK == nRes ); // Ergebniss melden
+}
+
+/* static */
+BOOL SvxMSDffManager::ReadCommonRecordHeader(DffRecordHeader& rRec, SvStream& rIn)
+{
+ rRec.nFilePos = rIn.Tell();
+ return SvxMSDffManager::ReadCommonRecordHeader( rIn,rRec.nRecVer,
+ rRec.nRecInstance,
+ rRec.nRecType,
+ rRec.nRecLen );
+}
+
+
+/* auch static */
+BOOL SvxMSDffManager::ReadCommonRecordHeader( SvStream& rSt,
+ BYTE& rVer,
+ USHORT& rInst,
+ USHORT& rFbt,
+ UINT32& rLength )
+{
+ sal_uInt16 nTmp;
+ rSt >> nTmp >> rFbt >> rLength;
+ rVer = sal::static_int_cast< BYTE >(nTmp & 15);
+ rInst = nTmp >> 4;
+ return rSt.GetError() == 0;
+}
+
+
+
+
+BOOL SvxMSDffManager::ProcessClientAnchor(SvStream& rStData, ULONG nDatLen,
+ char*& rpBuff, UINT32& rBuffLen ) const
+{
+ if( nDatLen )
+ {
+ rpBuff = new char[ nDatLen ];
+ rBuffLen = nDatLen;
+ rStData.Read( rpBuff, nDatLen );
+ }
+ return TRUE;
+}
+
+BOOL SvxMSDffManager::ProcessClientData(SvStream& rStData, ULONG nDatLen,
+ char*& rpBuff, UINT32& rBuffLen ) const
+{
+ if( nDatLen )
+ {
+ rpBuff = new char[ nDatLen ];
+ rBuffLen = nDatLen;
+ rStData.Read( rpBuff, nDatLen );
+ }
+ return TRUE;
+}
+
+
+void SvxMSDffManager::ProcessClientAnchor2( SvStream& /* rSt */, DffRecordHeader& /* rHd */ , void* /* pData */, DffObjData& /* rObj */ )
+{
+ return; // wird von SJ im Draw ueberladen
+}
+
+ULONG SvxMSDffManager::Calc_nBLIPPos( ULONG nOrgVal, ULONG /* nStreamPos */ ) const
+{
+ return nOrgVal;
+}
+
+BOOL SvxMSDffManager::GetOLEStorageName( long /* nOLEId */, String&, SvStorageRef&, uno::Reference < embed::XStorage >& ) const
+{
+ return FALSE;
+}
+
+BOOL SvxMSDffManager::ShapeHasText( ULONG /* nShapeId */, ULONG /* nFilePos */ ) const
+{
+ return TRUE;
+}
+
+// --> OD 2004-12-14 #i32596# - add new parameter <_nCalledByGroup>
+SdrObject* SvxMSDffManager::ImportOLE( long nOLEId,
+ const Graphic& rGrf,
+ const Rectangle& rBoundRect,
+ const Rectangle& rVisArea,
+ const int /* _nCalledByGroup */,
+ sal_Int64 nAspect ) const
+// <--
+{
+ SdrObject* pRet = 0;
+ String sStorageName;
+ SvStorageRef xSrcStg;
+ ErrCode nError = ERRCODE_NONE;
+ uno::Reference < embed::XStorage > xDstStg;
+ if( GetOLEStorageName( nOLEId, sStorageName, xSrcStg, xDstStg ))
+ pRet = CreateSdrOLEFromStorage( sStorageName, xSrcStg, xDstStg,
+ rGrf, rBoundRect, rVisArea, pStData, nError,
+ nSvxMSDffOLEConvFlags, nAspect );
+ return pRet;
+}
+
+const GDIMetaFile* SvxMSDffManager::lcl_GetMetaFileFromGrf_Impl( const Graphic& rGrf,
+ GDIMetaFile& rMtf )
+{
+ const GDIMetaFile* pMtf;
+ if( GRAPHIC_BITMAP == rGrf.GetType() )
+ {
+ Point aPt;
+ const Size aSz(lcl_GetPrefSize(rGrf, MAP_100TH_MM));
+
+ VirtualDevice aVirtDev;
+ aVirtDev.EnableOutput( FALSE );
+ MapMode aMM(MAP_100TH_MM);
+ aVirtDev.SetMapMode( aMM );
+
+ rMtf.Record( &aVirtDev );
+ rGrf.Draw( &aVirtDev, aPt, aSz );
+ rMtf.Stop();
+ rMtf.SetPrefMapMode(aMM);
+ rMtf.SetPrefSize( aSz );
+
+ pMtf = &rMtf;
+ }
+ else
+ pMtf = &rGrf.GetGDIMetaFile();
+ return pMtf;
+}
+
+BOOL SvxMSDffManager::MakeContentStream( SotStorage * pStor, const GDIMetaFile & rMtf )
+{
+ String aPersistStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( SVEXT_PERSIST_STREAM ) ) );
+ SotStorageStreamRef xStm = pStor->OpenSotStream( aPersistStream );
+ xStm->SetVersion( pStor->GetVersion() );
+ xStm->SetBufferSize( 8192 );
+
+ USHORT nAspect = ASPECT_CONTENT;
+ ULONG nAdviseModes = 2;
+
+ Impl_OlePres aEle( FORMAT_GDIMETAFILE );
+ // Die Groesse in 1/100 mm umrechnen
+ // Falls eine nicht anwendbare MapUnit (Device abhaengig) verwendet wird,
+ // versucht SV einen BestMatchden richtigen Wert zu raten.
+ Size aSize = rMtf.GetPrefSize();
+ MapMode aMMSrc = rMtf.GetPrefMapMode();
+ MapMode aMMDst( MAP_100TH_MM );
+ aSize = OutputDevice::LogicToLogic( aSize, aMMSrc, aMMDst );
+ aEle.SetSize( aSize );
+ aEle.SetAspect( nAspect );
+ aEle.SetAdviseFlags( nAdviseModes );
+ aEle.SetMtf( rMtf );
+ aEle.Write( *xStm );
+
+ xStm->SetBufferSize( 0 );
+ return xStm->GetError() == SVSTREAM_OK;
+}
+
+struct ClsIDs {
+ UINT32 nId;
+ const sal_Char* pSvrName;
+ const sal_Char* pDspName;
+};
+static ClsIDs aClsIDs[] = {
+
+ { 0x000212F0, "MSWordArt", "Microsoft Word Art" },
+ { 0x000212F0, "MSWordArt.2", "Microsoft Word Art 2.0" },
+
+ // MS Apps
+ { 0x00030000, "ExcelWorksheet", "Microsoft Excel Worksheet" },
+ { 0x00030001, "ExcelChart", "Microsoft Excel Chart" },
+ { 0x00030002, "ExcelMacrosheet", "Microsoft Excel Macro" },
+ { 0x00030003, "WordDocument", "Microsoft Word Document" },
+ { 0x00030004, "MSPowerPoint", "Microsoft PowerPoint" },
+ { 0x00030005, "MSPowerPointSho", "Microsoft PowerPoint Slide Show"},
+ { 0x00030006, "MSGraph", "Microsoft Graph" },
+ { 0x00030007, "MSDraw", "Microsoft Draw" },
+ { 0x00030008, "Note-It", "Microsoft Note-It" },
+ { 0x00030009, "WordArt", "Microsoft Word Art" },
+ { 0x0003000a, "PBrush", "Microsoft PaintBrush Picture" },
+ { 0x0003000b, "Equation", "Microsoft Equation Editor" },
+ { 0x0003000c, "Package", "Package" },
+ { 0x0003000d, "SoundRec", "Sound" },
+ { 0x0003000e, "MPlayer", "Media Player" },
+ // MS Demos
+ { 0x0003000f, "ServerDemo", "OLE 1.0 Server Demo" },
+ { 0x00030010, "Srtest", "OLE 1.0 Test Demo" },
+ { 0x00030011, "SrtInv", "OLE 1.0 Inv Demo" },
+ { 0x00030012, "OleDemo", "OLE 1.0 Demo" },
+
+ // Coromandel / Dorai Swamy / 718-793-7963
+ { 0x00030013, "CoromandelIntegra", "Coromandel Integra" },
+ { 0x00030014, "CoromandelObjServer","Coromandel Object Server" },
+
+ // 3-d Visions Corp / Peter Hirsch / 310-325-1339
+ { 0x00030015, "StanfordGraphics", "Stanford Graphics" },
+
+ // Deltapoint / Nigel Hearne / 408-648-4000
+ { 0x00030016, "DGraphCHART", "DeltaPoint Graph Chart" },
+ { 0x00030017, "DGraphDATA", "DeltaPoint Graph Data" },
+
+ // Corel / Richard V. Woodend / 613-728-8200 x1153
+ { 0x00030018, "PhotoPaint", "Corel PhotoPaint" },
+ { 0x00030019, "CShow", "Corel Show" },
+ { 0x0003001a, "CorelChart", "Corel Chart" },
+ { 0x0003001b, "CDraw", "Corel Draw" },
+
+ // Inset Systems / Mark Skiba / 203-740-2400
+ { 0x0003001c, "HJWIN1.0", "Inset Systems" },
+
+ // Mark V Systems / Mark McGraw / 818-995-7671
+ { 0x0003001d, "ObjMakerOLE", "MarkV Systems Object Maker" },
+
+ // IdentiTech / Mike Gilger / 407-951-9503
+ { 0x0003001e, "FYI", "IdentiTech FYI" },
+ { 0x0003001f, "FYIView", "IdentiTech FYI Viewer" },
+
+ // Inventa Corporation / Balaji Varadarajan / 408-987-0220
+ { 0x00030020, "Stickynote", "Inventa Sticky Note" },
+
+ // ShapeWare Corp. / Lori Pearce / 206-467-6723
+ { 0x00030021, "ShapewareVISIO10", "Shapeware Visio 1.0" },
+ { 0x00030022, "ImportServer", "Spaheware Import Server" },
+
+ // test app SrTest
+ { 0x00030023, "SrvrTest", "OLE 1.0 Server Test" },
+
+ // test app ClTest. Doesn't really work as a server but is in reg db
+ { 0x00030025, "Cltest", "OLE 1.0 Client Test" },
+
+ // Microsoft ClipArt Gallery Sherry Larsen-Holmes
+ { 0x00030026, "MS_ClipArt_Gallery", "Microsoft ClipArt Gallery" },
+ // Microsoft Project Cory Reina
+ { 0x00030027, "MSProject", "Microsoft Project" },
+
+ // Microsoft Works Chart
+ { 0x00030028, "MSWorksChart", "Microsoft Works Chart" },
+
+ // Microsoft Works Spreadsheet
+ { 0x00030029, "MSWorksSpreadsheet", "Microsoft Works Spreadsheet" },
+
+ // AFX apps - Dean McCrory
+ { 0x0003002A, "MinSvr", "AFX Mini Server" },
+ { 0x0003002B, "HierarchyList", "AFX Hierarchy List" },
+ { 0x0003002C, "BibRef", "AFX BibRef" },
+ { 0x0003002D, "MinSvrMI", "AFX Mini Server MI" },
+ { 0x0003002E, "TestServ", "AFX Test Server" },
+
+ // Ami Pro
+ { 0x0003002F, "AmiProDocument", "Ami Pro Document" },
+
+ // WordPerfect Presentations For Windows
+ { 0x00030030, "WPGraphics", "WordPerfect Presentation" },
+ { 0x00030031, "WPCharts", "WordPerfect Chart" },
+
+ // MicroGrafx Charisma
+ { 0x00030032, "Charisma", "MicroGrafx Charisma" },
+ { 0x00030033, "Charisma_30", "MicroGrafx Charisma 3.0" },
+ { 0x00030034, "CharPres_30", "MicroGrafx Charisma 3.0 Pres" },
+ // MicroGrafx Draw
+ { 0x00030035, "Draw", "MicroGrafx Draw" },
+ // MicroGrafx Designer
+ { 0x00030036, "Designer_40", "MicroGrafx Designer 4.0" },
+
+ // STAR DIVISION
+// { 0x000424CA, "StarMath", "StarMath 1.0" },
+ { 0x00043AD2, "FontWork", "Star FontWork" },
+// { 0x000456EE, "StarMath2", "StarMath 2.0" },
+
+ { 0, "", "" } };
+
+
+BOOL SvxMSDffManager::ConvertToOle2( SvStream& rStm, UINT32 nReadLen,
+ const GDIMetaFile * pMtf, const SotStorageRef& rDest )
+{
+ BOOL bMtfRead = FALSE;
+ SotStorageStreamRef xOle10Stm = rDest->OpenSotStream( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "\1Ole10Native" ) ),
+ STREAM_WRITE| STREAM_SHARE_DENYALL );
+ if( xOle10Stm->GetError() )
+ return FALSE;
+
+ UINT32 nType;
+ UINT32 nRecType;
+ UINT32 nStrLen;
+ String aSvrName;
+ UINT32 nDummy0;
+ UINT32 nDummy1;
+ UINT32 nDataLen;
+ BYTE * pData;
+ UINT32 nBytesRead = 0;
+ do
+ {
+ rStm >> nType;
+ rStm >> nRecType;
+ rStm >> nStrLen;
+ if( nStrLen )
+ {
+ if( 0x10000L > nStrLen )
+ {
+ sal_Char * pBuf = new sal_Char[ nStrLen ];
+ rStm.Read( pBuf, nStrLen );
+ aSvrName.Assign( String( pBuf, (USHORT) nStrLen-1, gsl_getSystemTextEncoding() ) );
+ delete[] pBuf;
+ }
+ else
+ break;
+ }
+ rStm >> nDummy0;
+ rStm >> nDummy1;
+ rStm >> nDataLen;
+
+ nBytesRead += 6 * sizeof( UINT32 ) + nStrLen + nDataLen;
+
+ if( !rStm.IsEof() && nReadLen > nBytesRead && nDataLen )
+ {
+ if( xOle10Stm.Is() )
+ {
+ pData = new BYTE[ nDataLen ];
+ if( !pData )
+ return FALSE;
+
+ rStm.Read( pData, nDataLen );
+
+ // write to ole10 stream
+ *xOle10Stm << nDataLen;
+ xOle10Stm->Write( pData, nDataLen );
+ xOle10Stm = SotStorageStreamRef();
+
+ // set the compobj stream
+ ClsIDs* pIds;
+ for( pIds = aClsIDs; pIds->nId; pIds++ )
+ {
+ if( COMPARE_EQUAL == aSvrName.CompareToAscii( pIds->pSvrName ) )
+ break;
+ }
+// SvGlobalName* pClsId = NULL;
+ String aShort, aFull;
+ if( pIds->nId )
+ {
+ // gefunden!
+ ULONG nCbFmt = SotExchange::RegisterFormatName( aSvrName );
+ rDest->SetClass( SvGlobalName( pIds->nId, 0, 0, 0xc0,0,0,0,0,0,0,0x46 ), nCbFmt,
+ String( pIds->pDspName, RTL_TEXTENCODING_ASCII_US ) );
+ }
+ else
+ {
+ ULONG nCbFmt = SotExchange::RegisterFormatName( aSvrName );
+ rDest->SetClass( SvGlobalName(), nCbFmt, aSvrName );
+ }
+
+ delete[] pData;
+ }
+ else if( nRecType == 5 && !pMtf )
+ {
+ ULONG nPos = rStm.Tell();
+ UINT16 sz[4];
+ rStm.Read( sz, 8 );
+ //rStm.SeekRel( 8 );
+ Graphic aGraphic;
+ if( ERRCODE_NONE == GraphicConverter::Import( rStm, aGraphic ) && aGraphic.GetType() )
+ {
+ const GDIMetaFile& rMtf = aGraphic.GetGDIMetaFile();
+ MakeContentStream( rDest, rMtf );
+ bMtfRead = TRUE;
+ }
+ // set behind the data
+ rStm.Seek( nPos + nDataLen );
+ }
+ else
+ rStm.SeekRel( nDataLen );
+ }
+ } while( !rStm.IsEof() && nReadLen >= nBytesRead );
+
+ if( !bMtfRead && pMtf )
+ {
+ MakeContentStream( rDest, *pMtf );
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+const char* GetInternalServerName_Impl( const SvGlobalName& aGlobName )
+{
+ if ( aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_60 )
+ || aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_8 ) )
+ return "swriter";
+ else if ( aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_60 )
+ || aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_8 ) )
+ return "scalc";
+ else if ( aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_60 )
+ || aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_8 ) )
+ return "simpress";
+ else if ( aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_60 )
+ || aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_8 ) )
+ return "sdraw";
+ else if ( aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_60 )
+ || aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_8 ) )
+ return "smath";
+ else if ( aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_60 )
+ || aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_8 ) )
+ return "schart";
+ return 0;
+}
+
+::rtl::OUString GetFilterNameFromClassID_Impl( const SvGlobalName& aGlobName )
+{
+ if ( aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_60 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Writer)" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_8 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "writer8" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_60 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Calc)" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_8 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "calc8" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_60 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Impress)" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_8 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "impress8" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_60 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Draw)" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_8 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "draw8" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_60 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Math)" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_8 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "math8" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_60 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice XML (Chart)" ) );
+
+ if ( aGlobName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_8 ) )
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "chart8" ) );
+
+ return ::rtl::OUString();
+}
+
+com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > SvxMSDffManager::CheckForConvertToSOObj( UINT32 nConvertFlags,
+ SotStorage& rSrcStg, const uno::Reference < embed::XStorage >& rDestStorage,
+ const Graphic& rGrf,
+ const Rectangle& rVisArea )
+{
+ uno::Reference < embed::XEmbeddedObject > xObj;
+ SvGlobalName aStgNm = rSrcStg.GetClassName();
+ const char* pName = GetInternalServerName_Impl( aStgNm );
+ String sStarName;
+ if ( pName )
+ sStarName = String::CreateFromAscii( pName );
+ else if ( nConvertFlags )
+ {
+ static struct _ObjImpType
+ {
+ UINT32 nFlag;
+ const char* pFactoryNm;
+ // GlobalNameId
+ UINT32 n1;
+ USHORT n2, n3;
+ BYTE b8, b9, b10, b11, b12, b13, b14, b15;
+ } aArr[] = {
+ { OLE_MATHTYPE_2_STARMATH, "smath",
+ 0x0002ce02L, 0x0000, 0x0000,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
+ { OLE_MATHTYPE_2_STARMATH, "smath",
+ 0x00021700L, 0x0000, 0x0000,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
+ { OLE_WINWORD_2_STARWRITER, "swriter",
+ 0x00020906L, 0x0000, 0x0000,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
+ { OLE_EXCEL_2_STARCALC, "scalc", // Excel table
+ 0x00020810L, 0x0000, 0x0000,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
+ { OLE_EXCEL_2_STARCALC, "scalc", // Excel chart
+ 0x00020820L, 0x0000, 0x0000,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
+ // 114465: additional Excel OLE chart classId to above.
+ { OLE_EXCEL_2_STARCALC, "scalc",
+ 0x00020821L, 0x0000, 0x0000,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46 },
+ { OLE_POWERPOINT_2_STARIMPRESS, "simpress", // PowerPoint presentation
+ 0x64818d10L, 0x4f9b, 0x11cf,
+ 0x86,0xea,0x00,0xaa,0x00,0xb9,0x29,0xe8 },
+ { OLE_POWERPOINT_2_STARIMPRESS, "simpress", // PowerPoint slide
+ 0x64818d11L, 0x4f9b, 0x11cf,
+ 0x86,0xea,0x00,0xaa,0x00,0xb9,0x29,0xe8 },
+ { 0, 0,
+ 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 }
+ };
+
+ for( const _ObjImpType* pArr = aArr; pArr->nFlag; ++pArr )
+ {
+ if( nConvertFlags & pArr->nFlag )
+ {
+ SvGlobalName aTypeName( pArr->n1, pArr->n2, pArr->n3,
+ pArr->b8, pArr->b9, pArr->b10, pArr->b11,
+ pArr->b12, pArr->b13, pArr->b14, pArr->b15 );
+
+ if ( aStgNm == aTypeName )
+ {
+ sStarName = String::CreateFromAscii( pArr->pFactoryNm );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( sStarName.Len() )
+ {
+ //TODO/MBA: check if (and when) storage and stream will be destroyed!
+ const SfxFilter* pFilter = 0;
+ SvMemoryStream* pStream = new SvMemoryStream;
+ if ( pName )
+ {
+ // TODO/LATER: perhaps we need to retrieve VisArea and Metafile from the storage also
+ SotStorageStreamRef xStr = rSrcStg.OpenSotStream( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "package_stream" ) ), STREAM_STD_READ );
+ *xStr >> *pStream;
+ }
+ else
+ {
+ SfxFilterMatcher aMatch( sStarName );
+ SotStorageRef xStorage = new SotStorage( FALSE, *pStream );
+ rSrcStg.CopyTo( xStorage );
+ xStorage->Commit();
+ xStorage.Clear();
+ String aType = SfxFilter::GetTypeFromStorage( rSrcStg );
+ if ( aType.Len() )
+ pFilter = aMatch.GetFilter4EA( aType );
+ }
+
+ if ( pName || pFilter )
+ {
+ //Reuse current ole name
+ String aDstStgName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(MSO_OLE_Obj)));
+ aDstStgName += String::CreateFromInt32(nMSOleObjCntr);
+
+ ::rtl::OUString aFilterName;
+ if ( pFilter )
+ aFilterName = pFilter->GetName();
+ else
+ aFilterName = GetFilterNameFromClassID_Impl( aStgNm );
+
+ uno::Sequence < beans::PropertyValue > aMedium( aFilterName.getLength() ? 3 : 2);
+ aMedium[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InputStream" ) );
+ uno::Reference < io::XInputStream > xStream = new ::utl::OSeekableInputStreamWrapper( *pStream );
+ aMedium[0].Value <<= xStream;
+ aMedium[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) );
+ aMedium[1].Value <<= ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:stream" ) );
+
+ if ( aFilterName.getLength() )
+ {
+ aMedium[2].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" ) );
+ aMedium[2].Value <<= aFilterName;
+ }
+
+ ::rtl::OUString aName( aDstStgName );
+ comphelper::EmbeddedObjectContainer aCnt( rDestStorage );
+ xObj = aCnt.InsertEmbeddedObject( aMedium, aName );
+
+ if ( !xObj.is() )
+ {
+ if( aFilterName.getLength() )
+ {
+ // throw the filter parameter away as workaround
+ aMedium.realloc( 2 );
+ xObj = aCnt.InsertEmbeddedObject( aMedium, aName );
+ }
+
+ if ( !xObj.is() )
+ return xObj;
+ }
+
+ // TODO/LATER: ViewAspect must be passed from outside!
+ sal_Int64 nViewAspect = embed::Aspects::MSOLE_CONTENT;
+
+ // JP 26.10.2001: Bug 93374 / 91928 the writer
+ // objects need the correct visarea needs the
+ // correct visarea, but this is not true for
+ // PowerPoint (see bugdoc 94908b)
+ // SJ: 19.11.2001 bug 94908, also chart objects
+ // needs the correct visarea
+
+ // If pName is set this is an own embedded object, it should have the correct size internally
+ // TODO/LATER: it might make sence in future to set the size stored in internal object
+ if( !pName && ( sStarName.EqualsAscii( "swriter" ) || sStarName.EqualsAscii( "scalc" ) ) )
+ {
+ MapMode aMapMode( VCLUnoHelper::UnoEmbed2VCLMapUnit( xObj->getMapUnit( nViewAspect ) ) );
+ Size aSz;
+ if ( rVisArea.IsEmpty() )
+ aSz = lcl_GetPrefSize(rGrf, aMapMode );
+ else
+ {
+ aSz = rVisArea.GetSize();
+ aSz = OutputDevice::LogicToLogic( aSz, MapMode( MAP_100TH_MM ), aMapMode );
+ }
+
+ // don't modify the object
+ //TODO/LATER: remove those hacks, that needs to be done differently!
+ //xIPObj->EnableSetModified( FALSE );
+ awt::Size aSize;
+ aSize.Width = aSz.Width();
+ aSize.Height = aSz.Height();
+ xObj->setVisualAreaSize( nViewAspect, aSize );
+ //xIPObj->EnableSetModified( TRUE );
+ }
+ else if ( sStarName.EqualsAscii( "smath" ) )
+ { // SJ: force the object to recalc its visarea
+ //TODO/LATER: wait for PrinterChangeNotification
+ //xIPObj->OnDocumentPrinterChanged( NULL );
+ }
+ }
+ }
+
+ return xObj;
+}
+
+// TODO/MBA: code review and testing!
+SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
+ const String& rStorageName,
+ SotStorageRef& rSrcStorage,
+ const uno::Reference < embed::XStorage >& xDestStorage,
+ const Graphic& rGrf,
+ const Rectangle& rBoundRect,
+ const Rectangle& rVisArea,
+ SvStream* pDataStrm,
+ ErrCode& rError,
+ UINT32 nConvertFlags,
+ sal_Int64 nReccomendedAspect )
+{
+ sal_Int64 nAspect = nReccomendedAspect;
+ SdrOle2Obj* pRet = 0;
+ if( rSrcStorage.Is() && xDestStorage.is() && rStorageName.Len() )
+ {
+ comphelper::EmbeddedObjectContainer aCnt( xDestStorage );
+ // Ist der 01Ole-Stream ueberhaupt vorhanden ?
+ // ( ist er z.B. bei FontWork nicht )
+ // Wenn nicht -> Einbindung als Grafik
+ BOOL bValidStorage = FALSE;
+ String aDstStgName( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM(MSO_OLE_Obj)));
+
+ aDstStgName += String::CreateFromInt32( ++nMSOleObjCntr );
+
+ {
+ SvStorageRef xObjStg = rSrcStorage->OpenSotStorage( rStorageName,
+ STREAM_READWRITE| STREAM_SHARE_DENYALL );
+ if( xObjStg.Is() )
+ {
+ {
+ BYTE aTestA[10]; // exist the \1CompObj-Stream ?
+ SvStorageStreamRef xSrcTst = xObjStg->OpenSotStream(
+ String(RTL_CONSTASCII_STRINGPARAM("\1CompObj"),
+ RTL_TEXTENCODING_MS_1252 ));
+ bValidStorage = xSrcTst.Is() && sizeof( aTestA ) ==
+ xSrcTst->Read( aTestA, sizeof( aTestA ) );
+ if( !bValidStorage )
+ {
+ // or the \1Ole-Stream ?
+ xSrcTst = xObjStg->OpenSotStream(
+ String(RTL_CONSTASCII_STRINGPARAM("\1Ole"),
+ RTL_TEXTENCODING_MS_1252 ));
+ bValidStorage = xSrcTst.Is() && sizeof(aTestA) ==
+ xSrcTst->Read(aTestA, sizeof(aTestA));
+ }
+ }
+
+ if( bValidStorage )
+ {
+ if ( nAspect != embed::Aspects::MSOLE_ICON )
+ {
+ // check whether the object is iconified one
+ // usually this information is already known, the only exception
+ // is a kind of embedded objects in Word documents
+ // TODO/LATER: should the caller be notified if the aspect changes in future?
+
+ SvStorageStreamRef xObjInfoSrc = xObjStg->OpenSotStream(
+ String( RTL_CONSTASCII_STRINGPARAM( "\3ObjInfo" ) ),
+ STREAM_STD_READ | STREAM_NOCREATE );
+ if ( xObjInfoSrc.Is() && !xObjInfoSrc->GetError() )
+ {
+ BYTE nByte = 0;
+ *xObjInfoSrc >> nByte;
+ if ( ( nByte >> 4 ) & embed::Aspects::MSOLE_ICON )
+ nAspect = embed::Aspects::MSOLE_ICON;
+ }
+ }
+
+ uno::Reference < embed::XEmbeddedObject > xObj( CheckForConvertToSOObj(
+ nConvertFlags, *xObjStg, xDestStorage, rGrf, rVisArea ));
+ if ( xObj.is() )
+ {
+ svt::EmbeddedObjectRef aObj( xObj, nAspect );
+
+ // TODO/LATER: need MediaType
+ aObj.SetGraphic( rGrf, ::rtl::OUString() );
+
+ // TODO/MBA: check setting of PersistName
+ pRet = new SdrOle2Obj( aObj, String(), rBoundRect, false);
+ // we have the Object, don't create another
+ bValidStorage = false;
+ }
+ }
+ }
+ }
+
+ if( bValidStorage )
+ {
+ // object is not an own object
+ SotStorageRef xObjStor = SotStorage::OpenOLEStorage( xDestStorage, aDstStgName, STREAM_READWRITE );
+
+ if ( xObjStor.Is() )
+ {
+ SotStorageRef xSrcStor = rSrcStorage->OpenSotStorage( rStorageName, STREAM_READ );
+ xSrcStor->CopyTo( xObjStor );
+
+ if( !xObjStor->GetError() )
+ xObjStor->Commit();
+
+ if( xObjStor->GetError() )
+ {
+ rError = xObjStor->GetError();
+ bValidStorage = FALSE;
+ }
+ else if( !xObjStor.Is() )
+ bValidStorage = FALSE;
+ }
+ }
+ else if( pDataStrm )
+ {
+ UINT32 nLen, nDummy;
+ *pDataStrm >> nLen >> nDummy;
+ if( SVSTREAM_OK != pDataStrm->GetError() ||
+ // Id in BugDoc - exist there other Ids?
+ // The ConvertToOle2 - does not check for consistent
+ 0x30008 != nDummy )
+ bValidStorage = FALSE;
+ else
+ {
+ // or is it an OLE-1 Stream in the DataStream?
+ SvStorageRef xObjStor = SotStorage::OpenOLEStorage( xDestStorage, aDstStgName );
+ //TODO/MBA: remove metafile conversion from ConvertToOle2
+ //when is this code used?!
+ GDIMetaFile aMtf;
+ bValidStorage = ConvertToOle2( *pDataStrm, nLen, &aMtf, xObjStor );
+ xObjStor->Commit();
+ }
+ }
+
+ if( bValidStorage )
+ {
+ uno::Reference < embed::XEmbeddedObject > xObj = aCnt.GetEmbeddedObject( aDstStgName );
+ if( xObj.is() )
+ {
+ // the visual area must be retrieved from the metafile (object doesn't know it so far)
+
+ if ( nAspect != embed::Aspects::MSOLE_ICON )
+ {
+ // working with visual area can switch the object to running state
+ awt::Size aAwtSz;
+ try
+ {
+ // the provided visual area should be used, if there is any
+ if ( rVisArea.IsEmpty() )
+ {
+ MapUnit aMapUnit = VCLUnoHelper::UnoEmbed2VCLMapUnit( xObj->getMapUnit( nAspect ) );
+ Size aSz(lcl_GetPrefSize(rGrf, MapMode(aMapUnit)));
+ aAwtSz.Width = aSz.Width();
+ aAwtSz.Height = aSz.Height();
+ }
+ else
+ {
+ aAwtSz.Width = rVisArea.GetWidth();
+ aAwtSz.Height = rVisArea.GetHeight();
+ }
+ //xInplaceObj->EnableSetModified( FALSE );
+ xObj->setVisualAreaSize( nAspect, aAwtSz );
+ //xInplaceObj->EnableSetModified( TRUE );*/
+ }
+ catch( uno::Exception& )
+ {
+ OSL_ENSURE( sal_False, "Could not set visual area of the object!\n" );
+ }
+ }
+
+ svt::EmbeddedObjectRef aObj( xObj, nAspect );
+
+ // TODO/LATER: need MediaType
+ aObj.SetGraphic( rGrf, ::rtl::OUString() );
+
+ pRet = new SdrOle2Obj( aObj, aDstStgName, rBoundRect, false);
+ }
+ }
+ }
+
+ return pRet;
+}
+
+SdrObject* SvxMSDffManager::GetAutoForm( MSO_SPT eTyp ) const
+{
+ SdrObject* pRet = NULL;
+
+ if(120 >= UINT16(eTyp))
+ {
+ pRet = new SdrRectObj();
+ }
+
+ DBG_ASSERT(pRet, "SvxMSDffManager::GetAutoForm -> UNKNOWN AUTOFORM");
+
+ return pRet;
+}
+
+sal_Bool SvxMSDffManager::SetPropValue( const uno::Any& rAny, const uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
+ const String& rPropName, sal_Bool bTestPropertyAvailability )
+{
+ sal_Bool bRetValue = sal_True;
+ if ( bTestPropertyAvailability )
+ {
+ bRetValue = sal_False;
+ try
+ {
+ uno::Reference< beans::XPropertySetInfo >
+ aXPropSetInfo( rXPropSet->getPropertySetInfo() );
+ if ( aXPropSetInfo.is() )
+ bRetValue = aXPropSetInfo->hasPropertyByName( rPropName );
+ }
+ catch( uno::Exception& )
+ {
+ bRetValue = sal_False;
+ }
+ }
+ if ( bRetValue )
+ {
+ try
+ {
+ rXPropSet->setPropertyValue( rPropName, rAny );
+ bRetValue = sal_True;
+ }
+ catch( uno::Exception& )
+ {
+ bRetValue = sal_False;
+ }
+ }
+ return bRetValue;
+}
+
+SvxMSDffImportRec::SvxMSDffImportRec()
+ : pObj( 0 ),
+ pWrapPolygon(0),
+ pClientAnchorBuffer( 0 ),
+ nClientAnchorLen( 0 ),
+ pClientDataBuffer( 0 ),
+ nClientDataLen( 0 ),
+ nXAlign( 0 ), // position n cm from left
+ nXRelTo( 2 ), // relative to column
+ nYAlign( 0 ), // position n cm below
+ nYRelTo( 2 ), // relative to paragraph
+ nLayoutInTableCell( 0 ), // element is laid out in table cell
+ nTextRotationAngle( 0 ),
+ nDxTextLeft( 144 ),
+ nDyTextTop( 72 ),
+ nDxTextRight( 144 ),
+ nDyTextBottom( 72 ),
+ nDxWrapDistLeft( 0 ),
+ nDyWrapDistTop( 0 ),
+ nDxWrapDistRight( 0 ),
+ nDyWrapDistBottom(0 ),
+ nCropFromTop( 0 ),
+ nCropFromBottom( 0 ),
+ nCropFromLeft( 0 ),
+ nCropFromRight( 0 ),
+ aTextId( 0, 0 ),
+ nNextShapeId( 0 ),
+ nShapeId( 0 ),
+ eShapeType( mso_sptNil )
+{
+ eLineStyle = mso_lineSimple; // GPF-Bug #66227#
+ bDrawHell = FALSE;
+ bHidden = FALSE;
+// bInGroup = FALSE;
+ bReplaceByFly = FALSE;
+ bLastBoxInChain = TRUE;
+ bHasUDefProp = FALSE; // was the DFF_msofbtUDefProp record set?
+ bVFlip = FALSE;
+ bHFlip = FALSE;
+ bAutoWidth = FALSE;
+}
+
+SvxMSDffImportRec::SvxMSDffImportRec(const SvxMSDffImportRec& rCopy)
+ : pObj( rCopy.pObj ),
+ nXAlign( rCopy.nXAlign ),
+ nXRelTo( rCopy.nXRelTo ),
+ nYAlign( rCopy.nYAlign ),
+ nYRelTo( rCopy.nYRelTo ),
+ nLayoutInTableCell( rCopy.nLayoutInTableCell ),
+ nTextRotationAngle( rCopy.nTextRotationAngle ),
+ nDxTextLeft( rCopy.nDxTextLeft ),
+ nDyTextTop( rCopy.nDyTextTop ),
+ nDxTextRight( rCopy.nDxTextRight ),
+ nDyTextBottom( rCopy.nDyTextBottom ),
+ nDxWrapDistLeft( rCopy.nDxWrapDistLeft ),
+ nDyWrapDistTop( rCopy.nDyWrapDistTop ),
+ nDxWrapDistRight( rCopy.nDxWrapDistRight ),
+ nDyWrapDistBottom(rCopy.nDyWrapDistBottom ),
+ nCropFromTop( rCopy.nCropFromTop ),
+ nCropFromBottom( rCopy.nCropFromBottom ),
+ nCropFromLeft( rCopy.nCropFromLeft ),
+ nCropFromRight( rCopy.nCropFromRight ),
+ aTextId( rCopy.aTextId ),
+ nNextShapeId( rCopy.nNextShapeId ),
+ nShapeId( rCopy.nShapeId ),
+ eShapeType( rCopy.eShapeType )
+{
+ eLineStyle = rCopy.eLineStyle; // GPF-Bug #66227#
+ bDrawHell = rCopy.bDrawHell;
+ bHidden = rCopy.bHidden;
+// bInGroup = rCopy.bInGroup;
+ bReplaceByFly = rCopy.bReplaceByFly;
+ bAutoWidth = rCopy.bAutoWidth;
+ bLastBoxInChain = rCopy.bLastBoxInChain;
+ bHasUDefProp = rCopy.bHasUDefProp;
+ bVFlip = rCopy.bVFlip;
+ bHFlip = rCopy.bHFlip;
+ nClientAnchorLen = rCopy.nClientAnchorLen;
+ if( rCopy.nClientAnchorLen )
+ {
+ pClientAnchorBuffer = new char[ nClientAnchorLen ];
+ memcpy( pClientAnchorBuffer,
+ rCopy.pClientAnchorBuffer,
+ nClientAnchorLen );
+ }
+ else
+ pClientAnchorBuffer = 0;
+
+ nClientDataLen = rCopy.nClientDataLen;
+ if( rCopy.nClientDataLen )
+ {
+ pClientDataBuffer = new char[ nClientDataLen ];
+ memcpy( pClientDataBuffer,
+ rCopy.pClientDataBuffer,
+ nClientDataLen );
+ }
+ else
+ pClientDataBuffer = 0;
+
+ if (rCopy.pWrapPolygon)
+ pWrapPolygon = new Polygon(*rCopy.pWrapPolygon);
+ else
+ pWrapPolygon = 0;
+}
+
+SvxMSDffImportRec::~SvxMSDffImportRec()
+{
+ if (pClientAnchorBuffer)
+ delete[] pClientAnchorBuffer;
+ if (pClientDataBuffer)
+ delete[] pClientDataBuffer;
+ if (pWrapPolygon)
+ delete pWrapPolygon;
+}
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
+
+void SvxMSDffManager::insertShapeId( sal_Int32 nShapeId, SdrObject* pShape )
+{
+ maShapeIdContainer[nShapeId] = pShape;
+}
+
+void SvxMSDffManager::removeShapeId( SdrObject* pShape )
+{
+ SvxMSDffShapeIdContainer::iterator aIter( maShapeIdContainer.begin() );
+ const SvxMSDffShapeIdContainer::iterator aEnd( maShapeIdContainer.end() );
+ while( aIter != aEnd )
+ {
+ if( (*aIter).second == pShape )
+ {
+ maShapeIdContainer.erase( aIter );
+ break;
+ }
+ aIter++;
+ }
+}
+
+SdrObject* SvxMSDffManager::getShapeForId( sal_Int32 nShapeId )
+{
+ SvxMSDffShapeIdContainer::iterator aIter( maShapeIdContainer.find(nShapeId) );
+ return aIter != maShapeIdContainer.end() ? (*aIter).second : 0;
+}
diff --git a/filter/source/msfilter/msfiltertracer.cxx b/filter/source/msfilter/msfiltertracer.cxx
new file mode 100644
index 000000000000..a961693165ab
--- /dev/null
+++ b/filter/source/msfilter/msfiltertracer.cxx
@@ -0,0 +1,251 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <filter/msfilter/msfiltertracer.hxx>
+#include <vcl/svapp.hxx>
+#include <tools/urlobj.hxx>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/util/logging/LogLevel.hpp>
+#include <com/sun/star/util/SearchAlgorithms.hpp>
+#include <com/sun/star/util/SearchFlags.hpp>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/io/XActiveDataSource.hpp>
+#include <svtools/FilterConfigItem.hxx>
+#include <unotools/localfilehelper.hxx>
+#include <unotools/streamwrap.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+
+
+// --------------
+// - Namespaces -
+// --------------
+
+using namespace ::com::sun::star;
+
+MSFilterTracer::MSFilterTracer( const ::rtl::OUString& rConfigPath, uno::Sequence< beans::PropertyValue >* pConfigData ) :
+ mpCfgItem( new FilterConfigItem( rConfigPath, pConfigData ) ),
+ mpAttributeList( new SvXMLAttributeList() ),
+ mpStream( NULL ),
+ mbEnabled( sal_False ) // will be set to true in StartTracing()
+{
+ if ( mpCfgItem->ReadBool( rtl::OUString::createFromAscii( "On" ), sal_False ) )
+ {
+ uno::Reference< lang::XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
+ if ( xMgr.is() )
+ {
+ /* the following methods try to read a property, if it is not available it will put the second
+ parameter as default into the property sequence of the FilterConfigItem. It means we ensure that
+ the property is available by trying to read it (the return value of the method is ignored) */
+ ::rtl::OUString aEmptyString;
+ mpCfgItem->ReadInt32( rtl::OUString::createFromAscii( "LogLevel" ), util::logging::LogLevel::ALL );
+ mpCfgItem->ReadString( rtl::OUString::createFromAscii( "ClassFilter" ), aEmptyString );
+ mpCfgItem->ReadString( rtl::OUString::createFromAscii( "MethodFilter" ), aEmptyString );
+ mpCfgItem->ReadString( rtl::OUString::createFromAscii( "MessageFilter" ), aEmptyString );
+ util::SearchAlgorithms eSearchAlgorithm = (util::SearchAlgorithms)
+ mpCfgItem->ReadInt32( rtl::OUString::createFromAscii( "SearchAlgorithm" ), util::SearchAlgorithms_ABSOLUTE );
+
+ // creating the name of the log file
+ rtl::OUString aPath( mpCfgItem->ReadString( rtl::OUString::createFromAscii( "Path" ), aEmptyString ) );
+ rtl::OUString aName( mpCfgItem->ReadString( rtl::OUString::createFromAscii( "Name" ), aEmptyString ) );
+ rtl::OUString aDocumentURL( mpCfgItem->ReadString( rtl::OUString::createFromAscii( "DocumentURL" ), aEmptyString ) );
+ INetURLObject aLogFile( aDocumentURL );
+ if ( aLogFile.GetMainURL( INetURLObject::NO_DECODE ).getLength() )
+ {
+ if ( aPath.getLength() )
+ {
+ String aOldName( aLogFile.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::NO_DECODE ) );
+ aLogFile = INetURLObject( aPath );
+ aLogFile.insertName( aOldName );
+ }
+ if ( aName.getLength() )
+ aLogFile.setName( aName );
+ }
+ else
+ {
+ if ( aPath.getLength() )
+ aLogFile = INetURLObject( aPath );
+ else
+ {
+ String aURLStr;
+ if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( Application::GetAppFileName(), aURLStr ) )
+ {
+ aLogFile = INetURLObject(aURLStr);
+ aLogFile .removeSegment();
+ aLogFile .removeFinalSlash();
+ }
+ }
+ if ( !aName.getLength() )
+ aName = rtl::OUString::createFromAscii( "tracer" );
+ aLogFile.insertName( aName );
+ }
+ aLogFile.setExtension( rtl::OUString::createFromAscii( "log" ) );
+
+ // creating the file stream
+ mpStream = ::utl::UcbStreamHelper::CreateStream( aLogFile.GetMainURL( INetURLObject::NO_DECODE ), STREAM_WRITE | STREAM_TRUNC | STREAM_SHARE_DENYNONE );
+ if ( mpStream && !mpStream->GetError() )
+ {
+ // creating a wrapper for our stream
+ utl::OOutputStreamWrapper* pHelper = new ::utl::OOutputStreamWrapper( *mpStream );
+ uno::Reference< io::XOutputStream > xOutputStream( pHelper );
+
+ // instanciating the DocumentHandler, then setting the OutputStream
+ mxHandler = uno::Reference< xml::sax::XDocumentHandler >( xMgr->createInstance( rtl::OUString::createFromAscii( "com.sun.star.xml.sax.Writer" ) ), uno::UNO_QUERY );
+ uno::Reference< io::XActiveDataSource > xDocSrc( mxHandler, uno::UNO_QUERY );
+ xDocSrc->setOutputStream( xOutputStream );
+ mxHandler->startDocument();
+ mxHandler->ignorableWhitespace ( rtl::OUString::createFromAscii( " " ) );
+
+ // writing the "DocumentHandler" property, so the FilterTracer component
+ // will use it for the output
+ uno::Any aAny;
+ aAny <<= xDocSrc;
+ mpCfgItem->WriteAny( rtl::OUString::createFromAscii( "DocumentHandler" ), aAny );
+
+ SvXMLAttributeList* pAttrList = new SvXMLAttributeList;
+ pAttrList->AddAttribute( rtl::OUString::createFromAscii( "DocumentURL" ), aDocumentURL );
+ uno::Reference < xml::sax::XAttributeList > xAttributeList(pAttrList);
+ mxHandler->startElement( rtl::OUString::createFromAscii( "Document" ), xAttributeList );
+ }
+
+ uno::Sequence< uno::Any > aArgument( 1 );
+ uno::Sequence< beans::PropertyValue > aPropValues( mpCfgItem->GetFilterData() );
+ aArgument[ 0 ] <<= aPropValues;
+ mxFilterTracer = xMgr->createInstanceWithArguments( rtl::OUString::createFromAscii( "com.sun.star.util.FilterTracer" ), aArgument );
+ if ( mxFilterTracer.is() )
+ {
+ mxTextSearch = uno::Reference< util::XTextSearch >( mxFilterTracer, uno::UNO_QUERY );
+ mxLogger = uno::Reference< util::logging::XLogger >( mxFilterTracer, uno::UNO_QUERY );
+ if ( mxTextSearch.is() )
+ {
+ maSearchOptions.algorithmType = eSearchAlgorithm;
+ mxTextSearch->setOptions( maSearchOptions );
+ }
+ }
+ }
+ }
+}
+
+MSFilterTracer::~MSFilterTracer()
+{
+ mxLogger = NULL;
+ mxFilterTracer = NULL;
+ if ( mxHandler.is() )
+ {
+ mxHandler->ignorableWhitespace ( rtl::OUString::createFromAscii( " " ) );
+ mxHandler->endElement( rtl::OUString::createFromAscii( "Document" ) );
+ mxHandler->ignorableWhitespace ( rtl::OUString::createFromAscii( " " ) );
+ mxHandler->endDocument();
+ mxHandler = NULL;
+ }
+ delete mpAttributeList;
+ delete mpCfgItem;
+ delete mpStream;
+}
+
+void MSFilterTracer::StartTracing()
+{
+ mbEnabled = mpCfgItem->ReadBool( rtl::OUString::createFromAscii( "On" ), sal_False );
+}
+
+void MSFilterTracer::EndTracing()
+{
+ mbEnabled = sal_False;
+}
+
+void MSFilterTracer::StartElement( const rtl::OUString& rName, uno::Reference< xml::sax::XAttributeList > xAttribs )
+{
+ if ( mxHandler.is() )
+ mxHandler->startElement( rName, xAttribs );
+}
+
+void MSFilterTracer::EndElement( const rtl::OUString& rName )
+{
+ if ( mxHandler.is() )
+ mxHandler->endElement( rName );
+}
+
+void MSFilterTracer::Trace( const rtl::OUString& rElement, const rtl::OUString& rMessage )
+{
+ if ( mbEnabled && mxLogger.is() )
+ {
+ sal_Bool bFilter = sal_False;
+ if ( rMessage.getLength() && mxTextSearch.is() )
+ {
+ maSearchOptions.searchString = rMessage;
+ mxTextSearch->setOptions( maSearchOptions );
+ util::SearchResult aSearchResult = mxTextSearch->searchForward( rMessage, 0, rMessage.getLength() );
+ bFilter = aSearchResult.subRegExpressions != 0;
+ }
+ if ( !bFilter )
+ {
+ uno::Reference < xml::sax::XAttributeList > xAttrList( new SvXMLAttributeList( *mpAttributeList ) );
+ if ( mxHandler.is() )
+ mxHandler->startElement( rElement, xAttrList );
+ if ( rMessage.getLength() )
+ {
+ rtl::OUString aEmpty;
+ mxLogger->logp( 0, aEmpty, aEmpty, rMessage );
+ }
+ if ( mxHandler.is() )
+ mxHandler->endElement( rElement );
+ }
+ }
+}
+
+void MSFilterTracer::AddAttribute( const ::rtl::OUString& sName , const ::rtl::OUString& sValue )
+{
+ if ( mbEnabled )
+ mpAttributeList->AddAttribute( sName, sValue );
+}
+void MSFilterTracer::ClearAttributes()
+{
+ if ( mbEnabled )
+ mpAttributeList->Clear();
+}
+
+void MSFilterTracer::RemoveAttribute( const ::rtl::OUString& sName )
+{
+ if ( mbEnabled )
+ mpAttributeList->RemoveAttribute( sName );
+}
+
+uno::Any MSFilterTracer::GetProperty( const rtl::OUString& rPropName, const uno::Any* pDefault ) const
+{
+ uno::Any aDefault;
+ if ( pDefault )
+ aDefault = *pDefault;
+ return mpCfgItem->ReadAny( rPropName, aDefault );
+}
+
+void MSFilterTracer::SetProperty( const ::rtl::OUString& rPropName, const uno::Any& rProperty )
+{
+ mpCfgItem->WriteAny( rPropName, rProperty );
+}
+
diff --git a/filter/source/msfilter/msocximex.cxx b/filter/source/msfilter/msocximex.cxx
new file mode 100644
index 000000000000..e434da1fbfb3
--- /dev/null
+++ b/filter/source/msfilter/msocximex.cxx
@@ -0,0 +1,5957 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/text/VertOrientation.hpp>
+#include <com/sun/star/text/XText.hpp>
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HDL_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#include <com/sun/star/text/TextContentAnchorType.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/XControlShape.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/container/XIndexContainer.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <com/sun/star/form/XFormsSupplier.hpp>
+#include <com/sun/star/form/XForm.hpp>
+#include <com/sun/star/form/FormComponentType.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/FontUnderline.hpp>
+#include <com/sun/star/awt/FontStrikeout.hpp>
+#include <com/sun/star/awt/ScrollBarOrientation.hpp>
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#include <comphelper/extract.hxx>
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/io/XInputStreamProvider.hpp>
+#include <rtl/ustrbuf.hxx>
+#include <vcl/svapp.hxx>
+#include <sfx2/objsh.hxx>
+#include <xmlscript/xmldlg_imexp.hxx>
+#include <filter/msfilter/msocximex.hxx>
+#include <osl/file.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/embed/XTransactedObject.hpp>
+#include <com/sun/star/embed/ElementModes.hpp>
+#include <comphelper/processfactory.hxx> // shouldn't be needed
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
+#include <algorithm>
+#include <memory>
+
+#ifndef C2S
+#define C2S(cChar) String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(cChar))
+#endif
+#ifndef C2U
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+#endif
+
+using namespace ::com::sun::star;
+using namespace ::rtl;
+using namespace cppu;
+
+
+#define WW8_ASCII2STR(s) String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(s))
+
+
+static char sWW8_form[] = "WW-Standard";
+
+
+struct SortOrderByTabPos
+{
+ bool operator()( const OCX_Control* a, const OCX_Control* b )
+ {
+ return a->mnTabPos < b->mnTabPos;
+ }
+};
+
+
+sal_uInt8 __READONLY_DATA OCX_Control::aObjInfo[4] = { 0x00, 0x12, 0x03, 0x00 };
+
+long ReadAlign(SvStorageStream *pS, long nPos, int nAmount)
+{
+ if (long nAlign = nPos % nAmount)
+ {
+
+ long nLen = nAmount - nAlign;
+ pS->SeekRel(nLen);
+ return nLen;
+ }
+ return 0;
+}
+
+
+// NP - Images in controls in OO2.0/SO8 exist as links, e.g. they are not part of the document so are
+// referenced externally. On import from ms document try to save images for controls here.
+// Images are stored in directory called temp in the user installation directory. Next version of OO/SO
+// hopefully will address this issue and allow a choice e.g. images for controls to be stored as links
+// or embeded in the document.
+
+// [out]location path to the stream to where the image is to be stored,
+// if same name exists in folder then this function calcuates a new name
+// [in] data raw bytes of image to be stored.
+// [in] dataLen no. byte to be stored
+//
+// returns, true if successful
+
+bool storePictureInFileSystem( OUString& location, sal_uInt8* data, sal_uInt32 dataLen )
+{
+ bool result = true;
+ OUString origPath = location;
+ try
+ {
+ uno::Reference<lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory(),
+ uno::UNO_QUERY_THROW );
+ uno::Reference< com::sun::star::ucb::XSimpleFileAccess> xSFA( xMSF->createInstance(
+ S2U("com.sun.star.ucb.SimpleFileAccess" ) ),
+ uno::UNO_QUERY_THROW );
+ OUString ext;
+ sal_Int32 index = 0;
+ while ( xSFA->exists( location ) )
+ {
+ ext = OUString::valueOf( ++index );
+ location = origPath + ext;
+ }
+
+ SvStream* pStream = ::utl::UcbStreamHelper::CreateStream( location, STREAM_WRITE | STREAM_TRUNC );
+ if ( pStream )
+ {
+ pStream->Write(data, dataLen);
+ delete pStream;
+ }
+ else
+ {
+ result = false;
+ }
+ }
+ catch( uno::Exception& )
+ {
+ result = false;
+ }
+ return result;
+}
+
+// NP - Images in controls in OO2.0/SO8 exist as links, e.g. they are not part of the document so are
+// referenced externally. On import from ms document try to save images from controls here so this
+// at least a macro programmer has a chance to accessed them manually later. Next version of OO/SO
+// hopefully will address this issue.
+// Images will be stored in a top level folder in the document package, folder is named "MigratedImages"
+
+// [in] pDocSh* the document shell.
+// [in] name name of stream image to stored in.
+// [in] data raw bytes of image to be stored.
+// [in] dataLen no. byte to be stored
+
+bool storePictureInDoc( SfxObjectShell* pDocSh, OUString& name, sal_uInt8* data, sal_uInt32 dataLen )
+{
+ uno::Reference < embed::XStorage > xStor;
+ if (pDocSh)
+ {
+ xStor = pDocSh->GetStorage();
+ if( xStor.is() )
+ {
+ try
+ {
+ uno::Reference< embed::XStorage > xPictures = xStor->openStorageElement(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "MigratedImages" ) ),
+ embed::ElementModes::READWRITE );
+ uno::Reference< beans::XPropertySet > xPropSet( xPictures, uno::UNO_QUERY );
+
+ // Set media type of folder MigratedImages to something ( that is unknown ) so that
+ // it will get copied to exported OO/SO format after SaveAs
+ if ( xPropSet.is() )
+ {
+ OUString aMediaType = C2U("MigrationImages");
+ uno::Any a;
+ a <<= aMediaType;
+ xPropSet->setPropertyValue( C2U("MediaType"), a );
+ }
+
+ uno::Reference< io::XStream > xObjReplStr = xPictures->openStreamElement(
+ name,
+ embed::ElementModes::READWRITE | embed::ElementModes::TRUNCATE );
+ uno::Reference< io::XOutputStream > xOutStream( xObjReplStr->getOutputStream(), uno::UNO_QUERY_THROW );
+ uno::Sequence< sal_Int8 > imageBytes( (sal_Int8*)data, dataLen );
+ xOutStream->writeBytes( imageBytes );
+ xOutStream->closeOutput();
+
+ uno::Reference< embed::XTransactedObject > xTransact( xPictures, uno::UNO_QUERY );
+ if ( xTransact.is() )
+ {
+ xTransact->commit();
+ }
+ }
+ catch( uno::Exception& )
+ {
+ return false;
+ }
+
+ }
+ else
+ {
+ // no storage something wrong
+ return false;
+ }
+ }
+ else
+ {
+ //No doc shell
+ return false;
+ }
+ return true;
+}
+
+long WriteAlign(SvStorageStream *pS, int nAmount)
+{
+ if (long nAlign = pS->Tell() % nAmount)
+ {
+ long nLen = nAmount - nAlign;
+ for (long i=0; i< nLen; ++i)
+ *pS << sal_uInt8(0x00);
+ return nLen;
+ }
+ return 0;
+}
+// string import/export =======================================================
+/** #117832# import of form control names
+* control name is located in stream ("\3OCXNAME")
+* a strings in "\3OCXNAME" stream seem to be terminated by 4 trailing bytes of 0's.
+* ====
+* Note: If the string in the stream is overwritten by a shorter string
+* some characters from the original string may remain, the new string however
+* will still be terminated in the same way e.g. by 4 bytes with value 0.
+*/
+
+bool writeOCXNAME( const OUString& sOCXName, SvStorageStream* pStream )
+{
+ const sal_Unicode* buffer = sOCXName.getStr();
+ for ( sal_Int32 index=0; index < sOCXName.getLength(); index++ )
+ {
+ sal_uInt16 ch = static_cast< sal_uInt16 >( buffer[ index ] );
+ *pStream << ch;
+ }
+ // write
+ *pStream << sal_uInt32(0);
+ return ( SVSTREAM_OK == pStream->GetError() );
+
+}
+
+bool readOCXNAME( OUString& sCName, SvStorageStream* pStream )
+{
+ /*
+ * Read uniCode until no data or 0 encountered
+ */
+ OUStringBuffer buf(40);
+ do
+ {
+ sal_uInt16 ch = 0;
+ *pStream >> ch;
+ sal_Unicode uni = static_cast< sal_Unicode >( ch );
+ if ( uni == 0 )
+ {
+ break;
+ }
+ buf.append( &uni, 1 );
+
+ } while ( !pStream->IsEof() );
+
+ sCName = buf.makeStringAndClear();
+ return ( SVSTREAM_OK == pStream->GetError() );
+}
+
+
+/* #110435# (DR, 2003-11-12) ** Import of Unicode strings in form controls **
+
+ Strings may be stored either as compressed or uncompressed Unicode
+ character array. There are no encoded byte strings anywhere.
+
+ The string length field stores the length of the character array (not the
+ character count of the string) in the lower 31 bits, and the compression
+ state in the highest bit.
+
+ A set bit means the character array is compressed. This means all Unicode
+ characters are <=0xFF. Therefore the high bytes of all characters are left
+ out, and the character array size is equal to the string length.
+
+ A cleared bit means the character array is not compressed. The buffer
+ contains Little-Endian Unicode characters, and the resulting string length
+ is half the buffer size.
+
+ TODO: This implementation of the new string import is a hack to keep
+ msocximex.hxx unchanged. A better implementation would replace the char*
+ members of all classes by something more reasonable.
+ */
+
+namespace {
+
+const sal_uInt32 SVX_MSOCX_SIZEMASK = 0x7FFFFFFF; /// Mask for character buffer size.
+const sal_uInt32 SVX_MSOCX_COMPRESSED = 0x80000000; /// 1 = compressed Unicode array.
+
+
+/** Returns true, if the passed length field specifies a compressed character array.
+ */
+inline bool lclIsCompressed( sal_uInt32 nLenFld )
+{
+ return (nLenFld & SVX_MSOCX_COMPRESSED) != 0;
+}
+
+
+/** Extracts and returns the memory size of the character buffer.
+ @return Character buffer size (may differ from resulting string length!).
+ */
+inline sal_uInt32 lclGetBufferSize( sal_uInt32 nLenFld )
+{
+ return nLenFld & SVX_MSOCX_SIZEMASK;
+}
+
+
+// import ---------------------------------------------------------------------
+
+/** Reads the character array of a string in a form control.
+
+ Creates a new character array containing the character data.
+ The length field must be read before and passed to this function.
+ Aligns stream position to multiple of 4 before.
+
+ @param rStrm
+ The input stream.
+
+ @param rpcCharArr
+ (out-param) Will point to the created character array,
+ or will be 0 if string is empty. The array is NOT null-terminated.
+ If the passed pointer points to an old existing array, it will be
+ deleted before. Caller must delete the returned array.
+
+ @param nLenFld
+ The corresponding string length field read somewhere before.
+ */
+void lclReadCharArray( SvStorageStream& rStrm, char*& rpcCharArr, sal_uInt32 nLenFld, long nPos )
+{
+ delete[] rpcCharArr;
+ rpcCharArr = 0;
+ sal_uInt32 nBufSize = lclGetBufferSize( nLenFld );
+ DBG_ASSERT( nBufSize <= 0xFFFF, "lclReadCharArray - possible read error: char array is too big" );
+ if( nBufSize && nBufSize <= 0xFFFF )
+ {
+ rpcCharArr = new char[ nBufSize ];
+ if( rpcCharArr )
+ {
+ ReadAlign( &rStrm, nPos, 4 );
+ rStrm.Read( rpcCharArr, nBufSize );
+ }
+ }
+}
+
+
+/** Creates an OUString from a character array created with lclReadCharArray().
+
+ The passed parameters must match, that means the length field must be the
+ same used to create the passed character array.
+
+ @param pcCharArr
+ The character array returned by lclReadCharArray(). May be compressed
+ or uncompressed, next parameter nLenFld will specify this.
+
+ @param nLenFld
+ MUST be the same string length field that has been passed to
+ lclReadCharArray() to create the character array in previous parameter
+ pcCharArr.
+
+ @return
+ An OUString containing the decoded string data. Will be empty if
+ pcCharArr is 0.
+ */
+OUString lclCreateOUString( const char* pcCharArr, sal_uInt32 nLenFld )
+{
+ OUStringBuffer aBuffer;
+ sal_uInt32 nBufSize = lclGetBufferSize( nLenFld );
+ if( lclIsCompressed( nLenFld ) )
+ {
+ // buffer contains compressed Unicode, not encoded bytestring
+ sal_Int32 nStrLen = static_cast< sal_Int32 >( nBufSize );
+ aBuffer.setLength( nStrLen );
+ const char* pcCurrChar = pcCharArr;
+ for( sal_Int32 nChar = 0; nChar < nStrLen; ++nChar, ++pcCurrChar )
+ /* *pcCurrChar may contain negative values and therefore MUST be
+ casted to unsigned char, before assigned to a sal_Unicode. */
+ aBuffer.setCharAt( nChar, static_cast< unsigned char >( *pcCurrChar ) );
+ }
+ else
+ {
+ // buffer contains Little-Endian Unicode
+ sal_Int32 nStrLen = static_cast< sal_Int32 >( nBufSize ) / 2;
+ aBuffer.setLength( nStrLen );
+ const char* pcCurrChar = pcCharArr;
+ for( sal_Int32 nChar = 0; nChar < nStrLen; ++nChar )
+ {
+ /* *pcCurrChar may contain negative values and therefore MUST be
+ casted to unsigned char, before assigned to a sal_Unicode. */
+ sal_Unicode cChar = static_cast< unsigned char >( *pcCurrChar++ );
+ cChar |= (static_cast< unsigned char >( *pcCurrChar++ ) << 8);
+ aBuffer.setCharAt( nChar, cChar );
+ }
+ }
+ return aBuffer.makeStringAndClear();
+}
+
+// export ---------------------------------------------------------------------
+
+/** This class implements writing a character array from a Unicode string.
+
+ Usage:
+ 1) Construct an instance, either directly with an OUString, or with an UNO
+ Any containing an OUString.
+ 2) Check with HasData(), if there is something to write.
+ 3) Write the string length field with WriteLenField() at the right place.
+ 4) Write the encoded character array with WriteCharArray().
+ */
+class SvxOcxString
+{
+public:
+ /** Constructs an empty string. String data may be set later by assignment. */
+ inline explicit SvxOcxString() : mnLenFld( 0 ) {}
+ /** Constructs the string from the passed OUString. */
+ inline explicit SvxOcxString( const OUString& rStr ) { Init( rStr ); }
+ /** Constructs the string from the passed UNO Any. */
+ inline explicit SvxOcxString( const uno::Any& rAny ) { Init( rAny ); }
+
+ /** Assigns the passed string to the object. */
+ inline SvxOcxString& operator=( const OUString& rStr ) { Init( rStr ); return *this; }
+ /** Assigns the string in the passed UNO Any to the object. */
+ inline SvxOcxString& operator=( const uno::Any& rAny ) { Init( rAny ); return *this; }
+
+ /** Returns true, if the string contains at least one character to write. */
+ inline bool HasData() const { return maString.getLength() > 0; }
+
+ /** Writes the encoded 32-bit string length field. Aligns stream position to mult. of 4 before. */
+ void WriteLenField( SvStorageStream& rStrm ) const;
+ /** Writes the encoded character array. Aligns stream position to mult. of 4 before. */
+ void WriteCharArray( SvStorageStream& rStrm ) const;
+
+private:
+ inline void Init( const OUString& rStr ) { maString = rStr; Init(); }
+ void Init( const uno::Any& rAny );
+ void Init();
+
+ OUString maString; /// The initial string data.
+ sal_uInt32 mnLenFld; /// The encoded string length field.
+};
+
+void SvxOcxString::Init( const uno::Any& rAny )
+{
+ if( !(rAny >>= maString) )
+ maString = OUString();
+ Init();
+}
+
+void SvxOcxString::Init()
+{
+ mnLenFld = static_cast< sal_uInt32 >( maString.getLength() );
+ bool bCompr = true;
+ // try to find a character >= 0x100 -> character array will be stored uncompressed then
+ if( const sal_Unicode* pChar = maString.getStr() )
+ for( const sal_Unicode* pEnd = pChar + maString.getLength(); bCompr && (pChar < pEnd); ++pChar )
+ bCompr = (*pChar < 0x100);
+ if( bCompr )
+ mnLenFld |= SVX_MSOCX_COMPRESSED;
+ else
+ mnLenFld *= 2;
+}
+
+void SvxOcxString::WriteLenField( SvStorageStream& rStrm ) const
+{
+ if( HasData() )
+ {
+ WriteAlign( &rStrm, 4);
+ rStrm << mnLenFld;
+ }
+}
+
+void SvxOcxString::WriteCharArray( SvStorageStream& rStrm ) const
+{
+ if( HasData() )
+ {
+ const sal_Unicode* pChar = maString.getStr();
+ const sal_Unicode* pEnd = pChar + maString.getLength();
+ bool bCompr = lclIsCompressed( mnLenFld );
+
+ WriteAlign( &rStrm, 4);
+ for( ; pChar < pEnd; ++pChar )
+ {
+ // write compressed Unicode (not encoded bytestring), or Little-Endian Unicode
+ rStrm << static_cast< sal_uInt8 >( *pChar );
+ if( !bCompr )
+ rStrm << static_cast< sal_uInt8 >( *pChar >> 8 );
+ }
+ }
+}
+
+const sal_uInt16 USERFORM = (sal_uInt16)0xFF;
+const sal_uInt16 STDCONTAINER = (sal_uInt16)0xFE;
+
+const sal_uInt16 PAGE = (sal_uInt16)0x07;
+
+const sal_uInt16 IMAGE = (sal_uInt16)0x0C;
+const sal_uInt16 FRAME = (sal_uInt16)0x0E;
+
+const sal_uInt16 SPINBUTTON = (sal_uInt16)0x10;
+const sal_uInt16 CMDBUTTON = (sal_uInt16)0x11;
+const sal_uInt16 TABSTRIP = (sal_uInt16)0x12;
+
+const sal_uInt16 LABEL = (sal_uInt16)0x15;
+
+const sal_uInt16 TEXTBOX = (sal_uInt16)0x17;
+const sal_uInt16 LISTBOX = (sal_uInt16)0x18;
+const sal_uInt16 COMBOBOX = (sal_uInt16)0x19;
+const sal_uInt16 CHECKBOX = (sal_uInt16)0x1A;
+
+const sal_uInt16 OPTIONBUTTON = (sal_uInt16)0x1B;
+const sal_uInt16 TOGGLEBUTTON = (sal_uInt16)0x1C;
+
+const sal_uInt16 SCROLLBAR = (sal_uInt16)0x2F;
+
+const sal_uInt16 MULTIPAGE = (sal_uInt16)0x39;
+const sal_uInt16 PROGRESSBAR = (sal_uInt16)0x8000;
+
+typedef std::vector< ContainerRecord > ContainerRecordList;
+
+class ContainerRecReader
+{
+ public:
+
+ virtual ~ContainerRecReader() {}
+
+ virtual bool Read( OCX_ContainerControl* pContainerControl, SvStorageStream *pS)
+ {
+ *pS >> nNoRecords;
+ *pS >> nTotalLen;
+
+ if ( isMultiPage )
+ {
+ if ( !handleMultiPageHdr( pS ) )
+ {
+ return false;
+ }
+ }
+ else
+ {
+ if ( !handleStandardHdr( pS ) )
+ {
+ return false;
+ }
+ }
+
+ records.clear();
+ for (sal_uInt32 nRecord = 0; nRecord < nNoRecords; ++nRecord)
+ {
+ // DR #134146# redo loading of FrameChild data
+
+ ContainerRecord rec;
+
+ // record header
+ sal_uInt16 nId, nSize;
+ *pS >> nId >> nSize;
+ sal_Size nStartPos = pS->Tell();
+
+ // content flags
+ sal_uInt32 nContentFlags;
+ *pS >> nContentFlags;
+
+ // length of control name
+ sal_uInt32 nNameLen = 0;
+ if( nContentFlags & 0x00000001 )
+ *pS >> nNameLen;
+ // length of control tag
+ sal_uInt32 nTagLen = 0;
+ if( nContentFlags & 0x00000002 )
+ *pS >> nTagLen;
+ // substorage id for frames
+ if( nContentFlags & 0x00000004 )
+ *pS >> rec.nSubStorageId;
+ // help-context id
+ if( nContentFlags & 0x00000008 )
+ pS->SeekRel( 4 );
+ // option flags
+ if( nContentFlags & 0x00000010 )
+ {
+ sal_uInt32 nBitFlags = 0;
+ *pS >> nBitFlags;
+ rec.bVisible = ( ( nBitFlags & 0x02 ) == 0x02 );
+ }
+ // substream size
+ if( nContentFlags & 0x00000020 )
+ *pS >> rec.nSubStreamLen;
+ // tabstop position
+ if( nContentFlags & 0x00000040 )
+ *pS >> rec.nTabPos;
+ // control type
+ if( nContentFlags & 0x00000080 )
+ *pS >> rec.nTypeIdent;
+ // length of infotip
+ sal_uInt32 nTipLen = 0;
+ if( nContentFlags & 0x00000800 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ *pS >> nTipLen;
+ }
+
+ sal_uInt32 nCntrlIdLen = 0;
+ if( nContentFlags & 0x00001000 )
+ *pS >> nCntrlIdLen;
+
+ // length of control source name
+ sal_uInt32 nCtrlSrcLen = 0;
+ if( nContentFlags & 0x00002000 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ *pS >> nCtrlSrcLen;
+ }
+
+ // length of row source name
+ sal_uInt32 nRowSrcLen = 0;
+ if( nContentFlags & 0x00004000 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ *pS >> nRowSrcLen;
+ }
+
+ // control name
+ sal_Char* pName = 0;
+ sal_uInt32 nNameBufSize = lclGetBufferSize( nNameLen );
+ if( nNameBufSize > 0 )
+ {
+ pName = new char[ nNameBufSize ];
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ pS->Read( pName, nNameBufSize );
+ }
+ // control tag
+ sal_uInt32 nTagBufSize = lclGetBufferSize( nTagLen );
+ if( nTagBufSize > 0 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ pS->SeekRel( nTagBufSize );
+ }
+
+ // control position
+ if( nContentFlags & 0x00000100 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ *pS >> rec.nLeft >> rec.nTop;
+ }
+
+ // control infotip
+ sal_uInt32 nTipBufSize = lclGetBufferSize( nTipLen );
+ if( nTipBufSize > 0 )
+ {
+ std::auto_ptr< sal_Char > pTipName;
+ pTipName.reset( new sal_Char[ nTipBufSize ] );
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ pS->Read( pTipName.get(), nTipBufSize );
+ rec.controlTip = lclCreateOUString( pTipName.get(), nTipLen );
+ }
+ // control id
+ sal_uInt32 nCntrlIdSize = lclGetBufferSize( nCntrlIdLen );
+ if( nCntrlIdSize > 0 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ pS->SeekRel( nCntrlIdSize );
+ }
+ // control source name
+ sal_uInt32 nCtrlSrcBufSize = lclGetBufferSize( nCtrlSrcLen );
+ if( nCtrlSrcBufSize > 0 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ pS->SeekRel( nCtrlSrcBufSize );
+ }
+ // row source name
+ sal_uInt32 nRowSrcBufSize = lclGetBufferSize( nRowSrcLen );
+ if( nRowSrcBufSize > 0 )
+ {
+ ReadAlign( pS, pS->Tell() - nStartPos, 4 );
+ pS->SeekRel( nRowSrcBufSize );
+ }
+
+ // seek to end of data
+ pS->Seek( nStartPos + nSize );
+
+ rec.cName = lclCreateOUString(pName, nNameLen);
+ delete[] pName;
+
+ OCX_Control* pControl = NULL;
+ if( pContainerControl->createFromContainerRecord( rec, pControl ) &&
+ pControl )
+ {
+ // propagate doc shell from parent
+ pControl->pDocSh = pContainerControl->pDocSh;
+ pContainerControl->ProcessControl( pControl, pS, rec );
+ }
+ else
+ {
+ DBG_ERROR("Terminating import, unexpected error");
+ return false;
+ }
+ }
+ return true;
+ }
+
+ protected:
+ ContainerRecReader() : isMultiPage(false){}
+ bool isMultiPage;
+ sal_uInt32 nNoRecords;
+ sal_uInt32 nTotalLen;
+
+ private:
+ bool handleStandardHdr( SvStorageStream* pS )
+ {
+ sal_uInt8 aUnknown11[4];
+ pS->Read(aUnknown11, sizeof(aUnknown11));
+ return true;
+ }
+
+ bool handleMultiPageHdr( SvStorageStream* pS )
+ {
+ sal_uInt32 nUnknown_32b; // unknown 32 bit structure, flags ?
+ sal_uInt16 nUnknown_16b; // unknown 16 bit structure
+ sal_uInt16 nMysteryLen; // lenght of unknown sub record
+
+ *pS >> nUnknown_32b;
+ *pS >> nUnknown_16b;
+ *pS >> nMysteryLen;
+
+ pS->SeekRel( nMysteryLen );
+ return true;
+ }
+ ContainerRecordList records;
+};
+
+class StdContainerRecReader : public ContainerRecReader
+{
+ public:
+ StdContainerRecReader(){}
+};
+
+class MultiPageContainerRecReader : public ContainerRecReader
+{
+ public:
+ MultiPageContainerRecReader()
+ {
+ // NP ( 27-01-05 )
+ // Strictly speaking this approach shouldn't be necessary.
+ // It should be possible to have a common routine read the
+ // container record array and by examining the flags present in
+ // the record to determine we expect to read or not.
+ // In this case for a MultPage control there is no Top or Left
+ // values in the control record array, however time contraints
+ // and associated risk prevent further investigation of this
+ // at the moment.
+ // similar situation exists for the start of the container record
+ // which in the case of the MultiPage is different from
+ // UserForm & Frame ( the other containers )
+
+ isMultiPage = true; // tell the base class skip
+ }
+};
+
+class ContainerRecordReaderFac
+{
+ public:
+ static ContainerRecReader* instance( sal_uInt32 containerType )
+ {
+ switch( containerType )
+ {
+ case PAGE:
+ case FRAME:
+ case USERFORM:
+ case STDCONTAINER:
+ return new StdContainerRecReader();
+ case MULTIPAGE:
+ return new MultiPageContainerRecReader();
+ default:
+ DBG_ERROR("Illegal container type for factory");
+ return NULL;
+ }
+ }
+ private:
+ ContainerRecordReaderFac();
+};
+
+} // namespace
+
+// ============================================================================
+
+void RBGroup::add(OCX_Control* pRB)
+{
+ // The tab index for the group is calculated as
+ // the lowest tab index found in the list of RadioButtons
+ if ( pRB->mnTabPos < mRBGroupPos )
+ {
+ mRBGroupPos = pRB->mnTabPos;
+ CtrlIterator aEnd = mpControls.end();
+ for (CtrlIterator aIter = mpControls.begin(); aIter != aEnd; ++ aIter )
+ {
+ (*aIter)->mnTabPos = mRBGroupPos;
+ }
+ }
+ mpControls.push_back( pRB );
+}
+
+struct SortGroupByTabPos
+{
+ bool operator()( const RBGroup* a, const RBGroup* b )
+ {
+ return a->tabPos() < b->tabPos();
+ }
+};
+
+RBGroupManager::RBGroupManager( String& defaultName ):mSDefaultName( defaultName ),
+ numRadioButtons(0)
+{
+ groupList.reserve( 8 ); // reserve far more than we expect
+}
+
+RBGroupManager::~RBGroupManager()
+{
+ for ( GroupIterator gIter=groupList.begin(); gIter!=groupList.end(); ++gIter )
+ {
+ delete( *gIter );
+ }
+}
+
+// Loose description of the method below ( I sure there is a better way to do
+// this )
+// In order to "fake" MS grouping behavior for OptionButtons the OptionButtons
+// in the same group need to have consecutive tab indices ( regardless of the
+// imported tab indices of the RadioButtons ). Additionally if two
+// groups of OptionButtons end up having all consecutive indices they
+// will be treated as a single group by OpenOffice. In this case
+// a dummy seperator control needs to be inserted between the groups.
+//
+// This method returns a new list "destinationList" containing the controls
+// passed in "sourceList" and the OptionButtons contained in the various
+// Groups maintained by this class.
+// Controls are ordered in the destination list by tab index.
+// Each RadioButtonGroup has a tab index associated with it.
+// ( Tab index of a RadioGroup is determined as the tab index of the
+// OptionButton control with the lowest tab index in the group )
+
+
+void RBGroupManager::addRadioButton( OCX_OptionButton* pRButton )
+{
+ if ( pRButton )
+ {
+ OUString groupName = mSDefaultName;
+ if ( pRButton->nGroupNameLen )
+ {
+ groupName =
+ lclCreateOUString(pRButton->pGroupName,
+ pRButton->nGroupNameLen);
+ }
+ ++numRadioButtons;
+ RBGroupHash::iterator iter = rbGroups.find( groupName );
+ if ( iter != rbGroups.end() )
+ {
+ iter->second->controls().push_back( pRButton );
+ }
+ else
+ {
+ RBGroup* newGroup = new RBGroup(pRButton->mnTabPos);
+ newGroup->controls().push_back( pRButton );
+ rbGroups[ groupName ] = newGroup;
+ groupList.push_back( newGroup );
+ }
+
+ }
+}
+
+CtrlList RBGroupManager::insertGroupsIntoControlList( const CtrlList& sourceList )
+{
+ ::std::sort( groupList.begin(), groupList.end(), SortGroupByTabPos() );
+ std::vector<OCX_Control*> destinationList;
+ if ( groupList.size() )
+ {
+ destinationList.reserve( sourceList.size() + numRadioButtons );
+
+ GroupIterator groupEnd = groupList.end();
+ CtrlIteratorConst sourceEnd = sourceList.end();
+
+ size_t prevGroupListSize = 0;
+
+ CtrlIteratorConst containees = sourceList.begin();
+ GroupIterator groupIter=groupList.begin();
+ while ( containees != sourceEnd ||
+ groupIter != groupEnd )
+ {
+ bool addGroupSeperator = false;
+ if ( containees != sourceEnd )
+ {
+ if ( groupIter != groupEnd )
+ {
+ sal_Int16 groupTabPos = (*groupIter)->tabPos();
+ if ( (*containees)->mnTabPos >= groupTabPos )
+ {
+ if ( !(destinationList.size() >= prevGroupListSize ))
+ {
+ addGroupSeperator = true;
+ }
+ copyList( (*groupIter)->controls(), destinationList, addGroupSeperator );
+ ++groupIter;
+
+ prevGroupListSize = destinationList.size();
+ }
+ }
+ destinationList.push_back(*containees);
+ ++containees;
+ }
+ else
+ {
+ if ( groupIter != groupEnd )
+ {
+ if ( !(destinationList.size() > prevGroupListSize ))
+ {
+ addGroupSeperator = true;
+ }
+ copyList( (*groupIter)->controls(), destinationList, addGroupSeperator );
+ ++groupIter;
+ prevGroupListSize = destinationList.size();
+ }
+ }
+ }
+ }
+ else
+ {
+ destinationList = sourceList;
+ }
+ return destinationList;
+
+}
+
+
+void RBGroupManager::addSeperator( std::vector< OCX_Control* >& dest )
+{
+ OCX_Control* seperator = new OCX_CommandButton;
+ seperator->SetInDialog(true);
+ seperator->sName = C2S("GroupSeperator");
+ dest.push_back( seperator );
+}
+
+void RBGroupManager::copyList( std::vector< OCX_Control* >& src,
+ std::vector< OCX_Control* >& dest,
+ bool addGroupSeperator )
+{
+ if ( addGroupSeperator )
+ {
+ addSeperator( dest );
+ }
+
+ for ( CtrlIterator rbIter = src.begin(); rbIter != src.end(); ++rbIter )
+ {
+ dest.push_back( *rbIter );
+ }
+}
+
+class OCX_UserFormLabel : public OCX_Label
+{
+public:
+ OCX_UserFormLabel(OCX_Control* pParent ) : OCX_Label( pParent )
+ {
+ mnForeColor = 0x80000012L;
+ mnBackColor = 0x8000000FL;
+ }
+};
+
+
+sal_uInt16 OCX_Control::nStandardId(0x0200);
+sal_uInt16 OCX_FontData::nStandardId(0x0200);
+
+sal_uInt32 OCX_Control::pColor[25] = {
+0xC0C0C0, 0x008080, 0x000080, 0x808080, 0xC0C0C0, 0xFFFFFF, 0x000000,
+0x000000, 0x000000, 0xFFFFFF, 0xC0C0C0, 0xC0C0C0, 0x808080, 0x000080,
+0xFFFFFF, 0xC0C0C0, 0x808080, 0x808080, 0x000000, 0xC0C0C0, 0xFFFFFF,
+0x000000, 0xC0C0C0, 0x000000, 0xFFFFC0 };
+
+void OCX_Control::FillSystemColors()
+{
+ // overwrite the predefined colors with available system colors
+ const StyleSettings& rSett = Application::GetSettings().GetStyleSettings();
+
+ pColor[ 0x00 ] = rSett.GetFaceColor().GetColor();
+ pColor[ 0x01 ] = rSett.GetWorkspaceColor().GetColor();
+ pColor[ 0x02 ] = rSett.GetActiveColor().GetColor();
+ pColor[ 0x03 ] = rSett.GetDeactiveColor().GetColor();
+ pColor[ 0x04 ] = rSett.GetMenuBarColor().GetColor();
+ pColor[ 0x05 ] = rSett.GetWindowColor().GetColor();
+ pColor[ 0x07 ] = rSett.GetMenuTextColor().GetColor();
+ pColor[ 0x08 ] = rSett.GetWindowTextColor().GetColor();
+ pColor[ 0x09 ] = rSett.GetActiveTextColor().GetColor();
+ pColor[ 0x0A ] = rSett.GetActiveBorderColor().GetColor();
+ pColor[ 0x0B ] = rSett.GetDeactiveBorderColor().GetColor();
+ pColor[ 0x0C ] = rSett.GetWorkspaceColor().GetColor();
+ pColor[ 0x0D ] = rSett.GetHighlightColor().GetColor();
+ pColor[ 0x0E ] = rSett.GetHighlightTextColor().GetColor();
+ pColor[ 0x0F ] = rSett.GetFaceColor().GetColor();
+ pColor[ 0x10 ] = rSett.GetShadowColor().GetColor();
+ pColor[ 0x12 ] = rSett.GetButtonTextColor().GetColor();
+ pColor[ 0x13 ] = rSett.GetDeactiveTextColor().GetColor();
+ pColor[ 0x14 ] = rSett.GetHighlightColor().GetColor();
+ pColor[ 0x15 ] = rSett.GetDarkShadowColor().GetColor();
+ pColor[ 0x16 ] = rSett.GetShadowColor().GetColor();
+ pColor[ 0x17 ] = rSett.GetHelpTextColor().GetColor();
+ pColor[ 0x18 ] = rSett.GetHelpColor().GetColor();
+}
+
+sal_uInt32 OCX_Control::ImportColor(sal_uInt32 nColor) const
+{
+ sal_uInt8 nUpper = (sal_uInt8)( nColor >> 24 );
+ if (nUpper & 0x80) //Palette color, should be switch on bottom 24 bits
+ {
+ /*Might as well use my systems ones in the absence of any other ideas*/
+ nColor = nColor&0x00FFFFFF;
+ DBG_ASSERT (nColor <= 24,"Unknown Palette Index");
+ if (nColor > 24)
+ nColor = 0xFFFFFF;
+ else
+ nColor = pColor[nColor];
+ }
+ else
+ {
+ //Stored in bgr! rather than rgb
+ nColor = SwapColor(nColor);
+ }
+ return nColor;
+}
+
+sal_Int16 OCX_FontData::ImportAlign(sal_uInt8 _nJustification) const
+{
+ sal_Int16 nRet;
+ switch (_nJustification)
+ {
+ default:
+ case 1:
+ nRet = 0;
+ break;
+ case 2:
+ nRet = 2;
+ break;
+ case 3:
+ nRet = 1;
+ break;
+ }
+ return nRet;
+}
+
+sal_uInt8 OCX_FontData::ExportAlign(sal_Int16 nAlign) const
+{
+ sal_Int8 nRet;
+ switch (nAlign)
+ {
+ default:
+ case 0:
+ nRet = 1;
+ break;
+ case 2:
+ nRet = 2;
+ break;
+ case 1:
+ nRet = 3;
+ break;
+ }
+ return nRet;
+}
+
+sal_uInt32 OCX_Control::SwapColor(sal_uInt32 nColor) const
+{
+ sal_uInt8
+ r(static_cast<sal_uInt8>(nColor&0xFF)),
+ g(static_cast<sal_uInt8>(((nColor)>>8)&0xFF)),
+ b(static_cast<sal_uInt8>((nColor>>16)&0xFF));
+ nColor = (r<<16) + (g<<8) + b;
+ return nColor;
+}
+
+sal_uInt32 OCX_Control::ExportColor(sal_uInt32 nColor) const
+{
+ sal_uInt8 nUpper = (sal_uInt8)( nColor >> 24 );
+ if (nUpper & 0x80) //Palette color, should be switch on bottom 24 bits
+ {
+ /*Might as well use my systems ones in the absence of any other ideas*/
+ nColor = nColor&0x00FFFFFF;
+ DBG_ASSERT (nColor <= 24,"Unknown Palette Index");
+ if (nColor > 24)
+ nColor = 0xFFFFFF;
+ else
+ nColor = pColor[nColor];
+ }
+
+ //Stored in bgr! rather than rgb
+ nColor = SwapColor(nColor);
+ return nColor;
+}
+
+sal_Bool OCX_Control::Import(
+ const uno::Reference< lang::XMultiServiceFactory > &rServiceFactory,
+ uno::Reference< form::XFormComponent > &rFComp, awt::Size &rSz)
+{
+
+ if(msFormType.getLength() == 0)
+ return sal_False;
+
+ rSz.Width = nWidth;
+ rSz.Height = nHeight;
+
+ uno::Reference<uno::XInterface> xCreate =
+ rServiceFactory->createInstance(msFormType);
+ if (!xCreate.is())
+ return sal_False;
+
+ rFComp = uno::Reference<form::XFormComponent>(xCreate,uno::UNO_QUERY);
+ if (!rFComp.is())
+ return sal_False;
+ uno::Reference<beans::XPropertySet> xPropSet(xCreate,uno::UNO_QUERY);
+ if (!xPropSet.is())
+ return sal_False;
+ return Import(xPropSet);
+}
+
+sal_Bool OCX_Control::Import(uno::Reference<container::XNameContainer> &rDialog
+ )
+{
+ uno::Reference<lang::XMultiServiceFactory>
+ xFactory(rDialog, uno::UNO_QUERY);
+
+ uno::Reference<uno::XInterface> xCreate =
+ xFactory->createInstance(msDialogType);
+ if (!xCreate.is())
+ return sal_False;
+
+ uno::Reference<awt::XControlModel> xModel(xCreate, uno::UNO_QUERY);
+ if (!xModel.is())
+ return sal_False;
+
+ /* #147900# sometimes insertion of a control fails due to existing name,
+ do not break entire form import then... */
+ try
+ {
+ rDialog->insertByName(sName, uno::makeAny(xModel));
+ }
+ catch( uno::Exception& )
+ {
+ DBG_ERRORFILE(
+ ByteString( "OCX_Control::Import - cannot insert control \"" ).
+ Append( ByteString( sName, RTL_TEXTENCODING_UTF8 ) ).
+ Append( '"' ).GetBuffer() );
+ }
+
+ uno::Reference<beans::XPropertySet> xPropSet(xCreate, uno::UNO_QUERY);
+ if (!xPropSet.is())
+ return sal_False;
+
+ if (!Import(xPropSet))
+ return sal_False;
+
+ uno::Any aTmp;
+ aTmp <<= sal_Int32((mnLeft * 2) / 100);
+ xPropSet->setPropertyValue(WW8_ASCII2STR("PositionX"), aTmp);
+ aTmp <<= sal_Int32((mnTop * 2) / 100);
+ xPropSet->setPropertyValue(WW8_ASCII2STR("PositionY"), aTmp);
+ aTmp <<= sal_Int32((nWidth * 2) / 100);
+ xPropSet->setPropertyValue(WW8_ASCII2STR("Width"), aTmp);
+ aTmp <<= sal_Int32((nHeight * 2) / 100);
+ xPropSet->setPropertyValue(WW8_ASCII2STR("Height"), aTmp);
+ if ( msToolTip.Len() > 0 )
+ xPropSet->setPropertyValue(WW8_ASCII2STR("HelpText"), uno::Any(OUString(msToolTip)));
+
+ if ( mnStep )
+ {
+ aTmp <<= mnStep;
+ xPropSet->setPropertyValue(WW8_ASCII2STR("Step"), aTmp);
+ }
+
+ try
+ {
+ xPropSet->setPropertyValue(WW8_ASCII2STR("EnableVisible"), uno::makeAny( mbVisible ) );
+ }
+ catch( uno::Exception& )
+ {
+ }
+ return sal_True;
+}
+
+sal_Int16 OCX_Control::ImportBorder(sal_uInt16 nSpecialEffect,
+ sal_uInt16 nBorderStyle) const
+{
+ if ((nSpecialEffect == 0) && (nBorderStyle == 0))
+ return 0; //No Border
+ else if ((nSpecialEffect == 0) && (nBorderStyle == 1))
+ return 2; //Flat Border
+ return 1; //3D Border
+}
+
+sal_uInt8 OCX_Control::ExportBorder(sal_uInt16 nBorder,sal_uInt8 &rBorderStyle)
+ const
+{
+ sal_uInt8 nRet;
+ switch(nBorder)
+ {
+ case 0:
+ nRet = rBorderStyle = 0;
+ break;
+ default:
+ case 1:
+ nRet = 2;
+ rBorderStyle = 0;
+ break;
+ case 2:
+ nRet = 0;
+ rBorderStyle = 1;
+ break;
+ }
+ return nRet;
+}
+
+sal_Int16 OCX_Control::ImportSpecEffect( sal_uInt8 nSpecialEffect ) const
+{
+ return (nSpecialEffect == 0) ? 2 : 1;
+}
+
+sal_uInt8 OCX_Control::ExportSpecEffect( sal_Int16 nApiEffect ) const
+{
+ return (nApiEffect == 2) ? 0 : 2;
+}
+
+sal_Bool OCX_Control::ReadFontData(SvStorageStream *pS)
+{
+ return aFontData.Read(pS);
+}
+
+
+const uno::Reference< drawing::XDrawPage >&
+ SvxMSConvertOCXControls::GetDrawPage()
+{
+ if( !xDrawPage.is() && pDocSh )
+ {
+ uno::Reference< drawing::XDrawPageSupplier > xTxtDoc(pDocSh->GetModel(),
+ uno::UNO_QUERY);
+ DBG_ASSERT(xTxtDoc.is(),"XDrawPageSupplier nicht vom XModel erhalten");
+ xDrawPage = xTxtDoc->getDrawPage();
+ DBG_ASSERT( xDrawPage.is(), "XDrawPage nicht erhalten" );
+ }
+
+ return xDrawPage;
+}
+
+
+const uno::Reference< lang::XMultiServiceFactory >&
+ SvxMSConvertOCXControls::GetServiceFactory()
+{
+ if( !xServiceFactory.is() && pDocSh )
+ {
+ xServiceFactory = uno::Reference< lang::XMultiServiceFactory >
+ (pDocSh->GetBaseModel(), uno::UNO_QUERY);
+ DBG_ASSERT( xServiceFactory.is(),
+ "XMultiServiceFactory nicht vom Model erhalten" );
+ }
+
+ return xServiceFactory;
+}
+
+const uno::Reference< drawing::XShapes >& SvxMSConvertOCXControls::GetShapes()
+{
+ if( !xShapes.is() )
+ {
+ GetDrawPage();
+ if( xDrawPage.is() )
+ {
+
+ xShapes = uno::Reference< drawing::XShapes >(xDrawPage,
+ uno::UNO_QUERY);
+ DBG_ASSERT( xShapes.is(), "XShapes nicht vom XDrawPage erhalten" );
+ }
+ }
+ return xShapes;
+}
+
+const uno::Reference< container::XIndexContainer >&
+ SvxMSConvertOCXControls::GetFormComps()
+{
+ if( !xFormComps.is() )
+ {
+ GetDrawPage();
+ if( xDrawPage.is() )
+ {
+ uno::Reference< form::XFormsSupplier > xFormsSupplier( xDrawPage,
+ uno::UNO_QUERY );
+ DBG_ASSERT( xFormsSupplier.is(),
+ "XFormsSupplier nicht vom XDrawPage erhalten" );
+
+ uno::Reference< container::XNameContainer > xNameCont =
+ xFormsSupplier->getForms();
+
+ // Das Formular bekommt einen Namen wie "WW-Standard[n]" und
+ // wird in jedem Fall neu angelegt.
+ UniString sName( sWW8_form, RTL_TEXTENCODING_MS_1252 );
+ sal_uInt16 n = 0;
+
+ while( xNameCont->hasByName( sName ) )
+ {
+ sName.AssignAscii( sWW8_form );
+ sName += String::CreateFromInt32( ++n );
+ }
+
+ const uno::Reference< lang::XMultiServiceFactory > &rServiceFactory
+ = GetServiceFactory();
+ if( !rServiceFactory.is() )
+ return xFormComps;
+
+ uno::Reference< uno::XInterface > xCreate =
+ rServiceFactory->createInstance(WW8_ASCII2STR(
+ "com.sun.star.form.component.Form"));
+ if( xCreate.is() )
+ {
+ uno::Reference< beans::XPropertySet > xFormPropSet( xCreate,
+ uno::UNO_QUERY );
+
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ xFormPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ uno::Reference< form::XForm > xForm( xCreate, uno::UNO_QUERY );
+ DBG_ASSERT(xForm.is(), "keine Form?");
+
+ uno::Reference< container::XIndexContainer > xForms( xNameCont,
+ uno::UNO_QUERY );
+ DBG_ASSERT( xForms.is(), "XForms nicht erhalten" );
+
+ aTmp.setValue( &xForm,
+ ::getCppuType((uno::Reference < form::XForm >*)0));
+ xForms->insertByIndex( xForms->getCount(), aTmp );
+
+ xFormComps = uno::Reference< container::XIndexContainer >
+ (xCreate, uno::UNO_QUERY);
+ }
+ }
+ }
+
+ return xFormComps;
+}
+
+sal_Bool OCX_CommandButton::Import( com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ // fake transparent push button by setting window background color
+ if( !fBackStyle )
+ mnBackColor = 0x80000005;
+ aTmp <<= ImportColor(mnBackColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ sal_Bool bTemp;
+ if ((!(fEnabled)) || (fLocked))
+ bTemp = sal_False;
+ else
+ bTemp = sal_True;
+ aTmp = bool2any(bTemp);
+
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ bTemp = fWordWrap != 0;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiLine"), aTmp);
+
+ if (pCaption)
+ {
+ aTmp <<= lclCreateOUString( pCaption, nCaptionLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Label"), aTmp);
+ }
+
+ aTmp = bool2any( mbTakeFocus );
+ rPropSet->setPropertyValue( WW8_ASCII2STR( "FocusOnClick" ), aTmp );
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_GroupBox::Export(SvStorageRef& /* rObj */,
+ const uno::Reference< beans::XPropertySet >& /* rPropSet */,
+ const awt::Size& /* rSize */ )
+{
+ sal_Bool bRet=sal_True;
+ return bRet;
+}
+
+sal_Bool OCX_GroupBox::WriteContents(SvStorageStreamRef& /* rObj */,
+ const uno::Reference< beans::XPropertySet >& /* rPropSet */,
+ const awt::Size& /* rSize */)
+{
+ sal_Bool bRet=sal_True;
+ return bRet;
+}
+
+sal_Bool OCX_CommandButton::WriteContents(SvStorageStreamRef& rContents,
+ const uno::Reference< beans::XPropertySet >& rPropSet,
+ const awt::Size& rSize )
+{
+ sal_Bool bRet=sal_True;
+
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(8);
+
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ sal_uInt8 nTemp=0;//fEnabled;
+ if (fEnabled)
+ nTemp |= 0x02;
+ if (fBackStyle)
+ nTemp |= 0x08;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+
+ nTemp = 0;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("MultiLine"));
+ fWordWrap = any2bool(aTmp);
+ if (fWordWrap)
+ nTemp |= 0x80;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+
+ SvxOcxString aCaption( rPropSet->getPropertyValue(WW8_ASCII2STR("Label")) );
+ aCaption.WriteLenField( *rContents );
+ aCaption.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ // "take focus on click" is directly in content flags, not in option field...
+ mbTakeFocus = any2bool( rPropSet->getPropertyValue( WW8_ASCII2STR( "FocusOnClick" ) ) );
+
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ sal_uInt8 nTmp = 0x27;
+ if (aCaption.HasData())
+ nTmp |= 0x08;
+ *rContents << nTmp;
+ nTmp = 0x00;
+ if( !mbTakeFocus ) // flag is set, if option is off
+ nTmp |= 0x02;
+ *rContents << nTmp;
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+
+ DBG_ASSERT((rContents.Is() && (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+
+sal_Bool OCX_CommandButton::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x32, 0x05, 0xD7,
+ 0x69, 0xCE, 0xCD, 0x11, 0xA7, 0x77, 0x00, 0xDD,
+ 0x01, 0x14, 0x3C, 0x57, 0x22, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6d, 0x73, 0x20,
+ 0x32, 0x2e, 0x30, 0x20, 0x43, 0x6F, 0x6D, 0x6D,
+ 0x61, 0x6E, 0x64, 0x42, 0x75, 0x74, 0x74, 0x6F,
+ 0x6E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x45, 0x6D,
+ 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x4F,
+ 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x16, 0x00,
+ 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x2E,
+ 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x42,
+ 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2E, 0x31, 0x00,
+ 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x43, 0x00, 0x6F, 0x00, 0x6D, 0x00, 0x6D, 0x00,
+ 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x42, 0x00,
+ 0x75, 0x00, 0x74, 0x00, 0x74, 0x00, 0x6F, 0x00,
+ 0x6E, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+
+ return WriteContents(xContents,rPropSet,rSize);
+}
+
+sal_Bool OCX_ImageButton::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(8);
+
+ uno::Any aTmp=rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ sal_uInt8 nTemp=0;//fEnabled;
+ if (fEnabled)
+ nTemp |= 0x02;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+
+ WriteAlign(rContents,4);
+
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ sal_uInt8 nTmp = 0x26;
+ *rContents << nTmp;
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+
+ DBG_ASSERT((rContents.Is() && (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+
+sal_Bool OCX_ImageButton::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x32, 0x05, 0xD7,
+ 0x69, 0xCE, 0xCD, 0x11, 0xA7, 0x77, 0x00, 0xDD,
+ 0x01, 0x14, 0x3C, 0x57, 0x22, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6d, 0x73, 0x20,
+ 0x32, 0x2e, 0x30, 0x20, 0x43, 0x6F, 0x6D, 0x6D,
+ 0x61, 0x6E, 0x64, 0x42, 0x75, 0x74, 0x74, 0x6F,
+ 0x6E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x45, 0x6D,
+ 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x4F,
+ 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x16, 0x00,
+ 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x2E,
+ 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x42,
+ 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2E, 0x31, 0x00,
+ 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x43, 0x00, 0x6F, 0x00, 0x6D, 0x00, 0x6D, 0x00,
+ 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x42, 0x00,
+ 0x75, 0x00, 0x74, 0x00, 0x74, 0x00, 0x6F, 0x00,
+ 0x6E, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents,rPropSet,rSize);
+}
+
+
+sal_Bool OCX_OptionButton::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ // background color: fBackStyle==0 -> transparent
+ if( fBackStyle )
+ aTmp <<= ImportColor(mnBackColor);
+ else
+ aTmp = uno::Any();
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ sal_Bool bTemp;
+ if ((!(fEnabled)) || (fLocked))
+ bTemp = sal_False;
+ else
+ bTemp = sal_True;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ bTemp = fWordWrap != 0;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiLine"), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ aTmp <<= ImportSpecEffect( nSpecialEffect );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("VisualEffect"), aTmp);
+
+ if (pValue && !bSetInDialog)
+ {
+ INT16 nTmp = pValue[0]-0x30;
+ aTmp <<= nTmp;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultState"), aTmp);
+ }
+
+ if (pCaption)
+ {
+ aTmp <<= lclCreateOUString( pCaption, nCaptionLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Label"), aTmp);
+ }
+
+ // #i40279# always centered vertically
+ aTmp <<= ::com::sun::star::style::VerticalAlignment_MIDDLE;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("VerticalAlign"), aTmp );
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_OptionButton::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ else
+ fBackStyle = 0;
+
+ sal_uInt8 nTemp=0;//=fEnabled;
+ if (fEnabled)
+ nTemp |= 0x02;
+ if (fBackStyle)
+ nTemp |= 0x08;
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x00);
+ nTemp = 0;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("MultiLine"));
+ fWordWrap = any2bool(aTmp);
+ if (fWordWrap)
+ nTemp |= 0x80;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ nStyle = 5;
+ *rContents << nStyle;
+ pBlockFlags[0] |= 0x40;
+
+ WriteAlign(rContents,4);
+ nValueLen = 1|SVX_MSOCX_COMPRESSED;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("DefaultState"));
+ sal_Int16 nDefault = sal_Int16();
+ aTmp >>= nDefault;
+ *rContents << nValueLen;
+ pBlockFlags[2] |= 0x40;
+
+
+ SvxOcxString aCaption( rPropSet->getPropertyValue(WW8_ASCII2STR("Label")) );
+ if (aCaption.HasData())
+ pBlockFlags[2] |= 0x80;
+ aCaption.WriteLenField( *rContents );
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("VisualEffect"));
+ if (aTmp.hasValue())
+ {
+ sal_Int16 nApiSpecEffect = sal_Int16();
+ aTmp >>= nApiSpecEffect;
+ nSpecialEffect = ExportSpecEffect( nApiSpecEffect );
+ }
+ *rContents << nSpecialEffect;
+ pBlockFlags[3] |= 0x04;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ nDefault += 0x30;
+ *rContents << sal_uInt8(nDefault);
+ *rContents << sal_uInt8(0x00);
+
+ aCaption.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+
+sal_Bool OCX_OptionButton::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x21, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x4F, 0x70, 0x74, 0x69,
+ 0x6F, 0x6E, 0x42, 0x75, 0x74, 0x74, 0x6F, 0x6E,
+ 0x00, 0x10, 0x00, 0x00, 0x00, 0x45, 0x6D, 0x62,
+ 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x4F, 0x62,
+ 0x6A, 0x65, 0x63, 0x74, 0x00, 0x15, 0x00, 0x00,
+ 0x00, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x2E, 0x4F,
+ 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x42, 0x75, 0x74,
+ 0x74, 0x6F, 0x6E, 0x2E, 0x31, 0x00, 0xF4, 0x39,
+ 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x4F, 0x00, 0x70, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x6F, 0x00, 0x6E, 0x00, 0x42, 0x00, 0x75, 0x00,
+ 0x74, 0x00, 0x74, 0x00, 0x6F, 0x00, 0x6E, 0x00,
+ 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+
+sal_Bool OCX_TextBox::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ aTmp = bool2any( fEnabled != 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ aTmp = bool2any( fLocked != 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ReadOnly"), aTmp);
+
+ aTmp = bool2any( fHideSelection != 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR( "HideInactiveSelection" ), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ aTmp <<= ImportColor(mnBackColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp <<= ImportBorder(nSpecialEffect,nBorderStyle);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Border"), aTmp);
+
+ aTmp <<= ImportColor( nBorderColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BorderColor"), aTmp);
+
+ aTmp = bool2any( fMultiLine != 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiLine"), aTmp);
+
+ sal_uInt16 nTmp = static_cast<sal_uInt16>(nMaxLength);
+ aTmp <<= nTmp;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MaxTextLen"), aTmp);
+
+
+ sal_Bool bTemp1,bTemp2;
+ uno::Any aBarsH,aBarsV;
+ switch(nScrollBars)
+ {
+ case 1:
+ bTemp1 = sal_True;
+ bTemp2 = sal_False;
+ break;
+ case 2:
+ bTemp1 = sal_False;
+ bTemp2 = sal_True;
+ break;
+ case 3:
+ bTemp1 = sal_True;
+ bTemp2 = sal_True;
+ break;
+ case 0:
+ default:
+ bTemp1 = sal_False;
+ bTemp2 = sal_False;
+ break;
+ }
+
+ aBarsH = bool2any(bTemp1);
+ aBarsV = bool2any(bTemp2);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("HScroll"), aBarsH);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("VScroll"), aBarsV);
+
+ nTmp = nPasswordChar;
+ aTmp <<= nTmp;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("EchoChar"), aTmp);
+
+ if (pValue)
+ {
+ aTmp <<= lclCreateOUString( pValue, nValueLen );
+ // DefaultText seems to no longer be in UnoEditControlModel
+ if ( bSetInDialog )
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Text"), aTmp);
+ }
+ else
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultText"), aTmp);
+ }
+ }
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_TextBox::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0x00;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+
+ sal_uInt8 nTemp=0x19;
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ if (fEnabled)
+ nTemp |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("ReadOnly"));
+ fLocked = any2bool(aTmp);
+ if (fLocked)
+ nTemp |= 0x04;
+
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x48);
+ *rContents << sal_uInt8(0x80);
+
+ fMultiLine = any2bool(rPropSet->getPropertyValue(WW8_ASCII2STR("MultiLine")));
+ fHideSelection = any2bool(rPropSet->getPropertyValue(WW8_ASCII2STR("HideInactiveSelection")));
+ nTemp = 0x0C;
+ if (fMultiLine)
+ nTemp |= 0x80;
+ if( fHideSelection )
+ nTemp |= 0x20;
+ *rContents << nTemp;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ aTmp = rPropSet->getPropertyValue( WW8_ASCII2STR("MaxTextLen"));
+ aTmp >>= nMaxLength;
+ *rContents << nMaxLength;
+ pBlockFlags[0] |= 0x08;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Border"));
+ sal_Int16 nBorder = sal_Int16();
+ aTmp >>= nBorder;
+ nSpecialEffect = ExportBorder(nBorder,nBorderStyle);
+ *rContents << nBorderStyle;
+ pBlockFlags[0] |= 0x10;
+
+ aTmp = rPropSet->getPropertyValue( WW8_ASCII2STR("HScroll"));
+ sal_Bool bTemp1 = any2bool(aTmp);
+ aTmp = rPropSet->getPropertyValue( WW8_ASCII2STR("VScroll"));
+ sal_Bool bTemp2 = any2bool(aTmp);
+ if (!bTemp1 && !bTemp2)
+ nScrollBars =0;
+ else if (bTemp1 && bTemp2)
+ nScrollBars = 3;
+ else if (!bTemp1 && bTemp2)
+ nScrollBars = 2;
+ else
+ nScrollBars = 1;
+ *rContents << nScrollBars;
+ pBlockFlags[0] |= 0x20;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("EchoChar"));
+ sal_uInt16 nTmp = sal_uInt16();
+ aTmp >>= nTmp;
+ nPasswordChar = static_cast<sal_uInt8>(nTmp);
+ *rContents << nPasswordChar;
+ pBlockFlags[1] |= 0x02;
+
+ SvxOcxString aValue( rPropSet->getPropertyValue(WW8_ASCII2STR("DefaultText")) );
+ aValue.WriteLenField( *rContents );
+ if (aValue.HasData())
+ pBlockFlags[2] |= 0x40;
+
+ WriteAlign(rContents,4);
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BorderColor"));
+ if (aTmp.hasValue())
+ aTmp >>= nBorderColor;
+ *rContents << ExportColor(nBorderColor);
+ pBlockFlags[3] |= 0x02;
+
+ *rContents << nSpecialEffect;
+ pBlockFlags[3] |= 0x04;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ aValue.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK == rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+sal_Bool OCX_TextBox::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x1C, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x54, 0x65, 0x78, 0x74,
+ 0x42, 0x6F, 0x78, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64,
+ 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D,
+ 0x73, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6F,
+ 0x78, 0x2E, 0x31, 0x00, 0xF4, 0x39, 0xB2, 0x71,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x54, 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x78, 0x00, 0x31, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+sal_Bool OCX_FieldControl::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0x00;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+
+ sal_uInt8 nTemp=0x19;
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ if (fEnabled)
+ nTemp |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("ReadOnly"));
+ fLocked = any2bool(aTmp);
+ if (fLocked)
+ nTemp |= 0x04;
+
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x48);
+ *rContents << sal_uInt8(0x80);
+
+ nTemp = 0x2C;
+ *rContents << nTemp;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Border"));
+ sal_Int16 nBorder = sal_Int16();
+ aTmp >>= nBorder;
+ nSpecialEffect = ExportBorder(nBorder,nBorderStyle);
+ *rContents << nBorderStyle;
+ pBlockFlags[0] |= 0x10;
+
+#if 0 //Each control has a different Value format, and how to convert each to text has to be found out
+ SvxOcxString aValue( rPropSet->getPropertyValue(WW8_ASCII2STR("DefaultText")) );
+ aValue.WriteLenField( *rContents );
+ if (aValue.HasData())
+ pBlockFlags[2] |= 0x40;
+#endif
+
+ *rContents << nSpecialEffect;
+ pBlockFlags[3] |= 0x04;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+#if 0
+ aValue.WriteCharArray( *rContents );
+#endif
+
+ WriteAlign(rContents,4);
+
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+sal_Bool OCX_FieldControl::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x1C, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x54, 0x65, 0x78, 0x74,
+ 0x42, 0x6F, 0x78, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64,
+ 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D,
+ 0x73, 0x2E, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6F,
+ 0x78, 0x2E, 0x31, 0x00, 0xF4, 0x39, 0xB2, 0x71,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x54, 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x78, 0x00, 0x31, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+
+
+sal_Bool OCX_ToggleButton::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ aTmp = bool2any(true);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Toggle"), aTmp );
+
+ sal_Bool bTemp;
+ if ((!(fEnabled)) || (fLocked))
+ bTemp = sal_False;
+ else
+ bTemp = sal_True;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ bTemp = fWordWrap != 0;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiLine"), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ // fake transparent toggle button by setting window background color
+ if( !fBackStyle )
+ mnBackColor = 0x80000005;
+ aTmp <<= ImportColor(mnBackColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ if (pValue)
+ {
+ INT16 nTmp=pValue[0]-0x30;
+ aTmp <<= nTmp;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("State"), aTmp);
+ }
+
+ if (pCaption)
+ {
+ aTmp <<= lclCreateOUString( pCaption, nCaptionLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Label"), aTmp);
+ }
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_ToggleButton::Export(
+ SvStorageRef &rObj, const uno::Reference< beans::XPropertySet> &rPropSet,
+ const awt::Size& rSize )
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x21, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x54, 0x6F, 0x67, 0x67,
+ 0x6C, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6F, 0x6E,
+ 0x00, 0x10, 0x00, 0x00, 0x00, 0x45, 0x6D, 0x62,
+ 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x4F, 0x62,
+ 0x6A, 0x65, 0x63, 0x74, 0x00, 0x15, 0x00, 0x00,
+ 0x00, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x2E, 0x54,
+ 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x42, 0x75, 0x74,
+ 0x74, 0x6F, 0x6E, 0x2E, 0x31, 0x00, 0xF4, 0x39,
+ 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x54, 0x00, 0x6F, 0x00, 0x67, 0x00, 0x67, 0x00,
+ 0x6C, 0x00, 0x65, 0x00, 0x42, 0x00, 0x75, 0x00,
+ 0x74, 0x00, 0x74, 0x00, 0x6F, 0x00, 0x6E, 0x00,
+ 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+
+ return WriteContents(xContents,rPropSet,rSize);
+}
+
+sal_Bool OCX_ToggleButton::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+
+ sal_uInt8 nTemp=fEnabled;
+ if (fEnabled)
+ nTemp = nTemp << 1;
+ if (fBackStyle)
+ nTemp |= 0x08;
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x00);
+ nTemp = 0;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("MultiLine"));
+ fWordWrap = any2bool(aTmp);
+ if (fWordWrap)
+ nTemp |= 0x80;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ nStyle = 6;
+ *rContents << nStyle;
+ pBlockFlags[0] |= 0x40;
+
+ WriteAlign(rContents,4);
+ nValueLen = 1|SVX_MSOCX_COMPRESSED;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("State"));
+ sal_Int16 nDefault = sal_Int16();
+ aTmp >>= nDefault;
+ *rContents << nValueLen;
+ pBlockFlags[2] |= 0x40;
+
+ SvxOcxString aCaption( rPropSet->getPropertyValue(WW8_ASCII2STR("Label")) );
+ aCaption.WriteLenField( *rContents );
+ if (aCaption.HasData())
+ pBlockFlags[2] |= 0x80;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ nDefault += 0x30;
+ *rContents << sal_uInt8(nDefault);
+ *rContents << sal_uInt8(0x00);
+
+ aCaption.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+ bRet = aFontData.Export(rContents,rPropSet);
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+sal_Bool OCX_Label::Import(uno::Reference< beans::XPropertySet > &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ sal_Bool bTemp;
+ if ((!(fEnabled)) || (fLocked))
+ bTemp = sal_False;
+ else
+ bTemp = sal_True;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ // background color: fBackStyle==0 -> transparent
+ if( fBackStyle )
+ {
+ aTmp <<= ImportColor(mnBackColor);
+ }
+ else
+ {
+ // try fake transparent by using parents backColor
+ if ( bSetInDialog && mpParent != NULL )
+ {
+ aTmp <<= ImportColor( mpParent->mnBackColor );
+ }
+ else
+ {
+ aTmp = uno::Any(); // use SO default
+ }
+ }
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp <<= ImportBorder(nSpecialEffect,nBorderStyle);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Border"), aTmp);
+
+ aTmp <<= ImportColor( nBorderColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BorderColor"), aTmp);
+
+ bTemp=fWordWrap;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiLine"), aTmp);
+
+ if (pCaption)
+ {
+ aTmp <<= lclCreateOUString( pCaption, nCaptionLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Label"), aTmp);
+ }
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_ComboBox::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ aTmp = bool2any(fEnabled != 0);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ aTmp = bool2any(fLocked != 0);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ReadOnly"), aTmp);
+
+ aTmp = bool2any( nDropButtonStyle != 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Dropdown"), aTmp);
+
+ aTmp = bool2any( fHideSelection != 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR( "HideInactiveSelection" ), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ if (pValue)
+ {
+ aTmp <<= lclCreateOUString( pValue, nValueLen );
+ if ( bSetInDialog )
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Text"), aTmp);
+ }
+ else
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultText"), aTmp);
+ }
+ }
+
+ aTmp <<= ImportColor(mnBackColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp <<= ImportBorder(nSpecialEffect,nBorderStyle);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Border"), aTmp);
+
+ aTmp <<= ImportColor( nBorderColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BorderColor"), aTmp);
+
+ sal_Int16 nTmp=static_cast<sal_Int16>(nMaxLength);
+ aTmp <<= nTmp;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MaxTextLen"), aTmp);
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_ComboBox::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0x00;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+
+ sal_uInt8 nTemp=0x19;//fEnabled;
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ if (fEnabled)
+ nTemp |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("ReadOnly"));
+ fLocked = any2bool(aTmp);
+ if (fLocked)
+ nTemp |= 0x04;
+
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x48);
+ *rContents << sal_uInt8(0x80);
+
+ nTemp = 0x0C;
+ fHideSelection = any2bool(rPropSet->getPropertyValue(WW8_ASCII2STR("HideInactiveSelection")));
+ if( fHideSelection )
+ nTemp |= 0x20;
+ *rContents << nTemp;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Border"));
+ sal_Int16 nBorder = sal_Int16();
+ aTmp >>= nBorder;
+ nSpecialEffect = ExportBorder(nBorder,nBorderStyle);
+ *rContents << nBorderStyle;
+ pBlockFlags[0] |= 0x10;
+
+ nStyle = 3;
+ *rContents << nStyle;
+ pBlockFlags[0] |= 0x40;
+
+ WriteAlign(rContents,2);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("LineCount"));
+ aTmp >>= nListRows;
+ *rContents << nListRows;
+ pBlockFlags[1] |= 0x40;
+
+ *rContents << sal_uInt8(1); //DefaultSelected One
+ pBlockFlags[2] |= 0x01;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Dropdown"));
+ nDropButtonStyle = any2bool(aTmp);
+ if (nDropButtonStyle)
+ nDropButtonStyle=0x02;
+ *rContents << nDropButtonStyle;
+ pBlockFlags[2] |= 0x04;
+
+ SvxOcxString aValue( rPropSet->getPropertyValue(WW8_ASCII2STR("Text")) );
+ aValue.WriteLenField( *rContents );
+ if (aValue.HasData())
+ pBlockFlags[2] |= 0x40;
+
+ WriteAlign(rContents,4);
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BorderColor"));
+ if (aTmp.hasValue())
+ aTmp >>= nBorderColor;
+ *rContents << ExportColor(nBorderColor);
+ pBlockFlags[3] |= 0x02;
+
+ *rContents << nSpecialEffect;
+ pBlockFlags[3] |= 0x04;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ aValue.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+sal_Bool OCX_ComboBox::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x1D, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x43, 0x6F, 0x6D, 0x62,
+ 0x6F, 0x42, 0x6F, 0x78, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65,
+ 0x64, 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74,
+ 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x6F, 0x72,
+ 0x6D, 0x73, 0x2E, 0x43, 0x6F, 0x6D, 0x62, 0x6F,
+ 0x42, 0x6F, 0x78, 0x2E, 0x31, 0x00, 0xF4, 0x39,
+ 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x43, 0x00, 0x6F, 0x00, 0x6D, 0x00, 0x62, 0x00,
+ 0x6F, 0x00, 0x42, 0x00, 0x6F, 0x00, 0x78, 0x00,
+ 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+
+
+sal_Bool OCX_ListBox::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ sal_Bool bTmp=fEnabled;
+ aTmp = bool2any(bTmp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ bTmp=fLocked;
+ aTmp = bool2any(bTmp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ReadOnly"), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ sal_Bool bTemp = nMultiState;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiSelection"), aTmp);
+
+#if 0 //Don't delete this for now until I figure out if I can make this
+ if (pValue)
+ {
+ aTmp <<= lclCreateOUString( pValue, nValueLen );
+ xPropSet->setPropertyValue( WW8_ASCII2STR("DefaultText"), aTmp);
+ }
+#endif
+
+ aTmp <<= ImportColor(mnBackColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp <<= ImportBorder(nSpecialEffect,nBorderStyle);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Border"), aTmp);
+
+ aTmp <<= ImportColor( nBorderColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BorderColor"), aTmp);
+
+ aFontData.Import(rPropSet);
+ return sal_True;
+}
+
+sal_Bool OCX_ListBox::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0x01;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ sal_uInt8 nTemp=fEnabled;
+ if (fEnabled)
+ nTemp = nTemp << 1;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("ReadOnly"));
+ fLocked = any2bool(aTmp);
+ if (fLocked)
+ nTemp |= 0x04;
+
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Border"));
+ sal_Int16 nBorder = sal_Int16();
+ aTmp >>= nBorder;
+ nSpecialEffect = ExportBorder(nBorder,nBorderStyle);
+ WriteAlign(rContents,2);
+ *rContents << nBorderStyle;
+ pBlockFlags[0] |= 0x10;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("MultiSelection"));
+ nMultiState = any2bool(aTmp);
+
+ if (nMultiState)
+ {
+ *rContents << nMultiState;
+ pBlockFlags[0] |= 0x20;
+ }
+
+ nStyle = 2;
+ *rContents << nStyle;
+ pBlockFlags[0] |= 0x40;
+
+
+ WriteAlign(rContents,4);
+
+#if 0
+ SvxOcxString aValue( rPropSet->getPropertyValue(WW8_ASCII2STR("DefaultText")) );
+ aValue.WriteLenField( *rContents );
+ if (aValue.HasData())
+ pBlockFlags[2] |= 0x40;
+
+ WriteAlign(rContents,4);
+#endif
+
+ WriteAlign(rContents,4);
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BorderColor"));
+ if (aTmp.hasValue())
+ aTmp >>= nBorderColor;
+ *rContents << ExportColor(nBorderColor);
+ pBlockFlags[3] |= 0x02;
+
+ *rContents << nSpecialEffect;
+ pBlockFlags[3] |= 0x04;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+#if 0
+ aValue.WriteCharArray( *rContents );
+#endif
+
+ WriteAlign(rContents,4);
+
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+sal_Bool OCX_ListBox::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x1C, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x4C, 0x69, 0x73, 0x74,
+ 0x42, 0x6F, 0x78, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64,
+ 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D,
+ 0x73, 0x2E, 0x4C, 0x69, 0x73, 0x74, 0x42, 0x6F,
+ 0x78, 0x2E, 0x31, 0x00, 0xF4, 0x39, 0xB2, 0x71,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x4C, 0x00, 0x69, 0x00, 0x73, 0x00, 0x74, 0x00,
+ 0x42, 0x00, 0x6F, 0x00, 0x78, 0x00, 0x31, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+sal_Bool OCX_Control::Read(SvStorageStream *pS)
+{
+ sal_uInt16 nIdentifier, nFixedAreaLen;
+ *pS >> nIdentifier;
+ DBG_ASSERT(nStandardId==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->SeekRel(nFixedAreaLen);
+ return true;
+}
+
+sal_Bool OCX_ModernControl::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(nIdentifier==nStandardId,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,8);
+
+ if (pBlockFlags[0] & 0x01)
+ {
+ sal_uInt8 nTemp;
+ *pS >> nTemp;
+
+ fEnabled = (nTemp & 0x02) >> 1;
+ fLocked = (nTemp & 0x04) >> 2;
+ fBackStyle = (nTemp & 0x08) >> 3;
+
+ *pS >> nTemp;
+
+ fColumnHeads = (nTemp & 0x04) >> 2;
+ fIntegralHeight = (nTemp & 0x08) >> 3;
+ fMatchRequired = (nTemp & 0x10) >> 4;
+ fAlignment = (nTemp & 0x20) >> 5;
+
+ *pS >> nTemp;
+
+ fDragBehaviour = (nTemp & 0x08) >> 3;
+ fEnterKeyBehaviour = (nTemp & 0x10) >> 4;
+ fEnterFieldBehaviour = (nTemp & 0x20) >> 5;
+ fTabKeyBehaviour = (nTemp & 0x40) >> 6;
+ fWordWrap = (nTemp & 0x80) >> 7;
+
+ *pS >> nTemp;
+ fSelectionMargin = (nTemp & 0x04) >> 2;
+ fAutoWordSelect = (nTemp & 0x08) >> 3;
+ fAutoSize = (nTemp & 0x10) >> 4;
+ fHideSelection = (nTemp & 0x20) >> 5;
+ fAutoTab = (nTemp & 0x40) >> 6;
+ fMultiLine = (nTemp & 0x80) >> 7;
+
+ }
+
+ /*If any of these are set they follow eachother in this order one after
+ another padded out to the next U32 boundary with 0's
+ U8 can abut each other U16 must start on a U16 boundary and are padded to
+ that with 0's. A standardish word alignment structure*/
+
+ if (pBlockFlags[0] & 0x02)
+ *pS >> mnBackColor;
+ if (pBlockFlags[0] & 0x04)
+ *pS >> mnForeColor;
+ if (pBlockFlags[0] & 0x08)
+ *pS >> nMaxLength;
+
+ if (pBlockFlags[0] & 0x10)
+ *pS >> nBorderStyle;
+ if (pBlockFlags[0] & 0x20)
+ *pS >> nScrollBars;
+ if (pBlockFlags[0] & 0x40)
+ *pS >> nStyle;// (UI 0 == Data 3, UI 2 = Data 7)
+ if (pBlockFlags[0] & 0x80)
+ *pS >> nMousePointer;
+
+ if (pBlockFlags[1] & 0x02)
+ *pS >> nPasswordChar; //HUH ??? always 0 ??? not sure maybe just padding
+
+ if (pBlockFlags[1] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nListWidth;
+ }
+
+ if (pBlockFlags[1] & 0x08)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nBoundColumn;
+ }
+ if (pBlockFlags[1] & 0x10)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nTextColumn;
+ }
+ if (pBlockFlags[1] & 0x20)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nColumnCount;
+ }
+ if (pBlockFlags[1] & 0x40)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nListRows;
+ }
+ if (pBlockFlags[1] & 0x80)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nUnknown8; //something to do with ColumnWidths
+ }
+ if (pBlockFlags[2] & 0x01)
+ *pS >> nMatchEntry;
+ if (pBlockFlags[2] & 0x02)
+ *pS >> nListStyle;
+ if (pBlockFlags[2] & 0x04)
+ *pS >> nShowDropButtonWhen;
+ if (pBlockFlags[2] & 0x10)
+ *pS >> nDropButtonStyle;
+ if (pBlockFlags[2] & 0x20)
+ *pS >> nMultiState;
+
+ bool bValue = (pBlockFlags[2] & 0x40) != 0;
+ if (bValue)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nValueLen;
+ }
+ bool bCaption = (pBlockFlags[2] & 0x80) != 0;
+ if (bCaption)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nCaptionLen;
+ }
+ if (pBlockFlags[3] & 0x01)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nHorzPos;
+ *pS >> nVertPos;
+ }
+ if (pBlockFlags[3] & 0x02)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nBorderColor;
+ }
+ if (pBlockFlags[3] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4); // NEW
+ *pS >> nSpecialEffect;
+ pS->SeekRel( 3 ); // special effect is 32bit, not 8bit
+ }
+ if (pBlockFlags[3] & 0x08)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nIcon;
+ DBG_ASSERT(nIcon == 0xFFFF, "Unexpected nIcon");
+ }
+ if (pBlockFlags[3] & 0x10)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nPicture;
+ DBG_ASSERT(nPicture == 0xFFFF, "Unexpected nIcon");
+ }
+ if (pBlockFlags[3] & 0x20)
+ *pS >> nAccelerator;
+ /*
+ if (pBlockFlags[3] & 0x80)
+ *pS >> nUnknown9;
+ */
+ bool bGroupName = (pBlockFlags[4] & 0x01) != 0;
+ if (bGroupName)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nGroupNameLen;
+ }
+
+ //End
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nWidth;
+ *pS >> nHeight;
+
+ if (bValue)
+ lclReadCharArray( *pS, pValue, nValueLen, pS->Tell() - nStart);
+
+ if (bCaption)
+ lclReadCharArray( *pS, pCaption, nCaptionLen, pS->Tell() - nStart);
+
+ if (bGroupName)
+ lclReadCharArray( *pS, pGroupName, nGroupNameLen, pS->Tell() - nStart);
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ if (nIcon)
+ {
+ pS->Read(pIconHeader,20);
+ *pS >> nIconLen;
+ pIcon = new sal_uInt8[nIconLen];
+ pS->Read(pIcon,nIconLen);
+ }
+
+ if (nPicture)
+ {
+ pS->Read(pPictureHeader,20);
+ *pS >> nPictureLen;
+ pPicture = new sal_uInt8[nPictureLen];
+ pS->Read(pPicture,nPictureLen);
+ }
+
+ return sal_True;
+}
+
+
+sal_Bool OCX_CommandButton::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(nStandardId==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,4);
+
+
+ if (pBlockFlags[0] & 0x01)
+ *pS >> mnForeColor;
+ if (pBlockFlags[0] & 0x02)
+ *pS >> mnBackColor;
+
+ if (pBlockFlags[0] & 0x04)
+ {
+ sal_uInt8 nTemp;
+ *pS >> nTemp;
+ fEnabled = (nTemp&0x02)>>1;
+ fLocked = (nTemp&0x04)>>2;
+ fBackStyle = (nTemp&0x08)>>3;
+ *pS >> nTemp;
+ *pS >> nTemp;
+ fWordWrap = (nTemp&0x80)>>7;
+ *pS >> nTemp;
+ fAutoSize = (nTemp&0x10)>>4;
+ }
+
+ bool bCaption = (pBlockFlags[0] & 0x08) != 0;
+ if (bCaption)
+ {
+ *pS >> nCaptionLen;
+ }
+ if (pBlockFlags[0] & 0x10) /*Picture Position, a strange mechanism here*/
+ {
+ *pS >> nVertPos;
+ *pS >> nHorzPos;
+ }
+
+ if (pBlockFlags[0] & 0x40) /*MousePointer*/
+ *pS >> nMousePointer;
+
+ if (pBlockFlags[0] & 0x80)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nPicture;
+ }
+
+ if (pBlockFlags[1] & 0x01)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nAccelerator;
+ }
+
+ // "take focus on click" is directly in content flags, not in option field...
+ mbTakeFocus = (pBlockFlags[1] & 0x02) == 0; // option is on, if flag is not set
+
+ if (pBlockFlags[1] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nIcon;
+ }
+
+ if (bCaption)
+ lclReadCharArray( *pS, pCaption, nCaptionLen, pS->Tell() - nStart);
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nWidth;
+ *pS >> nHeight;
+
+ if (nIcon)
+ {
+ pS->Read(pIconHeader,20);
+ *pS >> nIconLen;
+ pIcon = new sal_uInt8[nIconLen];
+ pS->Read(pIcon,nIconLen);
+ }
+
+ if (nPicture)
+ {
+ pS->Read(pPictureHeader,20);
+ *pS >> nPictureLen;
+ pPicture = new sal_uInt8[nPictureLen];
+ pS->Read(pPicture,nPictureLen);
+ }
+
+ return sal_True;
+}
+
+sal_Bool OCX_Label::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(nStandardId==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,4);
+
+
+ if (pBlockFlags[0] & 0x01)
+ *pS >> mnForeColor;
+ if (pBlockFlags[0] & 0x02)
+ *pS >> mnBackColor;
+
+
+ if (pBlockFlags[0] & 0x04)
+ {
+ sal_uInt8 nTemp;
+ *pS >> nTemp;
+ fEnabled = (nTemp&0x02)>>1;
+ fLocked = (nTemp&0x04)>>2;
+ fBackStyle = (nTemp&0x08)>>3;
+ *pS >> nTemp;
+ *pS >> nTemp;
+ fWordWrap = (nTemp&0x80)>>7;
+ *pS >> nTemp;
+ fAutoSize = (nTemp&0x10)>>4;
+ }
+ bool bCaption = (pBlockFlags[0] & 0x08) != 0;
+ if (bCaption)
+ *pS >> nCaptionLen;
+
+ if (pBlockFlags[0] & 0x10)
+ {
+ *pS >> nVertPos;
+ *pS >> nHorzPos;
+ }
+
+ if (pBlockFlags[0] & 0x40)
+ *pS >> nMousePointer;
+
+ if (pBlockFlags[0] & 0x80)
+ {
+ ReadAlign(pS,pS->Tell() - nStart, 4);
+ *pS >> nBorderColor;
+ }
+
+ if (pBlockFlags[1] & 0x01)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nBorderStyle;
+ }
+
+ if (pBlockFlags[1] & 0x02)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nSpecialEffect;
+ }
+
+ if (pBlockFlags[1] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nPicture;
+ }
+
+ if (pBlockFlags[1] & 0x08)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nAccelerator;
+ }
+
+ if (pBlockFlags[1] & 0x10)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nIcon;
+ }
+
+ if (bCaption)
+ lclReadCharArray( *pS, pCaption, nCaptionLen, pS->Tell() - nStart);
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nWidth;
+ *pS >> nHeight;
+
+ if (nPicture)
+ {
+ pS->Read(pPictureHeader,20);
+ *pS >> nPictureLen;
+ pPicture = new sal_uInt8[nPictureLen];
+ pS->Read(pPicture,nPictureLen);
+ }
+ if (nIcon)
+ {
+ pS->Read(pIconHeader,20);
+ *pS >> nIconLen;
+ pIcon = new sal_uInt8[nIconLen];
+ pS->Read(pIcon,nIconLen);
+ }
+
+ return sal_True;
+}
+
+TypeName::TypeName(sal_Char *pName, sal_uInt32 nStoreId, sal_uInt32 nLen, sal_uInt16 nType, sal_Int32 nLeft,
+ sal_Int32 nTop)
+ : msName(lclCreateOUString(pName, nLen)), mnType(nType), mnLeft(nLeft),
+ mnTop(nTop),mnStoreId(nStoreId)
+{
+}
+
+OCX_ContainerControl::OCX_ContainerControl( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const uno::Reference< container::XNameContainer > &rParent,
+ OCX_Control* pParent ) :
+ OCX_Control(sN, pParent), rbGroupMgr( sName ), mxParent(rParent), nNoRecords(0), nTotalLen(0), containerType( STDCONTAINER )
+{
+
+ mContainerStorage = parent->OpenSotStorage(storageName,
+ STREAM_READWRITE |
+ STREAM_NOCREATE |
+ STREAM_SHARE_DENYALL);
+ mContainerStream = mContainerStorage->OpenSotStream(
+ String(RTL_CONSTASCII_STRINGPARAM("f"),
+ RTL_TEXTENCODING_MS_1252),
+ STREAM_STD_READ | STREAM_NOCREATE);
+ mContainedControlsStream = mContainerStorage->OpenSotStream( String(RTL_CONSTASCII_STRINGPARAM("o"),
+ RTL_TEXTENCODING_MS_1252),
+ STREAM_STD_READ | STREAM_NOCREATE);
+}
+OCX_ContainerControl::~OCX_ContainerControl()
+{
+ CtrlIterator aEnd = mpControls.end();
+ for (CtrlIterator aIter = mpControls.begin(); aIter != aEnd; ++ aIter )
+ {
+ delete *aIter;
+ }
+}
+
+// Really import should receive the parent e.g. a Userform, Frame or Multi Page
+// and call import on its containees with itself ( up-called from
+// the base class ) but... the reality is we have no containment model
+// so we make sure rPropSet is always the parent Dialog
+
+sal_Bool OCX_ContainerControl::Import(uno::Reference<beans::XPropertySet>& /* rProps */ )
+{
+ if ( !mxParent.is() )
+ {
+ return sal_False;
+ }
+ CtrlIterator aEnd = mpControls.end();
+// int count = 0;
+ for (CtrlIterator aIter = mpControls.begin(); aIter != aEnd; ++ aIter )
+ {
+ if ( !(*aIter)->Import( mxParent ) )
+ {
+ return sal_False;
+ }
+ }
+ return sal_True;
+}
+
+OUString OCX_ContainerControl::createSubStreamName( const sal_uInt32& subStorageId )
+{
+ static OUString sI = OUString::createFromAscii("i");
+ static OUString sZero = OUString::createFromAscii( "0" );
+ OUStringBuffer buf( 6 );
+ buf.append( sI );
+ // for subStorage id < 10 stream name has leading '0'
+ // eg "i07"
+ if ( subStorageId < 10 )
+ {
+ buf.append( sZero );
+ }
+ buf.append( OUString::valueOf( (sal_Int32)subStorageId ) );
+ return buf.makeStringAndClear();
+}
+
+bool OCX_ContainerControl::createFromContainerRecord( const ContainerRecord& record, OCX_Control*& pControl )
+{
+ pControl = NULL;
+ switch ( record.nTypeIdent)
+ {
+ case CMDBUTTON:
+ pControl = new OCX_CommandButton;
+ break;
+ case LABEL:
+ pControl = new OCX_UserFormLabel(this);
+ break;
+ case TEXTBOX:
+ pControl = new OCX_TextBox;
+ break;
+ case LISTBOX:
+ pControl = new OCX_ListBox;
+ break;
+ case COMBOBOX:
+ pControl = new OCX_ComboBox;
+ break;
+ case CHECKBOX:
+ pControl = new OCX_CheckBox;
+ break;
+ case OPTIONBUTTON:
+ pControl = new OCX_OptionButton;
+ break;
+ case TOGGLEBUTTON:
+ pControl = new OCX_ToggleButton;
+ break;
+ case IMAGE: //Image
+ {
+ pControl = new OCX_Image;
+ break;
+ }
+ case PAGE: // Page
+ {
+ OUString sMSStore = createSubStreamName( record.nSubStorageId );
+ pControl = new OCX_Page(mContainerStorage, sMSStore,
+ record.cName, mxParent, this);
+ break;
+ }
+ case MULTIPAGE: // MultiPage
+ {
+ OUString sMSStore = createSubStreamName( record.nSubStorageId );
+ pControl = new OCX_MultiPage( mContainerStorage, sMSStore,
+ record.cName, mxParent, this);
+ break;
+ }
+ case FRAME: //Frame
+ {
+ OUString sFrameStore = createSubStreamName( record.nSubStorageId );
+ pControl = new OCX_Frame(mContainerStorage, sFrameStore,
+ record.cName, mxParent, this);
+
+ break;
+ }
+ case SPINBUTTON: //SpinButton
+ {
+ pControl = new OCX_SpinButton;
+ break;
+ }
+ case TABSTRIP: //TabStrip
+ {
+ pControl = new OCX_TabStrip;
+ break;
+ }
+ case SCROLLBAR: //ScrollBar
+ pControl = new OCX_ScrollBar;
+ break;
+ case PROGRESSBAR: //ProgressBar Active X control
+ pControl = new OCX_ProgressBar;
+ break;
+ default:
+ OSL_TRACE( "**** Unknown control 0x%x", record.nTypeIdent );
+ DBG_ERROR( "Unknown control");
+ return false;
+ }
+ pControl->sName = record.cName;
+ return true;
+}
+
+
+void addSeperator( std::vector< OCX_Control* >& dest )
+{
+ OCX_Control* seperator = new OCX_CommandButton;
+ seperator->SetInDialog(true);
+ seperator->sName = C2S("GroupSeperator");
+ dest.push_back( seperator );
+}
+
+void addRButtons( std::vector< OCX_Control* >& src,
+ std::vector< OCX_Control* >& dest,
+ bool addGroupSeperator )
+{
+ if ( addGroupSeperator )
+ {
+ addSeperator( dest );
+ }
+
+ for ( CtrlIterator rbIter = src.begin(); rbIter != src.end(); ++rbIter )
+ {
+ dest.push_back( *rbIter );
+ }
+}
+
+void OCX_ContainerControl::ProcessControl(OCX_Control* pControl,SvStorageStream* /* pS */, ContainerRecord& rec )
+{
+ SotStorageStreamRef oStream = mContainedControlsStream;
+
+ // can insert into OO Dialog (e.g is this a supported dialog control)??
+ if ( rec.nTypeIdent == SPINBUTTON ||
+ rec.nTypeIdent == TABSTRIP)
+ {
+ // skip the record in the stream, discard the control
+ oStream->SeekRel( rec.nSubStreamLen );
+ delete pControl;
+ }
+ else
+ {
+ // A container control needs to read the f stream in
+ // the folder ( substorage ) associated with this control
+ if ( rec.nTypeIdent == FRAME ||
+ rec.nTypeIdent == MULTIPAGE||
+ rec.nTypeIdent == PAGE )
+ {
+ OCX_ContainerControl* pContainer =
+ static_cast< OCX_ContainerControl* >( pControl );
+ oStream = pContainer->getContainerStream();
+ }
+
+ pControl->sName = rec.cName;
+ pControl->msToolTip = rec.controlTip;
+ // Position of controls is relative to the container
+ pControl->mnTop = rec.nTop + mnTop;
+ pControl->mnLeft = rec.nLeft + mnLeft;
+ // MS tabIndex, pretty useless in OpenOffice land
+ // as tab indexes in MS are relative to parent container.
+ // However we need this value in order to set
+ // OpenOffice tab indices in a sensible way to
+ // reflect the ms tabbing from orig MS UserForm, see below
+ pControl->mnTabPos = rec.nTabPos;
+ pControl->SetInDialog(true);
+ pControl->mbVisible = rec.bVisible;
+ if ( mnStep )
+ {
+ // If the container has a step then it should be
+ // applied to all containees
+ pControl->mnStep = mnStep;
+ }
+
+ // #117490# DR: container records provide size of substream, use it here...
+
+ // remember initial position to set correct stream position
+ ULONG nStrmPos = oStream->Tell();
+ // import control, may return with invalid stream position
+ pControl->FullRead(oStream);
+ // set stream to position behind substream of this control
+ oStream->Seek( nStrmPos + rec.nSubStreamLen );
+
+ //need to fake grouping behaviour for radio ( option ) buttons
+ if ( rec.nTypeIdent == OPTIONBUTTON )
+ {
+ OCX_OptionButton* pRButton =
+ static_cast< OCX_OptionButton*>(pControl);
+ rbGroupMgr.addRadioButton( pRButton );
+ }
+ else
+ {
+ mpControls.push_back( pControl );
+ }
+ }
+}
+
+sal_Bool OCX_ContainerControl::Read(SvStorageStream *pS)
+{
+
+ if ( mpParent )
+ {
+ mnBackColor = mpParent->mnBackColor;
+ }
+
+ std::auto_ptr< ContainerRecReader > reader (
+ ContainerRecordReaderFac::instance( containerType ) );
+
+ reader->Read( this, pS );
+ // Need to honour the MS Tab Indexes. However MS tab indexes are
+ // relative to parent, this hack sorts the controls in each container
+ // based on the ms tab indexes. When import is called we create the
+ // controls in Open/Star office based on the order of the tab indexes,
+ // this ensures that the default tab index created by Star/Open office
+ // reflects the "flattened" ms tab order.
+ ::std::sort( mpControls.begin(), mpControls.end(), SortOrderByTabPos() );
+ mpControls = rbGroupMgr.insertGroupsIntoControlList( mpControls );
+ return true;
+}
+
+OCX_MultiPage::OCX_MultiPage( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const uno::Reference< container::XNameContainer > &rDialog,
+ OCX_Control* pParent):
+ OCX_ContainerControl(parent, storageName, sN, rDialog, pParent ), fUnknown1(0), fEnabled(1),
+ fLocked(0), fBackStyle(1), fWordWrap(1), fAutoSize(0), nCaptionLen(0),
+ nVertPos(1), nHorzPos(7), nMousePointer(0), nBorderColor(0x80000012),
+ nKeepScrollBarsVisible(3), nCycle(0), nBorderStyle(0), nSpecialEffect(0),
+ nPicture(0), nPictureAlignment(2), nPictureSizeMode(0),
+ bPictureTiling(FALSE), nAccelerator(0), nIcon(0), pCaption(0),
+ nScrollWidth(0), nScrollHeight(0), nIconLen(0), pIcon(0), nPictureLen(0),
+ pPicture(0)
+{
+ msDialogType = C2U("NotSupported");
+ mnForeColor = 0x80000012L,
+ mnBackColor = 0x8000000FL;
+ bSetInDialog = true;// UserForm control only
+ aFontData.SetHasAlign(TRUE);
+ containerType = MULTIPAGE;
+ mnCurrentPageStep = 0;
+}
+
+void OCX_MultiPage::ProcessControl(OCX_Control* pControl, SvStorageStream* /* pS */, ContainerRecord& rec )
+{
+ SotStorageStreamRef oStream = mContainedControlsStream;
+
+ OCX_Page *pPage = NULL;
+ if ( rec.nTypeIdent == PAGE )
+ pPage = static_cast< OCX_Page* >( pControl );
+ if ( pPage != NULL )
+ {
+ pPage->mnStep = ++mnCurrentPageStep;
+
+ pPage->mnTop = mnTop;// move these to Page::import ?
+ pPage->mnLeft = mnLeft;
+ pPage->mnBackColor = mnBackColor;
+
+ oStream = pPage->getContainerStream();;
+ // Position of controls is relative to pos of this MuliPage
+ // Control
+ pPage->FullRead( oStream );
+
+ mpControls.push_back( pPage );
+ }
+ else
+ {
+ OSL_TRACE("!!!! Unsupported Control 0x%x ", rec.nTypeIdent);
+ DBG_ERROR("MultiPage error expected Page control");
+ }
+
+}
+
+sal_Bool OCX_MultiPage::Read(SvStorageStream *pS)
+{
+ // Unlike the other containers e.g. UserForm & Frame
+ // the o stream is does not contain info for the contained controls
+ // ( e.g. the pages themselves ) but seems to be for the MultiPage
+ // itself - need to check this in more detail
+
+ // For the moment skip read of the MultiPage specific properties
+ // not much point reading these as we can't display the multi page
+ // control or in fact any sort of tabbed layout, best we can do is
+ // import just the contained controls of the individual pages
+ // Note: the record skipped below ( does not contain the expected
+ // info on this control, that seems to be contained in the o stream,
+ // see comment above)
+ OCX_Control skip(C2S("Dummy"));
+ skip.Read( pS );
+ mnCurrentPageStep = mnStep; //( set step of of pages relative to step
+ //of this MultiPage ( e.g. emulate containment )
+ return OCX_ContainerControl::Read(pS);
+}
+
+
+sal_Bool OCX_MultiPage::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ // Calls import on contained controls
+ OCX_ContainerControl::Import( rPropSet );
+ return sal_True;
+}
+
+sal_Bool OCX_MultiPage::Import(com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer>
+ &rDialog)
+{
+ uno::Reference<beans::XPropertySet> xPropSet( rDialog, uno::UNO_QUERY );
+
+ // Although MultiPage is not represeted by a "real" control we still
+ // need to propagate the backcolor of this logical parent
+ // ( the dialog or Frame or whatever ) to the children of this control.
+ // For example the controls contained in the Page of a
+ // MultiPage control use the parents backcolor ( e,g,
+ // Pages backcolor ) when trying to fake transparency
+ mnBackColor = mpParent->mnBackColor;
+
+ if ( xPropSet.is() )
+ {
+ // Calls import on contained pages
+ return OCX_ContainerControl::Import( xPropSet );
+ }
+ OSL_TRACE("*** Major problem, no dialog to add controls to ");
+ DBG_ERROR(" Major problem, no dialog to add controls to ");
+ return false;
+}
+
+
+
+OCX_Page::OCX_Page( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const uno::Reference< container::XNameContainer > &rDialog,
+ OCX_Control* pParent):
+ OCX_ContainerControl(parent, storageName, sN, rDialog, pParent ),
+ fUnknown1(0), fEnabled(1), fLocked(0),
+ fBackStyle(1), fWordWrap(1), fAutoSize(0), nCaptionLen(0), nVertPos(1),
+ nHorzPos(7), nMousePointer(0), nBorderColor(0x80000012),
+ nKeepScrollBarsVisible(3), nCycle(0), nBorderStyle(0), nSpecialEffect(0),
+ nPicture(0), nPictureAlignment(2), nPictureSizeMode(0),
+ bPictureTiling(FALSE), nAccelerator(0), nIcon(0), pCaption(0),
+ nScrollWidth(0), nScrollHeight(0), nIconLen(0), pIcon(0), nPictureLen(0),
+ pPicture(0)
+{
+ msDialogType = C2U("NotSupported");
+ mnForeColor = 0x80000012,
+ mnBackColor = 0x8000000F,
+ bSetInDialog = true;// UserForm control only
+ aFontData.SetHasAlign(TRUE);
+}
+
+
+sal_Bool OCX_Page::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(0x400==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,4);
+
+ pS->SeekRel( nFixedAreaLen - sizeof( pBlockFlags ) );
+
+ ReadAlign( pS, pS->Tell() - nStart, 4);
+
+ if (pBlockFlags[2] & 0x10)
+ {
+ //Font Stuff..
+ pS->SeekRel(0x1a);
+ sal_uInt8 nFontLen;
+ *pS >> nFontLen;
+ pS->SeekRel(nFontLen);
+ }
+ return OCX_ContainerControl::Read(pS);
+
+}
+
+sal_Bool OCX_Page::Import(com::sun::star::uno::Reference<
+ com::sun::star::container::XNameContainer>
+ &rDialog)
+{
+
+ uno::Reference<beans::XPropertySet> xPropSet( rDialog, uno::UNO_QUERY );
+ if ( xPropSet.is() )
+ {
+ // apply Step to contained controls
+ CtrlIterator aEnd = mpControls.end();
+ for (CtrlIterator aIter = mpControls.begin(); aIter != aEnd; ++ aIter )
+ {
+ (*aIter)->mnStep = mnStep;
+ }
+ // Calls import on contained pages
+ return OCX_ContainerControl::Import( xPropSet );
+ }
+ OSL_TRACE("*** Major problem, no dialog to add controls to ");
+ DBG_ERROR("*** Major problem, no dialog to add controls to ");
+ return sal_False;
+}
+
+OCX_Frame::OCX_Frame( SotStorageRef& parent,
+ const ::rtl::OUString& storageName,
+ const ::rtl::OUString& sN,
+ const uno::Reference< container::XNameContainer > &rDialog, OCX_Control* pParent):
+ OCX_ContainerControl(parent, storageName, sN, rDialog, pParent ),fUnknown1(0),fEnabled(1), fLocked(0),
+ fBackStyle(1), fWordWrap(1), fAutoSize(0), nCaptionLen(0), nVertPos(1),
+ nHorzPos(7), nMousePointer(0), nBorderColor(0x80000012),
+ nKeepScrollBarsVisible(3), nCycle(0), nBorderStyle(0), nSpecialEffect(0),
+ nPicture(0), nPictureAlignment(2), nPictureSizeMode(0),
+ bPictureTiling(FALSE), nAccelerator(0), nIcon(0), pCaption(0),
+ nScrollWidth(0), nScrollHeight(0), nScrollLeft(0), nScrollTop(0), nIconLen(0), pIcon(0), nPictureLen(0),
+ pPicture(0)
+{
+ msDialogType = C2U("com.sun.star.awt.UnoControlGroupBoxModel");
+ mnForeColor = 0x80000012;
+ mnBackColor = 0x8000000F;
+ bSetInDialog = true;// UserForm control only
+ aFontData.SetHasAlign(TRUE);
+}
+
+
+sal_Bool OCX_Frame::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(0x400==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,4);
+
+ if (pBlockFlags[0] & 0x01)
+ {
+ DBG_ASSERT(!this, "ARSE");
+ }
+ if (pBlockFlags[0] & 0x02)
+ *pS >> mnBackColor;
+ if (pBlockFlags[0] & 0x04)
+ *pS >> mnForeColor;
+ if (pBlockFlags[0] & 0x08)
+ *pS >> fUnknown1;
+ if (pBlockFlags[0] & 0x40)
+ {
+ sal_uInt8 nTemp;
+ *pS >> nTemp;
+ fEnabled = (nTemp&0x04)>>2;
+ fBackStyle = (nTemp&0x08)>>3;
+ *pS >> nTemp;
+ *pS >> nTemp;
+ fWordWrap = (nTemp&0x80)>>7;
+ *pS >> nTemp;
+ fAutoSize = (nTemp&0x10)>>4;
+ }
+ if (pBlockFlags[0] & 0x80)
+ {
+ *pS >> nBorderStyle;
+ }
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+
+ if (pBlockFlags[1] & 0x01)
+ *pS >> nMousePointer;
+ if (pBlockFlags[1] & 0x02)
+ *pS >> nKeepScrollBarsVisible;
+ if (pBlockFlags[1] & 0x20)
+ *pS >> fUnknown1; // another unknown 32 bit ( or is 8 or 16 bit with padding ? )
+
+ if (pBlockFlags[1] & 0x80)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nIcon;
+ DBG_ASSERT(nIcon == 0xFFFF, "Unexpected nIcon");
+ }
+
+ bool bCaption = false;
+
+ if (pBlockFlags[2] & 0x01)
+ *pS >> nCycle;
+ if (pBlockFlags[2] & 0x02)
+ *pS >> nSpecialEffect;
+
+ if (pBlockFlags[2] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nBorderColor;
+ }
+
+ if (pBlockFlags[2] & 0x08)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nCaptionLen;
+ bCaption = true;
+ }
+
+ if (pBlockFlags[2] & 0x10)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ sal_uInt16 nNoIdea;
+ *pS >> nNoIdea;
+ DBG_ASSERT(nNoIdea == 0xFFFF, "Expected 0xFFFF, (related to font ?)");
+ }
+
+ if (pBlockFlags[2] & 0x20)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nPicture;
+ DBG_ASSERT(nPicture == 0xFFFF, "Unexpected nIcon");
+ }
+
+ if (pBlockFlags[2] & 0x80)
+ *pS >> nPictureAlignment;
+
+ if (pBlockFlags[3] & 0x01)
+ bPictureTiling = true;
+
+ if (pBlockFlags[3] & 0x02)
+ *pS >> nPictureSizeMode;
+
+ if (pBlockFlags[3] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> fUnknown8;
+ }
+
+ if (pBlockFlags[3] & 0x08)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> fUnknown9;
+ }
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nWidth;
+ *pS >> nHeight;
+ *pS >> nScrollWidth;
+ *pS >> nScrollHeight;
+
+ if (pBlockFlags[1] & 0x10)
+ {
+ *pS >> nScrollLeft;
+ *pS >> nScrollTop;
+ }
+
+ if ( bCaption )
+ {
+ lclReadCharArray( *pS, pCaption, nCaptionLen, pS->Tell() - nStart);
+ }
+
+ OUString tempCaption = lclCreateOUString( pCaption, nCaptionLen );
+
+ if (nIcon)
+ {
+ pS->Read(pIconHeader,20);
+ *pS >> nIconLen;
+ pIcon = new sal_uInt8[nIconLen];
+ pS->Read(pIcon,nIconLen);
+ }
+
+ if (nPicture)
+ {
+ pS->Read(pPictureHeader,20);
+ *pS >> nPictureLen;
+ pPicture = new sal_uInt8[nPictureLen];
+ pS->Read(pPicture,nPictureLen);
+ }
+
+ ReadAlign( pS, pS->Tell() - nStart, 4);
+
+ if (pBlockFlags[2] & 0x10)
+ {
+ //Font Stuff..
+ pS->SeekRel(0x1a);
+ sal_uInt8 nFontLen;
+ *pS >> nFontLen;
+ pS->SeekRel(nFontLen);
+ }
+
+ return OCX_ContainerControl::Read( pS );
+}
+
+sal_Bool OCX_Frame::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Name")), aTmp);
+ if ( pCaption )
+ {
+ aTmp <<= lclCreateOUString( pCaption, nCaptionLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Label"), aTmp);
+ }
+
+ // Calls import on contained controls
+ OCX_ContainerControl::Import( rPropSet );
+ return sal_True;
+}
+OCX_UserForm::OCX_UserForm( SotStorageRef& parent,
+ const OUString& storageName,
+ const OUString& sN,
+ const ::uno::Reference< container::XNameContainer > &rDialog,
+ const ::uno::Reference< lang::XMultiServiceFactory >& rMsf):
+ OCX_ContainerControl(parent, storageName, sN, rDialog),
+ nChildrenA(0), fEnabled(1), fLocked(0),
+ fBackStyle(1), fWordWrap(1), fAutoSize(0), nCaptionLen(0), nVertPos(1),
+ nHorzPos(7), nMousePointer(0), nBorderColor(0x80000012), nChildrenB(0),
+ nKeepScrollBarsVisible(3), nCycle(0), nBorderStyle(0), nSpecialEffect(0),
+ nPicture(0), nPictureAlignment(2), nPictureSizeMode(0),
+ bPictureTiling(FALSE), nAccelerator(0), nIcon(0), pCaption(0),
+ nScrollWidth(0), nScrollHeight(0), nScrollLeft(0), nScrollTop(0), nIconLen(0), pIcon(0), nPictureLen(0),
+ pPicture(0)
+ {
+ mnForeColor = 0x80000012;
+ mnBackColor = 0x8000000F;
+ uno::Reference< beans::XPropertySet> xProps( rMsf, uno::UNO_QUERY);
+ if ( xProps.is() )
+ {
+ xProps->getPropertyValue(C2S("DefaultContext")) >>= mxCtx;
+ }
+ aFontData.SetHasAlign(TRUE);
+ }
+sal_Bool OCX_UserForm::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(0x400==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,4);
+
+ if (pBlockFlags[0] & 0x01)
+ {
+ DBG_ASSERT(!this, "ARSE");
+ }
+ if (pBlockFlags[0] & 0x02)
+ *pS >> mnBackColor;
+ if (pBlockFlags[0] & 0x04)
+ *pS >> mnForeColor;
+ if (pBlockFlags[0] & 0x08)
+ *pS >> nChildrenA;
+ if (pBlockFlags[0] & 0x40)
+ {
+ sal_uInt8 nTemp;
+ *pS >> nTemp;
+ fEnabled = (nTemp&0x04)>>2;
+ fBackStyle = (nTemp&0x08)>>3;
+ *pS >> nTemp;
+ *pS >> nTemp;
+ fWordWrap = (nTemp&0x80)>>7;
+ *pS >> nTemp;
+ fAutoSize = (nTemp&0x10)>>4;
+ }
+ if (pBlockFlags[0] & 0x80)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nBorderStyle;
+ }
+#if 0
+ sal_uInt16 nFixedOrAlign;
+ *pS >> nFixedOrAlign;
+#endif
+ if (pBlockFlags[1] & 0x01)
+ *pS >> nMousePointer;
+ if (pBlockFlags[1] & 0x02)
+ *pS >> nKeepScrollBarsVisible;
+ if (pBlockFlags[1] & 0x20)
+ {
+ sal_uInt32 nUnknown32;
+ *pS >> nUnknown32;
+ }
+ if (pBlockFlags[1] & 0x80)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nIcon;
+ DBG_ASSERT(nIcon == 0xFFFF, "Unexpected nIcon");
+ }
+ if (pBlockFlags[2] & 0x01)
+ *pS >> nCycle;
+ if (pBlockFlags[2] & 0x02)
+ *pS >> nSpecialEffect;
+
+ if (pBlockFlags[2] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nBorderColor;
+ }
+
+ if (pBlockFlags[2] & 0x10)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ sal_uInt16 nNoIdea;
+ *pS >> nNoIdea;
+ DBG_ASSERT(nNoIdea == 0xFFFF, "Expected 0xFFFF, (related to font ?)");
+ }
+
+ if (pBlockFlags[2] & 0x20)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nPicture;
+ DBG_ASSERT(nPicture == 0xFFFF, "Unexpected nIcon");
+ }
+
+ if (pBlockFlags[2] & 0x80)
+ *pS >> nPictureAlignment;
+
+ if (pBlockFlags[3] & 0x01)
+ bPictureTiling = true;
+
+ if (pBlockFlags[3] & 0x02)
+ *pS >> nPictureSizeMode;
+
+ if (pBlockFlags[3] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nChildrenB;
+ }
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nDrawBuffer;
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nWidth;
+ *pS >> nHeight;
+ *pS >> nScrollWidth;
+ *pS >> nScrollHeight;
+
+ if (pBlockFlags[1] & 0x10)
+ {
+ *pS >> nScrollLeft;
+ *pS >> nScrollTop;
+ }
+
+ if (nIcon)
+ {
+ pS->Read(pIconHeader,20);
+ *pS >> nIconLen;
+ pIcon = new sal_uInt8[nIconLen];
+ pS->Read(pIcon,nIconLen);
+ }
+
+ if (nPicture)
+ {
+ pS->Read(pPictureHeader,20);
+ *pS >> nPictureLen;
+ pPicture = new sal_uInt8[nPictureLen];
+ pS->Read(pPicture,nPictureLen);
+ }
+
+ ReadAlign( pS, pS->Tell() - nStart, 4);
+
+ if (pBlockFlags[2] & 0x10)
+ {
+ //Font Stuff..
+ pS->SeekRel(0x1a);
+ sal_uInt8 nFontLen;
+ *pS >> nFontLen;
+ pS->SeekRel(nFontLen);
+ }
+
+ sal_Int16 numTrailingRecs = 0;
+ *pS >> numTrailingRecs;
+ // seems to be no. of trailing records,
+ // before container record starts proper
+ // ( unknown what these trailing records are for)
+ if ( numTrailingRecs )
+ {
+ for ( ; numTrailingRecs ; --numTrailingRecs )
+ {
+ OCX_Control skip(C2S("dummy")) ;
+ skip.Read( pS );
+ }
+ }
+ return OCX_ContainerControl::Read( pS );
+}
+
+sal_Bool OCX_UserForm::Import(
+ uno::Reference<container::XNameContainer> &rLib )
+{
+ uno::Reference<beans::XPropertySet>
+ xDialogPropSet(mxParent, uno::UNO_QUERY);
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ xDialogPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Name")), aTmp);
+ xDialogPropSet->setPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Title")), aTmp);
+ aTmp <<= ImportColor(mnBackColor);
+ xDialogPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp <<= sal_Int32((nWidth * 2) / 100);
+ xDialogPropSet->setPropertyValue(WW8_ASCII2STR("Width"), aTmp);
+ aTmp <<= sal_Int32((nHeight * 2) / 100);
+ xDialogPropSet->setPropertyValue(WW8_ASCII2STR("Height"), aTmp);
+
+ uno::Reference<beans::XPropertySet> xPropSet( mxParent, uno::UNO_QUERY );
+ OCX_ContainerControl::Import( xPropSet );
+
+ uno::Reference<io::XInputStreamProvider> xSource =
+ xmlscript::exportDialogModel(mxParent, mxCtx);
+ uno::Any aSourceAny(uno::makeAny(xSource));
+ if (rLib->hasByName(sName))
+ rLib->replaceByName(sName, aSourceAny);
+ else
+ rLib->insertByName(sName, aSourceAny);
+ return sal_True;
+}
+
+sal_Bool OCX_Label::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet = sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(8);
+ pBlockFlags[0] = 0x20;
+ pBlockFlags[1] = 0;
+ pBlockFlags[2] = 0;
+ pBlockFlags[3] = 0;
+
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x01;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ sal_uInt8 nTemp=fEnabled;
+ if (fEnabled)
+ nTemp = nTemp << 1;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("MultiLine"));
+ fWordWrap = any2bool(aTmp);
+ nTemp=fWordWrap;
+ nTemp = nTemp << 7;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+ pBlockFlags[0] |= 0x04;
+
+ SvxOcxString aCaption( rPropSet->getPropertyValue(WW8_ASCII2STR("Label")) );
+ aCaption.WriteLenField( *rContents );
+ if (aCaption.HasData())
+ pBlockFlags[0] |= 0x08;
+
+ WriteAlign(rContents,4);
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BorderColor"));
+ if (aTmp.hasValue())
+ aTmp >>= nBorderColor;
+ *rContents << ExportColor(nBorderColor);
+ pBlockFlags[0] |= 0x80;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Border"));
+ sal_Int16 nBorder = sal_Int16();
+ aTmp >>= nBorder;
+ sal_uInt8 nNewBorder;
+ nSpecialEffect = ExportBorder(nBorder,nNewBorder);
+ nBorderStyle = nNewBorder;
+ *rContents << nBorderStyle;
+ pBlockFlags[1] |= 0x01;
+ *rContents << nSpecialEffect;
+ pBlockFlags[1] |= 0x02;
+
+ aCaption.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ bRet = aFontData.Export(rContents,rPropSet);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+
+sal_Bool OCX_Label::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x23, 0x9E, 0x8C, 0x97,
+ 0xB0, 0xD4, 0xCE, 0x11, 0xBF, 0x2D, 0x00, 0xAA,
+ 0x00, 0x3F, 0x40, 0xD0, 0x1A, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x4C, 0x61, 0x62, 0x65,
+ 0x6C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x45, 0x6D,
+ 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x4F,
+ 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x0E, 0x00,
+ 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x2E,
+ 0x4C, 0x61, 0x62, 0x65, 0x6C, 0x2E, 0x31, 0x00,
+ 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x4C, 0x00, 0x61, 0x00, 0x62, 0x00, 0x65, 0x00,
+ 0x6C, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+/*
+ static sal_uInt8 __READONLY_DATA aTest[] = {
+ 0x00, 0x02, 0x20, 0x00, 0x2B, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x06, 0x00, 0x00, 0x80, 0x4C, 0x61, 0x62, 0x65,
+ 0x6C, 0x31, 0x18, 0x00, 0xEC, 0x09, 0x00, 0x00,
+ 0x7B, 0x02, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00,
+ 0x35, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x80,
+ 0xC3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x54, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x4E, 0x65,
+ 0x77, 0x20, 0x52, 0x6F, 0x6D, 0x61, 0x6E, 0x00,
+ };
+*/
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+typedef OCX_Control *(*FNCreate)();
+
+
+struct OCX_map
+{
+ FNCreate pCreate;
+ const char *sId;
+ sal_Int16 nId;
+ const char *sName;
+};
+
+OCX_map aOCXTab[] =
+{
+ // Command button MUST be at index 0
+ {&OCX_CommandButton::Create,"D7053240-CE69-11CD-a777-00dd01143c57",
+ form::FormComponentType::COMMANDBUTTON,"CommandButton"},
+ // Toggle button MUST be at index 1
+ {&OCX_ToggleButton::Create,"8BD21D60-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::COMMANDBUTTON,"ToggleButton"},
+ {&OCX_Label::Create, "978C9E23-D4B0-11CE-bf2d-00aa003f40d0",
+ form::FormComponentType::FIXEDTEXT,"Label"},
+ {&OCX_TextBox::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::TEXTFIELD,"TextBox"},
+ {&OCX_ListBox::Create,"8BD21D20-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::LISTBOX,"ListBox"},
+ {&OCX_ComboBox::Create,"8BD21D30-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::COMBOBOX,"ComboBox"},
+ {&OCX_CheckBox::Create,"8BD21D40-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::CHECKBOX,"CheckBox"},
+ {&OCX_OptionButton::Create,"8BD21D50-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::RADIOBUTTON,"OptionButton"},
+ {&OCX_Image::Create,"4C599241-6926-101B-9992-00000b65c6f9",
+ form::FormComponentType::IMAGECONTROL,"Image"},
+ {&OCX_FieldControl::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::DATEFIELD,"TextBox"},
+ {&OCX_FieldControl::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::TIMEFIELD,"TextBox"},
+ {&OCX_FieldControl::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::NUMERICFIELD,"TextBox"},
+ {&OCX_FieldControl::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::CURRENCYFIELD,"TextBox"},
+ {&OCX_FieldControl::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::PATTERNFIELD,"TextBox"},
+#if 0
+ {&OCX_FieldControl::Create,"8BD21D10-EC42-11CE-9e0d-00aa006002f3",
+ form::FormComponentType::FORMULAFIELD,"TextBox"},
+#endif
+ {&OCX_ImageButton::Create,"D7053240-CE69-11CD-a777-00dd01143c57",
+ form::FormComponentType::IMAGEBUTTON,"CommandButton"},
+ {&OCX_SpinButton::Create,"79176FB0-B7F2-11CE-97ef-00aa006d2776",
+ form::FormComponentType::SPINBUTTON,"SpinButton"},
+ {&OCX_ScrollBar::Create,"DFD181E0-5E2F-11CE-a449-00aa004a803d",
+ form::FormComponentType::SCROLLBAR,"ScrollBar"},
+ {&OCX_GroupBox::Create,"",
+ form::FormComponentType::GROUPBOX,""},
+ {&OCX_ProgressBar::Create,"",
+ form::FormComponentType::CONTROL,""}
+};
+
+const int NO_OCX = sizeof( aOCXTab ) / sizeof( *aOCXTab );
+
+SvxMSConvertOCXControls::SvxMSConvertOCXControls(SfxObjectShell *pDSh, SwPaM *pP) :
+ pDocSh(pDSh), pPaM(pP), nEdit(0), nCheckbox(0)
+{
+ DBG_ASSERT( pDocSh, "No DocShell, Cannot do Controls" );
+ OCX_Control::FillSystemColors();
+}
+
+SvxMSConvertOCXControls::~SvxMSConvertOCXControls()
+{
+}
+
+OCX_Control * SvxMSConvertOCXControls::OCX_Factory(const String &sName)
+{
+ for (int i=0;i<NO_OCX;i++)
+ {
+ if ( sName.EqualsIgnoreCaseAscii( aOCXTab[i].sId ))
+ return(aOCXTab[i].pCreate());
+ }
+ return(NULL);
+}
+
+OCX_Control * SvxMSConvertOCXControls::OCX_Factory(
+ const uno::Reference< awt::XControlModel > &rControlModel,
+ String &rId, String &rName)
+{
+ rName.Erase();
+ rId.Erase();
+
+ uno::Reference< beans::XPropertySet > xPropSet(
+ rControlModel,uno::UNO_QUERY);
+
+ uno::Any aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii("ClassId"));
+ sal_Int16 nClassId = *(sal_Int16*) aTmp.getValue();
+
+//Begin nasty hack
+ /*
+ There is a truly horrible thing with EditControls and FormattedField
+ Controls, they both pretend to have an EDITBOX ClassId for compability
+ reasons, at some stage in the future hopefully there will be a proper
+ FormulaField ClassId rather than this piggybacking two controls onto the
+ same ClassId, when this happens uncomment the FORMULAFIELD in the OCX_Tab
+ and delete this block, cmc.
+
+ And also the nClassId for ImageControls is being reported as "CONTROL"
+ rather than IMAGECONTROL
+ */
+ if (nClassId == form::FormComponentType::TEXTFIELD)
+ {
+ uno::Reference< lang::XServiceInfo > xInfo(rControlModel,
+ uno::UNO_QUERY);
+ if (xInfo->
+ supportsService(OUString::createFromAscii(
+ "com.sun.star.form.component.FormattedField")))
+ {
+ rId.AppendAscii("8BD21D10-EC42-11CE-9e0d-00aa006002f3");
+ rName.AppendAscii("TextBox");
+ return new OCX_FieldControl;
+ }
+ }
+ else if (nClassId == form::FormComponentType::CONTROL)
+ {
+ uno::Reference< lang::XServiceInfo > xInfo(rControlModel,
+ uno::UNO_QUERY);
+ if (xInfo->
+ supportsService(OUString::createFromAscii(
+ "com.sun.star.form.component.ImageControl")))
+ nClassId = form::FormComponentType::IMAGECONTROL;
+ }
+//End nasty hack
+
+ const OCX_map* pEntry = 0;
+
+ // distinguish between push button and toggle button
+ if( nClassId == form::FormComponentType::COMMANDBUTTON )
+ {
+ pEntry = any2bool(xPropSet->getPropertyValue(WW8_ASCII2STR("Toggle"))) ?
+ (aOCXTab + 1) : aOCXTab;
+ }
+ else
+ {
+ for( int i = 2; (i < NO_OCX) && !pEntry; ++i )
+ if( nClassId == aOCXTab[ i ].nId )
+ pEntry = aOCXTab + i;
+ }
+
+ if( pEntry )
+ {
+ rId.AppendAscii( pEntry->sId );
+ rName.AppendAscii( pEntry->sName );
+ return pEntry->pCreate();
+ }
+
+ return 0;
+}
+
+
+sal_Bool SvxMSConvertOCXControls::ReadOCXStream( SvStorageRef& rSrc1,
+ uno::Reference < drawing::XShape > *pShapeRef,BOOL bFloatingCtrl)
+{
+
+ SvStorageStreamRef xCrash = rSrc1->OpenSotStream( WW8_ASCII2STR("contents") );
+ sal_Bool bRet=sal_False;
+
+ SvStorageStreamRef xSrc2 = rSrc1->OpenSotStream( WW8_ASCII2STR("\3OCXNAME") );
+ SvStorageStream* pSt = xSrc2;
+ pSt->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ /* #117832# import control name */
+ OUString controlName;
+ bool hasCName = readOCXNAME( controlName, pSt );
+
+ xSrc2 = rSrc1->OpenSotStream( WW8_ASCII2STR("contents") );
+ pSt = xSrc2;
+ pSt->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ /*Get Class Id of this object, see if it is one of the types
+ *that this importer can handle, call the appropiate handler
+ to read that control, and call the appropiate handler to
+ insert that control
+ */
+
+ SvGlobalName aTest = rSrc1->GetClassName();
+ OCX_Control *pObj = OCX_Factory(aTest.GetHexName());
+ if (pObj)
+ {
+ pObj->pDocSh = pDocSh;
+ /* #117832# set imported control name */
+ if ( hasCName )
+ {
+ pObj->sName = controlName;
+ }
+ com::sun::star::awt::Size aSz;
+ uno::Reference< form::XFormComponent > xFComp;
+ const uno::Reference< lang::XMultiServiceFactory > & rServiceFactory =
+ GetServiceFactory();
+ if(!rServiceFactory.is())
+ return(sal_False);
+ bRet = pObj->FullRead(pSt);
+ if(bRet)
+ if (pObj->Import(rServiceFactory,xFComp,aSz))
+ bRet = InsertControl( xFComp, aSz,pShapeRef,bFloatingCtrl);
+ delete pObj;
+ }
+ return bRet;
+}
+
+
+sal_Bool SvxMSConvertOCXControls::ReadOCXExcelKludgeStream(
+ SvStorageStreamRef& rSrc1, uno::Reference < drawing::XShape > *
+ pShapeRef,BOOL bFloatingCtrl)
+{
+ sal_Bool bRet=sal_False;
+ /*Get Class Id of this object, see if it is one of the types
+ *that this importer can handle, call the appropiate handler
+ to read that control, and call the appropiate handler to
+ insert that control
+ */
+ /*The Excel Kludge is to concatenate a class id with a contents
+ * stream, and then concatenate all the controls together,
+ * This means that you should have the cnts stream wound to the
+ * correct location before passing the control stream in here*/
+ SvStream *pSt = rSrc1;
+ pSt->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ SvGlobalName aTest;
+ *pSt >> aTest;
+ OCX_Control *pObj = OCX_Factory(aTest.GetHexName());
+ if (pObj)
+ {
+
+ com::sun::star::awt::Size aSz;
+ uno::Reference< form::XFormComponent > xFComp;
+ const uno::Reference< lang::XMultiServiceFactory > & rServiceFactory =
+ GetServiceFactory();
+ if(!rServiceFactory.is())
+ return(sal_False);
+ bRet = pObj->FullRead(rSrc1);
+ if(bRet)
+ if (pObj->Import(rServiceFactory,xFComp,aSz))
+ bRet = InsertControl( xFComp, aSz,pShapeRef,bFloatingCtrl);
+ delete pObj;
+ }
+ return bRet;
+}
+
+
+sal_Bool SvxMSConvertOCXControls::WriteOCXStream( SvStorageRef& rSrc1,
+ const uno::Reference< awt::XControlModel > &rControlModel,
+ const awt::Size &rSize, String &rName)
+{
+ sal_Bool bRet=sal_False;
+
+ DBG_ASSERT( rControlModel.is(), "UNO-Control missing Model, panic!" );
+ if( !rControlModel.is() )
+ return sal_False;
+
+#if 0
+ uno::Any aTmp = xPropSet->getPropertyValue(
+ OUString::createFromAscii("ClassId"));
+ sal_Int16 nClassId = *(sal_Int16*) aTmp.getValue();
+#endif
+
+ String sId;
+ OCX_Control *pObj = OCX_Factory(rControlModel,sId,rName);
+ if (pObj != NULL)
+ {
+ uno::Reference<beans::XPropertySet> xPropSet(rControlModel,
+ uno::UNO_QUERY);
+
+ /* #117832# - also enable export of control name */
+ OUString sCName;
+ xPropSet->getPropertyValue(C2S("Name")) >>= sCName;
+ pObj->sName = sCName;
+
+ SvGlobalName aName;
+ aName.MakeId(sId);
+ String sFullName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(
+ "Microsoft Forms 2.0 ")));
+ sFullName.Append(rName);
+ rSrc1->SetClass(aName,0x5C,sFullName);
+ // ^^^^, this pathetic 0x5c is the magic number
+ // which the lack of originally blocked the implementation of
+ // the controls export
+ // cmc
+
+ bRet = pObj->Export(rSrc1,xPropSet,rSize);
+ SvStorageStreamRef xStor2( rSrc1->OpenSotStream( WW8_ASCII2STR("\3OCXNAME")));
+ /* #117832# - also enable export of control name */
+ writeOCXNAME( sCName, xStor2 );
+ delete pObj;
+ }
+ return bRet;
+}
+
+
+//I think this should work for excel documents, create the "Ctls" stream
+//and give it here as rContents, we'll append out streams ole id and
+//contents here and that appears to be what Excel is doing
+sal_Bool SvxMSConvertOCXControls::WriteOCXExcelKludgeStream(
+ SvStorageStreamRef& rContents,
+ const uno::Reference< awt::XControlModel > &rControlModel,
+ const awt::Size &rSize, String &rName)
+{
+ sal_Bool bRet=sal_False;
+
+ DBG_ASSERT( rControlModel.is(), "UNO-Control missing Model, panic!" );
+ if( !rControlModel.is() )
+ return sal_False;
+
+ String sId;
+ OCX_Control *pObj = OCX_Factory(rControlModel,sId,rName);
+ if (pObj != NULL)
+ {
+ uno::Reference<beans::XPropertySet> xPropSet(rControlModel,
+ uno::UNO_QUERY);
+
+ SvGlobalName aName;
+ aName.MakeId(sId);
+ String sFullName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(
+ "Microsoft Forms 2.0 ")));
+ sFullName.Append(rName);
+ SvStream *pS=rContents;
+ *pS << aName;
+ bRet = pObj->WriteContents(rContents,xPropSet,rSize);
+ delete pObj;
+ // export needs correct stream position
+ rContents->Seek( STREAM_SEEK_TO_END );
+ }
+ return bRet;
+}
+
+
+
+
+
+
+
+sal_Bool OCX_CheckBox::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ // background color: fBackStyle==0 -> transparent
+ if( fBackStyle )
+ aTmp <<= ImportColor(mnBackColor);
+ else
+ aTmp = uno::Any();
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ sal_Bool bTemp;
+ if ((!(fEnabled)) || (fLocked))
+ bTemp = sal_False;
+ else
+ bTemp = sal_True;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ bTemp = fWordWrap != 0;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("MultiLine"), aTmp);
+
+ aTmp <<= ImportColor(mnForeColor);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TextColor"), aTmp);
+
+ bTemp = nMultiState;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("TriState"), aTmp);
+
+ aTmp <<= ImportSpecEffect( nSpecialEffect );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("VisualEffect"), aTmp);
+
+ if (pValue && !bSetInDialog)
+ {
+ INT16 nTmp=pValue[0]-0x30;
+ aTmp <<= nTmp;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultState"), aTmp);
+ }
+
+ if (pCaption)
+ {
+ aTmp <<= lclCreateOUString( pCaption, nCaptionLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Label"), aTmp);
+ }
+
+ // #i40279# always centered vertically
+ aTmp <<= ::com::sun::star::style::VerticalAlignment_MIDDLE;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("VerticalAlign"), aTmp );
+
+ aFontData.Import(rPropSet);
+ return(sal_True);
+}
+
+sal_Bool OCX_CheckBox::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(12);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x01;
+ pBlockFlags[2] = 0;
+ pBlockFlags[3] = 0x80;
+ pBlockFlags[4] = 0;
+ pBlockFlags[5] = 0;
+ pBlockFlags[6] = 0;
+ pBlockFlags[7] = 0;
+
+ uno::Any aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("BackgroundColor"));
+ fBackStyle = aTmp.hasValue() ? 1 : 0;
+ if (fBackStyle)
+ aTmp >>= mnBackColor;
+
+ sal_uInt8 nTemp=fEnabled;
+ if (fEnabled)
+ nTemp = nTemp << 1;
+ if (fBackStyle)
+ nTemp |= 0x08;
+ *rContents << nTemp;
+ pBlockFlags[0] |= 0x01;
+ *rContents << sal_uInt8(0x00);
+ nTemp = 0;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("MultiLine"));
+ fWordWrap = any2bool(aTmp);
+ if (fWordWrap)
+ nTemp |= 0x80;
+ *rContents << nTemp;
+ *rContents << sal_uInt8(0x00);
+
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x02;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TextColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnForeColor;
+ *rContents << ExportColor(mnForeColor);
+ pBlockFlags[0] |= 0x04;
+
+ nStyle = 4;
+ *rContents << nStyle;
+ pBlockFlags[0] |= 0x40;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("TriState"));
+ nMultiState = any2bool(aTmp);
+ *rContents << nMultiState;
+ pBlockFlags[2] |= 0x20;
+
+ WriteAlign(rContents,4);
+ nValueLen = 1|SVX_MSOCX_COMPRESSED;
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("DefaultState"));
+ sal_Int16 nDefault = sal_Int16();
+ aTmp >>= nDefault;
+ *rContents << nValueLen;
+ pBlockFlags[2] |= 0x40;
+
+ SvxOcxString aCaption( rPropSet->getPropertyValue(WW8_ASCII2STR("Label")) );
+ aCaption.WriteLenField( *rContents );
+ if (aCaption.HasData())
+ pBlockFlags[2] |= 0x80;
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("VisualEffect"));
+ if (aTmp.hasValue())
+ {
+ sal_Int16 nApiSpecEffect = sal_Int16();
+ aTmp >>= nApiSpecEffect;
+ nSpecialEffect = ExportSpecEffect( nApiSpecEffect );
+ }
+ WriteAlign(rContents,4);
+ *rContents << nSpecialEffect;
+ pBlockFlags[3] |= 0x04;
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ nDefault += 0x30;
+ *rContents << sal_uInt8(nDefault);
+ *rContents << sal_uInt8(0x00);
+
+ aCaption.WriteCharArray( *rContents );
+
+ WriteAlign(rContents,4);
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+ bRet = aFontData.Export(rContents,rPropSet);
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ *rContents << pBlockFlags[4];
+ *rContents << pBlockFlags[5];
+ *rContents << pBlockFlags[6];
+ *rContents << pBlockFlags[7];
+
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+sal_Bool OCX_CheckBox::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x1D, 0xD2, 0x8B,
+ 0x42, 0xEC, 0xCE, 0x11, 0x9E, 0x0D, 0x00, 0xAA,
+ 0x00, 0x60, 0x02, 0xF3, 0x1D, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x43, 0x68, 0x65, 0x63,
+ 0x6B, 0x42, 0x6F, 0x78, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x45, 0x6D, 0x62, 0x65, 0x64, 0x64, 0x65,
+ 0x64, 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74,
+ 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x6F, 0x72,
+ 0x6D, 0x73, 0x2E, 0x43, 0x68, 0x65, 0x63, 0x6B,
+ 0x42, 0x6F, 0x78, 0x2E, 0x31, 0x00, 0xF4, 0x39,
+ 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x43, 0x00, 0x68, 0x00, 0x65, 0x00, 0x63, 0x00,
+ 0x6B, 0x00, 0x42, 0x00, 0x6F, 0x00, 0x78, 0x00,
+ 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+/*
+ static sal_uInt8 __READONLY_DATA aTest[] = {
+ 0x00, 0x02, 0x34, 0x00, 0x46, 0x01, 0xC0, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x80,
+ 0xE2, 0x0E, 0x00, 0x00, 0x95, 0x02, 0x00, 0x00,
+ 0x30, 0x69, 0x1D, 0x00, 0x43, 0x68, 0x65, 0x63,
+ 0x6B, 0x42, 0x6F, 0x78, 0x31, 0x20, 0x52, 0x6F,
+ 0x00, 0x02, 0x20, 0x00, 0x35, 0x00, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x80, 0xC3, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x54, 0x69, 0x6D, 0x65,
+ 0x73, 0x20, 0x4E, 0x65, 0x77, 0x20, 0x52, 0x6F,
+ 0x6D, 0x61, 0x6E, 0x00,
+ };
+*/
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+
+sal_Bool OCX_FontData::Read(SvStorageStream *pS)
+{
+ long nStart = pS->Tell();
+ *pS >> nIdentifier;
+ *pS >> nFixedAreaLen;
+ pS->Read(pBlockFlags,4);
+
+ bool bFontName = (pBlockFlags[0] & 0x01) != 0;
+ if (bFontName)
+ *pS >> nFontNameLen;
+ if (pBlockFlags[0] & 0x02)
+ {
+ sal_uInt8 nTmp;
+ *pS >> nTmp;
+ fBold = nTmp & 0x01;
+ fItalic = (nTmp & 0x02) >> 1;
+ fUnderline = (nTmp & 0x04) >> 2;
+ fStrike = (nTmp & 0x08) >> 3;
+ fUnknown1 = (nTmp & 0xF0) >> 4;
+ *pS >> nUnknown2;
+ *pS >> nUnknown3;
+ *pS >> nUnknown4;
+ }
+ if (pBlockFlags[0] & 0x04)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nFontSize;
+ }
+ else
+ nFontSize = 240;
+ if (pBlockFlags[0] & 0x10)
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nLanguageID;
+ }
+ if (pBlockFlags[0] & 0x40)
+ {
+ *pS >> nJustification;
+ }
+ if (pBlockFlags[0] & 0x80) // font weight before font name
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nFontWeight;
+ }
+
+ if (bFontName)
+ lclReadCharArray( *pS, pFontName, nFontNameLen, pS->Tell() - nStart);
+
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ return(TRUE);
+}
+
+void OCX_FontData::Import(uno::Reference< beans::XPropertySet > &rPropSet)
+{
+ uno::Any aTmp;
+ if (pFontName)
+ {
+ aTmp <<= lclCreateOUString( pFontName, nFontNameLen );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("FontName"), aTmp);
+ }
+
+ if (bHasAlign)
+ {
+ sal_Int16 nAlign = ImportAlign(nJustification);
+ aTmp <<= nAlign;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Align"), aTmp);
+ }
+
+ if (fBold)
+ {
+ aTmp <<= awt::FontWeight::BOLD;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("FontWeight"), aTmp);
+ }
+
+ if (fItalic)
+ {
+ aTmp <<= (sal_Int16)awt::FontSlant_ITALIC;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("FontSlant"), aTmp);
+ }
+
+ if (fUnderline)
+ {
+ aTmp <<= awt::FontUnderline::SINGLE;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("FontUnderline"), aTmp);
+ }
+
+ if (fStrike)
+ {
+ aTmp <<= awt::FontStrikeout::SINGLE;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("FontStrikeout"), aTmp);
+ }
+
+ // 2004-09-17: very strange way of storing font sizes...
+ // 1pt->30, 2pt->45, 3pt->60, 4pt->75, 5pt->105, 6pt->120, 7pt->135
+ // 8pt->165, 9pt->180, 10pt->195, 11pt->225, ...
+ aTmp <<= sal_Int16( (nFontSize <= 30) ? 1 : ((nFontSize + 10) / 20) );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("FontHeight"), aTmp);
+}
+
+sal_Bool OCX_FontData::Export(SvStorageStreamRef &rContent,
+ const uno::Reference< beans::XPropertySet > &rPropSet)
+{
+ sal_uInt8 nFlags=0x00;
+ sal_uInt32 nOldPos = rContent->Tell();
+ rContent->SeekRel(8);
+ SvxOcxString aFontName;
+ uno::Any aTmp;
+
+ if (bHasFont)
+ aFontName = rPropSet->getPropertyValue(WW8_ASCII2STR("FontName"));
+ if (!aFontName.HasData())
+ aFontName = OUString( RTL_CONSTASCII_USTRINGPARAM( "Times New Roman" ) );
+ aFontName.WriteLenField( *rContent );
+ nFlags |= 0x01;
+
+ if (bHasFont)
+ {
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("FontWeight"));
+ float nBold = 0;
+ aTmp >>= nBold;
+
+ if (nBold >= 150)
+ {
+ nFlags |= 0x02;
+ sal_uInt8 nTmp=0x01;
+ *rContent << nTmp;
+ nTmp=0x00;
+ *rContent << nTmp;
+ *rContent << nTmp;
+ *rContent << nTmp;
+ }
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("FontHeight"));
+ float nFontHeight = 0;
+ aTmp >>= nFontHeight;
+ if (nFontHeight)
+ {
+ nFlags |= 0x04;
+ // 2004-09-17: very strange way of storing font sizes:
+ // 1pt->30, 2pt->45, 3pt->60, 4pt->75, 5pt->105, 6pt->120, 7pt->135
+ // 8pt->165, 9pt->180, 10pt->195, 11pt->225, ...
+ nFontSize = (nFontHeight == 1) ? 30 : (static_cast<sal_uInt32>((nFontHeight*4+1)/3)*15);
+ *rContent << nFontSize;
+ }
+
+ if (bHasAlign)
+ {
+ *rContent << sal_uInt16(0x0200);
+ nFlags |= 0x10;
+
+ nFlags |= 0x20; // ?
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Align"));
+ nFlags |= 0x40;
+ sal_Int16 nAlign(0);
+ if (aTmp.hasValue())
+ aTmp >>= nAlign;
+ nJustification = ExportAlign(nAlign);
+ *rContent << nJustification;
+ }
+ }
+
+ aFontName.WriteCharArray( *rContent );
+ WriteAlign(rContent,4);
+
+ sal_uInt16 nFixedAreaLn = static_cast<sal_uInt16>(rContent->Tell()-nOldPos-4);
+ rContent->Seek(nOldPos);
+ *rContent << nStandardId;
+ *rContent << nFixedAreaLn;
+ *rContent << nFlags;
+ *rContent << sal_uInt8(0x00);
+ *rContent << sal_uInt8(0x00);
+ *rContent << sal_uInt8(0x00);
+
+ WriteAlign(rContent,4);
+ return sal_True;
+}
+
+// Doesn't really read anything but just skips the
+// record.
+sal_Bool OCX_TabStrip::Read(SotStorageStream *pS)
+{
+ const long skipLen = 0x18;
+ *pS >> nIdentifier;
+ DBG_ASSERT(nStandardId==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+
+ pS->Read(pBlockFlags, sizeof(pBlockFlags));
+ pS->SeekRel(skipLen);
+ *pS >> nNumTabs;
+ // skip to end of control
+ pS->SeekRel(nFixedAreaLen - sizeof(pBlockFlags) - sizeof(nNumTabs) - skipLen );
+ return sal_True;
+}
+
+sal_Bool OCX_TabStrip::ReadFontData(SotStorageStream *pS)
+{
+ // Seems like there is a real font record followed by
+ // a number of blank records ( e.g. nFixedAreaLen = 0 )
+ // The number of trailing blank records is equal to the number of tabs
+ OCX_Control::ReadFontData(pS);
+ for ( sal_uInt16 index = 0; index < nNumTabs; index++ )
+ {
+ OCX_Control::Read(pS); // read trailing records
+ }
+ return sal_True;
+}
+
+sal_Bool OCX_Image::Read(SotStorageStream *pS)
+{
+ if ( !bSetInDialog )
+ {
+ // preserve the present behavior at the moment.
+ // only import image control for UserForms
+ return sal_False;
+ }
+ ULONG nStart = pS->Tell();
+ *pS >> nIdentifier;
+ DBG_ASSERT(nStandardId==nIdentifier,
+ "A control that has a different identifier");
+ *pS >> nFixedAreaLen;
+
+ pS->Read(pBlockFlags, sizeof(pBlockFlags));
+
+ bool hasEmbeddedImage = false;
+
+ if ( pBlockFlags[0] & 0x04 )
+ {
+ bAutoSize = true;
+ }
+ if ( pBlockFlags[0] & 0x08 )
+ {
+ *pS >> nBorderColor;
+ }
+ if ( pBlockFlags[0] & 0x10 )
+ {
+ *pS >> mnBackColor;
+ }
+ if ( pBlockFlags[0] & 0x20 )
+ {
+ *pS >> nBorderStyle;
+ }
+ if ( pBlockFlags[0] & 0x40 )
+ {
+ *pS >> nMousePointer;
+ }
+ if ( pBlockFlags[0] & 0x80 )
+ {
+ *pS >> nPictureSizeMode;
+ }
+
+ if ( pBlockFlags[ 1 ] & 0x1 )
+ {
+ *pS >> nSpecialEffect;
+ }
+ // investigate if valid also for formcontrols, although for controls
+ // images themselves seem to come through from escher ( as shape, think
+ // its probably a preview? )
+
+ // np a bit of a guess ( until proved incorrect )
+ if ( pBlockFlags[ 1 ] & 0x4 )
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ hasEmbeddedImage = true;
+ sal_uInt16 unknown;
+ *pS >> unknown;
+ }
+
+
+ if ( pBlockFlags[ 1 ] & 0x8 )
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 2);
+ *pS >> nPictureAlignment;
+
+ }
+ if ( pBlockFlags[ 1 ] & 0x10 )
+ {
+ bPictureTiling = true;
+ }
+ if ( pBlockFlags[1] & 0x20 )
+ {
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ sal_uInt8 nTemp;
+ *pS >> nTemp;
+ fEnabled = (nTemp&0x02)>>1;
+ fBackStyle = (nTemp&0x08)>>3;
+ // padding?
+ *pS >> nTemp;
+ *pS >> nTemp;
+ *pS >> nTemp;
+ }
+ ReadAlign(pS, pS->Tell() - nStart, 4);
+ *pS >> nWidth;
+ *pS >> nHeight;
+
+ if ( hasEmbeddedImage )
+ {
+ //image follows this block
+ //len of image is 0x14 relative to end of this block
+ pS->Seek( pS->Tell() + 0x14 );
+
+ sal_uInt32 nImageLen = 0;
+ *pS >> nImageLen;
+
+ long imagePos = pS->Tell();
+
+ pS->Seek( imagePos );
+
+ sImageUrl = C2U("vnd.sun.star.expand:${$BRAND_BASE_DIR/program/") + C2U( SAL_CONFIGFILE( "bootstrap" ) ) + C2U("::UserInstallation}/user/temp/") + sName;
+
+ sal_uInt8* pImage = new sal_uInt8[ nImageLen ];
+ pS->Read(pImage, nImageLen);
+ bool result = storePictureInFileSystem( sImageUrl, pImage, nImageLen );
+ OUString pictName = sImageUrl.copy( sImageUrl.lastIndexOf('/') + 1 );
+ result = storePictureInDoc( pDocSh, pictName, pImage, nImageLen );
+ delete [] pImage;
+ }
+ return sal_True;
+}
+
+sal_Bool OCX_Image::Import( uno::Reference< beans::XPropertySet > &rPropSet )
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+
+ if( fBackStyle )
+ aTmp <<= ImportColor(mnBackColor);
+ else
+ aTmp = uno::Any();
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ sal_Bool bTemp;
+ if (fEnabled)
+ bTemp = sal_True;
+ else
+ bTemp = sal_False;
+ aTmp = bool2any(bTemp);
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+ if ( sImageUrl.getLength() )
+ {
+ aTmp <<= sImageUrl;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ImageURL"), aTmp);
+ }
+ return sal_True;
+}
+
+sal_Bool OCX_Image::WriteContents(SvStorageStreamRef &rContents,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ sal_Bool bRet=sal_True;
+ sal_uInt32 nOldPos = rContents->Tell();
+ rContents->SeekRel(8);
+
+ pBlockFlags[0] = 0;
+ pBlockFlags[1] = 0x02;
+ pBlockFlags[2] = 0;
+ pBlockFlags[3] = 0;
+
+ uno::Any aTmp = rPropSet->getPropertyValue(
+ WW8_ASCII2STR("BackgroundColor"));
+ if (aTmp.hasValue())
+ aTmp >>= mnBackColor;
+ *rContents << ExportColor(mnBackColor);
+ pBlockFlags[0] |= 0x10;
+
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Border"));
+ sal_Int16 nBorder = sal_Int16();
+ aTmp >>= nBorder;
+ nSpecialEffect = ExportBorder(nBorder,nBorderStyle);
+ *rContents << nBorderStyle;
+ pBlockFlags[0] |= 0x20;
+
+ *rContents << nSpecialEffect;
+ pBlockFlags[1] |= 0x01;
+
+ WriteAlign(rContents,4);
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("Enabled"));
+ fEnabled = any2bool(aTmp);
+ if (fEnabled)
+ {
+ sal_uInt8 nTemp = 0x19;
+ *rContents << nTemp;
+ pBlockFlags[1] |= 0x20;
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+ *rContents << sal_uInt8(0x00);
+ }
+
+ aTmp = rPropSet->getPropertyValue(WW8_ASCII2STR("ImageURL"));
+// OUString *pStr = (OUString *)aTmp.getValue();
+ /*Magically fetch that image and turn it into something that
+ *we can store in ms controls, wmf,png,jpg are almost certainly
+ *the options we have for export...*/
+
+ WriteAlign(rContents,4);
+ *rContents << rSize.Width;
+ *rContents << rSize.Height;
+
+ WriteAlign(rContents,4);
+ nFixedAreaLen = static_cast<sal_uInt16>(rContents->Tell()-nOldPos-4);
+
+ rContents->Seek(nOldPos);
+ *rContents << nStandardId;
+ *rContents << nFixedAreaLen;
+
+ *rContents << pBlockFlags[0];
+ *rContents << pBlockFlags[1];
+ *rContents << pBlockFlags[2];
+ *rContents << pBlockFlags[3];
+ DBG_ASSERT((rContents.Is() &&
+ (SVSTREAM_OK==rContents->GetError())),"damn");
+ return bRet;
+}
+
+
+sal_Bool OCX_Image::Export(SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet > &rPropSet,
+ const awt::Size &rSize)
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x92, 0x59, 0x4C,
+ 0x26, 0x69, 0x1B, 0x10, 0x99, 0x92, 0x00, 0x00,
+ 0x0B, 0x65, 0xC6, 0xF9, 0x1A, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x49, 0x6D, 0x61, 0x67,
+ 0x65, 0x00, 0x10, 0x00, 0x00, 0x00, 0x45, 0x6D,
+ 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, 0x4F,
+ 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x0E, 0x00,
+ 0x00, 0x00, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x2E,
+ 0x49, 0x6D, 0x61, 0x67, 0x65, 0x2E, 0x31, 0x00,
+ 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] = {
+ 0x49, 0x00, 0x6D, 0x00, 0x61, 0x00, 0x67, 0x00,
+ 0x65, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+// ============================================================================
+
+OCX_SpinButton::OCX_SpinButton() :
+ OCX_Control( OUString( RTL_CONSTASCII_USTRINGPARAM( "SpinButton" ) ) ),
+ mnBlockFlags( 0 ),
+ mnValue( 0 ),
+ mnMin( 0 ),
+ mnMax( 100 ),
+ mnSmallStep( 1 ),
+ mnPageStep( 1 ),
+ mnOrient( -1 ),
+ mnDelay( 50 ),
+ mbEnabled( true ),
+ mbLocked( false ),
+ mbPropThumb( true )
+{
+ msFormType = C2U("com.sun.star.form.component.SpinButton");
+ msDialogType = C2U("com.sun.star.awt.UnoControlSpinButtonModel");
+ mnBackColor = 0x8000000F;
+ mnForeColor = 0x80000012;
+}
+
+OCX_Control* OCX_SpinButton::Create()
+{
+ return new OCX_SpinButton;
+}
+
+sal_Bool OCX_SpinButton::Read( SvStorageStream *pS )
+{
+ if( !pS ) return sal_False;
+
+ SvStream& rStrm = *pS;
+ sal_uInt16 nId, nSize;
+ sal_Int32 nIcon = 0;
+
+ rStrm >> nId >> nSize >> mnBlockFlags;
+
+ DBG_ASSERT( nStandardId == nId, "OCX_SpinButton::Read - unknown identifier" );
+
+ if( mnBlockFlags & 0x00000001 ) rStrm >> mnForeColor;
+ if( mnBlockFlags & 0x00000002 ) rStrm >> mnBackColor;
+ if( mnBlockFlags & 0x00000004 )
+ {
+ sal_Int32 nFlags;
+ rStrm >> nFlags;
+ mbEnabled = (nFlags & 0x00000002) != 0;
+ mbLocked = (nFlags & 0x00000004) != 0;
+ }
+ if( mnBlockFlags & 0x00000010 ) rStrm.SeekRel( 4 ); // mouse pointer
+ if( mnBlockFlags & 0x00000020 ) rStrm >> mnMin;
+ if( mnBlockFlags & 0x00000040 ) rStrm >> mnMax;
+ if( mnBlockFlags & 0x00000080 ) rStrm >> mnValue;
+ if( mnBlockFlags & 0x00000100 ) rStrm.SeekRel( 4 ); // unknown
+ if( mnBlockFlags & 0x00000200 ) rStrm.SeekRel( 4 ); // unknown
+ if( mnBlockFlags & 0x00000400 ) rStrm.SeekRel( 4 ); // unknown
+ if( mnBlockFlags & 0x00000800 ) rStrm >> mnSmallStep;
+ if( mnBlockFlags & 0x00001000 ) rStrm >> mnPageStep;
+ if( mnBlockFlags & 0x00002000 ) rStrm >> mnOrient;
+ if( mnBlockFlags & 0x00004000 )
+ {
+ sal_Int32 nThumb;
+ *pS >> nThumb;
+ mbPropThumb = nThumb != 0;
+ }
+ if( mnBlockFlags & 0x00008000 ) rStrm >> mnDelay;
+ if( mnBlockFlags & 0x00010000 ) rStrm >> nIcon;
+ if( mnBlockFlags & 0x00000008 ) rStrm >> nWidth >> nHeight;
+
+ if( nIcon )
+ {
+ sal_Int32 nIconSize;
+ pS->SeekRel( 20 );
+ *pS >> nIconSize;
+ pS->SeekRel( nIconSize );
+ }
+
+ return sal_True;
+}
+
+sal_Bool OCX_SpinButton::ReadFontData( SvStorageStream* /* pS */ )
+{
+ // spin buttons and scroll bars do not support font data
+ return sal_True;
+}
+
+sal_Bool OCX_SpinButton::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ if( (nWidth < 1) || (nHeight < 1) )
+ return sal_False;
+
+ uno::Any aTmp( &sName, getCppuType((OUString *)0) );
+ rPropSet->setPropertyValue( WW8_ASCII2STR( "Name" ), aTmp );
+
+ aTmp <<= ImportColor( mnForeColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("SymbolColor"), aTmp);
+
+ aTmp <<= ImportColor( mnBackColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp = bool2any( mbEnabled && !mbLocked );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ aTmp <<= mnValue;
+ if ( bSetInDialog )
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("SpinValue"), aTmp );
+ }
+ else
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultSpinValue"), aTmp );
+ }
+
+ aTmp <<= mnMin;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("SpinValueMin"), aTmp );
+
+ aTmp <<= mnMax;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("SpinValueMax"), aTmp );
+
+ aTmp <<= mnSmallStep;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("SpinIncrement"), aTmp );
+
+ namespace AwtScrollOrient = ::com::sun::star::awt::ScrollBarOrientation;
+ switch( mnOrient )
+ {
+ case 0: aTmp <<= AwtScrollOrient::VERTICAL; break;
+ case 1: aTmp <<= AwtScrollOrient::HORIZONTAL; break;
+ default: aTmp <<= (nWidth < nHeight) ? AwtScrollOrient::VERTICAL : AwtScrollOrient::HORIZONTAL;
+ }
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Orientation"), aTmp );
+
+ aTmp = bool2any( true );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Repeat"), aTmp );
+
+ aTmp <<= mnDelay;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("RepeatDelay"), aTmp );
+
+ aTmp <<= sal_Int16( 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Border"), aTmp);
+
+ return sal_True;
+}
+
+sal_Bool OCX_SpinButton::Export(
+ SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet>& rPropSet,
+ const awt::Size& rSize )
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] =
+ {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x6F, 0x17, 0x79,
+ 0xF2, 0xB7, 0xCE, 0x11, 0x97, 0xEF, 0x00, 0xAA,
+ 0x00, 0x6D, 0x27, 0x76, 0x1F, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x53, 0x70, 0x69, 0x6E,
+ 0x42, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0x45, 0x6D, 0x62, 0x65, 0x64,
+ 0x64, 0x65, 0x64, 0x20, 0x4F, 0x62, 0x6A, 0x65,
+ 0x63, 0x74, 0x00, 0x13, 0x00, 0x00, 0x00, 0x46,
+ 0x6E, 0x42, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2E,
+ 0x31, 0x00, 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] =
+ {
+ 0x53, 0x00, 0x70, 0x00, 0x69, 0x00, 0x6E, 0x00,
+ 0x42, 0x00, 0x75, 0x00, 0x74, 0x00, 0x74, 0x00,
+ 0x6F, 0x00, 0x6E, 0x00, 0x31, 0x00, 0x00, 0x00,
+ 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+sal_Bool OCX_SpinButton::WriteContents(
+ SvStorageStreamRef &rObj,
+ const uno::Reference< beans::XPropertySet> &rPropSet,
+ const awt::Size& rSize )
+{
+ if( !rObj.Is() )
+ return sal_False;
+
+ mnBlockFlags = 0x00000008;
+ nWidth = rSize.Width;
+ nHeight = rSize.Height;
+
+ GetInt32Property( mnForeColor, rPropSet, WW8_ASCII2STR( "SymbolColor" ), 0x00000001 );
+ GetInt32Property( mnBackColor, rPropSet, WW8_ASCII2STR( "BackgroundColor" ), 0x00000002 );
+ GetBoolProperty( mbEnabled, rPropSet, WW8_ASCII2STR( "Enabled" ), 0x00000304 );
+ GetInt32Property( mnMin, rPropSet, WW8_ASCII2STR( "SpinValueMin" ), 0x00000020 );
+ GetInt32Property( mnMax, rPropSet, WW8_ASCII2STR( "SpinValueMax" ), 0x00000040 );
+ GetInt32Property( mnValue, rPropSet, WW8_ASCII2STR( "SpinValue" ), 0x00000080 );
+ GetInt32Property( mnSmallStep, rPropSet, WW8_ASCII2STR( "SpinIncrement" ), 0x00000800 );
+ GetInt32Property( mnDelay, rPropSet, WW8_ASCII2STR( "RepeatDelay" ), 0x00008000 );
+
+ namespace AwtScrollOrient = ::com::sun::star::awt::ScrollBarOrientation;
+ sal_Int16 nApiOrient = sal_Int16();
+ if( rPropSet->getPropertyValue( WW8_ASCII2STR( "Orientation" ) ) >>= nApiOrient )
+ UpdateInt32Property( mnOrient, (nApiOrient == AwtScrollOrient::VERTICAL) ? 0 : 1, 0x00002000 );
+
+ return WriteData( *rObj );
+}
+
+void OCX_SpinButton::UpdateInt32Property(
+ sal_Int32& rnCoreValue, sal_Int32 nNewValue, sal_Int32 nBlockFlag )
+{
+ if( nNewValue != rnCoreValue )
+ {
+ rnCoreValue = nNewValue;
+ mnBlockFlags |= nBlockFlag;
+ }
+}
+
+void OCX_SpinButton::GetInt32Property(
+ sal_Int32& rnCoreValue, const uno::Reference< beans::XPropertySet>& rxPropSet,
+ const OUString& rPropName, sal_Int32 nBlockFlag )
+{
+ sal_Int32 nNewValue = 0;
+ if( rxPropSet->getPropertyValue( rPropName ) >>= nNewValue )
+ UpdateInt32Property( rnCoreValue, nNewValue, nBlockFlag );
+}
+
+void OCX_SpinButton::UpdateBoolProperty(
+ bool& rbCoreValue, bool bNewValue, sal_Int32 nBlockFlag )
+{
+ if( bNewValue != rbCoreValue )
+ {
+ rbCoreValue = bNewValue;
+ mnBlockFlags |= nBlockFlag;
+ }
+}
+
+void OCX_SpinButton::GetBoolProperty(
+ bool& rbCoreValue, const uno::Reference< beans::XPropertySet>& rxPropSet,
+ const OUString& rPropName, sal_Int32 nBlockFlag )
+{
+ UpdateBoolProperty( rbCoreValue,
+ any2bool( rxPropSet->getPropertyValue( rPropName ) ), nBlockFlag );
+}
+
+sal_Bool OCX_SpinButton::WriteData( SvStream& rStrm ) const
+{
+ sal_Bool bRet = sal_True;
+ ULONG nStartPos = rStrm.Tell();
+
+ rStrm << sal_Int32( 0 ) << mnBlockFlags;
+
+ if( mnBlockFlags & 0x00000001 ) rStrm << ExportColor( mnForeColor );
+ if( mnBlockFlags & 0x00000002 ) rStrm << ExportColor( mnBackColor );
+ if( mnBlockFlags & 0x00000004 )
+ {
+ sal_Int32 nFlags = 0x00000019; // always set
+ if( mbEnabled ) nFlags |= 0x00000002;
+ if( mbLocked ) nFlags |= 0x00000004;
+ rStrm << nFlags;
+ }
+ if( mnBlockFlags & 0x00000020 ) rStrm << mnMin;
+ if( mnBlockFlags & 0x00000040 ) rStrm << mnMax;
+ if( mnBlockFlags & 0x00000080 ) rStrm << mnValue;
+ if( mnBlockFlags & 0x00000100 ) rStrm << sal_Int32( 0 ); // unknown
+ if( mnBlockFlags & 0x00000200 ) rStrm << sal_Int32( 0 ); // unknown
+ if( mnBlockFlags & 0x00000400 ) rStrm << sal_Int32( 0 ); // unknown
+ if( mnBlockFlags & 0x00000800 ) rStrm << mnSmallStep;
+ if( mnBlockFlags & 0x00001000 ) rStrm << mnPageStep;
+ if( mnBlockFlags & 0x00002000 ) rStrm << mnOrient;
+ if( mnBlockFlags & 0x00004000 ) rStrm << sal_Int32( mbPropThumb ? 1 : 0 );
+ if( mnBlockFlags & 0x00008000 ) rStrm << mnDelay;
+ if( mnBlockFlags & 0x00000008 ) rStrm << nWidth << nHeight;
+
+ sal_uInt16 nSize = static_cast< sal_uInt16 >( rStrm.Tell() - nStartPos - 4 );
+ rStrm.Seek( nStartPos );
+ rStrm << nStandardId << nSize;
+
+ DBG_ASSERT( rStrm.GetError() == SVSTREAM_OK, "OCX_SpinButton::WriteData - error in stream" );
+ return bRet;
+}
+
+// ============================================================================
+
+OCX_ScrollBar::OCX_ScrollBar()
+{
+ sName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScrollBar" ) );
+ mnMax = 32767;
+ msFormType = C2U("com.sun.star.form.component.ScrollBar");
+ msDialogType = C2U("com.sun.star.awt.UnoControlScrollBarModel");
+
+}
+
+OCX_Control* OCX_ScrollBar::Create()
+{
+ return new OCX_ScrollBar;
+}
+
+sal_Bool OCX_ScrollBar::Import(com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> &rPropSet)
+{
+ if( (nWidth < 1) || (nHeight < 1) )
+ return sal_False;
+
+ uno::Any aTmp( &sName, getCppuType((OUString *)0) );
+ rPropSet->setPropertyValue( WW8_ASCII2STR( "Name" ), aTmp );
+
+ aTmp <<= ImportColor( mnForeColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("SymbolColor"), aTmp);
+
+ aTmp <<= ImportColor( mnBackColor );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BackgroundColor"), aTmp);
+
+ aTmp = bool2any( mbEnabled && !mbLocked );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), aTmp);
+
+ aTmp <<= mnValue;
+ if ( bSetInDialog )
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ScrollValue"), aTmp );
+ }
+ else
+ {
+ rPropSet->setPropertyValue( WW8_ASCII2STR("DefaultScrollValue"), aTmp );
+ }
+
+ aTmp <<= mnMin;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ScrollValueMin"), aTmp );
+
+ aTmp <<= mnMax;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ScrollValueMax"), aTmp );
+
+ aTmp <<= mnSmallStep;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("LineIncrement"), aTmp );
+
+ aTmp <<= mnPageStep;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("BlockIncrement"), aTmp );
+ if( mbPropThumb && (mnPageStep > 0) )
+ rPropSet->setPropertyValue( WW8_ASCII2STR("VisibleSize"), aTmp );
+
+ namespace AwtScrollOrient = ::com::sun::star::awt::ScrollBarOrientation;
+ switch( mnOrient )
+ {
+ case 0: aTmp <<= AwtScrollOrient::VERTICAL; break;
+ case 1: aTmp <<= AwtScrollOrient::HORIZONTAL; break;
+ default: aTmp <<= (nWidth < nHeight) ? AwtScrollOrient::VERTICAL : AwtScrollOrient::HORIZONTAL;
+ }
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Orientation"), aTmp );
+
+ aTmp <<= mnDelay;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("RepeatDelay"), aTmp );
+
+ aTmp <<= sal_Int16( 0 );
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Border"), aTmp);
+
+ return sal_True;
+}
+
+sal_Bool OCX_ScrollBar::Export(
+ SvStorageRef &rObj,
+ const uno::Reference< beans::XPropertySet>& rPropSet,
+ const awt::Size& rSize )
+{
+ static sal_uInt8 __READONLY_DATA aCompObj[] =
+ {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x81, 0xD1, 0xDF,
+ 0x2F, 0x5E, 0xCE, 0x11, 0xA4, 0x49, 0x00, 0xAA,
+ 0x00, 0x4A, 0x80, 0x3D, 0x1E, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x46, 0x6F, 0x72, 0x6D, 0x73, 0x20,
+ 0x32, 0x2E, 0x30, 0x20, 0x53, 0x63, 0x72, 0x6F,
+ 0x6C, 0x6C, 0x42, 0x61, 0x72, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x45, 0x6D, 0x62, 0x65, 0x64, 0x64,
+ 0x65, 0x64, 0x20, 0x4F, 0x62, 0x6A, 0x65, 0x63,
+ 0x74, 0x00, 0x12, 0x00, 0x00, 0x00, 0x46, 0x6F,
+ 0x72, 0x6D, 0x73, 0x2E, 0x53, 0x63, 0x72, 0x6F,
+ 0x6C, 0x6C, 0x42, 0x61, 0x72, 0x2E, 0x31, 0x00,
+ 0xF4, 0x39, 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor( rObj->OpenSotStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+ DBG_ASSERT((xStor.Is() && (SVSTREAM_OK == xStor->GetError())),"damn");
+ }
+
+ {
+ SvStorageStreamRef xStor3( rObj->OpenSotStream( C2S("\3ObjInfo")));
+ xStor3->Write(aObjInfo,sizeof(aObjInfo));
+ DBG_ASSERT((xStor3.Is() && (SVSTREAM_OK == xStor3->GetError())),"damn");
+ }
+
+ static sal_uInt8 __READONLY_DATA aOCXNAME[] =
+ {
+ 0x53, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00,
+ 0x6C, 0x00, 0x6C, 0x00, 0x42, 0x00, 0x61, 0x00,
+ 0x72, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ {
+ SvStorageStreamRef xStor2( rObj->OpenSotStream( C2S("\3OCXNAME")));
+ xStor2->Write(aOCXNAME,sizeof(aOCXNAME));
+ DBG_ASSERT((xStor2.Is() && (SVSTREAM_OK == xStor2->GetError())),"damn");
+ }
+
+ SvStorageStreamRef xContents( rObj->OpenSotStream( C2S("contents")));
+ return WriteContents(xContents, rPropSet, rSize);
+}
+
+sal_Bool OCX_ScrollBar::WriteContents(
+ SvStorageStreamRef &rObj,
+ const uno::Reference< beans::XPropertySet> &rPropSet,
+ const awt::Size& rSize )
+{
+ if( !rObj.Is() )
+ return sal_False;
+
+ mnBlockFlags = 0x00000008;
+ nWidth = rSize.Width;
+ nHeight = rSize.Height;
+
+ GetInt32Property( mnForeColor, rPropSet, WW8_ASCII2STR( "SymbolColor" ), 0x00000001 );
+ GetInt32Property( mnBackColor, rPropSet, WW8_ASCII2STR( "BackgroundColor" ), 0x00000002 );
+ GetBoolProperty( mbEnabled, rPropSet, WW8_ASCII2STR( "Enabled" ), 0x00000304 );
+ GetInt32Property( mnMin, rPropSet, WW8_ASCII2STR( "ScrollValueMin" ), 0x00000020 );
+ GetInt32Property( mnMax, rPropSet, WW8_ASCII2STR( "ScrollValueMax" ), 0x00000040 );
+ GetInt32Property( mnValue, rPropSet, WW8_ASCII2STR( "ScrollValue" ), 0x00000080 );
+ GetInt32Property( mnSmallStep, rPropSet, WW8_ASCII2STR( "LineIncrement" ), 0x00000800 );
+ GetInt32Property( mnPageStep, rPropSet, WW8_ASCII2STR( "BlockIncrement" ), 0x00001000 );
+ GetInt32Property( mnDelay, rPropSet, WW8_ASCII2STR( "RepeatDelay" ), 0x00008000 );
+
+ namespace AwtScrollOrient = ::com::sun::star::awt::ScrollBarOrientation;
+ sal_Int16 nApiOrient = sal_Int16();
+ if( rPropSet->getPropertyValue( WW8_ASCII2STR( "Orientation" ) ) >>= nApiOrient )
+ UpdateInt32Property( mnOrient, (nApiOrient == AwtScrollOrient::VERTICAL) ? 0 : 1, 0x00002000 );
+
+ UpdateBoolProperty( mbPropThumb, true, 0x00004000 );
+
+ return WriteData( *rObj );
+}
+
+OCX_ProgressBar::OCX_ProgressBar() :
+ OCX_Control( OUString( RTL_CONSTASCII_USTRINGPARAM( "ProgressBar" ) ) ),
+ nMin( 0 ),
+ nMax( 0 ),
+ bFixedSingle(true),
+ bEnabled( true ),
+ b3d( true )
+{
+ msDialogType = C2U("com.sun.star.awt.UnoControlProgressBarModel");
+ bSetInDialog = true;
+}
+
+sal_Bool OCX_ProgressBar::Read( SvStorageStream *pS )
+{
+ pS->SeekRel( 8 );
+ *pS >> nWidth >> nHeight;
+ pS->SeekRel( 12 );
+
+ float fMin, fMax;
+ *pS >> fMin >> fMax;
+ nMin = static_cast< sal_Int32 >( fMin );
+ nMax = static_cast< sal_Int32 >( fMax );
+ bool bVisible = true;
+ sal_uInt8 pUnknownFlags[4];
+ pS->Read(pUnknownFlags,4);
+
+ // complete guess, but we don't handle visible anyway
+ if ( ( pUnknownFlags[2] & 0x8 ) && ( pUnknownFlags[2] & 0x2 ) )
+ bVisible = false;
+
+ sal_uInt32 nFlags;
+ *pS >> nFlags;
+
+ // seems these work out
+ bFixedSingle = (nFlags & 0x01) != 0;
+ bEnabled = (nFlags & 0x02) != 0;
+ b3d = (nFlags & 0x04) != 0;
+
+ return true;
+}
+
+OCX_Control* OCX_ProgressBar::Create()
+{
+ return new OCX_ProgressBar;
+}
+
+sal_Bool OCX_ProgressBar::Import(uno::Reference< beans::XPropertySet > &rPropSet)
+{
+ uno::Any aTmp(&sName,getCppuType((OUString *)0));
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Name"), aTmp );
+ aTmp <<= nMax;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ProgressValueMax"), aTmp );
+ aTmp <<= nMin;
+ rPropSet->setPropertyValue( WW8_ASCII2STR("ProgressValueMin"), aTmp );
+
+ if ( !bEnabled )
+ rPropSet->setPropertyValue( WW8_ASCII2STR("Enabled"), uno::makeAny( sal_False ) );
+ return sal_True;
+}
+// ============================================================================
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/filter/source/msfilter/msoleexp.cxx b/filter/source/msfilter/msoleexp.cxx
new file mode 100644
index 000000000000..ebafd06688b0
--- /dev/null
+++ b/filter/source/msfilter/msoleexp.cxx
@@ -0,0 +1,364 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/embed/XEmbedPersist.hpp>
+#include <com/sun/star/embed/NoVisualAreaSizeException.hpp>
+#include <com/sun/star/embed/EmbedStates.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/embed/Aspects.hpp>
+#include <sot/clsids.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/docfac.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/fcontnr.hxx>
+#include <sot/formats.hxx>
+#include <comphelper/processfactory.hxx>
+#include <unotools/streamwrap.hxx>
+#include <comphelper/storagehelper.hxx>
+#include <svtools/embedhlp.hxx>
+#include <filter/msfilter/msdffimp.hxx> // extern sichtbare Header-Datei
+
+#include "filter/msfilter/msoleexp.hxx"
+
+#define CREATE_CONST_ASC(s) String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM(s))
+
+using namespace ::com::sun::star;
+
+SvGlobalName GetEmbeddedVersion( const SvGlobalName& aAppName )
+{
+ if ( aAppName == SvGlobalName( SO3_SM_CLASSID_60 ) )
+ return SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_8 );
+ else if ( aAppName == SvGlobalName( SO3_SW_CLASSID_60 ) )
+ return SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_8 );
+ else if ( aAppName == SvGlobalName( SO3_SC_CLASSID_60 ) )
+ return SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_8 );
+ else if ( aAppName == SvGlobalName( SO3_SDRAW_CLASSID_60 ) )
+ return SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_8 );
+ else if ( aAppName == SvGlobalName( SO3_SIMPRESS_CLASSID_60 ) )
+ return SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_8 );
+ else if ( aAppName == SvGlobalName( SO3_SCH_CLASSID_60 ) )
+ return SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_8 );
+
+ return SvGlobalName();
+}
+
+String GetStorageType( const SvGlobalName& aEmbName )
+{
+ if ( aEmbName == SvGlobalName( SO3_SM_OLE_EMBED_CLASSID_8 ) )
+ return String::CreateFromAscii( "opendocument.MathDocument.1" );
+ else if ( aEmbName == SvGlobalName( SO3_SW_OLE_EMBED_CLASSID_8 ) )
+ return String::CreateFromAscii( "opendocument.WriterDocument.1" );
+ else if ( aEmbName == SvGlobalName( SO3_SC_OLE_EMBED_CLASSID_8 ) )
+ return String::CreateFromAscii( "opendocument.CalcDocument.1" );
+ else if ( aEmbName == SvGlobalName( SO3_SDRAW_OLE_EMBED_CLASSID_8 ) )
+ return String::CreateFromAscii( "opendocument.DrawDocument.1" );
+ else if ( aEmbName == SvGlobalName( SO3_SIMPRESS_OLE_EMBED_CLASSID_8 ) )
+ return String::CreateFromAscii( "opendocument.ImpressDocument.1" );
+ else if ( aEmbName == SvGlobalName( SO3_SCH_OLE_EMBED_CLASSID_8 ) )
+ return String::CreateFromAscii( "opendocument.ChartDocument.1" );
+
+ return String();
+}
+
+sal_Bool UseOldMSExport()
+{
+ uno::Reference< lang::XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+
+ if ( xFactory.is() )
+ {
+ uno::Reference< lang::XMultiServiceFactory > xProvider( xFactory->createInstance(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider"))),
+ uno::UNO_QUERY);
+ if ( xProvider.is() )
+ {
+ try {
+ uno::Sequence< uno::Any > aArg( 1 );
+ aArg[0] <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common/InternalMSExport") );
+ uno::Reference< container::XNameAccess > xNameAccess(
+ xProvider->createInstanceWithArguments(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) ),
+ aArg ),
+ uno::UNO_QUERY );
+ if ( xNameAccess.is() )
+ {
+ uno::Any aResult = xNameAccess->getByName(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOldExport" ) ) );
+
+ sal_Bool bResult = sal_Bool();
+ if ( aResult >>= bResult )
+ return bResult;
+ }
+ }
+ catch( uno::Exception& )
+ {
+ }
+ }
+ }
+
+ OSL_ENSURE( sal_False, "Could not get access to configuration entry!\n" );
+ return sal_False;
+}
+
+void SvxMSExportOLEObjects::ExportOLEObject( const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject>& rObj, SotStorage& rDestStg )
+{
+ svt::EmbeddedObjectRef aObj( rObj, embed::Aspects::MSOLE_CONTENT );
+ ExportOLEObject( aObj, rDestStg );
+}
+
+void SvxMSExportOLEObjects::ExportOLEObject( svt::EmbeddedObjectRef& rObj, SvStorage& rDestStg )
+{
+ SvGlobalName aOwnGlobalName;
+ SvGlobalName aObjName( rObj->getClassID() );
+ const SfxFilter* pExpFilter = NULL;
+ {
+ static struct _ObjExpType {
+ UINT32 nFlag;
+ const char* pFilterNm;
+ // GlobalNameId
+ struct _GlobalNameIds {
+ UINT32 n1;
+ USHORT n2, n3;
+ BYTE b8, b9, b10, b11, b12, b13, b14, b15;
+ }
+ aGlNmIds[4];
+ } aArr[] = {
+ { OLE_STARMATH_2_MATHTYPE, "MathType 3.x",
+ {{SO3_SM_CLASSID_60}, {SO3_SM_CLASSID_50},
+ {SO3_SM_CLASSID_40}, {SO3_SM_CLASSID_30 }}},
+ { OLE_STARWRITER_2_WINWORD, "MS Word 97",
+ {{SO3_SW_CLASSID_60}, {SO3_SW_CLASSID_50},
+ {SO3_SW_CLASSID_40}, {SO3_SW_CLASSID_30 }}},
+ { OLE_STARCALC_2_EXCEL, "MS Excel 97",
+ {{SO3_SC_CLASSID_60}, {SO3_SC_CLASSID_50},
+ {SO3_SC_CLASSID_40}, {SO3_SC_CLASSID_30 }}},
+ { OLE_STARIMPRESS_2_POWERPOINT, "MS PowerPoint 97",
+ {{SO3_SIMPRESS_CLASSID_60}, {SO3_SIMPRESS_CLASSID_50},
+ {SO3_SIMPRESS_CLASSID_40}, {SO3_SIMPRESS_CLASSID_30 }}},
+ { 0, "",
+ {{SO3_SCH_CLASSID_60}, {SO3_SCH_CLASSID_50},
+ {SO3_SCH_CLASSID_40}, {SO3_SCH_CLASSID_30 }}},
+ { 0, "",
+ {{SO3_SDRAW_CLASSID_60}, {SO3_SDRAW_CLASSID_50}, // SJ: !!!! SO3_SDRAW_CLASSID is only available up from
+ {SO3_SDRAW_CLASSID_60}, {SO3_SDRAW_CLASSID_50 }}}, // ver 5.0, it is purpose to have double entrys here.
+
+ { 0xffff,0,
+ {{SO3_SDRAW_CLASSID_60}, {SO3_SDRAW_CLASSID_50},
+ {SO3_SDRAW_CLASSID_60}, {SO3_SDRAW_CLASSID_50}}}
+ };
+
+ for( const _ObjExpType* pArr = aArr; !pExpFilter && ( pArr->nFlag != 0xffff ); ++pArr )
+ {
+ for ( int n = 0; n < 4; ++n )
+ {
+ const _ObjExpType::_GlobalNameIds& rId = pArr->aGlNmIds[ n ];
+ SvGlobalName aGlbNm( rId.n1, rId.n2, rId.n3,
+ rId.b8, rId.b9, rId.b10, rId.b11,
+ rId.b12, rId.b13, rId.b14, rId.b15 );
+ if( aObjName == aGlbNm )
+ {
+ aOwnGlobalName = aGlbNm;
+
+ // flags for checking if conversion is wanted at all (SaveOptions?!)
+ if( GetFlags() & pArr->nFlag )
+ {
+ pExpFilter = SfxFilterMatcher().GetFilter4FilterName(String::CreateFromAscii(pArr->pFilterNm));
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if( pExpFilter ) // use this filter for the export
+ {
+ try
+ {
+ if ( rObj->getCurrentState() == embed::EmbedStates::LOADED )
+ rObj->changeState( embed::EmbedStates::RUNNING );
+ //TODO/LATER: is stream instead of outputstream a better choice?!
+ //TODO/LATER: a "StoreTo" method at embedded object would be nice
+ uno::Sequence < beans::PropertyValue > aSeq(2);
+ SvStream* pStream = new SvMemoryStream;
+ aSeq[0].Name = ::rtl::OUString::createFromAscii( "OutputStream" );
+ ::uno::Reference < io::XOutputStream > xOut = new ::utl::OOutputStreamWrapper( *pStream );
+ aSeq[0].Value <<= xOut;
+ aSeq[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" ) );
+ aSeq[1].Value <<= ::rtl::OUString( pExpFilter->GetName() );
+ uno::Reference < frame::XStorable > xStor( rObj->getComponent(), uno::UNO_QUERY );
+ xStor->storeToURL( ::rtl::OUString::createFromAscii( "private:stream" ), aSeq );
+ SotStorageRef xOLEStor = new SotStorage( pStream, TRUE );
+ xOLEStor->CopyTo( &rDestStg );
+ rDestStg.Commit();
+ }
+ catch( uno::Exception& )
+ {
+ // TODO/LATER: Error handling
+ DBG_ERROR( "The object could not be exported!" );
+ }
+ }
+ else if( aOwnGlobalName != SvGlobalName() )
+ {
+ // own format, maybe SO6 format or lower
+ SvGlobalName aEmbName = GetEmbeddedVersion( aOwnGlobalName );
+ if ( aEmbName != SvGlobalName() && !UseOldMSExport() )
+ {
+ // this is a SO6 embedded object, save in old binary format
+ rDestStg.SetVersion( SOFFICE_FILEFORMAT_31 );
+ rDestStg.SetClass( aEmbName,
+ SOT_FORMATSTR_ID_EMBEDDED_OBJ_OLE,
+ GetStorageType( aEmbName ) );
+ SotStorageStreamRef xExtStm = rDestStg.OpenSotStream(
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "properties_stream" ) ),
+ STREAM_STD_READWRITE );
+
+ sal_Bool bExtentSuccess = sal_False;
+ if( !xExtStm->GetError() )
+ {
+ // write extent
+ //TODO/MBA: check if writing a size is enough
+ if( rObj.GetObject().is() )
+ {
+ // MSOLE objects don't need to be in running state for VisualArea access
+ awt::Size aSize;
+ try
+ {
+ // this is an own object, the content size must be stored in the
+ // extension stream
+ aSize = rObj->getVisualAreaSize( embed::Aspects::MSOLE_CONTENT );
+ }
+ catch( embed::NoVisualAreaSizeException& )
+ {
+ OSL_ENSURE( sal_False, "Could not get visual area size!\n" );
+ aSize.Width = 5000;
+ aSize.Height = 5000;
+ }
+ catch( uno::Exception& )
+ {
+ OSL_ENSURE( sal_False, "Unexpected exception while getting visual area size!\n" );
+ aSize.Width = 5000;
+ aSize.Height = 5000;
+ }
+
+ //Rectangle aVisArea = xSfxIPObj->GetVisArea( ASPECT_CONTENT );
+ sal_Int32 pRect[4];
+ //pRect[0] = aVisArea.Left();
+ //pRect[1] = aVisArea.Right();
+ //pRect[2] = aVisArea.Top();
+ //pRect[3] = aVisArea.Bottom();
+ pRect[0] = 0;
+ pRect[1] = aSize.Width;
+ pRect[2] = 0;
+ pRect[3] = aSize.Height;
+
+ sal_Int8 aWriteSet[16];
+ for ( int ind = 0; ind < 4; ind++ )
+ {
+ sal_Int32 nVal = pRect[ind];
+ for ( int nByte = 0; nByte < 4; nByte++ )
+ {
+ aWriteSet[ind*4+nByte] = (sal_Int8) nVal % 0x100;
+ nVal /= 0x100;
+ }
+ }
+
+ bExtentSuccess = ( xExtStm->Write( aWriteSet, 16 ) == 16 );
+ }
+ }
+
+ if ( bExtentSuccess )
+ {
+ SotStorageStreamRef xEmbStm = rDestStg.OpenSotStream(
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "package_stream" ) ),
+ STREAM_STD_READWRITE );
+ if( !xEmbStm->GetError() )
+ {
+ try
+ {
+ if ( rObj->getCurrentState() == embed::EmbedStates::LOADED )
+ rObj->changeState( embed::EmbedStates::RUNNING );
+ //TODO/LATER: is stream instead of outputstream a better choice?!
+ //TODO/LATER: a "StoreTo" method at embedded object would be nice
+ uno::Sequence < beans::PropertyValue > aSeq(1);
+ aSeq[0].Name = ::rtl::OUString::createFromAscii( "OutputStream" );
+ ::uno::Reference < io::XOutputStream > xOut = new ::utl::OOutputStreamWrapper( *xEmbStm );
+ aSeq[0].Value <<= xOut;
+ uno::Reference < frame::XStorable > xStor( rObj->getComponent(), uno::UNO_QUERY );
+ xStor->storeToURL( ::rtl::OUString::createFromAscii( "private:stream" ), aSeq );
+ }
+ catch( uno::Exception& )
+ {
+ // TODO/LATER: Error handling
+ DBG_ERROR( "The object could not be exported!" );
+ }
+ }
+ }
+ }
+ else
+ {
+ DBG_ERROR("Own binary format inside own container document!");
+ }
+ }
+ else
+ {
+ // alien objects
+ //TODO/LATER: a "StoreTo" method at embedded object would be nice
+ rDestStg.SetVersion( SOFFICE_FILEFORMAT_31 );
+ uno::Reference < embed::XStorage > xStor = ::comphelper::OStorageHelper::GetTemporaryStorage();
+ uno::Reference < embed::XEmbedPersist > xPers( rObj.GetObject(), uno::UNO_QUERY );
+ if ( xPers.is() )
+ {
+ uno::Sequence < beans::PropertyValue > aEmptySeq;
+ ::rtl::OUString aTempName(::rtl::OUString::createFromAscii("bla"));
+ try
+ {
+ xPers->storeToEntry( xStor, aTempName, aEmptySeq, aEmptySeq );
+ }
+ catch ( uno::Exception& )
+ {}
+
+ SotStorageRef xOLEStor = SotStorage::OpenOLEStorage( xStor, aTempName, STREAM_STD_READ );
+ xOLEStor->CopyTo( &rDestStg );
+ rDestStg.Commit();
+ }
+ }
+
+ //We never need this stream: See #99809# and #i2179#
+ rDestStg.Remove(CREATE_CONST_ASC(SVEXT_PERSIST_STREAM));
+}
+
+
+
diff --git a/filter/source/msfilter/msvbasic.cxx b/filter/source/msfilter/msvbasic.cxx
new file mode 100644
index 000000000000..91348043b75f
--- /dev/null
+++ b/filter/source/msfilter/msvbasic.cxx
@@ -0,0 +1,674 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+
+#include <string.h> // memset(), ...
+#ifndef UNX
+#include <io.h> // access()
+#endif
+#include <osl/endian.h>
+#include <rtl/tencinfo.h> //rtl_getTextEncodingFromWindowsCodePage
+#include "msvbasic.hxx"
+
+/*
+A few urls which may in the future be of some use
+http://www.virusbtn.com/vb2000/Programme/papers/bontchev.pdf
+*/
+
+/* class VBA_Impl:
+ * The VBA class provides a set of methods to handle Visual Basic For
+ * Applications streams, the constructor is given the root ole2 stream
+ * of the document, Open reads the VBA project file and figures out
+ * the number of VBA streams, and the offset of the data within them.
+ * Decompress decompresses a particular numbered stream, NoStreams returns
+ * this number, and StreamName can give you the streams name. Decompress
+ * will call Output when it has a 4096 byte collection of data to output,
+ * and also with the final remainder of data if there is still some left
+ * at the end of compression. Output is virtual to allow custom handling
+ * of each chunk of decompressed data. So inherit from this to do something
+ * useful with the data.
+ *
+ * cmc
+ * */
+const int MINVBASTRING = 6;
+
+VBA_Impl::VBA_Impl(SvStorage &rIn, bool bCmmntd)
+ : aVBAStrings(0),
+ sComment(RTL_CONSTASCII_USTRINGPARAM("Rem ")),
+ xStor(&rIn), pOffsets(0), nOffsets(0), meCharSet(RTL_TEXTENCODING_MS_1252),
+ bCommented(bCmmntd), mbMac(false), nLines(0)
+{
+}
+
+VBA_Impl::~VBA_Impl()
+{
+ delete [] pOffsets;
+ for (ULONG i=0;i<aVBAStrings.GetSize();++i)
+ delete aVBAStrings.Get(i);
+}
+
+sal_uInt8 VBA_Impl::ReadPString(SvStorageStreamRef &xVBAProject,
+ bool bIsUnicode)
+{
+ sal_uInt16 nIdLen, nOut16;
+ sal_uInt8 nType = 0, nOut8;
+ String sReference;
+
+ *xVBAProject >> nIdLen;
+
+ if (nIdLen < MINVBASTRING) //Error recovery
+ xVBAProject->SeekRel(-2); //undo 2 byte len
+ else
+ {
+ for(sal_uInt16 i=0; i < nIdLen / (bIsUnicode ? 2 : 1); i++)
+ {
+ if (bIsUnicode)
+ *xVBAProject >> nOut16;
+ else
+ {
+ *xVBAProject >> nOut8;
+ nOut16 = nOut8;
+ }
+ sReference += nOut16;
+ if (i==2)
+ {
+ if ((nOut16 == 'G') || (nOut16 == 'H') || (nOut16 == 'C') ||
+ nOut16 == 'D')
+ {
+ nType = static_cast<sal_uInt8>(nOut16);
+ }
+ if (nType == 0)
+ {
+ //Error recovery, 2byte len + 3 characters of used type
+ xVBAProject->SeekRel(-(2 + 3 * (bIsUnicode ? 2 : 1)));
+ break;
+ }
+ }
+ }
+ maReferences.push_back(sReference);
+ }
+ return nType;
+}
+
+void VBA_Impl::Output( int nLen, const sal_uInt8*pData )
+{
+ /*
+ Each StarBasic module is tragically limited to the maximum len of a
+ string and WordBasic is not, so each overlarge module must be split
+ */
+ String sTemp((const sal_Char *)pData, (xub_StrLen)nLen,
+ meCharSet);
+ int nTmp = sTemp.GetTokenCount('\x0D');
+ int nIndex = aVBAStrings.GetSize()-1;
+ if (aVBAStrings.Get(nIndex)->Len() +
+ nLen + ((nLines+nTmp) * sComment.Len()) >= STRING_MAXLEN)
+ {
+ //DBG_ASSERT(0,"New Module String\n");
+ //we are too large for our boots, break out into another
+ //string
+ nLines=0;
+ nIndex++;
+ aVBAStrings.SetSize(nIndex+1);
+ aVBAStrings.Put(nIndex,new String);
+ }
+ *(aVBAStrings.Get(nIndex)) += sTemp;
+ nLines+=nTmp;
+}
+
+
+int VBA_Impl::ReadVBAProject(const SvStorageRef &rxVBAStorage)
+{
+ SvStorageStreamRef xVBAProject;
+ xVBAProject = rxVBAStorage->OpenSotStream(
+ String( RTL_CONSTASCII_USTRINGPARAM( "_VBA_PROJECT" ) ),
+ STREAM_STD_READ | STREAM_NOCREATE );
+
+ if( !xVBAProject.Is() || SVSTREAM_OK != xVBAProject->GetError() )
+ {
+ DBG_WARNING("Not able to find vba project, cannot find macros");
+ return 0;
+ }
+
+ static const sal_uInt8 aKnownId[] = {0xCC, 0x61};
+ sal_uInt8 aId[2];
+ xVBAProject->Read( aId, sizeof(aId) );
+ if (memcmp( aId, aKnownId, sizeof(aId)))
+ {
+ DBG_WARNING("unrecognized VBA macro project type");
+ return 0;
+ }
+
+ static const sal_uInt8 aOffice2003LE_2[] =
+ {
+ 0x79, 0x00, 0x00, 0x01, 0x00, 0xFF
+ };
+
+ static const sal_uInt8 aOffice2003LE[] =
+ {
+ 0x76, 0x00, 0x00, 0x01, 0x00, 0xFF
+ };
+
+ static const sal_uInt8 aOfficeXPLE[] =
+ {
+ 0x73, 0x00, 0x00, 0x01, 0x00, 0xFF
+ };
+
+ static const sal_uInt8 aOfficeXPBE[] =
+ {
+ 0x63, 0x00, 0x00, 0x0E, 0x00, 0xFF
+ };
+
+ static const sal_uInt8 aOffice2000LE[] =
+ {
+ 0x6D, 0x00, 0x00, 0x01, 0x00, 0xFF
+ };
+ static const sal_uInt8 aOffice98BE[] =
+ {
+ 0x60, 0x00, 0x00, 0x0E, 0x00, 0xFF
+ };
+ static const sal_uInt8 aOffice97LE[] =
+ {
+ 0x5E, 0x00, 0x00, 0x01, 0x00, 0xFF
+ };
+ sal_uInt8 aProduct[6];
+ xVBAProject->Read( aProduct, sizeof(aProduct) );
+
+ bool bIsUnicode;
+ if (!(memcmp(aProduct, aOffice2003LE, sizeof(aProduct))) ||
+ !(memcmp(aProduct, aOffice2003LE_2, sizeof(aProduct))) )
+ {
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ bIsUnicode = true;
+ }
+ else if (!(memcmp(aProduct, aOfficeXPLE, sizeof(aProduct))))
+ {
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ bIsUnicode = true;
+ }
+ else if (!(memcmp(aProduct, aOfficeXPBE, sizeof(aProduct))))
+ {
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+ mbMac = true;
+ bIsUnicode = false;
+ }
+ else if (!(memcmp(aProduct, aOffice2000LE, sizeof(aProduct))))
+ {
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ bIsUnicode = true;
+ }
+ else if (!(memcmp(aProduct, aOffice98BE, sizeof(aProduct))))
+ {
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+ mbMac = true;
+ bIsUnicode = false;
+ }
+ else if (!(memcmp(aProduct, aOffice97LE, sizeof(aProduct))))
+ {
+ xVBAProject->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ bIsUnicode = true;
+ }
+ else
+ {
+ switch (aProduct[3])
+ {
+ case 0x1:
+ xVBAProject->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
+ bIsUnicode = true;
+ DBG_ASSERT(!this, "unrecognized VBA macro version, report to cmc. Guessing at unicode little endian");
+ break;
+ case 0xe:
+ xVBAProject->SetNumberFormatInt(NUMBERFORMAT_INT_BIGENDIAN);
+ mbMac = true;
+ bIsUnicode = false;
+ DBG_ASSERT(!this, "unrecognized VBA macro version, report to cmc. Guessing at 8bit big endian");
+ break;
+ default:
+ DBG_ASSERT(!this, "totally unrecognized VBA macro version, report to cmc");
+ return 0;
+ }
+ }
+
+ sal_uInt32 nLidA; //Language identifiers
+ sal_uInt32 nLidB;
+ sal_uInt16 nCharSet;
+ sal_uInt16 nLenA;
+ sal_uInt32 nUnknownB;
+ sal_uInt32 nUnknownC;
+ sal_uInt16 nLenB;
+ sal_uInt16 nLenC;
+ sal_uInt16 nLenD;
+
+ *xVBAProject >> nLidA >> nLidB >> nCharSet >> nLenA >> nUnknownB;
+ *xVBAProject >> nUnknownC >> nLenB >> nLenC >> nLenD;
+
+ meCharSet = rtl_getTextEncodingFromWindowsCodePage(nCharSet);
+
+ DBG_ASSERT(meCharSet != RTL_TEXTENCODING_DONTKNOW,
+ "don't know what vba charset to use");
+ if (meCharSet == RTL_TEXTENCODING_DONTKNOW)
+ meCharSet = RTL_TEXTENCODING_MS_1252;
+
+ if (nLenD != 0x02)
+ {
+ DBG_WARNING("Warning VBA number is different, please report");
+ return 0;
+ }
+
+ /*
+ A sequence of string that are prepended with a len and then begin with G
+ or H, there are also those that begin with C or D. If a string begins with
+ C or D, it is really two strings, one right after the other. Each string
+ then has a 12 bytes suffix
+
+ Recognizing the end of the sequence is done by finding a str len of < 6
+ which does not appear to be the beginning of an object id. Admittedly this
+ isn't a great test, but nothing in the header appears to count the number
+ of strings, and nothing else seems to match. So it'll have to do, its
+ protected by a number of secondry tests to prove its a valid string, and
+ everything gives up if this isn't proven.
+ */
+ bool bPredictsTrailingTwenty = false;
+ while (1)
+ {
+ sal_uInt8 nType = ReadPString(xVBAProject,bIsUnicode);
+ //Type C and D seem to come as pairs, so skip the following one
+ if (nType == 'C' || nType == 'D')
+ {
+ nType = ReadPString(xVBAProject,bIsUnicode);
+ DBG_ASSERT( nType == 'C' || nType == 'D',
+ "VBA: This must be a 'C' or 'D' string!" );
+ if (nType != 'C' && nType != 'D')
+ return 0;
+ }
+ if (!nType)
+ break;
+ xVBAProject->SeekRel(10);
+ sal_uInt16 nPredictsTrailingTwenty;
+ *xVBAProject >> nPredictsTrailingTwenty;
+ if (nPredictsTrailingTwenty)
+ bPredictsTrailingTwenty = true;
+ if (bPredictsTrailingTwenty)
+ {
+ sal_uInt16 nTestIsNotString;
+ *xVBAProject >> nTestIsNotString;
+ if (nTestIsNotString < MINVBASTRING)
+ {
+ DBG_ASSERT(nTestIsNotString <= 1,
+ "Haven't seen a len like this in VBA, report to CMC");
+ xVBAProject->SeekRel(18);
+ bPredictsTrailingTwenty = false;
+ }
+ else
+ xVBAProject->SeekRel(-2);
+ }
+ }
+
+ sal_Int16 nInt16s;
+ *xVBAProject >> nInt16s;
+ DBG_ASSERT( nInt16s >= 0, "VBA: Bad no of records in VBA Project, panic!" );
+ if (!nInt16s)
+ return 0;
+
+ xVBAProject->SeekRel(2*nInt16s);
+
+ sal_Int16 nInt32s;
+ *xVBAProject >> nInt32s;
+ DBG_ASSERT( nInt32s >= 0, "VBA: Bad no of records in VBA Project, panic!" );
+ if (!nInt32s)
+ return 0;
+ xVBAProject->SeekRel(4*nInt32s);
+
+ xVBAProject->SeekRel(2);
+ for(int k=0;k<3;k++)
+ {
+ sal_uInt16 nLen;
+ *xVBAProject >> nLen;
+ if (nLen != 0xFFFF)
+ xVBAProject->SeekRel(nLen);
+ }
+ xVBAProject->SeekRel(100); //Seems fixed len
+
+ *xVBAProject >> nOffsets;
+ DBG_ASSERT( nOffsets != 0xFFFF, "VBA: Bad nOffsets, panic!!" );
+ if ((nOffsets == 0xFFFF) || (nOffsets == 0))
+ return 0;
+ pOffsets = new VBAOffset_Impl[ nOffsets ];
+
+ int i, j;
+ for( i=0; i < nOffsets; i++)
+ {
+ sal_uInt16 nLen;
+ *xVBAProject >> nLen;
+
+ if (bIsUnicode)
+ {
+ sal_Unicode* pBuf = pOffsets[i].sName.AllocBuffer( nLen / 2 );
+ xVBAProject->Read( (sal_Char*)pBuf, nLen );
+
+#ifdef OSL_BIGENDIAN
+ for( j = 0; j < nLen / 2; ++j, ++pBuf )
+ *pBuf = SWAPSHORT( *pBuf );
+#endif // ifdef OSL_BIGENDIAN
+ }
+ else
+ {
+ ByteString aByteStr;
+ sal_Char* pByteData = aByteStr.AllocBuffer( nLen );
+ sal_Size nWasRead = xVBAProject->Read( pByteData, nLen );
+ if( nWasRead != nLen )
+ aByteStr.ReleaseBufferAccess();
+ pOffsets[i].sName += String( aByteStr, meCharSet);
+ }
+
+ *xVBAProject >> nLen;
+ xVBAProject->SeekRel( nLen );
+
+ //begin section, another problem area
+ *xVBAProject >> nLen;
+ if ( nLen == 0xFFFF)
+ {
+ xVBAProject->SeekRel(2);
+ *xVBAProject >> nLen;
+ xVBAProject->SeekRel( nLen );
+ }
+ else
+ xVBAProject->SeekRel( nLen+2 );
+
+ *xVBAProject >> nLen;
+ DBG_ASSERT( nLen == 0xFFFF, "VBA: Bad field in VBA Project, panic!!" );
+ if ( nLen != 0xFFFF)
+ return 0;
+
+ xVBAProject->SeekRel(6);
+ sal_uInt16 nOctects;
+ *xVBAProject >> nOctects;
+ for(j=0;j<nOctects;j++)
+ xVBAProject->SeekRel(8);
+
+ xVBAProject->SeekRel(5);
+ //end section
+
+ *xVBAProject >> pOffsets[i].nOffset;
+ xVBAProject->SeekRel(2);
+ }
+
+ return nOffsets;
+}
+
+
+/* #117718# For a given Module name return its type,
+ * Form, Class, Document, Normal or Unknown
+ *
+*/
+
+ModuleType VBA_Impl::GetModuleType( const UniString& rModuleName )
+{
+ ModuleTypeHash::iterator iter = mhModHash.find( rModuleName );
+ ModuleTypeHash::iterator iterEnd = mhModHash.end();
+ if ( iter != iterEnd )
+ {
+ return iter->second;
+ }
+ return Unknown;
+}
+
+bool VBA_Impl::Open( const String &rToplevel, const String &rSublevel )
+{
+ /* beginning test for vba stuff */
+ bool bRet = false;
+ SvStorageRef xMacros= xStor->OpenSotStorage( rToplevel,
+ STREAM_READWRITE | STREAM_NOCREATE |
+ STREAM_SHARE_DENYALL );
+ if( !xMacros.Is() || SVSTREAM_OK != xMacros->GetError() )
+ {
+ DBG_WARNING("No Macros Storage");
+ }
+ else
+ {
+ xVBA = xMacros->OpenSotStorage( rSublevel,
+ STREAM_READWRITE | STREAM_NOCREATE |
+ STREAM_SHARE_DENYALL );
+ if( !xVBA.Is() || SVSTREAM_OK != xVBA->GetError() )
+ {
+ DBG_WARNING("No Visual Basic in Storage");
+ }
+ else
+ {
+ if (ReadVBAProject(xVBA))
+ bRet = true;
+ }
+ /* #117718#
+ * Information regarding the type of module is contained in the
+ * "PROJECT" stream, this stream consists of a number of ascii lines
+ * entries are of the form Key=Value, the ones that we are interested
+ * in have the keys; Class, BaseClass & Module indicating the module
+ * ( value ) is either a Class Module, Form Module or a plain VB Module. */
+ SvStorageStreamRef xProject = xMacros->OpenSotStream(
+ String( RTL_CONSTASCII_USTRINGPARAM( "PROJECT" ) ) );
+ SvStorageStream* pStp = xProject;
+ UniString tmp;
+ static const String sThisDoc( RTL_CONSTASCII_USTRINGPARAM( "ThisDocument" ) );
+ static const String sModule( RTL_CONSTASCII_USTRINGPARAM( "Module" ) );
+ static const String sClass( RTL_CONSTASCII_USTRINGPARAM( "Class" ) );
+ static const String sBaseClass( RTL_CONSTASCII_USTRINGPARAM( "BaseClass" ) );
+ static const String sDocument( RTL_CONSTASCII_USTRINGPARAM( "Document" ) );
+ mhModHash[ sThisDoc ] = Class;
+ while ( pStp->ReadByteStringLine( tmp, meCharSet ) )
+ {
+ xub_StrLen index = tmp.Search( '=' );
+ if ( index != STRING_NOTFOUND )
+ {
+ String key = tmp.Copy( 0, index );
+ String value = tmp.Copy( index + 1 );
+ if ( key == sClass )
+ {
+ mhModHash[ value ] = Class;
+ OSL_TRACE("Module %s is of type Class",
+ ::rtl::OUStringToOString( value ,
+ RTL_TEXTENCODING_ASCII_US ).pData->buffer );
+ }
+ else if ( key == sBaseClass )
+ {
+ mhModHash[ value ] = Form;
+ OSL_TRACE("Module %s is of type Form",
+ ::rtl::OUStringToOString( value ,
+ RTL_TEXTENCODING_ASCII_US ).pData->buffer );
+ }
+ else if ( key == sDocument )
+ {
+ /* #i37965# DR 2004-12-03: add "Document", used i.e.
+ in Excel for macros attached to sheet or document. */
+
+ // value is of form <name>/&H<identifier>, strip the identifier
+ value.Erase( value.Search( '/' ) );
+
+ mhModHash[ value ] = Document;
+ OSL_TRACE("Module %s is of type Document VBA",
+ ::rtl::OUStringToOString( value ,
+ RTL_TEXTENCODING_ASCII_US ).pData->buffer );
+ }
+ else if ( key == sModule )
+ {
+ mhModHash[ value ] = Normal;
+ OSL_TRACE("Module %s is of type Normal VBA",
+ ::rtl::OUStringToOString( value ,
+ RTL_TEXTENCODING_ASCII_US ).pData->buffer );
+ }
+ }
+ }
+ }
+ /* end test for vba stuff */
+ return bRet;
+}
+
+const StringArray &VBA_Impl::Decompress(sal_uInt16 nIndex, int *pOverflow)
+{
+ DBG_ASSERT( nIndex < nOffsets, "Index out of range" );
+ SvStorageStreamRef xVBAStream;
+ aVBAStrings.SetSize(1);
+ aVBAStrings.Put(0,new String);
+
+ xVBAStream = xVBA->OpenSotStream( pOffsets[nIndex].sName,
+ STREAM_STD_READ | STREAM_NOCREATE );
+ if (pOverflow)
+ *pOverflow=0;
+
+ if( !xVBAStream.Is() || SVSTREAM_OK != xVBAStream->GetError() )
+ {
+ DBG_WARNING("Not able to open vb module ");
+ }
+ else
+ {
+ xVBAStream->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ DecompressVBA( nIndex, xVBAStream );
+ /*
+ * if len was too big for a single string set that variable ?
+ * if ((len > XX) && (pOverflow))
+ *pOverflow=1;
+ */
+ if (bCommented)
+ {
+ String sTempStringa;
+ if (mbMac)
+ sTempStringa = String( RTL_CONSTASCII_USTRINGPARAM( "\x0D" ) );
+ else
+ sTempStringa = String( RTL_CONSTASCII_USTRINGPARAM( "\x0D\x0A" ) );
+ String sTempStringb(sTempStringa);
+ sTempStringb+=sComment;
+ for(ULONG i=0;i<aVBAStrings.GetSize();i++)
+ {
+ aVBAStrings.Get(i)->SearchAndReplaceAll(
+ sTempStringa,sTempStringb);
+ aVBAStrings.Get(i)->Insert(sComment,0);
+ }
+ }
+ }
+ return aVBAStrings;
+}
+
+
+int VBA_Impl::DecompressVBA( int nIndex, SvStorageStreamRef &xVBAStream )
+{
+ sal_uInt8 nLeadbyte;
+ sal_uInt16 nToken;
+ unsigned int nPos = 0;
+ int nLen, nDistance, nShift, nClean=1;
+
+ xVBAStream->Seek( pOffsets[ nIndex ].nOffset + 3 );
+
+ while(xVBAStream->Read(&nLeadbyte,1))
+ {
+ for(int nPosition=0x01;nPosition < 0x100;nPosition=nPosition<<1)
+ {
+ //we see if the leadbyte has flagged this location as a dataunit
+ //which is actually a token which must be looked up in the history
+ if (nLeadbyte & nPosition)
+ {
+ *xVBAStream >> nToken;
+
+ if (nClean == 0)
+ nClean=1;
+
+ //For some reason the division of the token into the length
+ //field of the data to be inserted, and the distance back into
+ //the history differs depending on how full the history is
+ int nPos2 = nPos % nWINDOWLEN;
+ if (nPos2 <= 0x10)
+ nShift = 12;
+ else if (nPos2 <= 0x20)
+ nShift = 11;
+ else if (nPos2 <= 0x40)
+ nShift = 10;
+ else if (nPos2 <= 0x80)
+ nShift = 9;
+ else if (nPos2 <= 0x100)
+ nShift = 8;
+ else if (nPos2 <= 0x200)
+ nShift = 7;
+ else if (nPos2 <= 0x400)
+ nShift = 6;
+ else if (nPos2 <= 0x800)
+ nShift = 5;
+ else
+ nShift = 4;
+
+ int i;
+ nLen=0;
+ for(i=0;i<nShift;i++)
+ nLen |= nToken & (1<<i);
+
+ nLen += 3;
+
+ nDistance = nToken >> nShift;
+
+ //read the len of data from the history, wrapping around the
+ //nWINDOWLEN boundary if necessary data read from the history
+ //is also copied into the recent part of the history as well.
+ for (i = 0; i < nLen; i++)
+ {
+ unsigned char c;
+ c = aHistory[(nPos-nDistance-1) % nWINDOWLEN];
+ aHistory[nPos % nWINDOWLEN] = c;
+ nPos++;
+ }
+ }
+ else
+ {
+ // special boundary case code, not guarantueed to be correct
+ // seems to work though, there is something wrong with the
+ // compression scheme (or maybe a feature) where when the data
+ // ends on a nWINDOWLEN boundary and the excess bytes in the 8
+ // dataunit list are discarded, and not interpreted as tokens
+ // or normal data.
+ if ((nPos != 0) && ((nPos % nWINDOWLEN) == 0) && (nClean))
+ {
+ xVBAStream->SeekRel(2);
+ nClean=0;
+ Output(nWINDOWLEN, aHistory);
+ break;
+ }
+ //This is the normal case for when the data unit is not a
+ //token to be looked up, but instead some normal data which
+ //can be output, and placed in the history.
+ if (xVBAStream->Read(&aHistory[nPos % nWINDOWLEN],1))
+ nPos++;
+
+ if (nClean == 0)
+ nClean=1;
+ }
+ }
+ }
+ if (nPos % nWINDOWLEN)
+ Output(nPos % nWINDOWLEN,aHistory);
+ return(nPos);
+}
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/filter/source/msfilter/msvbasic.hxx b/filter/source/msfilter/msvbasic.hxx
new file mode 100644
index 000000000000..5b361518c0f5
--- /dev/null
+++ b/filter/source/msfilter/msvbasic.hxx
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+
+#ifndef _MSVBASIC_HXX
+#define _MSVBASIC_HXX
+
+#ifdef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#include <tools/debug.hxx>
+#include <sot/storage.hxx>
+#include <tools/dynary.hxx>
+#ifndef __SGI_STL_VECTOR
+#include <vector>
+#endif
+#include<map>
+
+/* class VBA:
+ * The VBA class provides a set of methods to handle Visual Basic For
+ * Applications streams, the constructor is given the root ole2 stream
+ * of the document, Open reads the VBA project file and figures out
+ * the number of VBA streams, and the offset of the data within them.
+ * Decompress decompresses a particular numbered stream, NoStreams returns
+ * this number, and StreamName can give you the streams name. Decompress
+ * will return a string with the decompressed data. The optional extra
+ * argument will be set if not NULL to 1 in the case of a string overflow,
+ * if I can figure out how to do that.
+ *
+ * Otherwise it is possible to inherit from VBA and implement a Output
+ * member which gets called with each 4096 output sized block.
+ *
+ * cmc
+ * */
+
+DECLARE_DYNARRAY(StringArray,String *)
+
+// #117718# define internal types to distinguish between
+// module types, form, class & normal
+// #i37965# DR 2004-12-03: add "Document", used in Excel for macros attached to sheet
+enum ModuleType { Unknown = 0, Normal, Class, Form, Document };
+
+// #117718# define map to hold types of module
+//
+
+typedef ::std::map< UniString,
+ ModuleType > ModuleTypeHash;
+
+class VBA_Impl
+{
+public:
+ VBA_Impl(SvStorage &rIn, bool bCmmntd = true);
+ ~VBA_Impl();
+ //0 for failure, 1 for success
+ bool Open( const String &rToplevel, const String &rSublevel);
+ const StringArray & Decompress(sal_uInt16 nIndex, int *pOverflow=0);
+ sal_uInt16 GetNoStreams() const { return nOffsets; }
+ const String &GetStreamName(sal_uInt16 nIndex) const
+ {
+ DBG_ASSERT( nIndex < nOffsets, "Index out of range" );
+ return pOffsets[ nIndex ].sName;
+ }
+ //I'm the method that would be made virtual to make this class
+ //useful elsewhere
+ void Output(int len, const sal_uInt8 *data);
+ //
+ // #117718# member map of module names to types of module
+ ModuleType GetModuleType( const UniString& rModuleName );
+
+ std::vector<String> maReferences;
+private:
+ struct VBAOffset_Impl
+ {
+ String sName;
+ sal_uInt32 nOffset;
+ };
+
+ // #117718# member map of module names to types of module
+ ModuleTypeHash mhModHash;
+ SvStorageRef xVBA;
+ StringArray aVBAStrings;
+ String sComment;
+ SvStorageRef xStor;
+ VBAOffset_Impl *pOffsets;
+ sal_uInt16 nOffsets;
+ enum Limits {nWINDOWLEN = 4096};
+ sal_uInt8 aHistory[nWINDOWLEN];
+ rtl_TextEncoding meCharSet;
+ bool bCommented;
+ bool mbMac;
+ int nLines;
+
+ //0 for failure, anything else for success
+ int ReadVBAProject(const SvStorageRef &rxVBAStorage);
+ int DecompressVBA(int index, SvStorageStreamRef &rxVBAStream);
+ sal_uInt8 ReadPString(SvStorageStreamRef &xVBAProject, bool bIsUnicode);
+};
+
+#endif
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/filter/source/msfilter/powerpoint/makefile.mk b/filter/source/msfilter/powerpoint/makefile.mk
index 2326f6bcfea7..5857bcb83e36 100644
--- a/filter/source/msfilter/powerpoint/makefile.mk
+++ b/filter/source/msfilter/powerpoint/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/powerpoint/pptcom.hxx b/filter/source/msfilter/powerpoint/pptcom.hxx
index b0a31bb06fef..64dff7e54b30 100644
--- a/filter/source/msfilter/powerpoint/pptcom.hxx
+++ b/filter/source/msfilter/powerpoint/pptcom.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptcom.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/powerpoint/pptimporter.cxx b/filter/source/msfilter/powerpoint/pptimporter.cxx
index b019644f86f0..960987700980 100644
--- a/filter/source/msfilter/powerpoint/pptimporter.cxx
+++ b/filter/source/msfilter/powerpoint/pptimporter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptimporter.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/powerpoint/pptimporter.hxx b/filter/source/msfilter/powerpoint/pptimporter.hxx
index 9455b0774f5c..6366d0fda054 100644
--- a/filter/source/msfilter/powerpoint/pptimporter.hxx
+++ b/filter/source/msfilter/powerpoint/pptimporter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptimporter.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/powerpoint/pptimporteruno.cxx b/filter/source/msfilter/powerpoint/pptimporteruno.cxx
index f8cd20c355b1..c1089f66a5c3 100644
--- a/filter/source/msfilter/powerpoint/pptimporteruno.cxx
+++ b/filter/source/msfilter/powerpoint/pptimporteruno.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptimporteruno.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/powerpoint/ppttoxml.cxx b/filter/source/msfilter/powerpoint/ppttoxml.cxx
index cb3c70cdd18c..d4ec2af93e7b 100644
--- a/filter/source/msfilter/powerpoint/ppttoxml.cxx
+++ b/filter/source/msfilter/powerpoint/ppttoxml.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ppttoxml.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/powerpoint/ppttoxml.hxx b/filter/source/msfilter/powerpoint/ppttoxml.hxx
index f44bcb1a62c9..b77f85b0109b 100644
--- a/filter/source/msfilter/powerpoint/ppttoxml.hxx
+++ b/filter/source/msfilter/powerpoint/ppttoxml.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ppttoxml.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
new file mode 100644
index 000000000000..848bc60b4203
--- /dev/null
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -0,0 +1,7809 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+#include <osl/endian.h>
+#include <vcl/svapp.hxx>
+#include <unotools/tempfile.hxx>
+#include <math.h>
+#include <editeng/eeitem.hxx>
+#include <sot/storage.hxx>
+#include <sot/storinfo.hxx>
+#include <sot/stg.hxx>
+#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/office/XAnnotation.hpp>
+#include <com/sun/star/office/XAnnotationAccess.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <unotools/streamwrap.hxx>
+#include <filter/msfilter/svdfppt.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdopage.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdopath.hxx>
+#include <svx/svdocirc.hxx>
+#include <svx/svdocapt.hxx>
+#include <svx/svdotable.hxx>
+#include <editeng/outlobj.hxx>
+#include <svx/svdattr.hxx>
+#include "svx/xattr.hxx"
+#include "svx/svditext.hxx"
+#include <svx/svdetc.hxx>
+#include <editeng/bulitem.hxx>
+#include <svx/polysc3d.hxx>
+#include <svx/extrud3d.hxx>
+#include <svx/svdoashp.hxx>
+#include <editeng/tstpitem.hxx>
+#include <editeng/unoprnms.hxx>
+#include <editeng/editids.hrc>
+
+#if defined(JOEENV) && defined(JOEDEBUG)
+#include "impinccv.h" // etwas Testkram
+#endif
+
+#if defined(DBG_EXTRACTOLEOBJECTS) || defined(DBG_EXTRACTFONTMETRICS)
+#include <tools/urlobj.hxx>
+#include <unotools/localfilehelper.hxx>
+#endif
+
+#define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
+#include <editeng/adjitem.hxx>
+#include <editeng/escpitem.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/wghtitem.hxx>
+#include <editeng/postitem.hxx>
+#include <editeng/udlnitem.hxx>
+#include <editeng/crsditem.hxx>
+#include <editeng/shdditem.hxx>
+#include <editeng/charreliefitem.hxx>
+#include <editeng/fontitem.hxx>
+#include <svx/svdoutl.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/lspcitem.hxx>
+#include <editeng/ulspitem.hxx>
+#include <editeng/lrspitem.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/bmpacc.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdoedge.hxx>
+#include <svx/sxekitm.hxx>
+#include <editeng/flditem.hxx>
+#include <svtools/sychconv.hxx>
+#include <tools/zcodec.hxx>
+#include <filter/msfilter/svxmsbas.hxx>
+#include <sfx2/objsh.hxx>
+#include <editeng/brshitem.hxx>
+#include <editeng/langitem.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/unoapi.hxx>
+#include <toolkit/unohlp.hxx>
+#include <com/sun/star/container/XIndexContainer.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/XControlShape.hpp>
+#include <com/sun/star/form/XFormComponent.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <editeng/writingmodeitem.hxx>
+#include <vcl/print.hxx>
+#include <editeng/svxfont.hxx>
+#include <editeng/frmdiritem.hxx>
+#include <svx/sdtfchim.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <editeng/scripttypeitem.hxx>
+#include "com/sun/star/awt/Gradient.hpp"
+#include <com/sun/star/table/XMergeableCellRange.hpp>
+#include <com/sun/star/table/BorderLine.hpp>
+#include <vcl/virdev.hxx>
+#include <algorithm>
+#include <set>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// PPT ColorScheme Slots
+#define PPT_COLSCHEME (0x08000000)
+#define PPT_COLSCHEME_HINTERGRUND (0x08000000)
+#define PPT_COLSCHEME_TEXT_UND_ZEILEN (0x08000001)
+#define PPT_COLSCHEME_SCHATTEN (0x08000002)
+#define PPT_COLSCHEME_TITELTEXT (0x08000003)
+#define PPT_COLSCHEME_FUELLBEREICHE (0x08000004)
+#define PPT_COLSCHEME_AKZENT (0x08000005)
+#define PPT_COLSCHEME_A_UND_HYPERLINK (0x08000006)
+#define PPT_COLSCHEME_A_H_GESICHERT (0x08000007)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define ANSI_CHARSET 0
+#define DEFAULT_CHARSET 1
+#define SYMBOL_CHARSET 2
+#define SHIFTJIS_CHARSET 128
+#define HANGEUL_CHARSET 129
+#define CHINESEBIG5_CHARSET 136
+#define OEM_CHARSET 255
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/* Font Families */
+#define FF_DONTCARE 0x00
+#define FF_ROMAN 0x10
+#define FF_SWISS 0x20
+#define FF_MODERN 0x30
+#define FF_SCRIPT 0x40
+#define FF_DECORATIVE 0x50
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define DEFAULT_PITCH 0x00
+#define FIXED_PITCH 0x01
+#define VARIABLE_PITCH 0x02
+
+using namespace ::com::sun::star ;
+using namespace uno ;
+using namespace beans ;
+using namespace drawing ;
+using namespace container ;
+using namespace table ;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PowerPointImportParam::PowerPointImportParam( SvStream& rDocStrm, sal_uInt32 nFlags, MSFilterTracer* pT ) :
+ rDocStream ( rDocStrm ),
+ nImportFlags ( nFlags ),
+ pTracer ( pT )
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, PptCurrentUserAtom& rAtom )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd;
+ if ( aHd.nRecType == PPT_PST_CurrentUserAtom )
+ {
+ sal_uInt32 nLen;
+ sal_uInt16 nUserNameLen, nPad;
+ rIn >> nLen
+ >> rAtom.nMagic
+ >> rAtom.nCurrentUserEdit
+ >> nUserNameLen
+ >> rAtom.nDocFileVersion
+ >> rAtom.nMajorVersion
+ >> rAtom.nMinorVersion
+ >> nPad;
+ SvxMSDffManager::MSDFFReadZString( rIn, rAtom.aCurrentUser, nUserNameLen, sal_True );
+ }
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+void PptSlidePersistAtom::Clear()
+{
+ nReserved = nPsrReference = nFlags = nNumberTexts = nSlideId = 0;
+}
+
+SvStream& operator>>( SvStream& rIn, PptSlidePersistAtom& rAtom )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd
+ >> rAtom.nPsrReference
+ >> rAtom.nFlags
+ >> rAtom.nNumberTexts
+ >> rAtom.nSlideId;
+// >> rAtom.nReserved;
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+SV_IMPL_PTRARR(_PptSlidePersistList,PptSlidePersistEntry*);
+
+USHORT PptSlidePersistList::FindPage(UINT32 nId) const
+{
+ for ( USHORT i=0; i < Count(); i++ )
+ {
+ if (operator[](i)->GetSlideId()==nId) return i;
+ }
+ return PPTSLIDEPERSIST_ENTRY_NOTFOUND;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, PptInteractiveInfoAtom& rAtom )
+{
+ rIn >> rAtom.nSoundRef
+ >> rAtom.nExHyperlinkId
+ >> rAtom.nAction
+ >> rAtom.nOleVerb
+ >> rAtom.nJump
+ >> rAtom.nFlags
+ >> rAtom.nHyperlinkType
+ >> rAtom.nUnknown1
+ >> rAtom.nUnknown2
+ >> rAtom.nUnknown3;
+ return rIn;
+}
+
+SvStream& operator>>( SvStream& rIn, PptExOleObjAtom& rAtom )
+{
+ rIn >> rAtom.nAspect
+ >> rAtom.nDummy1
+ >> rAtom.nId
+ >> rAtom.nDummy2
+ >> rAtom.nPersistPtr
+ >> rAtom.nDummy4;
+ return rIn;
+}
+
+Size PptDocumentAtom::GetPageSize(const Size& rSiz) const
+{
+ return rSiz;
+/*
+ Size aRet;
+ switch ( eSlidesPageFormat )
+ {
+ // Wenn man in Powerpoint als Seitenformat "Bildschirmgroesse"
+ // einstellt, dann zeigt dieser Dialog zwar 24x18cm an, die
+ // angezeigte Seite ist aber anders. Das sieht man, wenn man
+ // ein Rechteck seitenfuellend aufzieht und sich dessen Groesse
+ // ansieht. Die importierten Abmessungen sind auf jeden Fall
+ // die, die auch im Ppt-File stehen. Ich denke, das es sich
+ // hier eher um ein Bug in PowerPoint handelt, das im
+ // Seitenformat-Dialog bei "Bildschirmgroesse" falsche Masse
+ // angezeigt werden (vielleicht ja auch bildschirmabhaengig?).
+// case PPTPF_SCREEN : aRet.Width()=4082; aRet.Height()=5443; break;
+ case PPTPF_USLETTER: aRet.Width()=4896; aRet.Height()=6336; break;
+ case PPTPF_A4 : aRet.Width()=4762; aRet.Height()=6735; break;
+// case PPTPF_35MMDIA : aRet.Width()=4082; aRet.Height()=6123; break;
+// case PPTPF_OVERHEAD: aRet.Width()=4082; aRet.Height()=5443; break;
+ }
+ if ( aRet.Width() )
+ {
+ if ( rSiz.Width() > rSiz.Height() )
+ { // Querformat
+ long nMerk = aRet.Width();
+ aRet.Width() = aRet.Height();
+ aRet.Height() = nMerk;
+ }
+ }
+ else // CustomFormat oder Unbekannt oder Screen,Dia,Overhead
+ aRet = rSiz;
+ return aRet;
+*/
+}
+
+SvStream& operator>>(SvStream& rIn, PptDocumentAtom& rAtom)
+{
+// Tatsaechliches Format:
+// 00 aSlidePageSizeXY 8
+// 08 aNotesPageSizeXY 8
+// 16 aZoomRatio (OLE) 8
+// 24 nNotesMasterPersist 4
+// 28 nHandoutMasterPersist 4
+// 32 n1stPageNumber 2
+// 34 ePageFormat 2
+// 36 bEmbeddedTrueType 1
+// 37 bOmitTitlePlace 1
+// 38 bRightToLeft 1
+// 39 bShowComments 1
+
+ DffRecordHeader aHd;
+ INT32 nSlideX,nSlideY, nNoticeX, nNoticeY, nDummy;
+ UINT16 nSlidePageFormat;
+ INT8 nEmbeddedTrueType, nTitlePlaceHoldersOmitted, nRightToLeft, nShowComments;
+
+ rIn >> aHd
+ >> nSlideX >> nSlideY
+ >> nNoticeX >> nNoticeY
+ >> nDummy >> nDummy // ZoomRation ueberspringen
+ >> rAtom.nNotesMasterPersist
+ >> rAtom.nHandoutMasterPersist
+ >> rAtom.n1stPageNumber
+ >> nSlidePageFormat
+ >> nEmbeddedTrueType
+ >> nTitlePlaceHoldersOmitted
+ >> nRightToLeft
+ >> nShowComments;
+ rAtom.aSlidesPageSize.Width() = nSlideX;
+ rAtom.aSlidesPageSize.Height() = nSlideY;
+ rAtom.aNotesPageSize.Width() = nNoticeX;
+ rAtom.aNotesPageSize.Height() = nNoticeY;
+ rAtom.eSlidesPageFormat = (PptPageFormat)nSlidePageFormat;
+ rAtom.bEmbeddedTrueType = nEmbeddedTrueType;
+ rAtom.bTitlePlaceholdersOmitted = nTitlePlaceHoldersOmitted;
+ rAtom.bRightToLeft = nRightToLeft;
+ rAtom.bShowComments = nShowComments;
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void PptSlideLayoutAtom::Clear()
+{
+ eLayout = 0;
+ for ( USHORT i = 0; i < 8; i++ )
+ {
+ aPlaceholderId[ i ] = 0;
+ aPlacementId[ i ] = 0;
+ }
+}
+
+SvStream& operator>>( SvStream& rIn, PptSlideLayoutAtom& rAtom )
+{
+ rIn >> rAtom.eLayout;
+ rIn.Read( rAtom.aPlaceholderId, 8 );
+ return rIn;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, PptSlideAtom& rAtom )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd
+ >> rAtom.aLayout
+ >> rAtom.nMasterId
+ >> rAtom.nNotesId
+ >> rAtom.nFlags;
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+void PptSlideAtom::Clear()
+{
+ nMasterId = nNotesId = 0;
+ nFlags = 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, PptNotesAtom& rAtom )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd
+ >> rAtom.nSlideId
+ >> rAtom.nFlags;
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+void PptNotesAtom::Clear()
+{
+ nSlideId = 0;
+ nFlags = 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void PptColorSchemeAtom::Clear()
+{
+ memset(&aData[0], 0, 32);
+}
+
+Color PptColorSchemeAtom::GetColor( USHORT nNum ) const
+{
+ Color aRetval;
+ if ( nNum < 8 )
+ {
+ nNum <<= 2;
+ aRetval.SetRed( aData[ nNum++ ] );
+ aRetval.SetGreen( aData[ nNum++ ] );
+ aRetval.SetBlue( aData[ nNum++ ] );
+ }
+ return aRetval;
+}
+
+SvStream& operator>>( SvStream& rIn, PptColorSchemeAtom& rAtom )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd;
+ rIn.Read( rAtom.aData, 32 );
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, PptFontEntityAtom& rAtom )
+{
+ DffRecordHeader aHd;
+ rIn >> aHd;
+ sal_Unicode nTemp, cData[ 32 ];
+ rIn.Read( cData, 64 );
+
+ sal_uInt8 lfCharset, lfPitchAndFamily;
+
+ rIn >> lfCharset
+ >> rAtom.lfClipPrecision
+ >> rAtom.lfQuality
+ >> lfPitchAndFamily;
+
+ switch( lfCharset )
+ {
+ case SYMBOL_CHARSET :
+ rAtom.eCharSet = RTL_TEXTENCODING_SYMBOL;
+ break;
+ case ANSI_CHARSET :
+ rAtom.eCharSet = RTL_TEXTENCODING_MS_1252;
+ break;
+
+// case DEFAULT_CHARSET :
+// case SHIFTJIS_CHARSET :
+// case HANGEUL_CHARSET :
+// case CHINESEBIG5_CHARSET :
+// case OEM_CHARSET :
+ default :
+ rAtom.eCharSet = gsl_getSystemTextEncoding();
+ }
+ switch ( lfPitchAndFamily & 0xf0 )
+ {
+ case FF_ROMAN:
+ rAtom.eFamily = FAMILY_ROMAN;
+ break;
+
+ case FF_SWISS:
+ rAtom.eFamily = FAMILY_SWISS;
+ break;
+
+ case FF_MODERN:
+ rAtom.eFamily = FAMILY_MODERN;
+ break;
+
+ case FF_SCRIPT:
+ rAtom.eFamily = FAMILY_SCRIPT;
+ break;
+
+ case FF_DECORATIVE:
+ rAtom.eFamily = FAMILY_DECORATIVE;
+ break;
+
+ default:
+ rAtom.eFamily = FAMILY_DONTKNOW;
+ break;
+ }
+
+ switch ( lfPitchAndFamily & 0x0f )
+ {
+ case FIXED_PITCH:
+ rAtom.ePitch = PITCH_FIXED;
+ break;
+
+ case DEFAULT_PITCH:
+ case VARIABLE_PITCH:
+ default:
+ rAtom.ePitch = PITCH_VARIABLE;
+ break;
+ }
+ sal_uInt16 i;
+ for ( i = 0; i < 32; i++ )
+ {
+ nTemp = cData[ i ];
+ if ( !nTemp )
+ break;
+#ifdef OSL_BIGENDIAN
+ cData[ i ] = ( nTemp >> 8 ) | ( nTemp << 8 );
+#endif
+ }
+ rAtom.aName = String( cData, i );
+ OutputDevice* pDev = (OutputDevice*)Application::GetDefaultDevice();
+ rAtom.bAvailable = pDev->IsFontAvailable( rAtom.aName );
+ aHd.SeekToEndOfRecord( rIn );
+ return rIn;
+}
+
+SV_DECL_PTRARR_DEL( PptFontEntityAtomList, PptFontEntityAtom*, 16, 16 )
+SV_IMPL_PTRARR( PptFontEntityAtomList, PptFontEntityAtom* );
+
+class PptFontCollection: public PptFontEntityAtomList {
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SvStream& operator>>( SvStream& rIn, PptUserEditAtom& rAtom )
+{
+ rIn >> rAtom.aHd
+ >> rAtom.nLastSlideID
+ >> rAtom.nVersion
+ >> rAtom.nOffsetLastEdit
+ >> rAtom.nOffsetPersistDirectory
+ >> rAtom.nDocumentRef
+ >> rAtom.nMaxPersistWritten
+ >> rAtom.eLastViewType;
+ rAtom.aHd.SeekToEndOfRecord(rIn);
+ return rIn;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void PptOEPlaceholderAtom::Clear()
+{
+ nPlacementId = 0;
+ nPlaceholderSize = nPlaceholderId = 0;
+}
+
+SvStream& operator>>( SvStream& rIn, PptOEPlaceholderAtom& rAtom )
+{
+ rIn >> rAtom.nPlacementId
+ >> rAtom.nPlaceholderId
+ >> rAtom.nPlaceholderSize;
+ return rIn;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PptSlidePersistEntry::PptSlidePersistEntry() :
+ pStyleSheet ( NULL ),
+ pHeaderFooterEntry ( NULL ),
+ pSolverContainer ( NULL ),
+ nSlidePersistStartOffset( 0 ),
+ nSlidePersistEndOffset ( 0 ),
+ nBackgroundOffset ( 0 ),
+ nDrawingDgId ( 0xffffffff ),
+ pPresentationObjects ( NULL ),
+ pBObj ( NULL ),
+ bBObjIsTemporary ( sal_True ),
+ ePageKind ( PPT_MASTERPAGE ),
+ bNotesMaster ( FALSE ),
+ bHandoutMaster ( FALSE ),
+ bStarDrawFiller ( FALSE )
+{
+ HeaderFooterOfs[ 0 ] = HeaderFooterOfs[ 1 ] = HeaderFooterOfs[ 2 ] = HeaderFooterOfs[ 3 ] = 0;
+}
+
+
+PptSlidePersistEntry::~PptSlidePersistEntry()
+{
+ delete pStyleSheet;
+ delete pSolverContainer;
+ delete[] pPresentationObjects;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SdrEscherImport::SdrEscherImport( PowerPointImportParam& rParam, const String& rBaseURL ) :
+ SvxMSDffManager ( rParam.rDocStream, rBaseURL, rParam.pTracer ),
+ pFonts ( NULL ),
+ nStreamLen ( 0 ),
+ nTextStylesIndex ( 0xffff ),
+ eCharSetSystem ( gsl_getSystemTextEncoding() ),
+ bWingdingsChecked ( FALSE ),
+ bWingdingsAvailable ( FALSE ),
+ bMonotypeSortsChecked ( FALSE ),
+ bMonotypeSortsAvailable ( FALSE ),
+ bTimesNewRomanChecked ( FALSE ),
+ bTimesNewRomanAvailable ( FALSE ),
+ rImportParam ( rParam )
+{
+}
+
+SdrEscherImport::~SdrEscherImport()
+{
+ void* pPtr;
+ for ( pPtr = aOleObjectList.First(); pPtr; pPtr = aOleObjectList.Next() )
+ delete (PPTOleEntry*)pPtr;
+ delete pFonts;
+}
+
+const PptSlideLayoutAtom* SdrEscherImport::GetSlideLayoutAtom() const
+{
+ return NULL;
+}
+
+sal_Bool SdrEscherImport::ReadString( String& rStr ) const
+{
+ sal_Bool bRet = FALSE;
+ DffRecordHeader aStrHd;
+ rStCtrl >> aStrHd;
+ if (aStrHd.nRecType == PPT_PST_TextBytesAtom
+ || aStrHd.nRecType == PPT_PST_TextCharsAtom
+ || aStrHd.nRecType == PPT_PST_CString)
+ {
+ sal_Bool bUniCode =
+ (aStrHd.nRecType == PPT_PST_TextCharsAtom
+ || aStrHd.nRecType == PPT_PST_CString);
+ bRet=TRUE;
+ ULONG nBytes = aStrHd.nRecLen;
+ MSDFFReadZString( rStCtrl, rStr, nBytes, bUniCode );
+ aStrHd.SeekToEndOfRecord( rStCtrl );
+ }
+ else
+ aStrHd.SeekToBegOfRecord( rStCtrl );
+ return bRet;
+}
+
+FASTBOOL SdrEscherImport::GetColorFromPalette(USHORT /*nNum*/, Color& /*rColor*/) const
+{
+ return FALSE;
+}
+
+BOOL SdrEscherImport::SeekToShape( SvStream& /*rSt*/, void* /*pClientData*/, UINT32 /*nId*/) const
+{
+ return FALSE;
+}
+
+PptFontEntityAtom* SdrEscherImport::GetFontEnityAtom( UINT32 nNum ) const
+{
+ PptFontEntityAtom* pRetValue = NULL;
+ if ( pFonts && ( nNum < pFonts->Count() ) )
+ pRetValue = (*pFonts)[ (USHORT)nNum ];
+ return pRetValue;
+}
+
+CharSet SdrEscherImport::GetCharSet( UINT32 nNum ) const
+{
+ CharSet eRetValue( eCharSetSystem );
+ if ( pFonts && ( nNum < pFonts->Count() ) )
+ eRetValue = (*pFonts)[ (USHORT)nNum ]->eCharSet;
+ return eRetValue;
+}
+
+BOOL SdrEscherImport::IsFontAvailable( UINT32 nNum ) const
+{
+ BOOL bRetValue = FALSE;
+ if ( pFonts && ( nNum < pFonts->Count() ) )
+ bRetValue = (*pFonts)[ (USHORT)nNum ]->bAvailable;
+ return bRetValue;
+}
+
+SdrObject* SdrEscherImport::ReadObjText( PPTTextObj* /*pTextObj*/, SdrObject* pObj, SdPage* /*pPage*/) const
+{
+ return pObj;
+}
+
+void SdrEscherImport::ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* /*pData*/, DffObjData& rObj )
+{
+ sal_Int32 l, t, r, b;
+ if ( rHd.nRecLen == 16 )
+ {
+ rSt >> l >> t >> r >> b;
+ }
+ else
+ {
+ INT16 ls, ts, rs, bs;
+ rSt >> ts >> ls >> rs >> bs; // etwas seltsame Koordinatenreihenfolge ...
+ l = ls, t = ts, r = rs, b = bs;
+ }
+ Scale( l );
+ Scale( t );
+ Scale( r );
+ Scale( b );
+ rObj.aChildAnchor = Rectangle( l, t, r, b );
+ rObj.bChildAnchor = TRUE;
+ return;
+};
+
+void SdrEscherImport::RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic& rGraphic )
+{
+ if ( rGraphic.GetType() == GRAPHIC_GDIMETAFILE )
+ {
+ sal_uInt16 nX, nGlobalColorsCount, nFillColorsCount;
+
+ rSt >> nX
+ >> nGlobalColorsCount
+ >> nFillColorsCount
+ >> nX
+ >> nX
+ >> nX;
+
+ if ( ( nGlobalColorsCount <= 64 ) && ( nFillColorsCount <= 64 ) )
+ {
+ if ( (sal_uInt32)( ( nGlobalColorsCount + nFillColorsCount ) * 44 + 12 ) == nRecLen )
+ {
+ sal_uInt32 OriginalGlobalColors[ 64 ];
+ sal_uInt32 NewGlobalColors[ 64 ];
+ sal_uInt32 OriginalFillColors[ 64 ];
+ sal_uInt32 NewFillColors[ 64 ];
+
+ sal_uInt32 i, j, nGlobalColorsChanged, nFillColorsChanged;
+ nGlobalColorsChanged = nFillColorsChanged = 0;
+
+ sal_uInt32* pCurrentOriginal = OriginalGlobalColors;
+ sal_uInt32* pCurrentNew = NewGlobalColors;
+ sal_uInt32* pCount = &nGlobalColorsChanged;
+ i = nGlobalColorsCount;
+
+ for ( j = 0; j < 2; j++ )
+ {
+ for ( ; i > 0; i-- )
+ {
+ sal_uInt32 nIndex, nPos = rSt.Tell();
+ sal_uInt8 nDummy, nRed, nGreen, nBlue;
+ sal_uInt16 nChanged;
+ rSt >> nChanged;
+ if ( nChanged & 1 )
+ {
+ sal_uInt32 nColor = 0;
+ rSt >> nDummy
+ >> nRed
+ >> nDummy
+ >> nGreen
+ >> nDummy
+ >> nBlue
+ >> nIndex;
+
+ if ( nIndex < 8 )
+ {
+ Color aColor = MSO_CLR_ToColor( nIndex << 24 );
+ nRed = aColor.GetRed();
+ nGreen = aColor.GetGreen();
+ nBlue = aColor.GetBlue();
+ }
+ nColor = nRed | ( nGreen << 8 ) | ( nBlue << 16 );
+ *pCurrentNew++ = nColor;
+ rSt >> nDummy
+ >> nRed
+ >> nDummy
+ >> nGreen
+ >> nDummy
+ >> nBlue;
+ nColor = nRed | ( nGreen << 8 ) | ( nBlue << 16 );
+ *pCurrentOriginal++ = nColor;
+ (*pCount)++;
+ }
+ rSt.Seek( nPos + 44 );
+ }
+ pCurrentOriginal = OriginalFillColors;
+ pCurrentNew = NewFillColors;
+ pCount = &nFillColorsChanged;
+ i = nFillColorsCount;
+ }
+ if ( nGlobalColorsChanged || nFillColorsChanged )
+ {
+ Color* pSearchColors = new Color[ nGlobalColorsChanged ];
+ Color* pReplaceColors = new Color[ nGlobalColorsChanged ];
+
+ for ( j = 0; j < nGlobalColorsChanged; j++ )
+ {
+ sal_uInt32 nSearch = OriginalGlobalColors[ j ];
+ sal_uInt32 nReplace = NewGlobalColors[ j ];
+
+ pSearchColors[ j ].SetRed( (BYTE)nSearch );
+ pSearchColors[ j ].SetGreen( (BYTE)( nSearch >> 8 ) );
+ pSearchColors[ j ].SetBlue( (BYTE)( nSearch >> 16 ) );
+
+ pReplaceColors[ j ].SetRed( (BYTE)nReplace );
+ pReplaceColors[ j ].SetGreen( (BYTE)( nReplace >> 8 ) );
+ pReplaceColors[ j ].SetBlue( (BYTE)( nReplace >> 16 ) );
+ }
+ GDIMetaFile aGdiMetaFile( rGraphic.GetGDIMetaFile() );
+ aGdiMetaFile.ReplaceColors( pSearchColors, pReplaceColors,
+ nGlobalColorsChanged, NULL );
+ rGraphic = aGdiMetaFile;
+
+ delete[] pSearchColors;
+ delete[] pReplaceColors;
+ }
+ }
+ }
+ }
+}
+
+/* ProcessObject is called from ImplSdPPTImport::ProcessObj to hanlde all application specific things,
+ such as the import of text, animation effects, header footer and placeholder.
+
+ The parameter pOriginalObj is the object as it was imported by our general escher import, it must either
+ be deleted or it can be returned to be inserted into the sdr page.
+*/
+SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, void* pData, Rectangle& rTextRect, SdrObject* pOriginalObj )
+{
+ if ( pOriginalObj && pOriginalObj->ISA( SdrObjCustomShape ) )
+ pOriginalObj->SetMergedItem( SdrTextFixedCellHeightItem( TRUE ) );
+
+ // we are initializing our return value with the object that was imported by our escher import
+ SdrObject* pRet = pOriginalObj;
+
+ ProcessData& rData = *((ProcessData*)pData);
+ PptSlidePersistEntry& rPersistEntry = rData.rPersistEntry;
+
+ if ( ! ( rObjData.nSpFlags & SP_FGROUP ) ) // sj: #114758# ...
+ {
+ PptOEPlaceholderAtom aPlaceholderAtom;
+ INT16 nHeaderFooterInstance = -1;
+
+ if ( maShapeRecords.SeekToContent( rSt, DFF_msofbtClientData, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ DffRecordHeader aClientDataHd;
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < maShapeRecords.Current()->GetRecEndFilePos() ) )
+ {
+ rSt >> aClientDataHd;
+ switch ( aClientDataHd.nRecType )
+ {
+ // importing header/footer object from master page
+ case PPT_PST_OEPlaceholderAtom :
+ {
+ rSt >> aPlaceholderAtom;
+ if ( nHeaderFooterInstance == -1 )
+ {
+ switch ( aPlaceholderAtom.nPlaceholderId )
+ {
+ case PPT_PLACEHOLDER_MASTERSLIDENUMBER : nHeaderFooterInstance++;
+ case PPT_PLACEHOLDER_MASTERFOOTER : nHeaderFooterInstance++;
+ case PPT_PLACEHOLDER_MASTERHEADER : nHeaderFooterInstance++;
+ case PPT_PLACEHOLDER_MASTERDATE : nHeaderFooterInstance++; break;
+ }
+ if ( ! ( nHeaderFooterInstance & 0xfffc ) ) // is this a valid instance ( 0->3 )
+ rPersistEntry.HeaderFooterOfs[ nHeaderFooterInstance ] = rObjData.rSpHd.GetRecBegFilePos();
+ }
+ }
+ break;
+
+ case PPT_PST_RecolorInfoAtom :
+ {
+ if ( pRet && ( pRet->ISA( SdrGrafObj ) && ((SdrGrafObj*)pRet)->HasGDIMetaFile() ) )
+ {
+ Graphic aGraphic( ((SdrGrafObj*)pRet)->GetGraphic() );
+ RecolorGraphic( rSt, aClientDataHd.nRecLen, aGraphic );
+ ((SdrGrafObj*)pRet)->SetGraphic( aGraphic );
+ }
+ }
+ break;
+ }
+ aClientDataHd.SeekToEndOfRecord( rSt );
+ }
+ }
+ if ( ( aPlaceholderAtom.nPlaceholderId == PPT_PLACEHOLDER_NOTESSLIDEIMAGE ) && ( rPersistEntry.bNotesMaster == FALSE ) )
+ {
+ USHORT nPageNum = pSdrModel->GetPageCount();
+ if ( nPageNum > 0 )
+ nPageNum--;
+
+ // replacing the object which we will return with a SdrPageObj
+ SdrObject::Free( pRet );
+ pRet = new SdrPageObj( rObjData.aBoundRect, pSdrModel->GetPage( nPageNum - 1 ) );
+ }
+ else
+ {
+ // try to load some ppt text
+ PPTTextObj aTextObj( rSt, (SdrPowerPointImport&)*this, rPersistEntry, &rObjData );
+ if ( ( aTextObj.Count() || aTextObj.GetOEPlaceHolderAtom() ) )
+ {
+ sal_Bool bVerticalText = sal_False;
+ // and if the text object is not empty, it must be applied to pRet, the object we
+ // initially got from our escher import
+ INT32 nTextRotationAngle = 0;
+ if ( IsProperty( DFF_Prop_txflTextFlow ) )
+ {
+ MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF );
+ switch( eTextFlow )
+ {
+ case mso_txflBtoT : // Bottom to Top non-@, unten -> oben
+ nTextRotationAngle += 9000;
+ break;
+ case mso_txflTtoBA : /* #68110# */ // Top to Bottom @-font, oben -> unten
+ case mso_txflTtoBN : // Top to Bottom non-@, oben -> unten
+ case mso_txflVertN : // Vertical, non-@, oben -> unten
+ bVerticalText = !bVerticalText; // nTextRotationAngle += 27000;
+ break;
+ // case mso_txflHorzN : // Horizontal non-@, normal
+ // case mso_txflHorzA : // Horizontal @-font, normal
+ default: break;
+ }
+ }
+ sal_Int32 nFontDirection = GetPropertyValue( DFF_Prop_cdirFont, mso_cdir0 );
+ nTextRotationAngle -= nFontDirection * 9000;
+ if ( ( nFontDirection == 1 ) || ( nFontDirection == 3 ) ) // #104546#
+ {
+ bVerticalText = !bVerticalText;
+/*
+ sal_Int32 nHalfWidth = ( rTextRect.GetWidth() + 1 ) >> 1;
+ sal_Int32 nHalfHeight = ( rTextRect.GetHeight() + 1 ) >> 1;
+ Point aTopLeft( rTextRect.Left() + nHalfWidth - nHalfHeight,
+ rTextRect.Top() + nHalfHeight - nHalfWidth );
+ Size aNewSize( rTextRect.GetHeight(), rTextRect.GetWidth() );
+ Rectangle aNewRect( aTopLeft, aNewSize );
+ rTextRect = aNewRect;
+*/
+ }
+ aTextObj.SetVertical( bVerticalText );
+ if ( pRet )
+ {
+ BOOL bDeleteSource = aTextObj.GetOEPlaceHolderAtom() != 0;
+ if ( bDeleteSource && ( pRet->ISA( SdrGrafObj ) == FALSE ) // we are not allowed to get
+ && ( pRet->ISA( SdrObjGroup ) == FALSE ) // grouped placeholder objects
+ && ( pRet->ISA( SdrOle2Obj ) == FALSE ) )
+ SdrObject::Free( pRet );
+ }
+ sal_uInt32 nTextFlags = aTextObj.GetTextFlags();
+ sal_Int32 nTextLeft = GetPropertyValue( DFF_Prop_dxTextLeft, 25 * 3600 ); // 0.25 cm (emu)
+ sal_Int32 nTextRight = GetPropertyValue( DFF_Prop_dxTextRight, 25 * 3600 ); // 0.25 cm (emu)
+ sal_Int32 nTextTop = GetPropertyValue( DFF_Prop_dyTextTop, 13 * 3600 ); // 0.13 cm (emu)
+ sal_Int32 nTextBottom = GetPropertyValue( DFF_Prop_dyTextBottom, 13 * 3600 );
+ ScaleEmu( nTextLeft );
+ ScaleEmu( nTextRight );
+ ScaleEmu( nTextTop );
+ ScaleEmu( nTextBottom );
+
+ sal_Int32 nMinFrameWidth = 0;
+ sal_Int32 nMinFrameHeight = 0;
+ sal_Bool bAutoGrowWidth, bAutoGrowHeight;
+
+ SdrTextVertAdjust eTVA;
+ SdrTextHorzAdjust eTHA;
+
+ nTextFlags &= PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT
+ | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK;
+
+ if ( bVerticalText )
+ {
+ eTVA = SDRTEXTVERTADJUST_BLOCK;
+ eTHA = SDRTEXTHORZADJUST_CENTER;
+
+ // Textverankerung lesen
+ MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop );
+
+ switch( eTextAnchor )
+ {
+ case mso_anchorTop:
+ case mso_anchorTopCentered:
+ case mso_anchorTopBaseline:
+ case mso_anchorTopCenteredBaseline:
+ eTHA = SDRTEXTHORZADJUST_RIGHT;
+ break;
+
+ case mso_anchorMiddle :
+ case mso_anchorMiddleCentered:
+ eTHA = SDRTEXTHORZADJUST_CENTER;
+ break;
+
+ case mso_anchorBottom:
+ case mso_anchorBottomCentered:
+ case mso_anchorBottomBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ eTHA = SDRTEXTHORZADJUST_LEFT;
+ break;
+ }
+ // if there is a 100% use of following attributes, the textbox can been aligned also in vertical direction
+ switch ( eTextAnchor )
+ {
+ case mso_anchorTopCentered :
+ case mso_anchorMiddleCentered :
+ case mso_anchorBottomCentered :
+ case mso_anchorTopCenteredBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ {
+ // check if it is sensible to use the centered alignment
+ sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT;
+ if ( ( nTextFlags & nMask ) != nMask ) // if the textobject has left and also right aligned pararagraphs
+ eTVA = SDRTEXTVERTADJUST_CENTER; // the text has to be displayed using the full width;
+ }
+ break;
+
+ default :
+ {
+ if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT )
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ else if ( nTextFlags == PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT )
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ }
+ break;
+ }
+ nMinFrameWidth = rTextRect.GetWidth() - ( nTextLeft + nTextRight );
+ }
+ else
+ {
+ eTVA = SDRTEXTVERTADJUST_CENTER;
+ eTHA = SDRTEXTHORZADJUST_BLOCK;
+
+ // Textverankerung lesen
+ MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText, mso_anchorTop );
+
+ switch( eTextAnchor )
+ {
+ case mso_anchorTop:
+ case mso_anchorTopCentered:
+ case mso_anchorTopBaseline:
+ case mso_anchorTopCenteredBaseline:
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ break;
+
+ case mso_anchorMiddle :
+ case mso_anchorMiddleCentered:
+ eTVA = SDRTEXTVERTADJUST_CENTER;
+ break;
+
+ case mso_anchorBottom:
+ case mso_anchorBottomCentered:
+ case mso_anchorBottomBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ break;
+ }
+ // if there is a 100% usage of following attributes, the textbox can be aligned also in horizontal direction
+ switch ( eTextAnchor )
+ {
+ case mso_anchorTopCentered :
+ case mso_anchorMiddleCentered :
+ case mso_anchorBottomCentered :
+ case mso_anchorTopCenteredBaseline:
+ case mso_anchorBottomCenteredBaseline:
+ {
+ // check if it is sensible to use the centered alignment
+ sal_uInt32 nMask = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT | PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT;
+ if ( ( nTextFlags & nMask ) != nMask ) // if the textobject has left and also right aligned pararagraphs
+ eTHA = SDRTEXTHORZADJUST_CENTER; // the text has to be displayed using the full width;
+ }
+ break;
+
+ default :
+ break;
+ }
+ nMinFrameHeight = rTextRect.GetHeight() - ( nTextTop + nTextBottom );
+ }
+
+ SdrObjKind eTextKind = OBJ_RECT;
+ if ( ( aPlaceholderAtom.nPlaceholderId == PPT_PLACEHOLDER_NOTESSLIDEIMAGE )
+ || ( aPlaceholderAtom.nPlaceholderId == PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE ) )
+ {
+ aTextObj.SetInstance( 2 );
+ eTextKind = OBJ_TITLETEXT;
+ }
+ else if ( ( aPlaceholderAtom.nPlaceholderId == PPT_PLACEHOLDER_MASTERNOTESBODYIMAGE )
+ || ( aPlaceholderAtom.nPlaceholderId == PPT_PLACEHOLDER_NOTESBODY ) )
+ {
+ aTextObj.SetInstance( 2 );
+ eTextKind = OBJ_TEXT;
+ }
+
+ sal_uInt32 nDestinationInstance = aTextObj.GetInstance();
+ if ( ( rPersistEntry.ePageKind == PPT_MASTERPAGE ) )
+ {
+ if ( !rPersistEntry.pPresentationObjects )
+ {
+ rPersistEntry.pPresentationObjects = new UINT32[ PPT_STYLESHEETENTRYS ];
+ memset( rPersistEntry.pPresentationObjects, 0, PPT_STYLESHEETENTRYS * 4 );
+ }
+ if ( !rPersistEntry.pPresentationObjects[ nDestinationInstance ] )
+ rPersistEntry.pPresentationObjects[ nDestinationInstance ] = rObjData.rSpHd.GetRecBegFilePos();
+ }
+ switch ( nDestinationInstance )
+ {
+ case TSS_TYPE_PAGETITLE :
+ case TSS_TYPE_TITLE :
+ {
+ if ( GetSlideLayoutAtom()->eLayout == PPT_LAYOUT_TITLEMASTERSLIDE )
+ nDestinationInstance = TSS_TYPE_TITLE;
+ else
+ nDestinationInstance = TSS_TYPE_PAGETITLE;
+ }
+ break;
+ case TSS_TYPE_BODY :
+ // case TSS_TYPE_SUBTITLE :
+ case TSS_TYPE_HALFBODY :
+ case TSS_TYPE_QUARTERBODY :
+ nDestinationInstance = TSS_TYPE_BODY;
+ break;
+ }
+ aTextObj.SetDestinationInstance( (sal_uInt16)nDestinationInstance );
+
+ switch ( aTextObj.GetInstance() )
+ {
+ case TSS_TYPE_PAGETITLE :
+ case TSS_TYPE_TITLE : eTextKind = OBJ_TITLETEXT; break;
+ case TSS_TYPE_SUBTITLE : eTextKind = OBJ_TEXT; break;
+ case TSS_TYPE_BODY :
+ case TSS_TYPE_HALFBODY :
+ case TSS_TYPE_QUARTERBODY : eTextKind = OBJ_OUTLINETEXT; break;
+ }
+ if ( aTextObj.GetDestinationInstance() != TSS_TYPE_TEXT_IN_SHAPE )
+ {
+ if ( !aTextObj.GetOEPlaceHolderAtom() || !aTextObj.GetOEPlaceHolderAtom()->nPlaceholderId )
+ {
+ aTextObj.SetDestinationInstance( TSS_TYPE_TEXT_IN_SHAPE );
+ eTextKind = OBJ_RECT;
+ }
+ }
+ SdrObject* pTObj = NULL;
+ sal_Bool bWordWrap = (MSO_WrapMode)GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) != mso_wrapNone;
+ sal_Bool bFitShapeToText = ( GetPropertyValue( DFF_Prop_FitTextToShape ) & 2 ) != 0;
+
+ if ( pRet && pRet->ISA( SdrObjCustomShape ) && ( eTextKind == OBJ_RECT ) )
+ {
+ bAutoGrowHeight = bFitShapeToText;
+ if ( bWordWrap )
+ bAutoGrowWidth = sal_False;
+ else
+ bAutoGrowWidth = sal_True;
+ pTObj = pRet;
+ pRet = NULL;
+ }
+ else
+ {
+ if ( pRet && pRet->ISA( SdrObjCustomShape ) )
+ {
+ SdrObject::Free( pRet );
+ pRet = NULL;
+ }
+ pTObj = new SdrRectObj( eTextKind != OBJ_RECT ? eTextKind : OBJ_TEXT );
+ pTObj->SetModel( pSdrModel );
+ SfxItemSet aSet( pSdrModel->GetItemPool() );
+ if ( !pRet )
+ ((SdrEscherImport*)this)->ApplyAttributes( rSt, aSet, rObjData );
+ pTObj->SetMergedItemSet( aSet );
+ if ( pRet )
+ {
+ pTObj->SetMergedItem( XLineStyleItem( XLINE_NONE ) );
+ pTObj->SetMergedItem( XFillStyleItem( XFILL_NONE ) );
+ }
+ if ( bVerticalText )
+ {
+ bAutoGrowWidth = bFitShapeToText; // bFitShapeToText; can't be used, because we cut the text if it is too height,
+ bAutoGrowHeight = sal_False;
+ }
+ else
+ {
+ bAutoGrowWidth = sal_False;
+ bAutoGrowHeight = sal_True; // bFitShapeToText; can't be used, because we cut the text if it is too height,
+ }
+ }
+ pTObj->SetMergedItem( SvxFrameDirectionItem( bVerticalText ? FRMDIR_VERT_TOP_RIGHT : FRMDIR_HORI_LEFT_TOP, EE_PARA_WRITINGDIR ) );
+
+ if ( !pTObj->ISA( SdrObjCustomShape ) )
+ {
+ pTObj->SetMergedItem( SdrTextAutoGrowWidthItem( bAutoGrowWidth ) );
+ pTObj->SetMergedItem( SdrTextAutoGrowHeightItem( bAutoGrowHeight ) );
+ }
+ else
+ {
+ pTObj->SetMergedItem( SdrTextWordWrapItem( bWordWrap ) );
+ pTObj->SetMergedItem( SdrTextAutoGrowHeightItem( bFitShapeToText ) );
+ }
+
+ pTObj->SetMergedItem( SdrTextVertAdjustItem( eTVA ) );
+ pTObj->SetMergedItem( SdrTextHorzAdjustItem( eTHA ) );
+
+ if ( nMinFrameHeight < 0 )
+ nMinFrameHeight = 0;
+ if ( !pTObj->ISA( SdrObjCustomShape ) )
+ pTObj->SetMergedItem( SdrTextMinFrameHeightItem( nMinFrameHeight ) );
+
+ if ( nMinFrameWidth < 0 )
+ nMinFrameWidth = 0;
+ if ( !pTObj->ISA( SdrObjCustomShape ) )
+ pTObj->SetMergedItem( SdrTextMinFrameWidthItem( nMinFrameWidth ) );
+
+ // Abstaende an den Raendern der Textbox setzen
+ pTObj->SetMergedItem( SdrTextLeftDistItem( nTextLeft ) );
+ pTObj->SetMergedItem( SdrTextRightDistItem( nTextRight ) );
+ pTObj->SetMergedItem( SdrTextUpperDistItem( nTextTop ) );
+ pTObj->SetMergedItem( SdrTextLowerDistItem( nTextBottom ) );
+ pTObj->SetMergedItem( SdrTextFixedCellHeightItem( TRUE ) );
+
+ if ( !pTObj->ISA( SdrObjCustomShape ) )
+ pTObj->SetSnapRect( rTextRect );
+ pTObj = ReadObjText( &aTextObj, pTObj, rData.pPage );
+ if ( pTObj )
+ {
+ /* check if our new snaprect makes trouble,
+ because we do not display the ADJUST_BLOCK
+ properly if the textsize is bigger than the
+ snaprect of the object. Then we will use
+ ADJUST_CENTER instead of ADJUST_BLOCK.
+ */
+ if ( !pTObj->ISA( SdrObjCustomShape ) && !bFitShapeToText && !bWordWrap )
+ {
+ SdrTextObj* pText = PTR_CAST( SdrTextObj, pTObj );
+ if ( pText )
+ {
+ if ( bVerticalText )
+ {
+ if ( eTVA == SDRTEXTVERTADJUST_BLOCK )
+ {
+ Size aTextSize( pText->GetTextSize() );
+ aTextSize.Width() += nTextLeft + nTextRight;
+ aTextSize.Height() += nTextTop + nTextBottom;
+ if ( rTextRect.GetHeight() < aTextSize.Height() )
+ pTObj->SetMergedItem( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
+ }
+ }
+ else
+ {
+ if ( eTHA == SDRTEXTHORZADJUST_BLOCK )
+ {
+ Size aTextSize( pText->GetTextSize() );
+ aTextSize.Width() += nTextLeft + nTextRight;
+ aTextSize.Height() += nTextTop + nTextBottom;
+ if ( rTextRect.GetWidth() < aTextSize.Width() )
+ pTObj->SetMergedItem( SdrTextHorzAdjustItem( SDRTEXTHORZADJUST_CENTER ) );
+ }
+ }
+ }
+ }
+ // rotate text with shape ?
+ sal_Int32 nAngle = ( rObjData.nSpFlags & SP_FFLIPV ) ? -mnFix16Angle : mnFix16Angle; // #72116# vertical flip -> rotate by using the other way
+ nAngle += nTextRotationAngle;
+
+ if ( pTObj->ISA( SdrObjCustomShape ) )
+ {
+/*
+ if ( nTextRotationAngle )
+ {
+ double fTextRotateAngle = (double)nTextRotationAngle / 100.0;
+ SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)((SdrObjCustomShape*)pTObj)->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+ const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextRotateAngle" ) );
+ PropertyValue aPropValue;
+ aPropValue.Name = sTextRotateAngle;
+ aPropValue.Value <<= fTextRotateAngle;
+ aGeometryItem.SetPropertyValue( aPropValue );
+ ((SdrObjCustomShape*)pTObj)->SetMergedItem( aGeometryItem );
+ }
+*/
+ }
+ else
+ {
+ if ( rObjData.nSpFlags & SP_FFLIPV )
+ {
+ double a = 18000 * nPi180;
+ pTObj->Rotate( rTextRect.Center(), 18000, sin( a ), cos( a ) );
+ }
+ if ( rObjData.nSpFlags & SP_FFLIPH )
+ nAngle = 36000 - nAngle;
+ if ( nAngle )
+ {
+ double a = nAngle * nPi180;
+ pTObj->NbcRotate( rObjData.aBoundRect.Center(), nAngle, sin( a ), cos( a ) );
+ }
+ }
+ if ( pRet )
+ {
+ SdrObject* pGroup = new SdrObjGroup;
+ pGroup->GetSubList()->NbcInsertObject( pRet );
+ pGroup->GetSubList()->NbcInsertObject( pTObj );
+ pRet = pGroup;
+ }
+ else
+ pRet = pTObj;
+ }
+ }
+ }
+ }
+ else
+ {
+ if ( maShapeRecords.SeekToContent( rSt, DFF_msofbtUDefProp, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ maShapeRecords.Current()->SeekToBegOfRecord( rSt );
+ DffPropertyReader aSecPropSet( *this );
+ aSecPropSet.ReadPropSet( rSt, (ProcessData*)pData );
+ sal_Int32 nTableProperties = aSecPropSet.GetPropertyValue( DFF_Prop_tableProperties, 0 );
+ if ( nTableProperties & 3 )
+ {
+ if ( aSecPropSet.SeekToContent( DFF_Prop_tableRowProperties, rSt ) )
+ {
+ sal_Int16 i, nRowCount = 0;
+ rSt >> nRowCount >> i >> i;
+ if ( nRowCount )
+ {
+ sal_uInt32* pTableArry = new sal_uInt32[ nRowCount + 2 ];
+ pTableArry[ 0 ] = nTableProperties;
+ pTableArry[ 1 ] = nRowCount;
+ for ( i = 0; i < nRowCount; i++ )
+ rSt >> pTableArry[ i + 2 ];
+ rData.pTableRowProperties = pTableArry;
+ }
+ }
+ }
+ }
+ }
+ if ( pRet ) // sj: #i38501#, and and taking care of connections to group objects
+ {
+ if ( rObjData.nSpFlags & SP_FBACKGROUND )
+ {
+ pRet->NbcSetSnapRect( Rectangle( Point(), ((SdrPage*)rData.pPage)->GetSize() ) ); // Groesse setzen
+ }
+ if ( rPersistEntry.pSolverContainer )
+ {
+ for ( SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)rPersistEntry.pSolverContainer->aCList.First();
+ pPtr; pPtr = (SvxMSDffConnectorRule*)rPersistEntry.pSolverContainer->aCList.Next() )
+ {
+ if ( rObjData.nShapeId == pPtr->nShapeC )
+ pPtr->pCObj = pRet;
+ else
+ {
+ SdrObject* pConnectObj = pRet;
+ if ( pOriginalObj && pRet->ISA( SdrObjGroup ) )
+ { /* check if the original object from the escherimport is part of the group object,
+ if this is the case, we will use the original object to connect to */
+ SdrObjListIter aIter( *pRet, IM_DEEPWITHGROUPS );
+ while( aIter.IsMore() )
+ {
+ SdrObject* pPartObj = aIter.Next();
+ if ( pPartObj == pOriginalObj )
+ {
+ pConnectObj = pPartObj;
+ break;
+ }
+ }
+ }
+ if ( rObjData.nShapeId == pPtr->nShapeA )
+ {
+ pPtr->pAObj = pConnectObj;
+ pPtr->nSpFlagsA = rObjData.nSpFlags;
+ }
+ if ( rObjData.nShapeId == pPtr->nShapeB )
+ {
+ pPtr->pBObj = pConnectObj;
+ pPtr->nSpFlagsB = rObjData.nSpFlags;
+ }
+ }
+ }
+ }
+ if ( rPersistEntry.ePageKind == PPT_MASTERPAGE )
+ { // maybe the escher clusterlist is not correct, but we have to got the right page by using the
+ // spMaster property, so we are patching the table
+ if ( rPersistEntry.nDrawingDgId != 0xffffffff )
+ {
+ UINT32 nSec = ( rObjData.nShapeId >> 10 ) - 1;
+ if ( mpFidcls && ( nSec < mnIdClusters ) )
+ mpFidcls[ nSec ].dgid = rPersistEntry.nDrawingDgId; // insert the correct drawing id;
+ }
+ }
+ if ( GetPropertyValue( DFF_Prop_fNoFillHitTest ) & 0x10 )
+ {
+ if ( (MSO_FillType)GetPropertyValue( DFF_Prop_fillType, mso_fillSolid ) == mso_fillBackground )
+ {
+ if ( !rData.pBackgroundColoredObjects )
+ rData.pBackgroundColoredObjects = new List;
+ rData.pBackgroundColoredObjects->Insert( pRet, LIST_APPEND );
+ }
+ }
+ }
+ return pRet;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void SdrEscherImport::CheckWingdings() const
+{
+ OutputDevice* pDev = (OutputDevice*)Application::GetDefaultDevice();
+ ((SdrEscherImport*)this)->bWingdingsAvailable = pDev->IsFontAvailable( String( RTL_CONSTASCII_USTRINGPARAM( "WINGDINGS" ) ) );
+ ((SdrEscherImport*)this)->bWingdingsChecked = TRUE;
+}
+
+void SdrEscherImport::CheckMonotypeSorts() const
+{
+ OutputDevice* pDev = (OutputDevice*)Application::GetDefaultDevice();
+ ((SdrEscherImport*)this)->bMonotypeSortsAvailable = pDev->IsFontAvailable( String( RTL_CONSTASCII_USTRINGPARAM( "MONOTYPE SORTS" ) ) );
+ ((SdrEscherImport*)this)->bMonotypeSortsChecked = TRUE;
+}
+
+void SdrEscherImport::CheckTimesNewRoman() const
+{
+ OutputDevice* pDev = (OutputDevice*)Application::GetDefaultDevice();
+ ((SdrEscherImport*)this)->bTimesNewRomanAvailable = pDev->IsFontAvailable( String( RTL_CONSTASCII_USTRINGPARAM( "TIMES NEW ROMAN" ) ) );
+ ((SdrEscherImport*)this)->bTimesNewRomanChecked = TRUE;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+SdrPowerPointImport::SdrPowerPointImport( PowerPointImportParam& rParam, const String& rBaseURL ) :
+ SdrEscherImport ( rParam, rBaseURL ),
+ bOk ( rStCtrl.GetErrorCode() == SVSTREAM_OK ),
+ pPersistPtr ( NULL ),
+ nPersistPtrAnz ( 0 ),
+ pDefaultSheet ( NULL ),
+ pMasterPages ( NULL ),
+ pSlidePages ( NULL ),
+ pNotePages ( NULL ),
+ nAktPageNum ( 0 ),
+ nDocStreamPos ( 0 ),
+ nPageColorsNum ( 0xFFFF ),
+ ePageColorsKind ( PPT_MASTERPAGE ),
+ eAktPageKind ( PPT_MASTERPAGE )
+{
+ DffRecordHeader* pHd;
+ if ( bOk )
+ {
+ rStCtrl.Seek( STREAM_SEEK_TO_END );
+ nStreamLen = rStCtrl.Tell();
+
+ // try to allocate the UserEditAtom via CurrentUserAtom
+ sal_uInt32 nCurrentUserEdit = rParam.aCurrentUserAtom.nCurrentUserEdit;
+ if ( nCurrentUserEdit )
+ {
+ rStCtrl.Seek( nCurrentUserEdit );
+ rStCtrl >> aUserEditAtom;
+ }
+ if ( !aUserEditAtom.nOffsetPersistDirectory )
+ { // if there is no UserEditAtom try to search the last one
+
+ rStCtrl.Seek( 0 );
+ DffRecordManager aPptRecManager; // contains all first level container and atoms
+ aPptRecManager.Consume( rStCtrl, FALSE, nStreamLen );
+ for ( pHd = aPptRecManager.Last(); pHd; pHd = aPptRecManager.Prev() )
+ {
+ if ( pHd->nRecType == PPT_PST_UserEditAtom )
+ {
+ pHd->SeekToBegOfRecord( rStCtrl );
+ rStCtrl >> aUserEditAtom;
+ break;
+ }
+ }
+ if ( !pHd )
+ bOk = FALSE;
+ }
+ }
+ if ( rStCtrl.GetError() != 0 )
+ bOk = FALSE;
+
+ if ( bOk )
+ {
+ // PersistPtrs lesen (alle)
+ nPersistPtrAnz = aUserEditAtom.nMaxPersistWritten + 1; // 1 mehr, damit ich immer direkt indizieren kann
+ pPersistPtr = new UINT32[ nPersistPtrAnz ]; // (die fangen naemlich eigentlich bei 1 an)
+ if ( !pPersistPtr )
+ bOk = FALSE;
+ else
+ {
+ memset( pPersistPtr, 0x00, nPersistPtrAnz * 4 );
+
+ // SJ: new search mechanism from bottom to top (Issue 21122)
+ PptUserEditAtom aCurrentEditAtom( aUserEditAtom );
+ sal_uInt32 nCurrentEditAtomStrmPos = aCurrentEditAtom.aHd.GetRecEndFilePos();
+ while( nCurrentEditAtomStrmPos )
+ {
+ sal_uInt32 nPersistIncPos = aCurrentEditAtom.nOffsetPersistDirectory;
+ if ( nPersistIncPos )
+ {
+ rStCtrl.Seek( nPersistIncPos );
+ DffRecordHeader aPersistHd;
+ rStCtrl >> aPersistHd;
+ if ( aPersistHd.nRecType == PPT_PST_PersistPtrIncrementalBlock )
+ {
+ ULONG nPibLen = aPersistHd.GetRecEndFilePos();
+ while ( bOk && ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nPibLen ) )
+ {
+ sal_uInt32 nOfs, nAnz;
+ rStCtrl >> nOfs;
+ nAnz = nOfs;
+ nOfs &= 0x000FFFFF;
+ nAnz >>= 20;
+ while ( bOk && ( rStCtrl.GetError() == 0 ) && ( nAnz > 0 ) && ( nOfs <= nPersistPtrAnz ) )
+ {
+ sal_uInt32 nPt;
+ rStCtrl >> nPt;
+ if ( !pPersistPtr[ nOfs ] )
+ {
+ pPersistPtr[ nOfs ] = nPt;
+ if ( pPersistPtr[ nOfs ] > nStreamLen )
+ {
+ bOk = FALSE;
+ DBG_ERROR("SdrPowerPointImport::Ctor(): Ungueltiger Eintrag im Persist-Directory!");
+ }
+ }
+ nAnz--;
+ nOfs++;
+ }
+ if ( bOk && nAnz > 0 )
+ {
+ DBG_ERROR("SdrPowerPointImport::Ctor(): Nicht alle Persist-Directory Entraege gelesen!");
+ bOk = FALSE;
+ }
+ }
+ }
+ }
+ nCurrentEditAtomStrmPos = aCurrentEditAtom.nOffsetLastEdit < nCurrentEditAtomStrmPos ? aCurrentEditAtom.nOffsetLastEdit : 0;
+ if ( nCurrentEditAtomStrmPos )
+ {
+ rStCtrl.Seek( nCurrentEditAtomStrmPos );
+ rStCtrl >> aCurrentEditAtom;
+ }
+ }
+ }
+ }
+ if ( rStCtrl.GetError() != 0 )
+ bOk = FALSE;
+ if ( bOk )
+ { // Document PersistEntry checken
+ nDocStreamPos = aUserEditAtom.nDocumentRef;
+ if ( nDocStreamPos > nPersistPtrAnz )
+ {
+ DBG_ERROR("SdrPowerPointImport::Ctor(): aUserEditAtom.nDocumentRef ungueltig!");
+ bOk = FALSE;
+ }
+ }
+ if ( bOk )
+ { // Document FilePos checken
+ nDocStreamPos = pPersistPtr[ nDocStreamPos ];
+ if ( nDocStreamPos >= nStreamLen )
+ {
+ DBG_ERROR("SdrPowerPointImport::Ctor(): nDocStreamPos >= nStreamLen!");
+ bOk = FALSE;
+ }
+ }
+ if ( bOk )
+ {
+ rStCtrl.Seek( nDocStreamPos );
+ aDocRecManager.Consume( rStCtrl );
+
+ DffRecordHeader aDocHd;
+ rStCtrl >> aDocHd;
+ // DocumentAtom lesen
+ DffRecordHeader aDocAtomHd;
+ rStCtrl >> aDocAtomHd;
+ if ( aDocHd.nRecType == PPT_PST_Document && aDocAtomHd.nRecType == PPT_PST_DocumentAtom )
+ {
+ aDocAtomHd.SeekToBegOfRecord( rStCtrl );
+ rStCtrl >> aDocAtom;
+ }
+ else
+ bOk = FALSE;
+
+ if ( bOk )
+ {
+ if ( !pFonts )
+ ReadFontCollection();
+
+ // reading TxPF, TxSI
+ PPTTextCharacterStyleAtomInterpreter aTxCFStyle; // SJ: ToDo, this atom needs to be interpreted, it contains character default styles for standard objects (instance4)
+ PPTTextParagraphStyleAtomInterpreter aTxPFStyle;
+ PPTTextSpecInfoAtomInterpreter aTxSIStyle; // styles (default language setting ... )
+
+ DffRecordHeader* pEnvHd = aDocRecManager.GetRecordHeader( PPT_PST_Environment );
+ if ( pEnvHd )
+ {
+ pEnvHd->SeekToContent( rStCtrl );
+ DffRecordHeader aTxPFStyleRecHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_TxPFStyleAtom, pEnvHd->GetRecEndFilePos(), &aTxPFStyleRecHd ) )
+ aTxPFStyle.Read( rStCtrl, aTxPFStyleRecHd );
+
+ pEnvHd->SeekToContent( rStCtrl );
+ DffRecordHeader aTxSIStyleRecHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_TxSIStyleAtom, pEnvHd->GetRecEndFilePos(), &aTxSIStyleRecHd ) )
+ {
+ aTxSIStyle.Read( rStCtrl, aTxSIStyleRecHd, PPT_PST_TxSIStyleAtom );
+#ifdef DBG_UTIL
+ if ( !aTxSIStyle.bValid )
+ {
+ if (!(rImportParam.nImportFlags & PPT_IMPORTFLAGS_NO_TEXT_ASSERT ))
+ {
+ DBG_ERROR( "SdrTextSpecInfoAtomInterpreter::Ctor(): parsing error, this document needs to be analysed (SJ)" );
+ }
+ }
+#endif
+ }
+ }
+
+ // todo:: PPT_PST_TxPFStyleAtom
+
+ // SlidePersists Lesen
+ pMasterPages=new PptSlidePersistList;
+ pSlidePages =new PptSlidePersistList;
+ pNotePages =new PptSlidePersistList;
+
+ // now always creating the handout page, it will be the first in our masterpage list
+ PptSlidePersistEntry* pE = new PptSlidePersistEntry;
+ pE->aPersistAtom.nPsrReference = aDocAtom.nHandoutMasterPersist;
+ pE->bHandoutMaster = sal_True;
+ if ( !aDocAtom.nHandoutMasterPersist )
+ pE->bStarDrawFiller = sal_True; // this is a dummy master page
+ pMasterPages->C40_INSERT( PptSlidePersistEntry, pE, 0 );
+
+ USHORT nPageListNum = 0;
+ DffRecordHeader* pSlideListWithTextHd = aDocRecManager.GetRecordHeader( PPT_PST_SlideListWithText );
+ PptSlidePersistEntry* pPreviousPersist = NULL;
+ while ( pSlideListWithTextHd && ( nPageListNum < 3 ) )
+ {
+ pSlideListWithTextHd->SeekToContent( rStCtrl );
+ PptSlidePersistList* pPageList = GetPageList( PptPageKind( nPageListNum ) );
+ sal_uInt32 nSlideListWithTextHdEndOffset = pSlideListWithTextHd->GetRecEndFilePos();
+ while ( SeekToRec( rStCtrl, PPT_PST_SlidePersistAtom, nSlideListWithTextHdEndOffset ) )
+ {
+ if ( pPreviousPersist )
+ pPreviousPersist->nSlidePersistEndOffset = rStCtrl.Tell();
+ PptSlidePersistEntry* pE2 = new PptSlidePersistEntry;
+ rStCtrl >> pE2->aPersistAtom;
+ pE2->nSlidePersistStartOffset = rStCtrl.Tell();
+ pE2->ePageKind = PptPageKind( nPageListNum );
+ pPageList->C40_INSERT( PptSlidePersistEntry, pE2, pPageList->Count() );
+ pPreviousPersist = pE2;
+ }
+ if ( pPreviousPersist )
+ pPreviousPersist->nSlidePersistEndOffset = nSlideListWithTextHdEndOffset;
+ pSlideListWithTextHd = aDocRecManager.GetRecordHeader( PPT_PST_SlideListWithText, SEEK_FROM_CURRENT );
+ nPageListNum++;
+ }
+
+ // we will ensure that there is at least one master page
+ if ( pMasterPages->Count() == 1 ) // -> there is only a handout page available
+ {
+ PptSlidePersistEntry* pE2 = new PptSlidePersistEntry;
+ pE2->bStarDrawFiller = sal_True; // this is a dummy master page
+ pMasterPages->C40_INSERT( PptSlidePersistEntry, pE2, 1 );
+ }
+
+ // now we will insert at least one notes master for each master page
+ sal_uInt16 nMasterPage;
+ sal_uInt16 nMasterPages = pMasterPages->Count() - 1;
+ for ( nMasterPage = 0; nMasterPage < nMasterPages; nMasterPage++ )
+ {
+ PptSlidePersistEntry* pE2 = new PptSlidePersistEntry;
+ pE2->bNotesMaster = sal_True;
+ pE2->bStarDrawFiller = sal_True; // this is a dummy master page
+ if ( !nMasterPage && aDocAtom.nNotesMasterPersist )
+ { // special treatment for the first notes master
+ pE2->aPersistAtom.nPsrReference = aDocAtom.nNotesMasterPersist;
+ pE2->bStarDrawFiller = sal_False; // this is a dummy master page
+ }
+ pMasterPages->C40_INSERT( PptSlidePersistEntry, pE2, ( nMasterPage + 1 ) << 1 );
+ }
+
+ // Zu jeder Page noch das SlideAtom bzw. NotesAtom lesen, soweit vorhanden
+ nPageListNum = 0;
+ for ( nPageListNum = 0; nPageListNum < 3; nPageListNum++ )
+ {
+ PptSlidePersistList* pPageList = GetPageList( PptPageKind( nPageListNum ) );
+ for ( USHORT nPageNum = 0; nPageNum < pPageList->Count(); nPageNum++ )
+ {
+ PptSlidePersistEntry* pE2 = (*pPageList)[ nPageNum ];
+ ULONG nPersist = pE2->aPersistAtom.nPsrReference;
+ if ( ( nPersist > 0 ) && ( nPersist < nPersistPtrAnz ) )
+ {
+ ULONG nFPos = pPersistPtr[ nPersist ];
+ if ( nFPos < nStreamLen )
+ {
+ rStCtrl.Seek( nFPos );
+ DffRecordHeader aSlideHd;
+ rStCtrl >> aSlideHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_SlideAtom, aSlideHd.GetRecEndFilePos() ) )
+ rStCtrl >> pE2->aSlideAtom;
+ else if ( SeekToRec( rStCtrl, PPT_PST_NotesAtom, aSlideHd.GetRecEndFilePos() ) )
+ rStCtrl >> pE2->aNotesAtom;
+ aSlideHd.SeekToContent( rStCtrl );
+
+ DffRecordHeader aPPTDrawingHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_PPDrawing, aSlideHd.GetRecEndFilePos(), &aPPTDrawingHd ) )
+ {
+ DffRecordHeader aPPTDgContainer;
+ if ( SeekToRec( rStCtrl, DFF_msofbtDgContainer, aPPTDrawingHd.GetRecEndFilePos(), &aPPTDgContainer ) )
+ {
+ if ( SeekToRec( rStCtrl, DFF_msofbtDg, aPPTDrawingHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aDgRecordHeader;
+ rStCtrl >> aDgRecordHeader;
+ pE2->nDrawingDgId = aDgRecordHeader.nRecInstance;
+ aDgRecordHeader.SeekToEndOfRecord( rStCtrl );
+ }
+ if ( SeekToRec( rStCtrl, DFF_msofbtSolverContainer, aPPTDgContainer.GetRecEndFilePos() ) )
+ {
+ pE2->pSolverContainer = new SvxMSDffSolverContainer;
+ rStCtrl >> *( pE2->pSolverContainer );
+ }
+ aPPTDgContainer.SeekToBegOfRecord( rStCtrl );
+ SetDgContainer( rStCtrl ); // set this, so that the escherimport is knowing of our drawings
+ }
+ }
+ // office xp is supporting more than one stylesheet
+ if ( ( pE2->ePageKind == PPT_MASTERPAGE ) && ( pE2->aSlideAtom.nMasterId == 0 ) && ( pE2->bNotesMaster == 0 ) )
+ {
+ PPTTextSpecInfo aTxSI( 0 );
+ if ( aTxSIStyle.bValid && aTxSIStyle.aList.Count() )
+ aTxSI = *( ( (PPTTextSpecInfo*)aTxSIStyle.aList.GetObject( 0 ) ) );
+
+ pE2->pStyleSheet = new PPTStyleSheet( aSlideHd, rStCtrl, *this, aTxCFStyle, aTxPFStyle, aTxSI );
+ pDefaultSheet = pE2->pStyleSheet;
+ }
+ if ( SeekToRec( rStCtrl, PPT_PST_ColorSchemeAtom, aSlideHd.GetRecEndFilePos() ) )
+ rStCtrl >> pE2->aColorScheme;
+ else
+ {
+ DBG_ERROR( "SdrPowerPointImport::Ctor(): could not get SlideColorScheme! (SJ)" );
+ }
+ }
+ else
+ {
+ DBG_ERROR("SdrPowerPointImport::Ctor(): Persist-Eintrag fehlerhaft! (SJ)");
+ }
+ }
+ }
+ }
+ DffRecordHeader* pHeadersFootersHd = aDocRecManager.GetRecordHeader( PPT_PST_HeadersFooters, SEEK_FROM_BEGINNING );
+ if ( pHeadersFootersHd )
+ {
+ HeaderFooterEntry aNormalMaster, aNotesMaster;
+ for ( ; pHeadersFootersHd; pHeadersFootersHd = aDocRecManager.GetRecordHeader( PPT_PST_HeadersFooters, SEEK_FROM_CURRENT ) )
+ {
+ if ( pHeadersFootersHd->nRecInstance == 3 ) // normal master
+ ImportHeaderFooterContainer( *pHeadersFootersHd, aNormalMaster );
+ else if ( pHeadersFootersHd->nRecInstance == 4 ) // notes master
+ ImportHeaderFooterContainer( *pHeadersFootersHd, aNotesMaster );
+ }
+ for ( USHORT i = 0; i < pMasterPages->Count(); i++ )
+ {
+ if ( (*pMasterPages)[ i ]->bNotesMaster )
+ (*pMasterPages)[ i ]->pHeaderFooterEntry = new HeaderFooterEntry( aNotesMaster );
+ else
+ (*pMasterPages)[ i ]->pHeaderFooterEntry = new HeaderFooterEntry( aNormalMaster );
+ }
+ }
+ }
+ }
+ if ( ( rStCtrl.GetError() != 0 ) || ( pDefaultSheet == NULL ) )
+ bOk = FALSE;
+ pPPTStyleSheet = pDefaultSheet;
+ rStCtrl.Seek( 0 );
+}
+
+SdrPowerPointImport::~SdrPowerPointImport()
+{
+ for ( void* pPtr = aHyperList.First(); pPtr; pPtr = aHyperList.Next() )
+ delete (SdHyperlinkEntry*)pPtr;
+ delete pMasterPages;
+ delete pSlidePages;
+ delete pNotePages;
+ delete[] pPersistPtr;
+}
+
+sal_Bool PPTConvertOCXControls::InsertControl(
+ const com::sun::star::uno::Reference<
+ com::sun::star::form::XFormComponent > &rFComp,
+ const com::sun::star::awt::Size& rSize,
+ com::sun::star::uno::Reference<
+ com::sun::star::drawing::XShape > *pShape,
+ BOOL /*bFloatingCtrl*/)
+{
+ sal_Bool bRetValue = FALSE;
+ try
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > xShape;
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > & rFormComps =
+ GetFormComps();
+
+ ::com::sun::star::uno::Any aTmp( &rFComp, ::getCppuType((const ::com::sun::star::uno::Reference<
+ com::sun::star::form::XFormComponent >*)0) );
+
+ rFormComps->insertByIndex( rFormComps->getCount(), aTmp );
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceFactory =
+ GetServiceFactory();
+ if( rServiceFactory.is() )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xCreate = rServiceFactory
+ ->createInstance(String( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.drawing.ControlShape" ) ) );
+ if( xCreate.is() )
+ {
+ xShape = ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >(xCreate, ::com::sun::star::uno::UNO_QUERY);
+ if ( xShape.is() )
+ {
+ xShape->setSize(rSize);
+// GetShapes()->add( xShape );
+ // Das Control-Model am Control-Shape setzen
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XControlShape > xControlShape( xShape,
+ ::com::sun::star::uno::UNO_QUERY );
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > xControlModel( rFComp,
+ ::com::sun::star::uno::UNO_QUERY );
+ if ( xControlShape.is() && xControlModel.is() )
+ {
+ xControlShape->setControl( xControlModel );
+ if (pShape)
+ *pShape = xShape;
+ bRetValue = TRUE;
+ }
+ }
+ }
+ }
+ }
+ catch( ... )
+ {
+ bRetValue = FALSE;
+ }
+ return bRetValue;
+};
+
+const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& PPTConvertOCXControls::GetDrawPage()
+{
+ if( !xDrawPage.is() && pDocSh )
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > xModel( pDocSh->GetModel() );
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > xDrawPages;
+ switch( ePageKind )
+ {
+ case PPT_SLIDEPAGE :
+ case PPT_NOTEPAGE :
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPagesSupplier >
+ xDrawPagesSupplier( xModel, ::com::sun::star::uno::UNO_QUERY);
+ if ( xDrawPagesSupplier.is() )
+ xDrawPages = xDrawPagesSupplier->getDrawPages();
+ }
+ break;
+
+ case PPT_MASTERPAGE :
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XMasterPagesSupplier >
+ xMasterPagesSupplier( xModel, ::com::sun::star::uno::UNO_QUERY);
+ if ( xMasterPagesSupplier.is() )
+ xDrawPages = xMasterPagesSupplier->getMasterPages();
+ }
+ break;
+ }
+ if ( xDrawPages.is() && xDrawPages->getCount() )
+ {
+ xDrawPages->getCount();
+ ::com::sun::star::uno::Any aAny( xDrawPages->getByIndex( xDrawPages->getCount() - 1 ) );
+ aAny >>= xDrawPage;
+ }
+ }
+ return xDrawPage;
+}
+
+sal_Bool SdrPowerPointOLEDecompress( SvStream& rOutput, SvStream& rInput, sal_uInt32 nInputSize )
+{
+ sal_uInt32 nOldPos = rInput.Tell();
+ char* pBuf = new char[ nInputSize ];
+ rInput.Read( pBuf, nInputSize );
+ ZCodec aZCodec( 0x8000, 0x8000 );
+ aZCodec.BeginCompression();
+ SvMemoryStream aSource( pBuf, nInputSize, STREAM_READ );
+ aZCodec.Decompress( aSource, rOutput );
+ const sal_Bool bSuccess(0L != aZCodec.EndCompression());
+ delete[] pBuf;
+ rInput.Seek( nOldPos );
+ return bSuccess;
+}
+
+// --> OD 2004-12-14 #i32596# - add new parameter <_nCalledByGroup>
+SdrObject* SdrPowerPointImport::ImportOLE( long nOLEId,
+ const Graphic& rGraf,
+ const Rectangle& rBoundRect,
+ const Rectangle& rVisArea,
+ const int /*_nCalledByGroup*/,
+ sal_Int64 /*nAspect*/ ) const
+// <--
+{
+ SdrObject* pRet = NULL;
+
+ UINT32 nOldPos = rStCtrl.Tell();
+
+ Graphic aGraphic( rGraf );
+
+ if ( ((SdrPowerPointImport*)this)->maShapeRecords.SeekToContent( rStCtrl, DFF_msofbtClientData, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ DffRecordHeader aPlaceHd;
+ while ( ( rStCtrl.GetError() == 0 )
+ && ( rStCtrl.Tell() < ((SdrPowerPointImport*)this)->maShapeRecords.Current()->GetRecEndFilePos() ) )
+ {
+ rStCtrl >> aPlaceHd;
+ if ( aPlaceHd.nRecType == PPT_PST_RecolorInfoAtom )
+ {
+ ((SdrPowerPointImport*)this)->RecolorGraphic( rStCtrl, aPlaceHd.nRecLen, aGraphic );
+ break;
+ }
+ else
+ aPlaceHd.SeekToEndOfRecord( rStCtrl );
+ }
+ }
+
+ PPTOleEntry* pOe;
+ for ( pOe = (PPTOleEntry*)((SdrPowerPointImport*)this)->aOleObjectList.First(); pOe;
+ pOe = (PPTOleEntry*)((SdrPowerPointImport*)this)->aOleObjectList.Next() )
+ {
+ if ( pOe->nId != (sal_uInt32)nOLEId )
+ continue;
+
+ rStCtrl.Seek( pOe->nRecHdOfs );
+
+ DffRecordHeader aHd;
+ rStCtrl >> aHd;
+
+ sal_uInt32 nLen = aHd.nRecLen - 4;
+ if ( (INT32)nLen > 0 )
+ {
+ sal_Bool bSuccess = sal_False;
+
+ rStCtrl.SeekRel( 4 );
+
+ ::utl::TempFile aTmpFile;
+ aTmpFile.EnableKillingFile( sal_True );
+
+ if ( aTmpFile.IsValid() )
+ {
+ SvStream* pDest = ::utl::UcbStreamHelper::CreateStream( aTmpFile.GetURL(), STREAM_TRUNC | STREAM_WRITE );
+ if ( pDest )
+ bSuccess = SdrPowerPointOLEDecompress( *pDest, rStCtrl, nLen );
+ delete pDest;
+ }
+ if ( bSuccess )
+ {
+ SvStream* pDest = ::utl::UcbStreamHelper::CreateStream( aTmpFile.GetURL(), STREAM_READ );
+ Storage* pObjStor = pDest ? new Storage( *pDest, TRUE ) : NULL;
+ if ( pObjStor )
+ {
+ SotStorageRef xObjStor( new SotStorage( pObjStor ) );
+ if ( xObjStor.Is() && !xObjStor->GetError() )
+ {
+ if ( xObjStor->GetClassName() == SvGlobalName() )
+ {
+ ClsId aId( pObjStor->GetClassId() );
+ xObjStor->SetClass( SvGlobalName( aId.n1, aId.n2, aId.n3, aId.n4, aId.n5, aId.n6, aId.n7, aId.n8, aId.n9, aId.n10, aId.n11 ),
+ pObjStor->GetFormat(), pObjStor->GetUserName() );
+ }
+ SotStorageStreamRef xSrcTst = xObjStor->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "\1Ole" ) ) );
+ if ( xSrcTst.Is() )
+ {
+ BYTE aTestA[ 10 ];
+ BOOL bGetItAsOle = ( sizeof( aTestA ) == xSrcTst->Read( aTestA, sizeof( aTestA ) ) );
+ if ( !bGetItAsOle )
+ { // maybe there is a contentsstream in here
+ xSrcTst = xObjStor->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "Contents" ) ), STREAM_READWRITE | STREAM_NOCREATE );
+ bGetItAsOle = ( xSrcTst.Is() && sizeof( aTestA ) == xSrcTst->Read( aTestA, sizeof( aTestA ) ) );
+ }
+ if ( bGetItAsOle )
+ {
+ ::rtl::OUString aNm;
+ // if ( nSvxMSDffOLEConvFlags )
+ {
+ uno::Reference < embed::XStorage > xDestStorage( pOe->pShell->GetStorage() );
+ uno::Reference < embed::XEmbeddedObject > xObj =
+ CheckForConvertToSOObj( nSvxMSDffOLEConvFlags, *xObjStor, xDestStorage, rGraf, rVisArea );
+ if( xObj.is() )
+ {
+ pOe->pShell->getEmbeddedObjectContainer().InsertEmbeddedObject( xObj, aNm );
+
+ svt::EmbeddedObjectRef aObj( xObj, pOe->nAspect );
+
+ // TODO/LATER: need MediaType for Graphic
+ aObj.SetGraphic( rGraf, ::rtl::OUString() );
+ pRet = new SdrOle2Obj( aObj, aNm, rBoundRect, FALSE );
+ }
+ }
+ if ( !pRet && ( pOe->nType == PPT_PST_ExControl ) )
+ {
+ PPTConvertOCXControls aPPTConvertOCXControls( pOe->pShell, eAktPageKind );
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > xShape;
+ if ( aPPTConvertOCXControls.ReadOCXStream( xObjStor, &xShape, FALSE ) )
+ pRet = GetSdrObjectFromXShape( xShape );
+ }
+ if ( !pRet )
+ {
+ aNm = pOe->pShell->getEmbeddedObjectContainer().CreateUniqueObjectName();
+ ErrCode aErrCode = 0;
+
+ // object is not an own object
+ SotStorageRef xTarget = SotStorage::OpenOLEStorage( pOe->pShell->GetStorage(), aNm, STREAM_READWRITE );
+ if ( xObjStor.Is() && xTarget.Is() )
+ {
+ xObjStor->CopyTo( xTarget );
+ if( !xTarget->GetError() )
+ xTarget->Commit();
+ if( xTarget->GetError() )
+ aErrCode = xTarget->GetError();
+ }
+ xTarget.Clear();
+
+ uno::Reference < embed::XEmbeddedObject > xObj =
+ pOe->pShell->getEmbeddedObjectContainer().GetEmbeddedObject( aNm );
+ if ( xObj.is() )
+ {
+ if ( pOe->nAspect != embed::Aspects::MSOLE_ICON )
+ {
+ //TODO/LATER: keep on hacking?!
+ // modifiziert wollen wir nicht werden
+ //xInplaceObj->EnableSetModified( FALSE );
+ if ( rVisArea.IsEmpty() )
+ {
+ MapUnit aMapUnit = VCLUnoHelper::UnoEmbed2VCLMapUnit( xObj->getMapUnit( pOe->nAspect ) );
+ Size aSize( OutputDevice::LogicToLogic( aGraphic.GetPrefSize(),
+ aGraphic.GetPrefMapMode(), MapMode( aMapUnit ) ) );
+
+ awt::Size aSz;
+ aSz.Width = aSize.Width();
+ aSz.Height = aSize.Height();
+ xObj->setVisualAreaSize( pOe->nAspect, aSz );
+ }
+ else
+ {
+ awt::Size aSize( rVisArea.GetSize().Width(), rVisArea.GetSize().Height() );
+ xObj->setVisualAreaSize( pOe->nAspect, aSize );
+ }
+ //xInplaceObj->EnableSetModified( TRUE );
+ }
+
+ svt::EmbeddedObjectRef aObj( xObj, pOe->nAspect );
+
+ // TODO/LATER: need MediaType for Graphic
+ aObj.SetGraphic( aGraphic, ::rtl::OUString() );
+
+ pRet = new SdrOle2Obj( aObj, aNm, rBoundRect, FALSE );
+ }
+ }
+ }
+ }
+ }
+ }
+ delete pDest;
+ }
+ }
+ }
+ rStCtrl.Seek( nOldPos );
+
+ return pRet;
+}
+
+SvMemoryStream* SdrPowerPointImport::ImportExOleObjStg( UINT32 nPersistPtr, UINT32& nOleId ) const
+{
+ SvMemoryStream* pRet = NULL;
+ if ( nPersistPtr && ( nPersistPtr < nPersistPtrAnz ) )
+ {
+ UINT32 nOldPos, nOfs = pPersistPtr[ nPersistPtr ];
+ nOldPos = rStCtrl.Tell();
+ rStCtrl.Seek( nOfs );
+ DffRecordHeader aHd;
+ rStCtrl >> aHd;
+ if ( aHd.nRecType == DFF_PST_ExOleObjStg )
+ {
+ UINT32 nLen = aHd.nRecLen - 4;
+ if ( (INT32)nLen > 0 )
+ {
+ rStCtrl >> nOleId;
+ pRet = new SvMemoryStream;
+ ZCodec aZCodec( 0x8000, 0x8000 );
+ aZCodec.BeginCompression();
+ aZCodec.Decompress( rStCtrl, *pRet );
+ if ( !aZCodec.EndCompression() )
+ delete pRet, pRet = NULL;
+ }
+ }
+ rStCtrl.Seek( nOldPos );
+ }
+ return pRet;
+}
+
+void SdrPowerPointImport::SeekOle( SfxObjectShell* pShell, sal_uInt32 nFilterOptions )
+{
+ if ( pShell )
+ {
+ DffRecordHeader* pHd;
+
+ UINT32 nOldPos = rStCtrl.Tell();
+ if ( nFilterOptions & 1 )
+ {
+ pHd = aDocRecManager.GetRecordHeader( PPT_PST_List, SEEK_FROM_BEGINNING );
+ if ( pHd )
+ {
+ // we try to locate the basic atom
+ pHd->SeekToContent( rStCtrl );
+ if ( SeekToRec( rStCtrl, PPT_PST_VBAInfo, pHd->GetRecEndFilePos(), pHd ) )
+ {
+ if ( SeekToRec( rStCtrl, PPT_PST_VBAInfoAtom, pHd->GetRecEndFilePos(), pHd ) )
+ {
+ UINT32 nPersistPtr, nIDoNotKnow1, nIDoNotKnow2;
+ rStCtrl >> nPersistPtr
+ >> nIDoNotKnow1
+ >> nIDoNotKnow2;
+
+ UINT32 nOleId;
+ SvMemoryStream* pBas = ImportExOleObjStg( nPersistPtr, nOleId );
+ if ( pBas )
+ {
+ SotStorageRef xSource( new SotStorage( pBas, TRUE ) );
+ SotStorageRef xDest( new SotStorage( new SvMemoryStream(), TRUE ) );
+ if ( xSource.Is() && xDest.Is() )
+ {
+ // is this a visual basic storage ?
+ SotStorageRef xSubStorage = xSource->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM( "VBA" ) ),
+ STREAM_READWRITE | STREAM_NOCREATE | STREAM_SHARE_DENYALL );
+ if( xSubStorage.Is() && ( SVSTREAM_OK == xSubStorage->GetError() ) )
+ {
+ SotStorageRef xMacros = xDest->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM( "MACROS" ) ) );
+ if ( xMacros.Is() )
+ {
+ SvStorageInfoList aList;
+ xSource->FillInfoList( &aList );
+ UINT32 i;
+
+ BOOL bCopied = TRUE;
+ for ( i = 0; i < aList.Count(); i++ ) // copy all entrys
+ {
+ const SvStorageInfo& rInfo = aList[ i ];
+ if ( !xSource->CopyTo( rInfo.GetName(), xMacros, rInfo.GetName() ) )
+ bCopied = FALSE;
+ }
+ if ( i && bCopied )
+ {
+ SvxImportMSVBasic aMSVBas( *pShell, *xDest, TRUE, FALSE );
+ //int nSuccess = aMSVBas.Import( String( RTL_CONSTASCII_USTRINGPARAM( "MACROS" ) ),
+ // String( RTL_CONSTASCII_USTRINGPARAM( "VBA" ) ), TRUE, FALSE );
+
+ uno::Reference < embed::XStorage > xDoc( pShell->GetStorage() );
+ if ( xDoc.is() )
+ {
+ SotStorageRef xVBA = SotStorage::OpenOLEStorage( xDoc, String( RTL_CONSTASCII_USTRINGPARAM( "_MS_VBA_Macros" ) ) );
+ if ( xVBA.Is() && ( xVBA->GetError() == SVSTREAM_OK ) )
+ {
+ SotStorageRef xSubVBA = xVBA->OpenSotStorage( String( RTL_CONSTASCII_USTRINGPARAM( "_MS_VBA_Overhead" ) ) );
+ if ( xSubVBA.Is() && ( xSubVBA->GetError() == SVSTREAM_OK ) )
+ {
+ SotStorageStreamRef xOriginal = xSubVBA->OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "_MS_VBA_Overhead2" ) ) );
+ if ( xOriginal.Is() && ( xOriginal->GetError() == SVSTREAM_OK ) )
+ {
+ if ( nPersistPtr && ( nPersistPtr < nPersistPtrAnz ) )
+ {
+ rStCtrl.Seek( pPersistPtr[ nPersistPtr ] );
+ rStCtrl >> *pHd;
+
+ *xOriginal << nIDoNotKnow1
+ << nIDoNotKnow2;
+
+ UINT32 nSource, nToCopy, nBufSize;
+ nSource = rStCtrl.Tell();
+ nToCopy = pHd->nRecLen;
+ BYTE* pBuf = new BYTE[ 0x40000 ]; // 256KB Buffer
+ if ( pBuf )
+ {
+ while ( nToCopy )
+ {
+ nBufSize = ( nToCopy >= 0x40000 ) ? 0x40000 : nToCopy;
+ rStCtrl.Read( pBuf, nBufSize );
+ xOriginal->Write( pBuf, nBufSize );
+ nToCopy -= nBufSize;
+ }
+ delete[] pBuf;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ pHd = aDocRecManager.GetRecordHeader( PPT_PST_ExObjList, SEEK_FROM_BEGINNING );
+ if ( pHd )
+ {
+ DffRecordManager* pExObjListManager = NULL;
+ DffRecordHeader* pExEmbed = NULL;
+
+ pHd->SeekToBegOfRecord( rStCtrl );
+ pExObjListManager = new DffRecordManager( rStCtrl );
+ sal_uInt16 i, nRecType(PPT_PST_ExEmbed);
+
+ for ( i = 0; i < 2; i++ )
+ {
+ switch ( i )
+ {
+ case 0 : nRecType = PPT_PST_ExEmbed; break;
+ case 1 : nRecType = PPT_PST_ExControl; break;
+ }
+ for ( pExEmbed = pExObjListManager->GetRecordHeader( nRecType, SEEK_FROM_BEGINNING );
+ pExEmbed; pExEmbed = pExObjListManager->GetRecordHeader( nRecType, SEEK_FROM_CURRENT ) )
+ {
+ pExEmbed->SeekToContent( rStCtrl );
+
+ DffRecordHeader aExOleAtHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_ExOleObjAtom, pExEmbed->GetRecEndFilePos(), &aExOleAtHd ) )
+ {
+ PptExOleObjAtom aAt;
+ rStCtrl >> aAt;
+
+ if ( aAt.nPersistPtr && ( aAt.nPersistPtr < nPersistPtrAnz ) )
+ {
+ UINT32 nId;
+ rStCtrl.Seek( pPersistPtr[ aAt.nPersistPtr ] );
+ DffRecordHeader aHd;
+ rStCtrl >> aHd;
+ if ( aHd.nRecType == DFF_PST_ExOleObjStg )
+ {
+ rStCtrl >> nId;
+ aOleObjectList.Insert(
+ new PPTOleEntry( aAt.nId, aHd.nFilePos, pShell, nRecType, aAt.nAspect ) );
+ }
+ }
+ }
+ }
+ }
+ delete pExObjListManager;
+ }
+ rStCtrl.Seek( nOldPos );
+ }
+}
+
+sal_Bool SdrPowerPointImport::ReadFontCollection()
+{
+ sal_Bool bRet = FALSE;
+ DffRecordHeader* pEnvHd = aDocRecManager.GetRecordHeader( PPT_PST_Environment );
+ if ( pEnvHd )
+ {
+ ULONG nFPosMerk = rStCtrl.Tell(); // FilePos merken fuer spaetere Restauration
+ pEnvHd->SeekToContent( rStCtrl );
+ DffRecordHeader aListHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_FontCollection, pEnvHd->GetRecEndFilePos(), &aListHd ) )
+ {
+ sal_uInt16 nCount2 = 0;
+ VirtualDevice* pVDev = NULL;
+ while ( SeekToRec( rStCtrl, PPT_PST_FontEntityAtom, aListHd.GetRecEndFilePos() ) )
+ {
+ bRet = TRUE;
+ if ( !pFonts )
+ pFonts = new PptFontCollection;
+ PptFontEntityAtom* pFont = new PptFontEntityAtom;
+ rStCtrl >> *pFont;
+
+ Font aFont;
+ aFont.SetCharSet( pFont->eCharSet );
+ aFont.SetName( pFont->aName );
+ aFont.SetFamily( pFont->eFamily );
+ aFont.SetPitch( pFont->ePitch );
+ aFont.SetHeight( 100 );
+
+ if ( mbTracing && !pFont->bAvailable )
+ mpTracer->Trace( rtl::OUString::createFromAscii( "sd1000" ), pFont->aName );
+
+#ifdef DBG_EXTRACTFONTMETRICS
+
+ SvxFont aTmpFont( aFont );
+
+ if ( !pVDev )
+ pVDev = new VirtualDevice;
+ aTmpFont.SetPhysFont( pVDev );
+ FontMetric aMetric( pVDev->GetFontMetric() );
+ sal_uInt16 nTxtHeight = (sal_uInt16)aMetric.GetAscent() + (sal_uInt16)aMetric.GetDescent();
+
+ String aFileURLStr;
+ if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( Application::GetAppFileName(), aFileURLStr ) )
+ {
+ INetURLObject aURL( aFileURLStr );
+ aURL.SetName( String( RTL_CONSTASCII_STRINGPARAM( "dbgfontmetrics.txt" ) ) );
+
+ SvStream* pDbgOut = ::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_WRITE );
+ if( pDbgOut )
+ {
+ pDbgOut->Seek( STREAM_SEEK_TO_END );
+
+ Printer* pPrinter = NULL;
+ if ( pSdrModel->GetRefDevice() && pSdrModel->GetRefDevice()->GetOutDevType() == OUTDEV_PRINTER )
+ pPrinter = (Printer*)pSdrModel->GetRefDevice();
+ if ( pPrinter )
+ {
+ Font aOldFont( pPrinter->GetFont() );
+ aFont.SetKerning( TRUE );
+ pPrinter->SetFont( aFont );
+ aMetric = pPrinter->GetFontMetric();
+ pPrinter->SetFont( aOldFont );
+ }
+
+ if ( ( pPrinter == NULL ) || ( aMetric.GetIntLeading() == 0 ) )
+ {
+ VirtualDevice aVirDev( 1 );
+ aVirDev.SetFont( aFont );
+ aMetric = aVirDev.GetFontMetric();
+ }
+ ByteString aFontName( aFont.GetName(), RTL_TEXTENCODING_UTF8 );
+ ByteString aHeight( ByteString::CreateFromInt32( aMetric.GetLineHeight() ) );
+ ByteString aAscent( ByteString::CreateFromInt32( aMetric.GetAscent() ) );
+ ByteString aDescent( ByteString::CreateFromInt32( aMetric.GetDescent() ) );
+ ByteString aLeading( ByteString::CreateFromInt32( aMetric.GetIntLeading() ) );
+ ByteString aPhysHeight( ByteString::CreateFromInt32( nTxtHeight ) );
+
+ *pDbgOut << (sal_uInt8)0xa
+ << "FontName : " << aFontName.GetBuffer() << (sal_uInt8)0xa
+ << " Height: " << aHeight.GetBuffer() << (sal_uInt8)0xa
+ << " Ascent: " << aAscent.GetBuffer() << (sal_uInt8)0xa
+ << " Descent:" << aDescent.GetBuffer() << (sal_uInt8)0xa
+ << " Leading:" << aLeading.GetBuffer() << (sal_uInt8)0xa
+ << "PhysHeight :" << aPhysHeight.GetBuffer()<< (sal_uInt8)0xa;
+ }
+ delete pDbgOut;
+ }
+#endif
+ // following block is necessary, because our old PowerPoint export did not set the
+ // correct charset
+ if ( pFont->aName.EqualsIgnoreCaseAscii( "Wingdings" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "Wingdings 2" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "Wingdings 3" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "Monotype Sorts" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "Monotype Sorts 2" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "Webdings" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "StarBats" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "StarMath" ) ||
+ pFont->aName.EqualsIgnoreCaseAscii( "ZapfDingbats" ) )
+ {
+ pFont->eCharSet = RTL_TEXTENCODING_SYMBOL;
+ };
+ pFonts->C40_INSERT( PptFontEntityAtom, pFont, nCount2++ );
+ }
+ delete pVDev;
+ }
+ rStCtrl.Seek( nFPosMerk ); // FilePos restaurieren
+ }
+ return bRet;
+}
+
+PptSlidePersistList* SdrPowerPointImport::GetPageList(PptPageKind ePageKind) const
+{
+ if ( ePageKind == PPT_MASTERPAGE )
+ return pMasterPages;
+ if ( ePageKind == PPT_SLIDEPAGE )
+ return pSlidePages;
+ if ( ePageKind == PPT_NOTEPAGE )
+ return pNotePages;
+ return NULL;
+}
+
+SdrOutliner* SdrPowerPointImport::GetDrawOutliner( SdrTextObj* pSdrText ) const
+{
+ if ( !pSdrText )
+ return NULL;
+ else
+ return &pSdrText->ImpGetDrawOutliner();
+}
+
+
+SdrObject* SdrPowerPointImport::ReadObjText( PPTTextObj* pTextObj, SdrObject* pSdrObj, SdPage* pPage ) const
+{
+ SdrTextObj* pText = PTR_CAST( SdrTextObj, pSdrObj );
+ if ( pText )
+ {
+ if ( !ApplyTextObj( pTextObj, pText, pPage, NULL, NULL ) )
+ pSdrObj = NULL;
+ }
+ return pSdrObj;
+}
+
+
+SdrObject* SdrPowerPointImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pSdrText, SdPage* /*pPage*/,
+ SfxStyleSheet* pSheet, SfxStyleSheet** ppStyleSheetAry ) const
+{
+ SdrTextObj* pText = pSdrText;
+ if ( pTextObj->Count() )
+ {
+ UINT32 nDestinationInstance = pTextObj->GetDestinationInstance() ;
+ SdrOutliner& rOutliner = pText->ImpGetDrawOutliner();
+ if ( ( pText->GetObjInventor() == SdrInventor ) && ( pText->GetObjIdentifier() == OBJ_TITLETEXT ) ) // Outliner-Style fuer Titel-Textobjekt?!? (->von DL)
+ rOutliner.Init( OUTLINERMODE_TITLEOBJECT ); // Outliner reset
+
+ BOOL bOldUpdateMode = rOutliner.GetUpdateMode();
+ rOutliner.SetUpdateMode( FALSE );
+ if ( pSheet )
+ {
+ if ( rOutliner.GetStyleSheet( 0 ) != pSheet )
+ rOutliner.SetStyleSheet( 0, pSheet );
+ }
+ rOutliner.SetVertical( pTextObj->GetVertical() );
+ sal_Int16 nLastStartNumbering = -1;
+ const PPTParagraphObj* pPreviousParagraph = NULL;
+ for ( PPTParagraphObj* pPara = pTextObj->First(); pPara; pPara = pTextObj->Next() )
+ {
+ UINT32 nTextSize = pPara->GetTextSize();
+ if ( ! ( nTextSize & 0xffff0000 ) )
+ {
+ PPTPortionObj* pPortion;
+ sal_Unicode* pParaText = new sal_Unicode[ nTextSize ];
+ UINT32 nCurrentIndex = 0;
+ for ( pPortion = pPara->First(); pPortion; pPortion = pPara->Next() )
+ {
+ if ( pPortion->mpFieldItem )
+ pParaText[ nCurrentIndex++ ] = ' ';
+ else
+ {
+ sal_uInt32 nCharacters = pPortion->Count();
+ const sal_Unicode* pSource = pPortion->maString.GetBuffer();
+ sal_Unicode* pDest = pParaText + nCurrentIndex;
+
+ sal_uInt32 nFont;
+ pPortion->GetAttrib( PPT_CharAttr_Font, nFont, pTextObj->GetInstance() );
+ PptFontEntityAtom* pFontEnityAtom = GetFontEnityAtom( nFont );
+ if ( pFontEnityAtom && ( pFontEnityAtom->eCharSet == RTL_TEXTENCODING_SYMBOL ) )
+ {
+ sal_uInt32 i;
+ sal_Unicode nUnicode;
+ for ( i = 0; i < nCharacters; i++ )
+ {
+ nUnicode = pSource[ i ];
+ if ( ! ( nUnicode & 0xff00 ) )
+ nUnicode |= 0xf000;
+ pDest[ i ] = nUnicode;
+ }
+ }
+ else
+ memcpy( pDest, pSource, nCharacters << 1 );
+ nCurrentIndex += nCharacters;
+ }
+ }
+ sal_uInt16 nParaIndex = (UINT16)pTextObj->GetCurrentIndex();
+ SfxStyleSheet* pS = ( ppStyleSheetAry ) ? ppStyleSheetAry[ pPara->pParaSet->mnDepth ] : pSheet;
+
+ ESelection aSelection( nParaIndex, 0, nParaIndex, 0 );
+ rOutliner.Insert( String(), nParaIndex, pPara->pParaSet->mnDepth );
+ rOutliner.QuickInsertText( String( pParaText, (UINT16)nCurrentIndex ), aSelection );
+ rOutliner.SetParaAttribs( nParaIndex, rOutliner.GetEmptyItemSet() );
+ if ( pS )
+ rOutliner.SetStyleSheet( nParaIndex, pS );
+
+ for ( pPortion = pPara->First(); pPortion; pPortion = pPara->Next() )
+ {
+ SfxItemSet aPortionAttribs( rOutliner.GetEmptyItemSet() );
+ SvxFieldItem* pFieldItem = pPortion->GetTextField();
+ if ( pFieldItem )
+ {
+ rOutliner.QuickInsertField( *pFieldItem, ESelection( nParaIndex, aSelection.nEndPos, nParaIndex, aSelection.nEndPos + 1 ) );
+ aSelection.nEndPos++;
+ delete pFieldItem;
+ }
+ else
+ {
+ const sal_Unicode *pF, *pPtr = pPortion->maString.GetBuffer();
+ const sal_Unicode *pMax = pPtr + pPortion->maString.Len();
+ sal_Int32 nLen;
+ for ( pF = pPtr; pPtr < pMax; pPtr++ )
+ {
+ if ( *pPtr == 0xb )
+ {
+ nLen = pPtr - pF;
+ if ( nLen )
+ aSelection.nEndPos =
+ sal::static_int_cast< USHORT >(
+ aSelection.nEndPos + nLen );
+ pF = pPtr + 1;
+ rOutliner.QuickInsertLineBreak( ESelection( nParaIndex, aSelection.nEndPos, nParaIndex, aSelection.nEndPos + 1 ) );
+ aSelection.nEndPos++;
+ }
+ }
+ nLen = pPtr - pF;
+ if ( nLen )
+ aSelection.nEndPos = sal::static_int_cast< USHORT >(
+ aSelection.nEndPos + nLen );
+ }
+ pPortion->ApplyTo( aPortionAttribs, (SdrPowerPointImport&)*this, nDestinationInstance, pTextObj );
+ rOutliner.QuickSetAttribs( aPortionAttribs, aSelection );
+ aSelection.nStartPos = aSelection.nEndPos;
+ }
+ boost::optional< sal_Int16 > oStartNumbering;
+ SfxItemSet aParagraphAttribs( rOutliner.GetEmptyItemSet() );
+ pPara->ApplyTo( aParagraphAttribs, oStartNumbering, (SdrPowerPointImport&)*this, nDestinationInstance, pPreviousParagraph );
+
+ UINT32 nIsBullet2 = 0; //, nInstance = nDestinationInstance != 0xffffffff ? nDestinationInstance : pTextObj->GetInstance();
+ pPara->GetAttrib( PPT_ParaAttr_BulletOn, nIsBullet2, nDestinationInstance );
+ if ( !nIsBullet2 )
+ aParagraphAttribs.Put( SfxBoolItem( EE_PARA_BULLETSTATE, FALSE ) );
+
+ if ( oStartNumbering )
+ {
+ if ( *oStartNumbering != nLastStartNumbering )
+ rOutliner.SetNumberingStartValue( nParaIndex, *oStartNumbering );
+ else
+ rOutliner.SetNumberingStartValue( nParaIndex, -1 );
+ nLastStartNumbering = *oStartNumbering;
+ }
+ else
+ {
+ nLastStartNumbering = -1;
+ rOutliner.SetNumberingStartValue( nParaIndex, nLastStartNumbering );
+ }
+
+ pPreviousParagraph = pPara;
+ if ( !aSelection.nStartPos ) // in PPT empty paragraphs never gets a bullet
+ {
+ aParagraphAttribs.Put( SfxBoolItem( EE_PARA_BULLETSTATE, FALSE ) );
+// rOutliner.SetDepth( rOutliner.GetParagraph( nParaIndex ), -1 );
+ }
+ aSelection.nStartPos = 0;
+ rOutliner.QuickSetAttribs( aParagraphAttribs, aSelection );
+ delete[] pParaText;
+ }
+ }
+ OutlinerParaObject* pNewText = rOutliner.CreateParaObject();
+ rOutliner.Clear();
+ rOutliner.SetUpdateMode( bOldUpdateMode );
+ pText->SetOutlinerParaObject( pNewText );
+ }
+ return pText;
+}
+
+sal_Bool SdrPowerPointImport::SeekToDocument( DffRecordHeader* pRecHd ) const
+{
+ sal_Bool bRet;
+ ULONG nFPosMerk = rStCtrl.Tell(); // FilePos merken fuer ggf. spaetere Restauration
+ rStCtrl.Seek( nDocStreamPos );
+ DffRecordHeader aDocHd;
+ rStCtrl >> aDocHd;
+ bRet = aDocHd.nRecType == PPT_PST_Document;
+ if ( bRet )
+ {
+ if ( pRecHd )
+ *pRecHd = aDocHd;
+ else
+ aDocHd.SeekToBegOfRecord( rStCtrl );
+ }
+ if ( !bRet )
+ rStCtrl.Seek( nFPosMerk ); // FilePos restaurieren
+ return bRet;
+}
+
+sal_Bool SdrPowerPointImport::SeekToContentOfProgTag( sal_Int32 nVersion, SvStream& rSt,
+ const DffRecordHeader& rSourceHd, DffRecordHeader& rContentHd )
+{
+ sal_Bool bRetValue = sal_False;
+ sal_uInt32 nOldPos = rSt.Tell();
+
+ DffRecordHeader aProgTagsHd, aProgTagBinaryDataHd;
+ rSourceHd.SeekToContent( rSt );
+ sal_Bool bFound = rSourceHd.nRecType == PPT_PST_ProgTags;
+ if ( !bFound )
+ bFound = SeekToRec( rSt, PPT_PST_ProgTags, rSourceHd.GetRecEndFilePos(), &aProgTagsHd );
+ if ( bFound )
+ {
+ while( SeekToRec( rSt, PPT_PST_ProgBinaryTag, aProgTagsHd.GetRecEndFilePos(), &aProgTagBinaryDataHd ) )
+ {
+ rSt >> rContentHd;
+ if ( rContentHd.nRecType == PPT_PST_CString )
+ {
+ sal_uInt16 n = 6;
+ sal_uInt32 i = rContentHd.nRecLen >> 1;
+ if ( i > n )
+ {
+ String aPre, aSuf;
+ sal_Unicode *pTmp = aPre.AllocBuffer( n );
+ while ( n-- )
+ rSt >> *pTmp++;
+ n = (sal_uInt16)( i - 6 );
+ pTmp = aSuf.AllocBuffer( n );
+ while ( n-- )
+ rSt >> *pTmp++;
+ sal_Int32 nV = aSuf.ToInt32();
+ if ( ( nV == nVersion ) && ( aPre == String( RTL_CONSTASCII_USTRINGPARAM( "___PPT" ) ) ) )
+ {
+ rContentHd.SeekToEndOfRecord( rSt );
+ rSt >> rContentHd;
+ if ( rContentHd.nRecType == PPT_PST_BinaryTagData )
+ {
+ bRetValue = sal_True;
+ break;
+ }
+ }
+ }
+ }
+ aProgTagBinaryDataHd.SeekToEndOfRecord( rSt );
+ }
+ }
+ if ( !bRetValue )
+ rSt.Seek( nOldPos );
+ return bRetValue;
+}
+
+UINT32 SdrPowerPointImport::GetAktPageId()
+{
+ PptSlidePersistList* pList = GetPageList( eAktPageKind );
+ if ( pList && nAktPageNum < pList->Count() )
+ return (*pList)[ (USHORT)nAktPageNum ]->aPersistAtom.nSlideId;
+ return 0;
+}
+
+sal_Bool SdrPowerPointImport::SeekToAktPage( DffRecordHeader* pRecHd ) const
+{
+ sal_Bool bRet = FALSE;
+ PptSlidePersistList* pList = GetPageList( eAktPageKind );
+ if ( pList && ( nAktPageNum < pList->Count() ) )
+ {
+ ULONG nPersist = (*pList)[ (USHORT)nAktPageNum ]->aPersistAtom.nPsrReference;
+ if ( nPersist > 0 && nPersist < nPersistPtrAnz )
+ {
+ ULONG nFPos = 0;
+ nFPos = pPersistPtr[ nPersist ];
+ if ( nFPos < nStreamLen )
+ {
+ rStCtrl.Seek( nFPos );
+ if ( pRecHd )
+ rStCtrl >> *pRecHd;
+ bRet = TRUE;
+ }
+ }
+ }
+ return bRet;
+}
+
+USHORT SdrPowerPointImport::GetPageCount( PptPageKind ePageKind ) const
+{
+ PptSlidePersistList* pList = GetPageList( ePageKind );
+ if ( pList )
+ return pList->Count();
+ return 0;
+}
+
+void SdrPowerPointImport::SetPageNum( sal_uInt16 nPageNum, PptPageKind eKind )
+{
+ eAktPageKind = eKind;
+ nAktPageNum = nPageNum;
+
+ pPPTStyleSheet = NULL;
+
+ sal_Bool bHasMasterPage = sal_True;
+ sal_uInt16 nMasterIndex = 0;
+
+ if ( eKind == PPT_MASTERPAGE )
+ nMasterIndex = nPageNum;
+ else
+ {
+ if ( HasMasterPage( nPageNum, eKind ) )
+ nMasterIndex = GetMasterPageIndex( nPageNum, eKind );
+ else
+ bHasMasterPage = sal_False;
+ }
+ if ( bHasMasterPage )
+ {
+ PptSlidePersistList* pPageList = GetPageList( PPT_MASTERPAGE );
+ if ( pPageList && nMasterIndex < pPageList->Count() )
+ {
+ PptSlidePersistEntry* pMasterPersist = (*pPageList)[ nMasterIndex ];
+ if ( ( pMasterPersist->pStyleSheet == NULL ) && pMasterPersist->aSlideAtom.nMasterId )
+ {
+ nMasterIndex = pMasterPages->FindPage( pMasterPersist->aSlideAtom.nMasterId );
+ if ( nMasterIndex != PPTSLIDEPERSIST_ENTRY_NOTFOUND )
+ pMasterPersist = (*pPageList)[ nMasterIndex ];
+ }
+ pPPTStyleSheet = pMasterPersist->pStyleSheet;
+ }
+ }
+ if ( !pPPTStyleSheet )
+ pPPTStyleSheet = pDefaultSheet;
+}
+
+Size SdrPowerPointImport::GetPageSize() const
+{
+ Size aRet( IsNoteOrHandout( nAktPageNum, eAktPageKind ) ? aDocAtom.GetNotesPageSize() : aDocAtom.GetSlidesPageSize() );
+ Scale( aRet );
+ // PPT arbeitet nur mit Einheiten zu 576DPI. Um Ungenauigkeiten zu
+ // vermeiden runde ich die letzte Nachkommastelle metrisch weg.
+ if ( nMapMul > 2 * nMapDiv )
+ {
+ MapUnit eMap = pSdrModel->GetScaleUnit();
+ bool bInch = IsInch( eMap );
+ long nInchMul = 1, nInchDiv = 1;
+ if ( bInch )
+ { // Size temporaer (zum runden) in nach metric konvertieren
+ Fraction aFact(GetMapFactor(eMap,MAP_100TH_MM).X());
+ nInchMul = aFact.GetNumerator();
+ nInchDiv = aFact.GetDenominator();
+ aRet.Width() = BigMulDiv( aRet.Width(), nInchMul, nInchDiv );
+ aRet.Height() = BigMulDiv( aRet.Height(), nInchMul, nInchDiv );
+ }
+ aRet.Width() += 5; aRet.Width() /= 10; aRet.Width()*=10;
+ aRet.Height() += 5; aRet.Height() /= 10; aRet.Height()*=10;
+ if ( bInch )
+ {
+ aRet.Width() = BigMulDiv( aRet.Width(), nInchDiv, nInchMul );
+ aRet.Height() = BigMulDiv( aRet.Height(), nInchDiv, nInchMul );
+ }
+ }
+ return aRet;
+}
+
+FASTBOOL SdrPowerPointImport::GetColorFromPalette( USHORT nNum, Color& rColor ) const
+{
+ if ( nPageColorsNum != nAktPageNum || ePageColorsKind != eAktPageKind )
+ {
+ UINT16 nSlideFlags = 0;
+ PptSlidePersistList* pPageList = GetPageList( eAktPageKind );
+ if ( pPageList && ( nAktPageNum < pPageList->Count() ) )
+ {
+ PptSlidePersistEntry* pE = (*pPageList)[ nAktPageNum ];
+ if ( pE )
+ nSlideFlags = pE->aSlideAtom.nFlags;
+ if ( ! ( nSlideFlags & 2 ) )
+ ((SdrPowerPointImport*)this)->aPageColors = pE->aColorScheme;
+ }
+ if ( nSlideFlags & 2 ) // follow master colorscheme ?
+ {
+ PptSlidePersistList* pPageList2 = GetPageList( PPT_MASTERPAGE );
+ if ( pPageList2 )
+ {
+ PptSlidePersistEntry* pMasterPersist = NULL;
+ if ( eAktPageKind == PPT_MASTERPAGE )
+ pMasterPersist = (*pPageList2)[ nAktPageNum ];
+ else
+ {
+ if ( HasMasterPage( nAktPageNum, eAktPageKind ) )
+ {
+ sal_uInt16 nMasterNum = GetMasterPageIndex( nAktPageNum, eAktPageKind );
+ if ( nMasterNum < pPageList2->Count() )
+ pMasterPersist = (*pPageList2)[ nMasterNum ];
+ }
+ }
+ if ( pMasterPersist )
+ {
+ while( ( pMasterPersist && pMasterPersist->aSlideAtom.nFlags & 2 ) // it is possible that a masterpage
+ && pMasterPersist->aSlideAtom.nMasterId ) // itself is following a master colorscheme
+ {
+ sal_uInt16 nNextMaster = pMasterPages->FindPage( pMasterPersist->aSlideAtom.nMasterId );
+ if ( nNextMaster == PPTSLIDEPERSIST_ENTRY_NOTFOUND )
+ break;
+ else
+ pMasterPersist = (*pPageList2)[ nNextMaster ];
+ }
+ ((SdrPowerPointImport*)this)->aPageColors = pMasterPersist->aColorScheme;
+ }
+ }
+ }
+ // momentanes Farbschema eintragen
+ ((SdrPowerPointImport*)this)->nPageColorsNum = nAktPageNum;
+ ((SdrPowerPointImport*)this)->ePageColorsKind = eAktPageKind;
+ }
+ rColor = aPageColors.GetColor( nNum );
+ return TRUE;
+}
+
+BOOL SdrPowerPointImport::SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const
+{
+ BOOL bRet = SvxMSDffManager::SeekToShape( rSt, pClientData, nId );
+ if ( !bRet )
+ {
+ ProcessData& rData = *( (ProcessData*)pClientData );
+ PptSlidePersistEntry& rPersistEntry = rData.rPersistEntry;
+ if ( rPersistEntry.ePageKind == PPT_SLIDEPAGE )
+ {
+ if ( HasMasterPage( nAktPageNum, eAktPageKind ) )
+ {
+ USHORT nMasterNum = GetMasterPageIndex( nAktPageNum, eAktPageKind );
+ PptSlidePersistList* pPageList = GetPageList( PPT_MASTERPAGE );
+ if ( pPageList && ( nMasterNum < pPageList->Count() ) )
+ {
+ PptSlidePersistEntry* pPersist = (*pPageList)[ nMasterNum ]; // get the masterpage's persistentry
+ if ( pPersist && pPersist->pPresentationObjects )
+ {
+ UINT32 nCurrent(0L);
+ DffRecordList* pCList = maShapeRecords.pCList; // we got a backup of the current position
+ if ( pCList )
+ nCurrent = pCList->nCurrent;
+ if ( ((SdrEscherImport*)this )->maShapeRecords.SeekToContent( rSt, DFF_msofbtClientData, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ UINT32 nStreamPos = rSt.Tell();
+ PPTTextObj aTextObj( rSt, (SdrPowerPointImport&)*this, rPersistEntry, NULL );
+ if ( aTextObj.Count() || aTextObj.GetOEPlaceHolderAtom() )
+ {
+ UINT32 nShapePos = 0;
+ switch ( aTextObj.GetInstance() )
+ {
+ case TSS_TYPE_TITLE :
+ nShapePos = pPersist->pPresentationObjects[ TSS_TYPE_PAGETITLE ];
+ break;
+ case TSS_TYPE_PAGETITLE :
+ nShapePos = pPersist->pPresentationObjects[ TSS_TYPE_PAGETITLE ];
+ break;
+ case TSS_TYPE_SUBTITLE :
+ case TSS_TYPE_HALFBODY :
+ case TSS_TYPE_QUARTERBODY :
+ case TSS_TYPE_BODY :
+ nShapePos = pPersist->pPresentationObjects[ TSS_TYPE_BODY ];
+ break;
+// case TSS_TYPE_NOTES :
+// case TSS_TYPE_UNUSED :
+// case TSS_TYPE_TEXT_IN_SHAPE :
+ }
+ if ( nShapePos )
+ {
+ rSt.Seek( nShapePos );
+ bRet = TRUE;
+ }
+ }
+ if ( !bRet )
+ rSt.Seek( nStreamPos );
+ }
+ if ( pCList ) // restoring
+ pCList->nCurrent = nCurrent;
+ ((SdrEscherImport*)this )->maShapeRecords.pCList = pCList;
+ }
+ }
+ }
+ }
+ }
+ return bRet;
+}
+
+SdrPage* SdrPowerPointImport::MakeBlancPage( sal_Bool bMaster ) const
+{
+ SdrPage* pRet = pSdrModel->AllocPage( bMaster );
+ pRet->SetSize( GetPageSize() );
+
+/*
+ SJ (21.08.00) : since bug #77576# i decided not to set a border size.
+
+ Size aPageSize( aDocAtom.GetSlidesPageSize() ); // PageSize in 576DPI-Units
+ long nHMarg = aPageSize.Width() - aDocAtom.aSlidesPageSize.Width();
+ long nVMarg = aPageSize.Height() - aDocAtom.aSlidesPageSize.Height();
+ if ( nHMarg > 0 )
+ {
+ Scale( nHMarg );
+ pRet->SetLftBorder( nHMarg / 2 );
+ pRet->SetRgtBorder( nHMarg - nHMarg / 2 );
+ }
+ if ( nVMarg > 0 )
+ {
+ Scale( nVMarg );
+ pRet->SetUppBorder( nVMarg / 2 );
+ pRet->SetLwrBorder( nVMarg - nVMarg / 2 );
+ }
+*/
+ return pRet;
+}
+
+void ImportComment10( SvxMSDffManager& rMan, SvStream& rStCtrl, SdrPage* pPage, DffRecordHeader& rComment10Hd )
+{
+ rtl::OUString sAuthor;
+ rtl::OUString sText;
+ rtl::OUString sInitials;
+
+ sal_Int32 nIndex = 0;
+ util::DateTime aDateTime;
+ sal_Int32 nPosX = 0;
+ sal_Int32 nPosY = 0;
+
+ while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < rComment10Hd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aCommentHd;
+ rStCtrl >> aCommentHd;
+ switch( aCommentHd.nRecType )
+ {
+ case PPT_PST_CString :
+ {
+ String aString;
+ SvxMSDffManager::MSDFFReadZString( rStCtrl, aString, aCommentHd.nRecLen, TRUE );
+ switch ( aCommentHd.nRecInstance )
+ {
+ case 0 : sAuthor = aString; break;
+ case 1 : sText = aString; break;
+ case 2 : sInitials = aString; break;
+ }
+ }
+ break;
+
+ case PPT_PST_CommentAtom10 :
+ {
+ rStCtrl >> nIndex
+ >> aDateTime.Year
+ >> aDateTime.Month
+ >> aDateTime.Day // DayOfWeek
+ >> aDateTime.Day
+ >> aDateTime.Hours
+ >> aDateTime.Minutes
+ >> aDateTime.Seconds
+ >> aDateTime.HundredthSeconds
+ >> nPosX
+ >> nPosY;
+
+ aDateTime.HundredthSeconds /= 10;
+ }
+ break;
+ }
+ aCommentHd.SeekToEndOfRecord( rStCtrl );
+ }
+ Point aPosition( nPosX, nPosY );
+ rMan.Scale( aPosition );
+
+ try
+ {
+ uno::Reference< office::XAnnotationAccess > xAnnotationAccess( pPage->getUnoPage(), UNO_QUERY_THROW );
+ uno::Reference< office::XAnnotation > xAnnotation( xAnnotationAccess->createAndInsertAnnotation() );
+ xAnnotation->setPosition( geometry::RealPoint2D( aPosition.X() / 100.0, aPosition.Y() / 100.0 ) );
+ xAnnotation->setAuthor( sAuthor );
+ xAnnotation->setDateTime( aDateTime );
+ uno::Reference< text::XText > xText( xAnnotation->getTextRange() );
+ xText->setString( sText );
+ }
+ catch( uno::Exception& )
+ {
+
+ }
+}
+
+
+// be sure not to import masterpages with this method
+// be sure not to import masterpages with this method
+void SdrPowerPointImport::ImportPage( SdrPage* pRet, const PptSlidePersistEntry* pMasterPersist )
+{
+ UINT32 nMerk = rStCtrl.Tell();
+ PptSlidePersistList* pList = GetPageList( eAktPageKind );
+ if ( ( !pList ) || ( pList->Count() <= nAktPageNum ) )
+ return;
+ PptSlidePersistEntry& rSlidePersist = *(*pList)[ nAktPageNum ];
+ if ( rSlidePersist.bStarDrawFiller )
+ return;
+
+ DffRecordHeader aPageHd;
+ if ( SeekToAktPage( &aPageHd ) )
+ {
+ if ( mbTracing )
+ mpTracer->AddAttribute( eAktPageKind == PPT_SLIDEPAGE
+ ? rtl::OUString::createFromAscii( "Page" )
+ : rtl::OUString::createFromAscii( "NotesPage" ),
+ rtl::OUString::valueOf( (sal_Int32)nAktPageNum + 1 ) );
+
+ rSlidePersist.pHeaderFooterEntry = new HeaderFooterEntry( pMasterPersist );
+ ProcessData aProcessData( rSlidePersist, (SdPage*)pRet );
+ while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPageHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aHd;
+ rStCtrl >> aHd;
+ switch ( aHd.nRecType )
+ {
+ case PPT_PST_HeadersFooters :
+ {
+ ImportHeaderFooterContainer( aHd, *rSlidePersist.pHeaderFooterEntry );
+ }
+ break;
+
+ case PPT_PST_ProgTags :
+ {
+ DffRecordHeader aContentDataHd;
+ if ( SeekToContentOfProgTag( 10, rStCtrl, aHd, aContentDataHd ) )
+ {
+ DffRecordHeader aComment10Hd;
+ while( ( rStCtrl.GetError() == 0 ) && SeekToRec( rStCtrl, PPT_PST_Comment10, aContentDataHd.GetRecEndFilePos(), &aComment10Hd ) )
+ {
+ ImportComment10( *this, rStCtrl, pRet, aComment10Hd );
+ aComment10Hd.SeekToEndOfRecord( rStCtrl );
+ }
+ }
+ }
+ break;
+
+ case PPT_PST_PPDrawing :
+ {
+ DffRecordHeader aPPDrawHd;
+ if ( SeekToRec( rStCtrl, DFF_msofbtDgContainer, aHd.GetRecEndFilePos(), &aPPDrawHd ) )
+ {
+ sal_uInt32 nPPDrawOfs = rStCtrl.Tell();
+
+ // importing the background object before importing the page
+ while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPPDrawHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aEscherObjListHd;
+ rStCtrl >> aEscherObjListHd;
+ switch ( aEscherObjListHd.nRecType )
+ {
+ case DFF_msofbtSpContainer :
+ {
+ Rectangle aPageSize( Point(), pRet->GetSize() );
+ if ( rSlidePersist.aSlideAtom.nFlags & 4 ) // follow master background ?
+ {
+ if ( HasMasterPage( nAktPageNum, eAktPageKind ) )
+ {
+ sal_uInt16 nMasterNum = GetMasterPageIndex( nAktPageNum, eAktPageKind );
+ PptSlidePersistList* pPageList = GetPageList( PPT_MASTERPAGE );
+ PptSlidePersistEntry* pE = (*pPageList)[ nMasterNum ];
+ while( ( pE->aSlideAtom.nFlags & 4 ) && pE->aSlideAtom.nMasterId )
+ {
+ sal_uInt16 nNextMaster = pMasterPages->FindPage( pE->aSlideAtom.nMasterId );
+ if ( nNextMaster == PPTSLIDEPERSIST_ENTRY_NOTFOUND )
+ break;
+ else
+ pE = (*pPageList)[ nNextMaster ];
+ }
+ if ( pE->nBackgroundOffset )
+ {
+ // do not follow master colorscheme ?
+ sal_Bool bTemporary = ( rSlidePersist.aSlideAtom.nFlags & 2 ) != 0;
+ sal_uInt32 nPos = rStCtrl.Tell();
+ rStCtrl.Seek( pE->nBackgroundOffset );
+ rSlidePersist.pBObj = ImportObj( rStCtrl, (void*)&aProcessData, aPageSize, aPageSize );
+ rSlidePersist.bBObjIsTemporary = bTemporary;
+ rStCtrl.Seek( nPos );
+ }
+ }
+ }
+ else
+ {
+ DffRecordHeader aShapeHd;
+ rStCtrl >> aShapeHd;
+ if ( aShapeHd.nRecType == DFF_msofbtSp )
+ {
+ UINT32 nSpFlags;
+ rStCtrl >> nSpFlags >> nSpFlags;
+ if ( nSpFlags & SP_FBACKGROUND )
+ {
+ aEscherObjListHd.SeekToBegOfRecord( rStCtrl );
+ rSlidePersist.pBObj = ImportObj( rStCtrl, (void*)&aProcessData, aPageSize, aPageSize );
+ rSlidePersist.bBObjIsTemporary = sal_False;
+ }
+ }
+ }
+ }
+ break;
+ }
+ if ( aEscherObjListHd.nRecType == DFF_msofbtSpContainer )
+ break;
+ aEscherObjListHd.SeekToEndOfRecord( rStCtrl );
+ }
+
+ // now importing page
+ rStCtrl.Seek( nPPDrawOfs );
+ while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPPDrawHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aEscherObjListHd;
+ rStCtrl >> aEscherObjListHd;
+ switch ( aEscherObjListHd.nRecType )
+ {
+ case DFF_msofbtSpgrContainer :
+ {
+ DffRecordHeader aShapeHd;
+ if ( SeekToRec( rStCtrl, DFF_msofbtSpContainer, aEscherObjListHd.GetRecEndFilePos(), &aShapeHd ) )
+ {
+ aShapeHd.SeekToEndOfRecord( rStCtrl );
+ while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aEscherObjListHd.GetRecEndFilePos() ) )
+ {
+ rStCtrl >> aShapeHd;
+ if ( ( aShapeHd.nRecType == DFF_msofbtSpContainer ) || ( aShapeHd.nRecType == DFF_msofbtSpgrContainer ) )
+ {
+ Rectangle aEmpty;
+ aShapeHd.SeekToBegOfRecord( rStCtrl );
+ sal_Int32 nShapeId;
+ aProcessData.pTableRowProperties = NULL;
+ SdrObject* pObj = ImportObj( rStCtrl, (void*)&aProcessData, aEmpty, aEmpty, 0, &nShapeId );
+ if ( pObj )
+ {
+ if ( aProcessData.pTableRowProperties )
+ pObj = CreateTable( pObj, aProcessData.pTableRowProperties, aProcessData.rPersistEntry.pSolverContainer );
+
+ pRet->NbcInsertObject( pObj );
+
+ if( nShapeId )
+ insertShapeId( nShapeId, pObj );
+ }
+ }
+ aShapeHd.SeekToEndOfRecord( rStCtrl );
+ }
+ }
+ }
+ break;
+ }
+ if ( aEscherObjListHd.nRecType == DFF_msofbtSpgrContainer )
+ break;
+ aEscherObjListHd.SeekToEndOfRecord( rStCtrl );
+ }
+
+ /* There are a lot of Shapes who are dependent to
+ the current background color */
+ if ( rSlidePersist.ePageKind == PPT_SLIDEPAGE )
+ {
+ List* pList2 = aProcessData.pBackgroundColoredObjects;
+ if ( pList2 )
+ {
+ if ( rSlidePersist.pBObj )
+ {
+ void* pPtr;
+ const SfxPoolItem* pPoolItem = NULL;
+ const SfxItemSet& rObjectItemSet = rSlidePersist.pBObj->GetMergedItemSet();
+
+ //SfxItemState eState = rObjectItemSet.GetItemState( XATTR_FILLCOLOR, FALSE, &pPoolItem );
+ if ( pPoolItem )
+ {
+ SfxItemSet aNewSet(*rObjectItemSet.GetPool());
+ aNewSet.Put(*pPoolItem);
+ aNewSet.Put(XFillStyleItem( XFILL_SOLID ));
+
+ for ( pPtr = pList2->First(); pPtr; pPtr = pList2->Next() )
+ {
+ ((SdrObject*)pPtr)->SetMergedItemSet(aNewSet);
+ }
+ }
+ }
+ }
+ }
+ if ( rSlidePersist.pBObj )
+ {
+ if ( rSlidePersist.bBObjIsTemporary )
+ SdrObject::Free( rSlidePersist.pBObj );
+ else
+ pRet->SetBackgroundObj( rSlidePersist.pBObj );
+ }
+ }
+ }
+ break;
+ }
+ aHd.SeekToEndOfRecord( rStCtrl );
+ }
+ if ( rSlidePersist.pSolverContainer )
+ SolveSolver( *rSlidePersist.pSolverContainer );
+ if ( mbTracing )
+ mpTracer->RemoveAttribute( eAktPageKind == PPT_SLIDEPAGE
+ ? rtl::OUString::createFromAscii( "Page" )
+ : rtl::OUString::createFromAscii( "NotesPage" ) );
+ }
+ rStCtrl.Seek( nMerk );
+}
+
+const PptSlideLayoutAtom* SdrPowerPointImport::GetSlideLayoutAtom() const
+{
+ PptSlidePersistList* pPageList = GetPageList( eAktPageKind );
+ if ( pPageList && nAktPageNum < pPageList->Count() )
+ {
+ PptSlidePersistEntry* pE = (*pPageList)[ nAktPageNum ];
+ if ( pE )
+ return &pE->aSlideAtom.aLayout;
+ }
+ return NULL;
+}
+
+sal_Bool SdrPowerPointImport::IsNoteOrHandout( USHORT nPageNum, PptPageKind /*ePageKind*/) const
+{
+ sal_Bool bNote = eAktPageKind == PPT_NOTEPAGE;
+ if ( eAktPageKind == PPT_MASTERPAGE )
+ bNote = ( nPageNum & 1 ) == 0;
+ return bNote;
+}
+
+UINT32 SdrPowerPointImport::GetMasterPageId( USHORT nPageNum, PptPageKind ePageKind ) const
+{
+ PptSlidePersistList* pPageList = GetPageList( ePageKind );
+ if ( pPageList && nPageNum < pPageList->Count() )
+ return (*pPageList)[ nPageNum ]->aSlideAtom.nMasterId;
+ return 0;
+}
+
+UINT32 SdrPowerPointImport::GetNotesPageId( USHORT nPageNum ) const
+{
+ PptSlidePersistList* pPageList=GetPageList( PPT_SLIDEPAGE );
+ if ( pPageList && nPageNum < pPageList->Count() )
+ return (*pPageList)[ nPageNum ]->aSlideAtom.nNotesId;
+ return 0;
+}
+
+sal_Bool SdrPowerPointImport::HasMasterPage( USHORT nPageNum, PptPageKind ePageKind ) const
+{
+ if ( ePageKind == PPT_NOTEPAGE )
+ return aDocAtom.nNotesMasterPersist != 0;
+ if ( ePageKind == PPT_MASTERPAGE )
+ return FALSE;
+ return GetMasterPageId( nPageNum, ePageKind ) != 0;
+}
+
+USHORT SdrPowerPointImport::GetMasterPageIndex( USHORT nPageNum, PptPageKind ePageKind ) const
+{
+ USHORT nIdx = 0;
+ if ( ePageKind == PPT_NOTEPAGE )
+ return 2;
+ UINT32 nId = GetMasterPageId( nPageNum, ePageKind );
+ if ( nId && pMasterPages )
+ {
+ nIdx = pMasterPages->FindPage( nId );
+ if ( nIdx == PPTSLIDEPERSIST_ENTRY_NOTFOUND )
+ nIdx = 0;
+ }
+ return nIdx;
+}
+
+SdrObject* SdrPowerPointImport::ImportPageBackgroundObject( const SdrPage& rPage, sal_uInt32& nBgFileOffset, sal_Bool bForce )
+{
+ SdrObject* pRet = NULL;
+ sal_Bool bCreateObj = bForce;
+ SfxItemSet* pSet = NULL;
+ ULONG nFPosMerk = rStCtrl.Tell(); // FilePos merken fuer spaetere Restauration
+ DffRecordHeader aPageHd;
+ if ( SeekToAktPage( &aPageHd ) )
+ { // und nun die Hintergrundattribute der Page suchen
+ ULONG nPageRecEnd = aPageHd.GetRecEndFilePos();
+ DffRecordHeader aPPDrawHd;
+ if ( SeekToRec( rStCtrl, PPT_PST_PPDrawing, nPageRecEnd, &aPPDrawHd ) )
+ {
+ ULONG nPPDrawEnd = aPPDrawHd.GetRecEndFilePos();
+ DffRecordHeader aEscherF002Hd;
+ if ( SeekToRec( rStCtrl, DFF_msofbtDgContainer, nPPDrawEnd, &aEscherF002Hd ) )
+ {
+ ULONG nEscherF002End = aEscherF002Hd.GetRecEndFilePos();
+ DffRecordHeader aEscherObjectHd;
+ if ( SeekToRec( rStCtrl, DFF_msofbtSpContainer, nEscherF002End, &aEscherObjectHd ) )
+ {
+ nBgFileOffset = aEscherObjectHd.GetRecBegFilePos();
+ //ULONG nEscherObjectEnd = aEscherObjectHd.GetRecEndFilePos();
+ //DffRecordHeader aEscherPropertiesHd;
+ if ( SeekToRec( rStCtrl, DFF_msofbtOPT,nEscherF002End ) )
+ {
+ rStCtrl >> (DffPropertyReader&)*this;
+ mnFix16Angle = Fix16ToAngle( GetPropertyValue( DFF_Prop_Rotation, 0 ) );
+ UINT32 nColor = GetPropertyValue( DFF_Prop_fillColor, 0xffffff );
+ pSet = new SfxItemSet( pSdrModel->GetItemPool() );
+ DffObjData aObjData( aEscherObjectHd, Rectangle( 0, 0, 28000, 21000 ), 0 );
+ ApplyAttributes( rStCtrl, *pSet, aObjData );
+ Color aColor( MSO_CLR_ToColor( nColor ) );
+ pSet->Put( XFillColorItem( String(), aColor ) );
+ }
+ }
+ }
+ }
+ }
+ rStCtrl.Seek( nFPosMerk ); // FilePos restaurieren
+ if ( bCreateObj )
+ {
+ if ( !pSet )
+ {
+ pSet = new SfxItemSet( pSdrModel->GetItemPool() );
+ pSet->Put( XFillStyleItem( XFILL_NONE ) );
+ }
+ pSet->Put( XLineStyleItem( XLINE_NONE ) );
+ Rectangle aRect( rPage.GetLftBorder(), rPage.GetUppBorder(), rPage.GetWdt()-rPage.GetRgtBorder(), rPage.GetHgt()-rPage.GetLwrBorder() );
+ pRet = new SdrRectObj( aRect );
+ pRet->SetModel( pSdrModel );
+
+ pRet->SetMergedItemSet(*pSet);
+
+ pRet->SetMarkProtect( TRUE );
+ pRet->SetMoveProtect( TRUE );
+ pRet->SetResizeProtect( TRUE );
+ }
+ delete pSet;
+ return pRet;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+HeaderFooterEntry::HeaderFooterEntry( const PptSlidePersistEntry* pMPE ) :
+ pMasterPersist ( pMPE ),
+ nAtom ( 0 )
+{
+ if ( pMPE )
+ {
+ HeaderFooterEntry* pMHFE = pMPE->pHeaderFooterEntry;
+ if ( pMHFE )
+ {
+ nAtom = pMPE->pHeaderFooterEntry->nAtom;
+ pPlaceholder[ 0 ] = pMHFE->pPlaceholder[ 0 ];
+ pPlaceholder[ 1 ] = pMHFE->pPlaceholder[ 1 ];
+ pPlaceholder[ 2 ] = pMHFE->pPlaceholder[ 2 ];
+ pPlaceholder[ 3 ] = pMHFE->pPlaceholder[ 3 ];
+ }
+ }
+}
+
+HeaderFooterEntry::~HeaderFooterEntry()
+{
+}
+
+UINT32 HeaderFooterEntry::GetMaskForInstance( UINT32 nInstance )
+{
+ UINT32 nRet = 0;
+ switch ( nInstance )
+ {
+ case 0 : nRet = 0x07ffff; break;
+ case 1 : nRet = 0x100000; break;
+ case 2 : nRet = 0x200000; break;
+ case 3 : nRet = 0x080000; break;
+ }
+ return nRet;
+}
+
+UINT32 HeaderFooterEntry::IsToDisplay( UINT32 nInstance )
+{
+ UINT32 nMask = 0;
+ switch ( nInstance )
+ {
+ case 0 : nMask = 0x010000; break;
+ case 1 : nMask = 0x100000; break;
+ case 2 : nMask = 0x200000; break;
+ case 3 : nMask = 0x080000; break;
+ }
+ return ( nAtom & nMask );
+}
+
+// The following method checks if the slide is using a different colorscheme than
+// its master, if this is the fact, then the HeaderFooter must probably be
+// imported as real sdrobject. In this case, the return value is the offset to the
+// master header footer object, so it can be re-loaded with a different color set
+sal_uInt32 HeaderFooterEntry::NeedToImportInstance( const sal_uInt32 nInstance, const PptSlidePersistEntry& rSlidePersist )
+{
+ sal_uInt32 nRet = 0;
+ if ( pMasterPersist )
+ {
+ if ( !( rSlidePersist.aSlideAtom.nFlags & 2 ) )
+ { // not following the master persist, so we have to check if the colors are changed
+ if ( memcmp( &rSlidePersist.aColorScheme, &pMasterPersist->aColorScheme, 32 ) )
+ {
+ nRet = pMasterPersist->HeaderFooterOfs[ nInstance ];
+ }
+ }
+ }
+ return nRet;
+}
+
+void SdrEscherImport::ImportHeaderFooterContainer( DffRecordHeader& rHd, HeaderFooterEntry& rE )
+{
+ rHd.SeekToContent( rStCtrl );
+ while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < rHd.GetRecEndFilePos() ) )
+ {
+ DffRecordHeader aHd;
+ rStCtrl >> aHd;
+ switch ( aHd.nRecType )
+ {
+ case PPT_PST_HeadersFootersAtom :
+ rStCtrl >> rE.nAtom;
+ break;
+
+ case PPT_PST_CString :
+ {
+ if ( aHd.nRecInstance < 4 )
+ MSDFFReadZString( rStCtrl, rE.pPlaceholder[ aHd.nRecInstance ], aHd.nRecLen, TRUE );
+ }
+ break;
+ }
+ aHd.SeekToEndOfRecord( rStCtrl );
+ }
+}
+
+//static sal_Unicode PPTExportMapper( sal_Unicode nUni, BOOL& bNeedsStarBats )
+//{
+// bNeedsStarBats = FALSE;
+//
+// sal_Unicode cLo, cReplace;
+// cLo = cReplace = 0;
+// switch ( nUni )
+// {
+// case 132 : cLo = 175; break;
+// case 147 : cLo = 174; break;
+// // Currency
+// case 0x00A2: cReplace = 224; break;
+// case 0x00A4: cReplace = 225; break;
+// case 0x00A5: cReplace = 226; break;
+// case 0x20A1: cReplace = 228; break;
+// case 0x20A2: cReplace = 229; break;
+// case 0x20A3: cReplace = 230; break;
+// case 0x20A4: cReplace = 231; break;
+// case 0x20A7: cReplace = 227; break;
+// case 0x20A8: cReplace = 234; break;
+// case 0x20A9: cReplace = 232; break;
+// case 0x20AB: cReplace = 233; break;
+// case 0x20AC: cReplace = 128; break;
+// // Punctuation and other
+// case 0x201A: cReplace = 130; break; // SINGLE LOW-9 QUOTATION MARK
+// case 0x0192: cReplace = 131; break; // LATIN SMALL LETTER F WITH HOOK
+// case 0x201E: // DOUBLE LOW-9 QUOTATION MARK
+// case 0x301F: // LOW DOUBLE PRIME QUOTATION MARK
+// cReplace = 132; break;
+// case 0x2026: cReplace = 133; break; // HORIZONTAL ELLIPSES
+// case 0x2020: cReplace = 134; break; // DAGGER
+// case 0x2021: cReplace = 135; break; // DOUBLE DAGGER
+// case 0x02C6: cReplace = 136; break; // MODIFIER LETTER CIRCUMFLEX ACCENT
+// case 0x2030: cReplace = 137; break; // PER MILLE SIGN
+// case 0x0160: cReplace = 138; break; // LATIN CAPITAL LETTER S WITH CARON
+// case 0x2039: cReplace = 139; break; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+// case 0x0152: cReplace = 140; break; // LATIN CAPITAL LIGATURE OE
+// case 0x017D: cReplace = 142; break; // LATIN CAPITAL LETTER Z WITH CARON
+// case 0x2018: // LEFT SINGLE QUOTATION MARK
+// case 0x02BB: // MODIFIER LETTER TURNED COMMA
+// cReplace = 145; break;
+// case 0x2019: // RIGHT SINGLE QUOTATION MARK
+// case 0x02BC: // MODIFIER LETTER APOSTROPHE
+// cReplace = 146; break;
+// case 0x201C: // LEFT DOUBLE QUOTATION MARK
+// case 0x301D: // REVERSED DOUBLE PRIME QUOTATION MARK
+// cReplace = 147; break;
+// case 0x201D: // RIGHT DOUBLE QUOTATION MARK
+// case 0x301E: // REVERSED DOUBLE PRIME QUOTATION MARK
+// cReplace = 148; break;
+// case 0x2022: cReplace = 149; break; // BULLET
+// case 0x2013: cReplace = 150; break; // EN DASH
+// case 0x2014: cReplace = 151; break; // EM DASH
+// case 0x02DC: cReplace = 152; break; // SMALL TILDE
+// case 0x2122: cReplace = 153; break; // TRADE MARK SIGN
+// case 0x0161: cReplace = 154; break; // LATIN SMALL LETTER S WITH CARON
+// case 0x203A: cReplace = 155; break; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+// case 0x0153: cReplace = 156; break; // LATIN SMALL LIGATURE OE
+// case 0x017E: cReplace = 158; break; // LATIN SMALL LETTER Z WITH CARON
+// case 0x0178: cReplace = 159; break; // LATIN CAPITAL LETTER Y WITH DIAERESIS
+// case 0x00B6: cReplace = 222; break; // PILCROW SIGN / PARAGRAPH SIGN
+// }
+// if ( cReplace )
+// {
+// bNeedsStarBats = TRUE;
+// return cReplace;
+// }
+// else
+// return cLo;
+//}
+
+// no longer needed
+sal_Unicode SdrPowerPointImport::PPTSubstitute( UINT16 /*nFont*/, sal_Unicode /*nChar*/,
+ UINT32& /*nMappedFontId*/, Font& /*rFont*/, char /*nDefault*/) const
+{
+ return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTBuGraEntry::PPTBuGraEntry( Graphic& rGraphic, UINT32 nInst ) :
+ nInstance ( nInst ),
+ aBuGra ( rGraphic ) {}
+
+PPTExtParaLevel::PPTExtParaLevel()
+: mnExtParagraphMask( 0 )
+, mnBuBlip( 0xffff )
+, mnHasAnm( 0 )
+, mnAnmScheme( 0 )
+, mpfPP10Ext( 0 )
+, mnExtCharacterMask( 0 )
+, mcfPP10Ext( 0 )
+, mbSet( sal_False )
+{}
+
+SvStream& operator>>( SvStream& rIn, PPTExtParaLevel& rLevel )
+{
+ rLevel.mbSet = TRUE;
+ rIn >> rLevel.mnExtParagraphMask;
+ if ( rLevel.mnExtParagraphMask & 0x00800000 )
+ rIn >> rLevel.mnBuBlip;
+ if ( rLevel.mnExtParagraphMask & 0x02000000 )
+ rIn >> rLevel.mnHasAnm;
+ if ( rLevel.mnExtParagraphMask & 0x01000000 )
+ rIn >> rLevel.mnAnmScheme;
+ if ( rLevel.mnExtParagraphMask & 0x04000000 )
+ rIn >> rLevel.mpfPP10Ext;
+ rIn >> rLevel.mnExtCharacterMask;
+ if ( rLevel.mnExtCharacterMask & 0x100000 )
+ rIn >> rLevel.mcfPP10Ext;
+ return rIn;
+}
+
+BOOL PPTExtParaProv::GetGraphic( UINT32 nInstance, Graphic& rGraph ) const
+{
+ BOOL bRetValue = FALSE;
+ PPTBuGraEntry* pPtr = NULL;
+ if ( nInstance < aBuGraList.Count() )
+ {
+ pPtr = (PPTBuGraEntry*)aBuGraList.GetObject( nInstance );
+ if ( pPtr->nInstance == nInstance )
+ bRetValue = TRUE;
+ }
+ if ( !bRetValue )
+ {
+ sal_uInt32 i;
+ for ( i = 0; i < aBuGraList.Count(); i++ )
+ {
+ pPtr = (PPTBuGraEntry*)aBuGraList.GetObject( i );
+ if ( pPtr->nInstance == nInstance )
+ {
+ bRetValue = TRUE;
+ break;
+ }
+ }
+ }
+ if ( bRetValue )
+ rGraph = pPtr->aBuGra;
+ return bRetValue;
+}
+
+PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const DffRecordHeader* pHd ) :
+ bStyles ( FALSE ),
+ bGraphics ( FALSE )
+{
+ UINT32 nOldPos = rSt.Tell();
+
+ // here we have to get the graphical bullets...
+
+ DffRecordHeader aHd;
+ DffRecordHeader aContentDataHd;
+
+ const DffRecordHeader* pListHd = rMan.aDocRecManager.GetRecordHeader( PPT_PST_List, SEEK_FROM_BEGINNING );
+ while( pListHd )
+ {
+ pListHd->SeekToContent( rSt );
+ if ( !rMan.SeekToContentOfProgTag( 9, rSt, *pListHd, aContentDataHd ) )
+ break;
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aContentDataHd.GetRecEndFilePos() ) )
+ {
+ rSt >> aHd;
+ switch ( aHd.nRecType )
+ {
+ case PPT_PST_ExtendedBuGraContainer :
+ {
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aHd.GetRecEndFilePos() ) )
+ {
+ UINT16 nType;
+ DffRecordHeader aBuGraAtomHd;
+ rSt >> aBuGraAtomHd;
+ if ( aBuGraAtomHd.nRecType == PPT_PST_ExtendedBuGraAtom )
+ {
+ rSt >> nType;
+ Graphic aGraphic;
+ if ( rMan.GetBLIPDirect( rSt, aGraphic, NULL ) )
+ {
+ UINT32 nInstance = aBuGraAtomHd.nRecInstance;
+ PPTBuGraEntry* pBuGra = new PPTBuGraEntry( aGraphic, nInstance );
+ UINT32 n = 0;
+ UINT32 nBuGraCount = aBuGraList.Count();
+ if ( nBuGraCount )
+ {
+ if ( ( (PPTBuGraEntry*)aBuGraList.GetObject( nBuGraCount - 1 ) )->nInstance < nInstance )
+ n = nBuGraCount;
+ else
+ { // maybe the instances are not sorted, we sort it
+ for ( n = 0; n < nBuGraCount; n++ )
+ { // sorting fields ( hi >> lo )
+ if ( ( (PPTBuGraEntry*)aBuGraList.GetObject( n ) )->nInstance < nInstance )
+ break;
+ }
+ }
+ }
+ aBuGraList.Insert( pBuGra, (UINT32)n );
+ }
+#ifdef DBG_UTIL
+ else DBG_ERROR( "PPTExParaProv::PPTExParaProv - bullet graphic is not valid (SJ)" );
+#endif
+ }
+#ifdef DBG_UTIL
+ else DBG_ERROR( "PPTExParaProv::PPTExParaProv - unknown atom interpreting the PPT_PST_ExtendedBuGraContainer (SJ)" );
+#endif
+ aBuGraAtomHd.SeekToEndOfRecord( rSt );
+ }
+ if ( aBuGraList.Count() )
+ bGraphics = TRUE;
+ }
+ break;
+
+ case PPT_PST_ExtendedPresRuleContainer :
+ aExtendedPresRules.Consume( rSt, FALSE, aHd.GetRecEndFilePos() );
+ break;
+#ifdef DBG_UTIL
+ default :
+ DBG_ERROR( "PPTExParaProv::PPTExParaProv - unknown atom reading ppt2000 num rules (SJ)" );
+ case PPT_PST_MasterText : // first seen in: ms-tt02.ppt
+ case PPT_PST_SrKinsoku :
+ case PPT_PST_NewlyAddedAtom4016 :
+ case PPT_PST_NewlyAddedAtomByPPT2000_6010 :
+ case PPT_PST_NewlyAddedAtomByPPT2000_6011 :
+ case PPT_PST_NewlyAddedAtomByXP1037 :
+ case PPT_PST_NewlyAddedAtomByXP12004 :
+ case PPT_PST_NewlyAddedAtomByXP14001 :
+ break;
+#endif
+ }
+ aHd.SeekToEndOfRecord( rSt );
+ }
+ break;
+ }
+
+ while( pHd )
+ { // get the extended paragraph styles on mainmaster ( graphical bullets, num ruling ... )
+ if ( !rMan.SeekToContentOfProgTag( 9, rSt, *pHd, aContentDataHd ) )
+ break;
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aContentDataHd.GetRecEndFilePos() ) )
+ {
+ rSt >> aHd;
+ switch ( aHd.nRecType )
+ {
+ case PPT_PST_ExtendedParagraphMasterAtom :
+ {
+ if ( aHd.nRecInstance < PPT_STYLESHEETENTRYS )
+ {
+ UINT16 nDepth, i = 0;
+ rSt >> nDepth;
+ if ( i <= 5 )
+ {
+
+ while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < aHd.GetRecEndFilePos() ) && ( i < nDepth ) )
+ {
+ bStyles = TRUE;
+ rSt >> aExtParaSheet[ aHd.nRecInstance ].aExtParaLevel[ i++ ];
+ }
+#ifdef DBG_UTIL
+ if ( rSt.Tell() != aHd.GetRecEndFilePos() )
+ DBG_ERROR( "PPTExParaProv::PPTExParaProv - error reading PPT_PST_ExtendedParagraphMasterAtom (SJ)" );
+#endif
+ }
+#ifdef DBG_UTIL
+ else DBG_ERROR( "PPTExParaProv::PPTExParaProv - depth is greater than 5 (SJ)" );
+#endif
+ }
+#ifdef DBG_UTIL
+ else DBG_ERROR( "PPTExParaProv::PPTExParaProv - instance out of range (SJ)" );
+#endif
+ }
+ break;
+ default :
+ DBG_ERROR( "PPTExParaProv::PPTExParaProv - unknown atom, assuming PPT_PST_ExtendedParagraphMasterAtom (SJ)" );
+ case PPT_PST_NewlyAddedAtomByXP11008 :
+ case PPT_PST_NewlyAddedAtomByXP11010 :
+ case PPT_PST_NewlyAddedAtomByXP12010 :
+ case PPT_PST_NewlyAddedAtomByXP12011 :
+ case 0xf144 :
+ break;
+ }
+ aHd.SeekToEndOfRecord( rSt );
+ }
+ break;
+ }
+ rSt.Seek( nOldPos );
+}
+
+PPTExtParaProv::~PPTExtParaProv()
+{
+ void* pPtr;
+ for ( pPtr = aBuGraList.First(); pPtr; pPtr = aBuGraList.Next() )
+ delete (PPTBuGraEntry*)pPtr;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTNumberFormatCreator::PPTNumberFormatCreator( PPTExtParaProv* pParaProv ) :
+ pExtParaProv ( pParaProv )
+{
+}
+
+PPTNumberFormatCreator::~PPTNumberFormatCreator()
+{
+ delete pExtParaProv;
+}
+
+BOOL PPTNumberFormatCreator::ImplGetExtNumberFormat( SdrPowerPointImport& rManager,
+ SvxNumberFormat& rNumberFormat, UINT32 nLevel, UINT32 nInstance, UINT32 nDestinationInstance,
+ boost::optional< sal_Int16 >& rStartNumbering, UINT32 nFontHeight, PPTParagraphObj* pPara )
+{
+ BOOL bHardAttribute = ( nDestinationInstance == 0xffffffff );
+
+ UINT32 nBuFlags = 0;
+ UINT16 nHasAnm = 0;
+ UINT32 nAnmScheme = 0x10003;
+ UINT16 nBuBlip = 0xffff;
+
+ const PPTExtParaProv* pParaProv = pExtParaProv;
+ if ( !pExtParaProv )
+ pParaProv = ( pPara ) ? pPara->mrStyleSheet.pExtParaProv
+ : rManager.pPPTStyleSheet->pExtParaProv;
+ if ( pPara )
+ {
+ nBuFlags = pPara->pParaSet->mnExtParagraphMask;
+ if ( nBuFlags )
+ {
+ if ( nBuFlags & 0x00800000 )
+ nBuBlip = pPara->pParaSet->mnBuBlip;
+ if ( nBuFlags & 0x01000000 )
+ nAnmScheme = pPara->pParaSet->mnAnmScheme;
+ if ( nBuFlags & 0x02000000 )
+ nHasAnm = pPara->pParaSet->mnHasAnm;
+ bHardAttribute = TRUE;
+ }
+ }
+
+ if ( ( nBuFlags & 0x03800000 ) != 0x03800000 ) // merge style sheet
+ { // we have to read the master attributes
+ if ( pParaProv && ( nLevel < 5 ) )
+ {
+ if ( pParaProv->bStyles )
+ {
+ const PPTExtParaLevel& rLev = pParaProv->aExtParaSheet[ nInstance ].aExtParaLevel[ nLevel ];
+ if ( rLev.mbSet )
+ {
+ UINT32 nMaBuFlags = rLev.mnExtParagraphMask;
+
+ if ( (!( nBuFlags & 0x00800000)) && ( nMaBuFlags & 0x00800000 ) )
+ {
+ if (!( nBuFlags & 0x02000000)) // if there is a BuStart without BuInstance,
+ nBuBlip = rLev.mnBuBlip; // then there is no graphical Bullet possible
+ }
+ if ( (!( nBuFlags & 0x01000000)) && ( nMaBuFlags & 0x01000000 ) )
+ nAnmScheme = rLev.mnAnmScheme;
+ if ( (!( nBuFlags & 0x02000000)) && ( nMaBuFlags & 0x02000000 ) )
+ nHasAnm = rLev.mnHasAnm;
+ nBuFlags |= nMaBuFlags;
+ }
+ }
+ }
+ }
+ if ( nBuBlip != 0xffff ) // set graphical bullet
+ {
+ Graphic aGraphic;
+ if ( pParaProv->GetGraphic( nBuBlip, aGraphic ) )
+ {
+ SvxBrushItem aBrush( aGraphic, GPOS_MM, SID_ATTR_BRUSH );
+ rNumberFormat.SetGraphicBrush( &aBrush );
+ sal_uInt32 nHeight = (sal_uInt32)( (double)nFontHeight * 0.2540 * nBulletHeight + 0.5 );
+ Size aPrefSize( aGraphic.GetPrefSize() );
+ UINT32 nWidth = ( nHeight * aPrefSize.Width() ) / aPrefSize.Height();
+ rNumberFormat.SetGraphicSize( Size( nWidth, nHeight ) );
+ rNumberFormat.SetNumberingType ( SVX_NUM_BITMAP );
+ }
+ }
+ else if ( nHasAnm )
+ {
+ switch( static_cast< sal_uInt16 >( nAnmScheme ) )
+ {
+ default :
+ case 0 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_CHARS_LOWER_LETTER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) );
+ }
+ break;
+ case 1 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_CHARS_UPPER_LETTER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) );
+ }
+ break;
+ case 2 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ARABIC );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ }
+ break;
+ case 3 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ARABIC );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) );
+ }
+ break;
+ case 4 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ROMAN_LOWER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ rNumberFormat.SetPrefix( String( RTL_CONSTASCII_USTRINGPARAM( "(" ) ) );
+ }
+ break;
+ case 5 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ROMAN_LOWER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ }
+ break;
+ case 6 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ROMAN_LOWER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) );
+ }
+ break;
+ case 7 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ROMAN_UPPER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) );
+ }
+ break;
+ case 8 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_CHARS_LOWER_LETTER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ rNumberFormat.SetPrefix( String( RTL_CONSTASCII_USTRINGPARAM( "(" ) ) );
+ }
+ break;
+ case 9 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_CHARS_LOWER_LETTER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ }
+ break;
+ case 10 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_CHARS_UPPER_LETTER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ rNumberFormat.SetPrefix( String( RTL_CONSTASCII_USTRINGPARAM( "(" ) ) );
+ }
+ break;
+ case 11 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_CHARS_UPPER_LETTER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ }
+ break;
+ case 12 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ARABIC );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ rNumberFormat.SetPrefix( String( RTL_CONSTASCII_USTRINGPARAM( "(" ) ) );
+ }
+ break;
+ case 13 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ARABIC );
+ }
+ break;
+ case 14 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ROMAN_UPPER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ rNumberFormat.SetPrefix( String( RTL_CONSTASCII_USTRINGPARAM( "(" ) ) );
+ }
+ break;
+ case 15 :
+ {
+ rNumberFormat.SetNumberingType( SVX_NUM_ROMAN_UPPER );
+ rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) );
+ }
+ break;
+ }
+ rStartNumbering = boost::optional< sal_Int16 >( nAnmScheme >> 16 );
+ }
+ return bHardAttribute;
+}
+
+void PPTNumberFormatCreator::GetNumberFormat( SdrPowerPointImport& rManager, SvxNumberFormat& rNumberFormat, UINT32 nLevel, const PPTParaLevel& rParaLevel, const PPTCharLevel& rCharLevel, UINT32 nInstance )
+{
+ nIsBullet = ( rParaLevel.mnBuFlags & ( 1 << PPT_ParaAttr_BulletOn ) ) != 0 ? 1 : 0;
+ nBulletChar = rParaLevel.mnBulletChar;
+
+ sal_Bool bBuHardFont;
+ bBuHardFont = ( rParaLevel.mnBuFlags & ( 1 << PPT_ParaAttr_BuHardFont ) ) != 0;
+ if ( bBuHardFont )
+ nBulletFont = rParaLevel.mnBulletFont;
+ else
+ nBulletFont = rCharLevel.mnFont;
+ nBulletHeight = rParaLevel.mnBulletHeight;
+ nBulletColor = rParaLevel.mnBulletColor;
+ nTextOfs = rParaLevel.mnTextOfs;
+ nBulletOfs = rParaLevel.mnBulletOfs;
+
+ boost::optional< sal_Int16 > oStartNumbering;
+ ImplGetExtNumberFormat( rManager, rNumberFormat, nLevel, nInstance, 0xffffffff, oStartNumbering, rCharLevel.mnFontHeight, NULL );
+ if ( ( rNumberFormat.GetNumberingType() != SVX_NUM_BITMAP ) && ( nBulletHeight > 0x7fff ) )
+ nBulletHeight = rCharLevel.mnFontHeight ? ((-((sal_Int16)nBulletHeight)) * 100 ) / rCharLevel.mnFontHeight : 100;
+ ImplGetNumberFormat( rManager, rNumberFormat, nLevel );
+ switch ( rNumberFormat.GetNumberingType() )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER :
+ case SVX_NUM_CHARS_LOWER_LETTER :
+ case SVX_NUM_ROMAN_UPPER :
+ case SVX_NUM_ROMAN_LOWER :
+ case SVX_NUM_ARABIC :
+ case SVX_NUM_CHARS_UPPER_LETTER_N :
+ case SVX_NUM_CHARS_LOWER_LETTER_N :
+ {
+ sal_uInt32 nFont = rCharLevel.mnFont;
+ PptFontEntityAtom* pFontEnityAtom = rManager.GetFontEnityAtom( nFont );
+ if ( pFontEnityAtom )
+ {
+ Font aFont;
+ aFont.SetCharSet( pFontEnityAtom->eCharSet );
+ aFont.SetName( pFontEnityAtom->aName );
+ aFont.SetFamily( pFontEnityAtom->eFamily );
+ aFont.SetPitch( pFontEnityAtom->ePitch );
+ rNumberFormat.SetBulletFont( &aFont );
+ }
+ }
+ break;
+ }
+}
+
+BOOL PPTNumberFormatCreator::GetNumberFormat( SdrPowerPointImport& rManager, SvxNumberFormat& rNumberFormat, PPTParagraphObj* pParaObj,
+ UINT32 nDestinationInstance, boost::optional< sal_Int16 >& rStartNumbering )
+{
+ UINT32 nHardCount = 0;
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_BulletOn, nIsBullet, nDestinationInstance );
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_BulletChar, nBulletChar, nDestinationInstance );
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_BulletFont, nBulletFont, nDestinationInstance );
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_BulletHeight, nBulletHeight, nDestinationInstance );
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_BulletColor, nBulletColor, nDestinationInstance );
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_TextOfs, nTextOfs, nDestinationInstance );
+ nHardCount += pParaObj->GetAttrib( PPT_ParaAttr_BulletOfs, nBulletOfs, nDestinationInstance );
+
+ if ( nIsBullet )
+ rNumberFormat.SetNumberingType( SVX_NUM_CHAR_SPECIAL );
+
+ UINT32 nFontHeight = 24;
+ PPTPortionObj* pPtr = pParaObj->First();
+ if ( pPtr )
+ pPtr->GetAttrib( PPT_CharAttr_FontHeight, nFontHeight, nDestinationInstance );
+ if ( nIsBullet )
+ nHardCount += ImplGetExtNumberFormat( rManager, rNumberFormat, pParaObj->pParaSet->mnDepth,
+ pParaObj->mnInstance, nDestinationInstance, rStartNumbering, nFontHeight, pParaObj );
+
+ if ( rNumberFormat.GetNumberingType() != SVX_NUM_BITMAP )
+ pParaObj->UpdateBulletRelSize( nBulletHeight );
+ if ( nHardCount )
+ ImplGetNumberFormat( rManager, rNumberFormat, pParaObj->pParaSet->mnDepth );
+
+ if ( nHardCount )
+ {
+ switch ( rNumberFormat.GetNumberingType() )
+ {
+ case SVX_NUM_CHARS_UPPER_LETTER :
+ case SVX_NUM_CHARS_LOWER_LETTER :
+ case SVX_NUM_ROMAN_UPPER :
+ case SVX_NUM_ROMAN_LOWER :
+ case SVX_NUM_ARABIC :
+ case SVX_NUM_CHARS_UPPER_LETTER_N :
+ case SVX_NUM_CHARS_LOWER_LETTER_N :
+ {
+ if ( pPtr )
+ {
+ sal_uInt32 nFont;
+ pPtr->GetAttrib( PPT_CharAttr_Font, nFont, nDestinationInstance );
+ PptFontEntityAtom* pFontEnityAtom = rManager.GetFontEnityAtom( nFont );
+ if ( pFontEnityAtom )
+ {
+ Font aFont;
+ aFont.SetCharSet( pFontEnityAtom->eCharSet );
+ aFont.SetName( pFontEnityAtom->aName );
+ aFont.SetFamily( pFontEnityAtom->eFamily );
+ aFont.SetPitch( pFontEnityAtom->ePitch );
+ rNumberFormat.SetBulletFont( &aFont );
+ }
+ }
+ }
+ break;
+ }
+ }
+ return ( nHardCount ) ? TRUE : FALSE;
+}
+
+void PPTNumberFormatCreator::ImplGetNumberFormat( SdrPowerPointImport& rManager, SvxNumberFormat& rNumberFormat, UINT32 /*nLevel*/)
+{
+ Font aFont;
+ PptFontEntityAtom* pAtom = rManager.GetFontEnityAtom( nBulletFont );
+ if ( pAtom )
+ {
+ CharSet eCharSet( pAtom->eCharSet );
+ aFont.SetName( pAtom->aName );
+ aFont.SetCharSet( eCharSet );
+ aFont.SetFamily( pAtom->eFamily );
+ aFont.SetPitch( pAtom->ePitch );
+ }
+ Color aCol( rManager.MSO_TEXT_CLR_ToColor( nBulletColor ) );
+ aFont.SetColor( aCol );
+
+ sal_uInt16 nBuChar = (sal_uInt16)nBulletChar;
+ if ( aFont.GetCharSet() == RTL_TEXTENCODING_SYMBOL )
+ {
+ nBuChar &= 0x00ff;
+ nBuChar |= 0xf000;
+ }
+ rNumberFormat.SetBulletFont( &aFont );
+ rNumberFormat.SetBulletChar( nBuChar );
+ rNumberFormat.SetBulletRelSize( (UINT16)nBulletHeight );
+ rNumberFormat.SetBulletColor( aCol );
+ UINT16 nAbsLSpace = (UINT16)( ( (UINT32)nTextOfs * 2540 ) / 576 );
+ UINT16 nFirstLineOffset = nAbsLSpace - (UINT16)( ( (UINT32)nBulletOfs * 2540 ) / 576 );
+ rNumberFormat.SetAbsLSpace( nAbsLSpace );
+ rNumberFormat.SetFirstLineOffset( -nFirstLineOffset );
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTCharSheet::PPTCharSheet( UINT32 nInstance )
+{
+ UINT32 nColor = PPT_COLSCHEME_TEXT_UND_ZEILEN;
+ UINT16 nFontHeight(0);
+ switch ( nInstance )
+ {
+ case TSS_TYPE_PAGETITLE :
+ case TSS_TYPE_TITLE :
+ {
+ nColor = PPT_COLSCHEME_TITELTEXT;
+ nFontHeight = 44;
+ }
+ break;
+ case TSS_TYPE_BODY :
+ case TSS_TYPE_SUBTITLE :
+ case TSS_TYPE_HALFBODY :
+ case TSS_TYPE_QUARTERBODY :
+ nFontHeight = 32;
+ break;
+ case TSS_TYPE_NOTES :
+ nFontHeight = 12;
+ break;
+ case TSS_TYPE_UNUSED :
+ case TSS_TYPE_TEXT_IN_SHAPE :
+ nFontHeight = 24;
+ break;
+ }
+ for ( UINT32 nDepth = 0; nDepth < 5; nDepth++ )
+ {
+ maCharLevel[ nDepth ].mnFlags = 0;
+ maCharLevel[ nDepth ].mnFont = 0;
+ maCharLevel[ nDepth ].mnAsianOrComplexFont = 0xffff;
+ maCharLevel[ nDepth ].mnFontHeight = nFontHeight;
+ maCharLevel[ nDepth ].mnFontColor = nColor;
+ maCharLevel[ nDepth ].mnFontColorInStyleSheet = Color( (BYTE)nColor, (BYTE)( nColor >> 8 ), (BYTE)( nColor >> 16 ) );
+ maCharLevel[ nDepth ].mnEscapement = 0;
+ }
+}
+
+PPTCharSheet::PPTCharSheet( const PPTCharSheet& rAttr )
+{
+ *this = rAttr;
+}
+
+void PPTCharSheet::Read( SvStream& rIn, sal_Bool /*bMasterStyle*/, sal_uInt32 nLevel, sal_Bool /*bFirst*/)
+{
+ // Zeichenattribute
+ sal_uInt32 nCMask;
+ sal_uInt16 nVal16;
+ rIn >> nCMask;
+
+ if ( nCMask & 0x0000FFFF )
+ {
+ sal_uInt16 nBitAttr;
+ maCharLevel[ nLevel ].mnFlags &= ~( (sal_uInt16)nCMask );
+ rIn >> nBitAttr; // Bit-Attribute (Fett, Unterstrichen, ...)
+ maCharLevel[ nLevel ].mnFlags |= nBitAttr;
+ }
+ if ( nCMask & ( 1 << PPT_CharAttr_Font ) ) // 0x00010000
+ rIn >> maCharLevel[ nLevel ].mnFont;
+ if ( nCMask & ( 1 << PPT_CharAttr_AsianOrComplexFont ) ) // 0x00200000
+ rIn >> maCharLevel[ nLevel ].mnAsianOrComplexFont;
+ if ( nCMask & ( 1 << PPT_CharAttr_ANSITypeface ) ) // 0x00400000
+ rIn >> nVal16;
+ if ( nCMask & ( 1 << PPT_CharAttr_Symbol ) ) // 0x00800000
+ rIn >> nVal16;
+ if ( nCMask & ( 1 << PPT_CharAttr_FontHeight ) ) // 0x00020000
+ rIn >> maCharLevel[ nLevel ].mnFontHeight;
+ if ( nCMask & ( 1 << PPT_CharAttr_FontColor ) ) // 0x00040000
+ {
+ rIn >> maCharLevel[ nLevel ].mnFontColor;
+ if( ! (maCharLevel[ nLevel ].mnFontColor & 0xff000000 ) )
+ maCharLevel[ nLevel ].mnFontColor = PPT_COLSCHEME_HINTERGRUND;
+ }
+ if ( nCMask & ( 1 << PPT_CharAttr_Escapement ) ) // 0x00080000
+ rIn >> maCharLevel[ nLevel ].mnEscapement;
+ if ( nCMask & 0x00100000 ) // 0x00100000
+ rIn >> nVal16;
+
+ nCMask >>= 24;
+ while( nCMask )
+ {
+ if ( nCMask & 1 )
+ {
+ DBG_ERROR( "PPTCharSheet::Read - unknown attribute, send me this document (SJ)" );
+ rIn >> nVal16;
+ }
+ nCMask >>= 1;
+ }
+}
+
+PPTParaSheet::PPTParaSheet( UINT32 nInstance )
+{
+ sal_uInt16 nBuFlags = 0;
+ sal_uInt32 nBulletColor = 0x8000000;
+ sal_uInt16 nUpperDist = 0;
+
+ switch ( nInstance )
+ {
+ case TSS_TYPE_PAGETITLE :
+ case TSS_TYPE_TITLE :
+ nBulletColor = PPT_COLSCHEME_TITELTEXT;
+ break;
+ case TSS_TYPE_BODY :
+ case TSS_TYPE_SUBTITLE :
+ case TSS_TYPE_HALFBODY :
+ case TSS_TYPE_QUARTERBODY :
+ {
+ nBuFlags = 1;
+ nUpperDist = 0x14;
+ }
+ break;
+ case TSS_TYPE_NOTES :
+ nUpperDist = 0x1e;
+ break;
+/*
+ default :
+ case TSS_TYPE_UNUSED :
+ case TSS_TYPE_TEXT_IN_SHAPE :
+ break;
+*/
+ }
+ for ( UINT32 i = 0; i < 5; i++ )
+ {
+ maParaLevel[ i ].mnBuFlags = nBuFlags;
+ maParaLevel[ i ].mnBulletChar = 0x2022;
+ maParaLevel[ i ].mnBulletFont = 0;
+ maParaLevel[ i ].mnBulletHeight = 100;
+ maParaLevel[ i ].mnBulletColor = nBulletColor;
+ maParaLevel[ i ].mnAdjust = 0;
+ maParaLevel[ i ].mnLineFeed = 100;
+ maParaLevel[ i ].mnLowerDist = 0;
+ maParaLevel[ i ].mnUpperDist = nUpperDist;
+ maParaLevel[ i ].mnTextOfs = 0;
+ maParaLevel[ i ].mnBulletOfs = 0;
+ maParaLevel[ i ].mnDefaultTab = 0x240;
+ maParaLevel[ i ].mnAsianLineBreak = 0;
+ maParaLevel[ i ].mnBiDi = 0;
+ }
+}
+
+PPTParaSheet::PPTParaSheet( const PPTParaSheet& rSheet )
+{
+ *this = rSheet;
+}
+
+void PPTParaSheet::Read( SdrPowerPointImport&
+#ifdef DBG_UTIL
+ rManager
+#endif
+ , SvStream& rIn, sal_Bool /*bMasterStyle*/,
+ sal_uInt32 nLevel, sal_Bool bFirst )
+{
+ // Absatzattribute
+ sal_uInt16 nVal16, i, nMask16;
+ sal_uInt32 nVal32, nPMask;
+ rIn >> nPMask;
+
+ nMask16 = (sal_uInt16)nPMask & 0xf;
+ if ( nMask16 )
+ {
+ rIn >> nVal16;
+ maParaLevel[ nLevel ].mnBuFlags &=~ nMask16;
+ nVal16 &= nMask16;
+ maParaLevel[ nLevel ].mnBuFlags |= nVal16;
+ }
+ if ( nPMask & 0x0080 )
+ rIn >> maParaLevel[ nLevel ].mnBulletChar;
+ if ( nPMask & 0x0010 )
+ rIn >> maParaLevel[ nLevel ].mnBulletFont;
+ if ( nPMask & 0x0040 )
+ {
+ rIn >> nVal16;
+ maParaLevel[ nLevel ].mnBulletHeight = nVal16;
+ }
+ if ( nPMask & 0x0020 )
+ {
+ rIn >> nVal32;
+ maParaLevel[ nLevel ].mnBulletColor = nVal32;
+ }
+ if ( bFirst )
+ {
+ if ( nPMask & 0xF00 )
+ { // AbsJust!
+ rIn >> nVal16;
+ maParaLevel[ nLevel ].mnAdjust = nVal16 & 3;
+ }
+ if ( nPMask & 0x1000 )
+ rIn >> maParaLevel[ nLevel ].mnLineFeed;
+ if ( nPMask & 0x2000 )
+ rIn >> maParaLevel[ nLevel ].mnUpperDist;
+ if ( nPMask & 0x4000 )
+ rIn >> maParaLevel[ nLevel ].mnLowerDist;
+ if ( nPMask & 0x8000 )
+ rIn >> maParaLevel[ nLevel ].mnTextOfs;
+ if ( nPMask & 0x10000 )
+ rIn >> maParaLevel[ nLevel ].mnBulletOfs;
+ if ( nPMask & 0x20000 )
+ rIn >> maParaLevel[ nLevel ].mnDefaultTab;
+ if ( nPMask & 0x200000 )
+ {
+ // number of tabulators
+ rIn >> nVal16;
+ for ( i = 0; i < nVal16; i++ )
+ rIn >> nVal32; // reading the tabulators
+ }
+ if ( nPMask & 0x40000 )
+ rIn >> nVal16;
+ if ( nPMask & 0x80000 )
+ rIn >> maParaLevel[ nLevel ].mnAsianLineBreak;
+ if ( nPMask & 0x100000 )
+ rIn >> maParaLevel[ nLevel ].mnBiDi;
+ }
+ else
+ {
+ if ( nPMask & 0x800 )
+ {
+ rIn >> nVal16;
+ maParaLevel[ nLevel ].mnAdjust = nVal16 & 3;
+ }
+ if ( nPMask & 0x1000 )
+ rIn >> maParaLevel[ nLevel ].mnLineFeed;
+ if ( nPMask & 0x2000 )
+ rIn >> maParaLevel[ nLevel ].mnUpperDist;
+ if ( nPMask & 0x4000 )
+ rIn >> maParaLevel[ nLevel ].mnLowerDist;
+ if ( nPMask & 0x8000 )
+ rIn >> nVal16;
+ if ( nPMask & 0x100 )
+ rIn >> maParaLevel[ nLevel ].mnTextOfs;
+ if ( nPMask & 0x200 )
+ rIn >> nVal16;
+ if ( nPMask & 0x400 )
+ rIn >> maParaLevel[ nLevel ].mnBulletOfs;
+ if ( nPMask & 0x10000 )
+ rIn >> nVal16;
+ if ( nPMask & 0xe0000 )
+ {
+ sal_uInt16 nFlagsToModifyMask = (sal_uInt16)( ( nPMask >> 17 ) & 7 );
+ rIn >> nVal16;
+ // bits that are not involved to zero
+ nVal16 &= nFlagsToModifyMask;
+ // bits that are to change to zero
+ maParaLevel[ nLevel ].mnAsianLineBreak &=~nFlagsToModifyMask;
+ // now set the corresponding bits
+ maParaLevel[ nLevel ].mnAsianLineBreak |= nVal16;
+ }
+ if ( nPMask & 0x100000 )
+ {
+ // number of tabulators
+ rIn >> nVal16;
+ for ( i = 0; i < nVal16; i++ )
+ rIn >> nVal32; // reading the tabulators
+ }
+ if ( nPMask & 0x200000 )
+ rIn >> maParaLevel[ nLevel ].mnBiDi; // #88602#
+ }
+
+ nPMask >>= 22;
+ while( nPMask )
+ {
+ if ( nPMask & 1 )
+ {
+#ifdef DBG_UTIL
+ if (!(rManager.rImportParam.nImportFlags & PPT_IMPORTFLAGS_NO_TEXT_ASSERT))
+ {
+ DBG_ERROR( "PPTParaSheet::Read - unknown attribute, send me this document (SJ)" );
+ }
+#endif
+ rIn >> nVal16;
+ }
+ nPMask >>= 1;
+ }
+}
+
+PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, SdrPowerPointImport& rManager,
+ const PPTTextCharacterStyleAtomInterpreter& /*rTxCFStyle*/, const PPTTextParagraphStyleAtomInterpreter& rTxPFStyle,
+ const PPTTextSpecInfo& rTextSpecInfo ) :
+
+ PPTNumberFormatCreator ( new PPTExtParaProv( rManager, rIn, &rSlideHd ) ),
+ maTxSI ( rTextSpecInfo )
+{
+ UINT32 i;
+ UINT32 nOldFilePos = rIn.Tell();
+
+ // default stylesheets
+ mpCharSheet[ TSS_TYPE_PAGETITLE ] = new PPTCharSheet( TSS_TYPE_PAGETITLE );
+ mpCharSheet[ TSS_TYPE_BODY ] = new PPTCharSheet( TSS_TYPE_BODY );
+ mpCharSheet[ TSS_TYPE_NOTES ] = new PPTCharSheet( TSS_TYPE_NOTES );
+ mpCharSheet[ TSS_TYPE_UNUSED ] = new PPTCharSheet( TSS_TYPE_UNUSED ); // this entry is not used by ppt
+ mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ] = new PPTCharSheet( TSS_TYPE_TEXT_IN_SHAPE );
+ mpParaSheet[ TSS_TYPE_PAGETITLE ] = new PPTParaSheet( TSS_TYPE_PAGETITLE );
+ mpParaSheet[ TSS_TYPE_BODY ] = new PPTParaSheet( TSS_TYPE_BODY );
+ mpParaSheet[ TSS_TYPE_NOTES ] = new PPTParaSheet( TSS_TYPE_NOTES );
+ mpParaSheet[ TSS_TYPE_UNUSED ] = new PPTParaSheet( TSS_TYPE_UNUSED );
+ mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ] = new PPTParaSheet( TSS_TYPE_TEXT_IN_SHAPE );
+ mpCharSheet[ TSS_TYPE_QUARTERBODY ] = mpCharSheet[ TSS_TYPE_HALFBODY ] = mpCharSheet[ TSS_TYPE_TITLE ] = mpCharSheet[ TSS_TYPE_SUBTITLE ] = NULL;
+ mpParaSheet[ TSS_TYPE_QUARTERBODY ] = mpParaSheet[ TSS_TYPE_HALFBODY ] = mpParaSheet[ TSS_TYPE_TITLE ] = mpParaSheet[ TSS_TYPE_SUBTITLE ] = NULL;
+
+ /* SJ: try to locate the txMasterStyleAtom in the Environment
+
+ it seems that the environment TextStyle is having a higher priority
+ than the TextStyle that can be found within the master page
+ */
+ sal_Bool bFoundTxMasterStyleAtom04 = sal_False;
+ DffRecordHeader* pEnvHeader = rManager.aDocRecManager.GetRecordHeader( PPT_PST_Environment );
+ if ( pEnvHeader )
+ {
+ pEnvHeader->SeekToContent( rIn );
+ DffRecordHeader aTxMasterStyleHd;
+ while ( rIn.Tell() < pEnvHeader->GetRecEndFilePos() )
+ {
+ rIn >> aTxMasterStyleHd;
+ if ( aTxMasterStyleHd.nRecType == PPT_PST_TxMasterStyleAtom )
+ {
+ sal_uInt16 nLevelAnz;
+ rIn >> nLevelAnz;
+
+ sal_uInt16 nLev = 0;
+ sal_Bool bFirst = sal_True;
+ bFoundTxMasterStyleAtom04 = sal_True;
+ while ( rIn.GetError() == 0 && rIn.Tell() < aTxMasterStyleHd.GetRecEndFilePos() && nLev < nLevelAnz )
+ {
+ if ( nLev )
+ {
+ mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maParaLevel[ nLev ] = mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maParaLevel[ nLev - 1 ];
+ mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maCharLevel[ nLev ] = mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maCharLevel[ nLev - 1 ];
+ }
+ mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->Read( rManager, rIn, sal_True, nLev, bFirst );
+ if ( !nLev )
+ {
+ // set paragraph defaults for instance 4 (TSS_TYPE_TEXT_IN_SHAPE)
+ if ( rTxPFStyle.bValid )
+ {
+ PPTParaLevel& rParaLevel = mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maParaLevel[ 0 ];
+ rParaLevel.mnAsianLineBreak = 0;
+ if ( rTxPFStyle.bForbiddenRules )
+ rParaLevel.mnAsianLineBreak |= 1;
+ if ( !rTxPFStyle.bLatinTextWrap )
+ rParaLevel.mnAsianLineBreak |= 2;
+ if ( rTxPFStyle.bHangingPunctuation )
+ rParaLevel.mnAsianLineBreak |= 4;
+ }
+ }
+ mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->Read( rIn, sal_True, nLev, bFirst );
+ bFirst = sal_False;
+ nLev++;
+ }
+ break;
+ }
+ else
+ aTxMasterStyleHd.SeekToEndOfRecord( rIn );
+ }
+ }
+
+ rSlideHd.SeekToContent( rIn );
+ DffRecordHeader aTxMasterStyleHd;
+ while ( rIn.Tell() < rSlideHd.GetRecEndFilePos() )
+ {
+ rIn >> aTxMasterStyleHd;
+ if ( aTxMasterStyleHd.nRecType == PPT_PST_TxMasterStyleAtom )
+ break;
+ else
+ aTxMasterStyleHd.SeekToEndOfRecord( rIn );
+ }
+ while ( ( aTxMasterStyleHd.nRecType == PPT_PST_TxMasterStyleAtom ) && ( rIn.Tell() < rSlideHd.GetRecEndFilePos() ) ) //TODO: aTxMasterStyleHd may be used without having been properly initialized
+ {
+ sal_uInt32 nInstance = aTxMasterStyleHd.nRecInstance;
+ if ( ( nInstance < PPT_STYLESHEETENTRYS ) &&
+ ( ( nInstance != TSS_TYPE_TEXT_IN_SHAPE ) || ( bFoundTxMasterStyleAtom04 == sal_False ) ) )
+ {
+ if ( nInstance > 4 )
+ {
+ delete mpCharSheet[ nInstance ]; // be sure to delete the old one if this instance comes twice
+ delete mpParaSheet[ nInstance ];
+
+ switch ( nInstance )
+ {
+ case TSS_TYPE_SUBTITLE :
+ {
+ mpCharSheet[ TSS_TYPE_SUBTITLE ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_BODY ] ) );
+ mpParaSheet[ TSS_TYPE_SUBTITLE ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_BODY ] ) );
+ }
+ break;
+ case TSS_TYPE_TITLE :
+ {
+ mpCharSheet[ TSS_TYPE_TITLE ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_PAGETITLE ] ) );
+ mpParaSheet[ TSS_TYPE_TITLE ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_PAGETITLE ] ) );
+ }
+ break;
+ case TSS_TYPE_HALFBODY :
+ {
+ mpCharSheet[ TSS_TYPE_HALFBODY ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_BODY ] ) );
+ mpParaSheet[ TSS_TYPE_HALFBODY ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_BODY ] ) );
+ }
+ break;
+
+ case TSS_TYPE_QUARTERBODY :
+ {
+ mpCharSheet[ TSS_TYPE_QUARTERBODY ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_BODY ] ) );
+ mpParaSheet[ TSS_TYPE_QUARTERBODY ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_BODY ] ) );
+ }
+ break;
+ }
+ }
+ sal_uInt16 nLevelAnz;
+ rIn >> nLevelAnz;
+ if ( nLevelAnz > 5 )
+ {
+ DBG_ERROR( "PPTStyleSheet::Ppt-TextStylesheet hat mehr als 5 Ebenen! (SJ)" );
+ nLevelAnz = 5;
+ }
+ sal_uInt16 nLev = 0;
+ sal_Bool bFirst = sal_True;
+
+ while ( rIn.GetError() == 0 && rIn.Tell() < aTxMasterStyleHd.GetRecEndFilePos() && nLev < nLevelAnz )
+ {
+ if ( nLev && ( nInstance < 5 ) )
+ {
+ mpParaSheet[ nInstance ]->maParaLevel[ nLev ] = mpParaSheet[ nInstance ]->maParaLevel[ nLev - 1 ];
+ mpCharSheet[ nInstance ]->maCharLevel[ nLev ] = mpCharSheet[ nInstance ]->maCharLevel[ nLev - 1 ];
+ }
+
+ // Ausnahme: Vorlage 5, 6 (MasterTitle Titel und SubTitel)
+ if ( nInstance >= TSS_TYPE_SUBTITLE )
+ {
+ bFirst = sal_False;
+
+ sal_uInt16 nDontKnow;
+ rIn >> nDontKnow;
+ }
+ mpParaSheet[ nInstance ]->Read( rManager, rIn, sal_True, nLev, bFirst );
+ mpCharSheet[ nInstance ]->Read( rIn, sal_True, nLev, bFirst );
+ bFirst = sal_False;
+ nLev++;
+ }
+#ifdef DBG_UTIL
+ if (!(rManager.rImportParam.nImportFlags & PPT_IMPORTFLAGS_NO_TEXT_ASSERT))
+ {
+ if ( rIn.GetError() == 0 )
+ {
+ ByteString aMsg;
+ if ( rIn.Tell() > aTxMasterStyleHd.GetRecEndFilePos() )
+ {
+ aMsg += "\n ";
+ aMsg += "reading too many bytes:";
+ aMsg += ByteString::CreateFromInt32( rIn.Tell() - aTxMasterStyleHd.GetRecEndFilePos() );
+ }
+ if ( rIn.Tell() < aTxMasterStyleHd.GetRecEndFilePos() )
+ {
+ aMsg += "\n ";
+ aMsg += "reading too less bytes:";
+ aMsg += ByteString::CreateFromInt32( aTxMasterStyleHd.GetRecEndFilePos() - rIn.Tell() );
+ }
+ if ( aMsg.Len() != 0 )
+ {
+ aMsg.Insert( "]:", 0 );
+ aMsg.Insert( "PptStyleSheet::operator>>[", 0 );
+ DBG_ERROR(aMsg.GetBuffer());
+ }
+ }
+ if ( rIn.Tell() != aTxMasterStyleHd.GetRecEndFilePos() )
+ DBG_ASSERT(0, "SJ: Falsche Anzahl von Bytes gelesen beim Import der PPT-Formatvorlagen");
+ }
+#endif
+ }
+ aTxMasterStyleHd.SeekToEndOfRecord( rIn );
+ rIn >> aTxMasterStyleHd;
+ }
+ if ( !mpCharSheet[ TSS_TYPE_SUBTITLE ] )
+ {
+ mpCharSheet[ TSS_TYPE_SUBTITLE ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_BODY ] ) );
+ mpParaSheet[ TSS_TYPE_SUBTITLE ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_BODY ] ) );
+ }
+ if ( !mpCharSheet[ TSS_TYPE_TITLE ] )
+ {
+ mpCharSheet[ TSS_TYPE_TITLE ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_PAGETITLE ] ) );
+ mpParaSheet[ TSS_TYPE_TITLE ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_PAGETITLE ] ) );
+ }
+ if ( !mpCharSheet[ TSS_TYPE_HALFBODY ] )
+ {
+ mpCharSheet[ TSS_TYPE_HALFBODY ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_BODY ] ) );
+ mpParaSheet[ TSS_TYPE_HALFBODY ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_BODY ] ) );
+ }
+ if ( !mpCharSheet[ TSS_TYPE_QUARTERBODY ] )
+ {
+ mpCharSheet[ TSS_TYPE_QUARTERBODY ] = new PPTCharSheet( *( mpCharSheet[ TSS_TYPE_BODY ] ) );
+ mpParaSheet[ TSS_TYPE_QUARTERBODY ] = new PPTParaSheet( *( mpParaSheet[ TSS_TYPE_BODY ] ) );
+ }
+ if ( !bFoundTxMasterStyleAtom04 )
+ { // try to locate the txMasterStyleAtom in the Environment
+ DffRecordHeader* pEnvHeader2 = rManager.aDocRecManager.GetRecordHeader( PPT_PST_Environment );
+ if ( pEnvHeader2 )
+ {
+ pEnvHeader2->SeekToContent( rIn );
+ DffRecordHeader aTxMasterStyleHd2;
+ while ( rIn.Tell() < pEnvHeader2->GetRecEndFilePos() )
+ {
+ rIn >> aTxMasterStyleHd2;
+ if ( aTxMasterStyleHd2.nRecType == PPT_PST_TxMasterStyleAtom )
+ {
+ sal_uInt16 nLevelAnz;
+ rIn >> nLevelAnz;
+
+ sal_uInt16 nLev = 0;
+ sal_Bool bFirst = sal_True;
+ while ( rIn.GetError() == 0 && rIn.Tell() < aTxMasterStyleHd2.GetRecEndFilePos() && nLev < nLevelAnz )
+ {
+ if ( nLev )
+ {
+ mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maParaLevel[ nLev ] = mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maParaLevel[ nLev - 1 ];
+ mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maCharLevel[ nLev ] = mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maCharLevel[ nLev - 1 ];
+ }
+ mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->Read( rManager, rIn, sal_True, nLev, bFirst );
+ if ( !nLev )
+ {
+ // set paragraph defaults for instance 4 (TSS_TYPE_TEXT_IN_SHAPE)
+ if ( rTxPFStyle.bValid )
+ {
+ PPTParaLevel& rParaLevel = mpParaSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->maParaLevel[ 0 ];
+ rParaLevel.mnAsianLineBreak = 0;
+ if ( rTxPFStyle.bForbiddenRules )
+ rParaLevel.mnAsianLineBreak |= 1;
+ if ( !rTxPFStyle.bLatinTextWrap )
+ rParaLevel.mnAsianLineBreak |= 2;
+ if ( rTxPFStyle.bHangingPunctuation )
+ rParaLevel.mnAsianLineBreak |= 4;
+ }
+ }
+ mpCharSheet[ TSS_TYPE_TEXT_IN_SHAPE ]->Read( rIn, sal_True, nLev, bFirst );
+ bFirst = sal_False;
+ nLev++;
+ }
+ break;
+ }
+ else
+ aTxMasterStyleHd2.SeekToEndOfRecord( rIn );
+ }
+ }
+ }
+ rIn.Seek( nOldFilePos );
+
+ // will will create the default numbulletitem for each instance
+ for ( i = 0; i < PPT_STYLESHEETENTRYS; i++ )
+ {
+ UINT16 nLevels, nDepth = 0;
+ SvxNumRuleType eNumRuleType;
+
+ switch ( i )
+ {
+ case TSS_TYPE_PAGETITLE :
+ case TSS_TYPE_TITLE :
+ nLevels = 1;
+ eNumRuleType = SVX_RULETYPE_NUMBERING;
+ break;
+ case TSS_TYPE_SUBTITLE :
+ nLevels = 10;
+ eNumRuleType = SVX_RULETYPE_NUMBERING;
+ break;
+ case TSS_TYPE_BODY :
+ case TSS_TYPE_HALFBODY :
+ case TSS_TYPE_QUARTERBODY :
+ nLevels = 10;
+ eNumRuleType = SVX_RULETYPE_PRESENTATION_NUMBERING;
+ break;
+ default :
+ case TSS_TYPE_NOTES :
+ case TSS_TYPE_UNUSED :
+ case TSS_TYPE_TEXT_IN_SHAPE :
+ nLevels = 10;
+ eNumRuleType = SVX_RULETYPE_NUMBERING;
+ break;
+ }
+ SvxNumRule aRule( NUM_BULLET_REL_SIZE | NUM_BULLET_COLOR |
+ NUM_CHAR_TEXT_DISTANCE | NUM_SYMBOL_ALIGNMENT,
+ nLevels, FALSE, eNumRuleType );
+ for ( UINT16 nCount = 0; nDepth < nLevels; nCount++ )
+ {
+ const PPTParaLevel& rParaLevel = mpParaSheet[ i ]->maParaLevel[ nCount ];
+ const PPTCharLevel& rCharLevel = mpCharSheet[ i ]->maCharLevel[ nCount ];
+ SvxNumberFormat aNumberFormat( SVX_NUM_CHAR_SPECIAL );
+ aNumberFormat.SetBulletChar( ' ' );
+ GetNumberFormat( rManager, aNumberFormat, nCount, rParaLevel, rCharLevel, i );
+ aRule.SetLevel( nDepth++, aNumberFormat );
+ if ( nCount >= 4 )
+ {
+ for ( ;nDepth < nLevels; nDepth++ )
+ aRule.SetLevel( nDepth, aNumberFormat );
+ if ( eNumRuleType == SVX_RULETYPE_PRESENTATION_NUMBERING )
+ aRule.SetLevel( 0, aNumberFormat );
+ }
+ }
+ mpNumBulletItem[ i ] = new SvxNumBulletItem( aRule, EE_PARA_NUMBULLET );
+ }
+}
+
+PPTStyleSheet::~PPTStyleSheet()
+{
+ for ( UINT32 i = 0; i < PPT_STYLESHEETENTRYS; i++ )
+ {
+ delete mpCharSheet[ i ];
+ delete mpParaSheet[ i ];
+ delete mpNumBulletItem[ i ];
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTParaPropSet::PPTParaPropSet() :
+ pParaSet( new ImplPPTParaPropSet )
+{
+ pParaSet->mnHasAnm = 1;
+}
+
+PPTParaPropSet::PPTParaPropSet( PPTParaPropSet& rParaPropSet )
+{
+ pParaSet = rParaPropSet.pParaSet;
+ pParaSet->mnRefCount++;
+
+ mnOriginalTextPos = rParaPropSet.mnOriginalTextPos;
+}
+
+PPTParaPropSet::~PPTParaPropSet()
+{
+ if ( ! ( --pParaSet->mnRefCount ) )
+ delete pParaSet;
+}
+
+PPTParaPropSet& PPTParaPropSet::operator=( PPTParaPropSet& rParaPropSet )
+{
+ if ( this != &rParaPropSet )
+ {
+ if ( ! ( --pParaSet->mnRefCount ) )
+ delete pParaSet;
+ pParaSet = rParaPropSet.pParaSet;
+ pParaSet->mnRefCount++;
+
+ mnOriginalTextPos = rParaPropSet.mnOriginalTextPos;
+ }
+ return *this;
+}
+
+PPTCharPropSet::PPTCharPropSet( sal_uInt32 nParagraph ) :
+ mnParagraph ( nParagraph ),
+ mpFieldItem ( NULL ),
+ pCharSet ( new ImplPPTCharPropSet )
+{
+ mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = 0;
+}
+
+PPTCharPropSet::PPTCharPropSet( PPTCharPropSet& rCharPropSet )
+{
+ pCharSet = rCharPropSet.pCharSet;
+ pCharSet->mnRefCount++;
+
+ mnParagraph = rCharPropSet.mnParagraph;
+ mnOriginalTextPos = rCharPropSet.mnOriginalTextPos;
+ maString = rCharPropSet.maString;
+ mpFieldItem = ( rCharPropSet.mpFieldItem ) ? new SvxFieldItem( *rCharPropSet.mpFieldItem ) : NULL;
+ mnLanguage[ 0 ] = rCharPropSet.mnLanguage[ 0 ];
+ mnLanguage[ 1 ] = rCharPropSet.mnLanguage[ 1 ];
+ mnLanguage[ 2 ] = rCharPropSet.mnLanguage[ 2 ];
+}
+
+PPTCharPropSet::PPTCharPropSet( PPTCharPropSet& rCharPropSet, sal_uInt32 nParagraph )
+{
+ pCharSet = rCharPropSet.pCharSet;
+ pCharSet->mnRefCount++;
+
+ mnParagraph = nParagraph;
+ mnOriginalTextPos = rCharPropSet.mnOriginalTextPos;
+ maString = rCharPropSet.maString;
+ mpFieldItem = ( rCharPropSet.mpFieldItem ) ? new SvxFieldItem( *rCharPropSet.mpFieldItem ) : NULL;
+ mnLanguage[ 0 ] = mnLanguage[ 1 ] = mnLanguage[ 2 ] = 0;
+}
+
+PPTCharPropSet::~PPTCharPropSet()
+{
+ if ( ! ( --pCharSet->mnRefCount ) )
+ delete pCharSet;
+ delete mpFieldItem;
+}
+
+PPTCharPropSet& PPTCharPropSet::operator=( PPTCharPropSet& rCharPropSet )
+{
+ if ( this != &rCharPropSet )
+ {
+ if ( ! ( --pCharSet->mnRefCount ) )
+ delete pCharSet;
+ pCharSet = rCharPropSet.pCharSet;
+ pCharSet->mnRefCount++;
+
+ mnOriginalTextPos = rCharPropSet.mnOriginalTextPos;
+ mnParagraph = rCharPropSet.mnParagraph;
+ maString = rCharPropSet.maString;
+ mpFieldItem = ( rCharPropSet.mpFieldItem ) ? new SvxFieldItem( *rCharPropSet.mpFieldItem ) : NULL;
+ }
+ return *this;
+}
+
+void PPTCharPropSet::ImplMakeUnique()
+{
+ if ( pCharSet->mnRefCount > 1 )
+ {
+ ImplPPTCharPropSet& rOld = *pCharSet;
+ rOld.mnRefCount--;
+ pCharSet = new ImplPPTCharPropSet( rOld );
+ pCharSet->mnRefCount = 1;
+ }
+}
+
+void PPTCharPropSet::SetFont( UINT16 nFont )
+{
+ UINT32 nMask = 1 << PPT_CharAttr_Font;
+ UINT32 bDoNotMake = pCharSet->mnAttrSet & nMask;
+
+ if ( bDoNotMake )
+ bDoNotMake = nFont == pCharSet->mnFont;
+
+ if ( !bDoNotMake )
+ {
+ ImplMakeUnique();
+ pCharSet->mnFont = nFont;
+ pCharSet->mnAttrSet |= nMask;
+ }
+}
+
+void PPTCharPropSet::SetColor( sal_uInt32 nColor )
+{
+ ImplMakeUnique();
+ pCharSet->mnColor = nColor;
+ pCharSet->mnAttrSet |= 1 << PPT_CharAttr_FontColor;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTRuler::PPTRuler() :
+ nRefCount ( 1 ),
+ nFlags ( 0 ),
+ pTab ( NULL ),
+ nTabCount ( 0 )
+{
+}
+
+PPTRuler::~PPTRuler()
+{
+ delete[] pTab;
+};
+
+
+PPTTextRulerInterpreter::PPTTextRulerInterpreter() :
+ mpImplRuler ( new PPTRuler() )
+{
+}
+
+PPTTextRulerInterpreter::PPTTextRulerInterpreter( PPTTextRulerInterpreter& rRuler )
+{
+ mpImplRuler = rRuler.mpImplRuler;
+ mpImplRuler->nRefCount++;
+}
+
+PPTTextRulerInterpreter::PPTTextRulerInterpreter( UINT32 nFileOfs, SdrPowerPointImport& rMan, DffRecordHeader& rHeader, SvStream& rIn ) :
+ mpImplRuler ( new PPTRuler() )
+{
+ if ( nFileOfs != 0xffffffff )
+ {
+ UINT32 nOldPos = rIn.Tell();
+ DffRecordHeader rHd;
+ if ( nFileOfs )
+ {
+ rIn.Seek( nFileOfs );
+ rIn >> rHd;
+ }
+ else
+ {
+ rHeader.SeekToContent( rIn );
+ if ( rMan.SeekToRec( rIn, PPT_PST_TextRulerAtom, rHeader.GetRecEndFilePos(), &rHd ) )
+ nFileOfs++;
+ }
+ if ( nFileOfs )
+ {
+ sal_Int16 nTCount;
+ sal_Int32 i;
+ rIn >> mpImplRuler->nFlags;
+ if ( mpImplRuler->nFlags & 1 )
+ rIn >> mpImplRuler->nDefaultTab;
+ if ( mpImplRuler->nFlags & 4 )
+ {
+ rIn >> nTCount;
+ if ( nTCount )
+ {
+ mpImplRuler->nTabCount = (UINT16)nTCount;
+ mpImplRuler->pTab = new PPTTabEntry[ mpImplRuler->nTabCount ];
+ for ( i = 0; i < nTCount; i++ )
+ {
+ rIn >> mpImplRuler->pTab[ i ].nOffset
+ >> mpImplRuler->pTab[ i ].nStyle;
+ }
+ }
+ }
+ for ( i = 0; i < 5; i++ )
+ {
+ if ( mpImplRuler->nFlags & ( 8 << i ) )
+ rIn >> mpImplRuler->nTextOfs[ i ];
+ if ( mpImplRuler->nFlags & ( 256 << i ) )
+ rIn >> mpImplRuler->nBulletOfs[ i ];
+ }
+ }
+ rIn.Seek( nOldPos );
+ }
+}
+
+BOOL PPTTextRulerInterpreter::GetDefaultTab( UINT32 /*nLevel*/, UINT16& nValue ) const
+{
+ if ( ! ( mpImplRuler->nFlags & 1 ) )
+ return FALSE;
+ nValue = mpImplRuler->nDefaultTab;
+ return TRUE;
+}
+
+BOOL PPTTextRulerInterpreter::GetTextOfs( UINT32 nLevel, UINT16& nValue ) const
+{
+ if ( ! ( ( nLevel < 5 ) && ( mpImplRuler->nFlags & ( 8 << nLevel ) ) ) )
+ return FALSE;
+ nValue = mpImplRuler->nTextOfs[ nLevel ];
+ return TRUE;
+}
+
+BOOL PPTTextRulerInterpreter::GetBulletOfs( UINT32 nLevel, UINT16& nValue ) const
+{
+ if ( ! ( ( nLevel < 5 ) && ( mpImplRuler->nFlags & ( 256 << nLevel ) ) ) )
+ return FALSE;
+ nValue = mpImplRuler->nBulletOfs[ nLevel ];
+ return TRUE;
+}
+
+PPTTextRulerInterpreter& PPTTextRulerInterpreter::operator=( PPTTextRulerInterpreter& rRuler )
+{
+ if ( this != &rRuler )
+ {
+ if ( ! ( --mpImplRuler->nRefCount ) )
+ delete mpImplRuler;
+ mpImplRuler = rRuler.mpImplRuler;
+ mpImplRuler->nRefCount++;
+ }
+ return *this;
+}
+
+PPTTextRulerInterpreter::~PPTTextRulerInterpreter()
+{
+ if ( ! ( --mpImplRuler->nRefCount ) )
+ delete mpImplRuler;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTTextCharacterStyleAtomInterpreter::PPTTextCharacterStyleAtomInterpreter() :
+ nFlags1 ( 0 ),
+ nFlags2 ( 0 ),
+ nFlags3 ( 0 )
+{
+}
+
+sal_Bool PPTTextCharacterStyleAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader& rRecHd )
+{
+ rRecHd.SeekToContent( rIn );
+
+ rIn >> nFlags1
+ >> nFlags2
+ >> nFlags3
+ >> n1
+ >> nFontHeight
+ >> nFontColor;
+
+ return sal_True;
+}
+
+PPTTextCharacterStyleAtomInterpreter::~PPTTextCharacterStyleAtomInterpreter()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+PPTTextParagraphStyleAtomInterpreter::PPTTextParagraphStyleAtomInterpreter() :
+ bValid ( sal_False ),
+ bForbiddenRules ( sal_False ),
+ bHangingPunctuation ( sal_False ),
+ bLatinTextWrap ( sal_False )
+{
+}
+
+sal_Bool PPTTextParagraphStyleAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader& rRecHd )
+{
+ bValid = sal_False;
+ rRecHd.SeekToContent( rIn );
+ sal_uInt32 nDummy32, nFlags, nRecEndPos = rRecHd.GetRecEndFilePos();
+ sal_uInt16 nDummy16;
+
+ rIn >> nDummy16
+ >> nFlags;
+
+ if ( nFlags & 0xf && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // BuFlags
+ if ( nFlags & 0x80 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // BuChar
+ if ( nFlags & 0x10 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // nBuFont;
+ if ( nFlags & 0x40 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // nBuHeight;
+ if ( nFlags & 0x0020 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy32; // nBuColor;
+ if ( nFlags & 0x800 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // AbsJust!
+ if ( nFlags & 0x400 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16;
+ if ( nFlags & 0x200 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16;
+ if ( nFlags & 0x100 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16;
+ if ( nFlags & 0x1000 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // LineFeed
+ if ( nFlags & 0x2000 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // nUpperDist
+ if ( nFlags & 0x4000 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16; // nLowerDist
+ if ( nFlags & 0x8000 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16;
+ if ( nFlags & 0x10000 && ( rIn.Tell() < nRecEndPos ) )
+ rIn >> nDummy16;
+ if ( nFlags & 0xe0000 && ( rIn.Tell() < nRecEndPos ) )
+ {
+ rIn >> nDummy16;
+ if ( nFlags & 0x20000 )
+ bForbiddenRules = ( nDummy16 & 1 ) == 1;
+ if ( nFlags & 0x40000 )
+ bLatinTextWrap = ( nDummy16 & 2 ) == 0;
+ if ( nFlags & 0x80000 )
+ bHangingPunctuation = ( nDummy16 & 4 ) == 4;
+ }
+ nFlags &=~ 0xfffff;
+ sal_uInt32 nMask = 0x100000;
+ while ( nFlags && nMask && ( rIn.Tell() < nRecEndPos ) )
+ {
+ if ( nFlags & nMask )
+ {
+ rIn >> nDummy16;
+ nFlags ^= nMask;
+ }
+ nMask <<= 1;
+ }
+ bValid = rIn.Tell() == nRecEndPos;
+ return bValid;
+}
+
+PPTTextParagraphStyleAtomInterpreter::~PPTTextParagraphStyleAtomInterpreter()
+{
+
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+PPTTextSpecInfo::PPTTextSpecInfo( sal_uInt32 _nCharIdx ) :
+ nCharIdx ( _nCharIdx ),
+ nDontKnow ( 1 )
+{
+ nLanguage[ 0 ] = 0x400;
+ nLanguage[ 1 ] = 0;
+ nLanguage[ 2 ] = 0;
+}
+
+PPTTextSpecInfo::~PPTTextSpecInfo()
+{
+}
+
+PPTTextSpecInfoAtomInterpreter::PPTTextSpecInfoAtomInterpreter() :
+ bValid ( sal_False )
+{
+}
+
+sal_Bool PPTTextSpecInfoAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader& rRecHd,
+ sal_uInt16 nRecordType, const PPTTextSpecInfo* pTextSpecDefault )
+{
+ bValid = sal_False;
+ sal_uInt32 nCharIdx = 0;
+ rRecHd.SeekToContent( rIn );
+
+ while ( rIn.Tell() < rRecHd.GetRecEndFilePos() )
+ {
+ sal_uInt32 nCharCount,
+ nFlags, i;
+
+ if ( nRecordType == PPT_PST_TextSpecInfoAtom )
+ {
+ rIn >> nCharCount;
+ nCharIdx += nCharCount;
+ }
+ rIn >> nFlags;
+
+ PPTTextSpecInfo* pEntry = new PPTTextSpecInfo( nCharIdx );
+ if ( pTextSpecDefault )
+ {
+ pEntry->nDontKnow = pTextSpecDefault->nDontKnow;
+ pEntry->nLanguage[ 0 ] = pTextSpecDefault->nLanguage[ 0 ];
+ pEntry->nLanguage[ 1 ] = pTextSpecDefault->nLanguage[ 1 ];
+ pEntry->nLanguage[ 2 ] = pTextSpecDefault->nLanguage[ 2 ];
+ }
+ for ( i = 1; nFlags && i ; i <<= 1 )
+ {
+ sal_uInt16 nLang = 0;
+ switch( nFlags & i )
+ {
+ case 0 : break;
+ case 1 : rIn >> pEntry->nDontKnow; break;
+ case 2 : rIn >> nLang; break;
+ case 4 : rIn >> nLang; break;
+ default :
+ {
+ rIn.SeekRel( 2 );
+ }
+ }
+ if ( nLang )
+ {
+ sal_uInt16 nScriptType = GetI18NScriptTypeOfLanguage( nLang );
+ if ( nScriptType & SCRIPTTYPE_LATIN )
+ pEntry->nLanguage[ 0 ] = nLang;
+ if ( nScriptType & SCRIPTTYPE_ASIAN )
+ pEntry->nLanguage[ 1 ] = nLang;
+ if ( nScriptType & SCRIPTTYPE_COMPLEX )
+ pEntry->nLanguage[ 2 ] = nLang;
+ }
+ nFlags &= ~i;
+ }
+ aList.Insert( pEntry, LIST_APPEND );
+ }
+ bValid = rIn.Tell() == rRecHd.GetRecEndFilePos();
+ return bValid;
+}
+
+PPTTextSpecInfoAtomInterpreter::~PPTTextSpecInfoAtomInterpreter()
+{
+ void *pPtr;
+ for ( pPtr = aList.First(); pPtr; pPtr = aList.Next() )
+ delete (PPTTextSpecInfo*)pPtr;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void StyleTextProp9::Read( SvStream& rIn )
+{
+ rIn >> mnExtParagraphMask;
+ if ( mnExtParagraphMask & 0x800000 )
+ rIn >> mnBuBlip;
+ if ( mnExtParagraphMask & 0x2000000 )
+ rIn >> mnHasAnm;
+ if ( mnExtParagraphMask & 0x1000000 )
+ rIn >> mnAnmScheme;
+ if ( mnExtParagraphMask & 0x4000000 )
+ rIn >> mpfPP10Ext;
+ rIn >> mnExtCharacterMask;
+ if ( mnExtCharacterMask & 0x100000 )
+ rIn >> mncfPP10Ext;
+ rIn >> mnSpecialInfoMask;
+ if ( mnSpecialInfoMask & 0x20 )
+ rIn >> mnPP10Ext;
+ if ( mnSpecialInfoMask & 0x40 )
+ rIn >> mfBidi;
+}
+
+PPTStyleTextPropReader::PPTStyleTextPropReader( SvStream& rIn, SdrPowerPointImport& rMan, const DffRecordHeader& rTextHeader,
+ PPTTextRulerInterpreter& rRuler, const DffRecordHeader& rExtParaHd, sal_uInt32 nInstance )
+{
+ Init(rIn, rMan, rTextHeader, rRuler, rExtParaHd, nInstance);
+}
+
+void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport& rMan, const DffRecordHeader& rTextHeader,
+ const String& aString, PPTTextRulerInterpreter& rRuler,
+ sal_uInt32& nCharCount, sal_Bool& bTextPropAtom )
+{
+ sal_uInt32 nMask = 0; //TODO: nMask initialized here to suppress warning for now, see corresponding TODO below
+ sal_uInt32 nCharAnzRead = 0;
+ sal_uInt16 nDummy16;
+
+ sal_uInt16 nStringLen = aString.Len();
+
+ DffRecordHeader aTextHd2;
+ rTextHeader.SeekToContent( rIn );
+ if ( rMan.SeekToRec( rIn, PPT_PST_StyleTextPropAtom, rTextHeader.GetRecEndFilePos(), &aTextHd2 ) )
+ bTextPropAtom = sal_True;
+ while ( nCharAnzRead <= nStringLen )
+ {
+ PPTParaPropSet aParaPropSet;
+ ImplPPTParaPropSet& aSet = *aParaPropSet.pParaSet;
+ if ( bTextPropAtom )
+ {
+ rIn >> nCharCount
+ >> aParaPropSet.pParaSet->mnDepth; // Einruecktiefe
+
+ nCharCount--;
+
+ rIn >> nMask;
+ aSet.mnAttrSet = nMask & 0x207df7;
+ sal_uInt16 nBulFlg = 0;
+ if ( nMask & 0xF )
+ rIn >> nBulFlg; // Bullet-HardAttr-Flags
+ aSet.mpArry[ PPT_ParaAttr_BulletOn ] = ( nBulFlg & 1 ) ? 1 : 0;
+ aSet.mpArry[ PPT_ParaAttr_BuHardFont ] = ( nBulFlg & 2 ) ? 1 : 0;
+ aSet.mpArry[ PPT_ParaAttr_BuHardColor ] = ( nBulFlg & 4 ) ? 1 : 0;
+
+ if ( nMask & 0x0080 ) // buChar
+ rIn >> aSet.mpArry[ PPT_ParaAttr_BulletChar ];
+ if ( nMask & 0x0010 ) // buTypeface
+ rIn >> aSet.mpArry[ PPT_ParaAttr_BulletFont ];
+ if ( nMask & 0x0040 ) // buSize
+ {
+ rIn >> aSet.mpArry[ PPT_ParaAttr_BulletHeight ];
+ if ( ! ( ( nMask & ( 1 << PPT_ParaAttr_BuHardHeight ) )
+ && ( nBulFlg && ( 1 << PPT_ParaAttr_BuHardHeight ) ) ) )
+ aSet.mnAttrSet ^= 0x40;
+ }
+ if ( nMask & 0x0020 ) // buColor
+ {
+ sal_uInt32 nVal32, nHiByte;
+ rIn >> nVal32;
+ nHiByte = nVal32 >> 24;
+ if ( nHiByte <= 8 )
+ nVal32 = nHiByte | PPT_COLSCHEME;
+ aSet.mnBulletColor = nVal32;
+ }
+ if ( nMask & 0x0800 ) // pfAlignment
+ {
+ rIn >> nDummy16;
+ aSet.mpArry[ PPT_ParaAttr_Adjust ] = nDummy16 & 3;
+ }
+ if ( nMask & 0x1000 ) // pfLineSpacing
+ rIn >> aSet.mpArry[ PPT_ParaAttr_LineFeed ];
+ if ( nMask & 0x2000 ) // pfSpaceBefore
+ rIn >> aSet.mpArry[ PPT_ParaAttr_UpperDist ];
+ if ( nMask & 0x4000 ) // pfSpaceAfter
+ rIn >> aSet.mpArry[ PPT_ParaAttr_LowerDist ];
+ if ( nMask & 0x100 ) // pfLeftMargin
+ rIn >> nDummy16;
+ if ( nMask & 0x400 ) // pfIndent
+ rIn >> nDummy16;
+ if ( nMask & 0x8000 ) // pfDefaultTabSize
+ rIn >> nDummy16;
+ if ( nMask & 0x100000 ) // pfTabStops
+ {
+ sal_uInt16 i, nDistance, nAlignment, nNumberOfTabStops = 0;
+ rIn >> nNumberOfTabStops;
+ for ( i = 0; i < nNumberOfTabStops; i++ )
+ {
+ rIn >> nDistance
+ >> nAlignment;
+ }
+ }
+ if ( nMask & 0x10000 ) // pfBaseLine
+ rIn >> nDummy16;
+ if ( nMask & 0xe0000 ) // pfCharWrap, pfWordWrap, pfOverflow
+ {
+ rIn >> nDummy16;
+ if ( nMask & 0x20000 )
+ aSet.mpArry[ PPT_ParaAttr_AsianLB_1 ] = nDummy16 & 1;
+ if ( nMask & 0x40000 )
+ aSet.mpArry[ PPT_ParaAttr_AsianLB_2 ] = ( nDummy16 >> 1 ) & 1;
+ if ( nMask & 0x80000 )
+ aSet.mpArry[ PPT_ParaAttr_AsianLB_3 ] = ( nDummy16 >> 2 ) & 1;
+ aSet.mnAttrSet |= ( ( nMask >> 17 ) & 7 ) << PPT_ParaAttr_AsianLB_1;
+ }
+ if ( nMask & 0x200000 ) // pfTextDirection
+ rIn >> aSet.mpArry[ PPT_ParaAttr_BiDi ];
+ }
+ else
+ nCharCount = nStringLen;
+
+ if ( rRuler.GetTextOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_TextOfs ] ) )
+ aSet.mnAttrSet |= 1 << PPT_ParaAttr_TextOfs;
+ if ( rRuler.GetBulletOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_BulletOfs ] ) )
+ aSet.mnAttrSet |= 1 << PPT_ParaAttr_BulletOfs;
+ if ( rRuler.GetDefaultTab( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_DefaultTab ] ) )
+ aSet.mnAttrSet |= 1 << PPT_ParaAttr_DefaultTab;
+
+ if ( ( nCharCount > nStringLen ) || ( nStringLen < nCharAnzRead + nCharCount ) )
+ {
+ bTextPropAtom = sal_False;
+ nCharCount = nStringLen - nCharAnzRead;
+ // please fix the right hand side of
+ // PPTParaPropSet& PPTParaPropSet::operator=(PPTParaPropSet&),
+ // it should be a const reference
+ PPTParaPropSet aTmpPPTParaPropSet;
+ aParaPropSet = aTmpPPTParaPropSet;
+ DBG_ERROR( "SJ:PPTStyleTextPropReader::could not get this PPT_PST_StyleTextPropAtom by reading the paragraph attributes" );
+ }
+ PPTParaPropSet* pPara = new PPTParaPropSet( aParaPropSet );
+ pPara->mnOriginalTextPos = nCharAnzRead;
+ aParaPropList.Insert( pPara, LIST_APPEND );
+ if ( nCharCount )
+ {
+ sal_uInt32 nCount;
+ const sal_Unicode* pDat = aString.GetBuffer() + nCharAnzRead;
+ for ( nCount = 0; nCount < nCharCount; nCount++ )
+ {
+ if ( pDat[ nCount ] == 0xd )
+ {
+ pPara = new PPTParaPropSet( aParaPropSet );
+ pPara->mnOriginalTextPos = nCharAnzRead + nCount + 1;
+ aParaPropList.Insert( pPara, LIST_APPEND );
+ }
+ }
+ }
+ nCharAnzRead += nCharCount + 1;
+ }
+}
+
+void PPTStyleTextPropReader::ReadCharProps( SvStream& rIn, PPTCharPropSet& aCharPropSet, const String& aString,
+ sal_uInt32& nCharCount, sal_uInt32 nCharAnzRead,
+ sal_Bool& bTextPropAtom, sal_uInt32 nExtParaPos,
+ const std::vector< StyleTextProp9 >& aStyleTextProp9,
+ sal_uInt32& nExtParaFlags, sal_uInt16& nBuBlip,
+ sal_uInt16& nHasAnm, sal_uInt32& nAnmScheme )
+{
+ sal_uInt32 nMask = 0; //TODO: nMask initialized here to suppress warning for now, see corresponding TODO below
+ sal_uInt16 nDummy16;
+ sal_Int32 nCharsToRead;
+ sal_uInt32 nExtParaNibble = 0;
+
+ sal_uInt16 nStringLen = aString.Len();
+
+ rIn >> nDummy16;
+ nCharCount = nDummy16;
+ rIn >> nDummy16;
+ nCharsToRead = nStringLen - ( nCharAnzRead + nCharCount );
+ if ( nCharsToRead < 0 )
+ {
+ nCharCount = nStringLen - nCharAnzRead;
+ if ( nCharsToRead < -1 )
+ {
+ bTextPropAtom = sal_False;
+ DBG_ERROR( "SJ:PPTStyleTextPropReader::could not get this PPT_PST_StyleTextPropAtom by reading the character attributes" );
+ }
+ }
+ ImplPPTCharPropSet& aSet = *aCharPropSet.pCharSet;
+
+ // character attributes
+ rIn >> nMask;
+ if ( (sal_uInt16)nMask )
+ {
+ aSet.mnAttrSet |= (sal_uInt16)nMask;
+ rIn >> aSet.mnFlags;
+ }
+ if ( nMask & 0x10000 ) // cfTypeface
+ {
+ rIn >> aSet.mnFont;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_Font;
+ }
+ if ( nMask & 0x200000 ) // cfFEOldTypeface
+ {
+ rIn >> aSet.mnAsianOrComplexFont;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_AsianOrComplexFont;
+ }
+ if ( nMask & 0x400000 ) // cfANSITypeface
+ {
+ rIn >> aSet.mnANSITypeface;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_ANSITypeface;
+ }
+ if ( nMask & 0x800000 ) // cfSymbolTypeface
+ {
+ rIn >> aSet.mnSymbolFont;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_Symbol;
+ }
+ if ( nMask & 0x20000 ) // cfSize
+ {
+ rIn >> aSet.mnFontHeight;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_FontHeight;
+ }
+ if ( nMask & 0x40000 ) // cfColor
+ {
+ sal_uInt32 nVal;
+ rIn >> nVal;
+ if ( !( nVal & 0xff000000 ) )
+ nVal = PPT_COLSCHEME_HINTERGRUND;
+ aSet.mnColor = nVal;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_FontColor;
+ }
+ if ( nMask & 0x80000 ) // cfPosition
+ {
+ rIn >> aSet.mnEscapement;
+ aSet.mnAttrSet |= 1 << PPT_CharAttr_Escapement;
+ }
+ if ( nExtParaPos )
+ {
+ sal_uInt32 nExtBuInd = nMask & 0x3c00;
+ if ( nExtBuInd )
+ nExtBuInd = ( aSet.mnFlags & 0x3c00 ) >> 10;
+ if ( nExtBuInd < aStyleTextProp9.size() )
+ {
+ if ( nExtParaNibble && ( ( nExtBuInd + nExtParaNibble ) < aStyleTextProp9.size() ) )
+ nExtBuInd += nExtParaNibble;
+
+ nExtParaFlags = aStyleTextProp9[ nExtBuInd ].mnExtParagraphMask;
+ nBuBlip = aStyleTextProp9[ nExtBuInd ].mnBuBlip;
+ nHasAnm = aStyleTextProp9[ nExtBuInd ].mnHasAnm;
+ nAnmScheme = aStyleTextProp9[ nExtBuInd ].mnAnmScheme;
+ }
+ if ( ( nExtBuInd & 0xf ) == 0xf )
+ nExtParaNibble += 16;
+ }
+}
+
+void PPTStyleTextPropReader::Init( SvStream& rIn, SdrPowerPointImport& rMan, const DffRecordHeader& rTextHeader,
+ PPTTextRulerInterpreter& rRuler, const DffRecordHeader& rExtParaHd, sal_uInt32 nInstance )
+{
+ sal_uInt32 nMerk = rIn.Tell();
+ sal_uInt32 nExtParaPos = ( rExtParaHd.nRecType == PPT_PST_ExtendedParagraphAtom ) ? rExtParaHd.nFilePos + 8 : 0;
+
+ std::vector< StyleTextProp9 > aStyleTextProp9;
+ if ( rExtParaHd.nRecType == PPT_PST_ExtendedParagraphAtom )
+ {
+ rIn.Seek( rExtParaHd.nFilePos + 8 );
+ while( ( rIn.GetError() == 0 ) && ( rIn.Tell() < rExtParaHd.GetRecEndFilePos() ) )
+ {
+ aStyleTextProp9.resize( aStyleTextProp9.size() + 1 );
+ aStyleTextProp9.back().Read( rIn );
+ }
+ rIn.Seek( nMerk );
+ }
+
+ String aString;
+ DffRecordHeader aTextHd;
+ rIn >> aTextHd;
+ sal_uInt32 nMaxLen = aTextHd.nRecLen;
+ if ( nMaxLen > 0xFFFF )
+ nMaxLen = 0xFFFF;
+
+ if( aTextHd.nRecType == PPT_PST_TextCharsAtom )
+ {
+ sal_uInt32 i;
+ sal_Unicode nChar,*pBuf = new sal_Unicode[ ( nMaxLen >> 1 ) + 1 ];
+ rIn.Read( pBuf, nMaxLen );
+ nMaxLen >>= 1;
+ pBuf[ nMaxLen ] = 0;
+ sal_Unicode* pPtr = pBuf;
+#ifdef OSL_BIGENDIAN
+ sal_Unicode nTemp;
+ for ( i = 0; i < nMaxLen; i++ )
+ {
+ nTemp = *pPtr;
+ *pPtr++ = ( nTemp << 8 ) | ( nTemp >> 8 );
+ }
+ pPtr = pBuf;
+#endif
+
+ for ( i = 0; i < nMaxLen; pPtr++, i++ )
+ {
+ nChar = *pPtr;
+ if ( !nChar )
+ break;
+ if ( ( nChar & 0xff00 ) == 0xf000 ) // in this special case we got a symbol
+ aSpecMarkerList.Insert( (void*)( i | PPT_SPEC_SYMBOL ), LIST_APPEND );
+ else if ( nChar == 0xd )
+ {
+ if ( nInstance == TSS_TYPE_PAGETITLE )
+ *pPtr = 0xb;
+ else
+ aSpecMarkerList.Insert( (void*)( i | PPT_SPEC_NEWLINE ), LIST_APPEND );
+ }
+ }
+ if ( i )
+ aString = String( pBuf, (sal_uInt16)i );
+ delete[] pBuf;
+ }
+ else if( aTextHd.nRecType == PPT_PST_TextBytesAtom )
+ {
+ sal_Char *pBuf = new sal_Char[ nMaxLen + 1 ];
+ pBuf[ nMaxLen ] = 0;
+ rIn.Read( pBuf, nMaxLen );
+ sal_Char* pPtr = pBuf;
+ for (;;)
+ {
+ sal_Char cLo = *pPtr;
+ if ( cLo == 0 )
+ break;
+ if ( cLo == 0xd )
+ {
+ if ( nInstance == TSS_TYPE_PAGETITLE )
+ *pPtr = 0xb;
+ else
+ aSpecMarkerList.Insert( (void*)( pPtr - pBuf | PPT_SPEC_NEWLINE ), LIST_APPEND );
+ }
+ pPtr++;
+ }
+ xub_StrLen nLen = sal::static_int_cast< xub_StrLen >( pPtr - pBuf );
+ if ( nLen )
+ aString = String( pBuf, nLen, RTL_TEXTENCODING_MS_1252 );
+ delete[] pBuf;
+ }
+ else
+ {
+ // no chars, but potentially char/para props?
+ sal_uInt32 nCharCount;
+ sal_Bool bTextPropAtom = sal_False;
+ ReadParaProps( rIn, rMan, rTextHeader, aString, rRuler, nCharCount, bTextPropAtom );
+
+ if ( bTextPropAtom )
+ {
+ // yeah, StyleTextProp is there, read it all & push to
+ // aParaPropList
+ PPTCharPropSet aCharPropSet(0);
+ aCharPropSet.mnOriginalTextPos = 0;
+
+ sal_uInt32 nCharAnzRead = 0;
+ sal_uInt32 nExtParaFlags = 0, nAnmScheme = 0;
+ sal_uInt16 nBuBlip = 0xffff, nHasAnm = 0;
+ ReadCharProps( rIn, aCharPropSet, aString, nCharCount, nCharAnzRead,
+ bTextPropAtom, nExtParaPos, aStyleTextProp9, nExtParaFlags,
+ nBuBlip, nHasAnm, nAnmScheme );
+
+ aCharPropList.Insert(
+ new PPTCharPropSet( aCharPropSet, 0 ), LIST_APPEND );
+ }
+ }
+
+ if ( aString.Len() )
+ {
+ sal_uInt32 nCharCount;
+ sal_Bool bTextPropAtom = sal_False;
+
+ ReadParaProps( rIn, rMan, rTextHeader, aString, rRuler, nCharCount, bTextPropAtom );
+
+ sal_Bool bEmptyParaPossible = sal_True;
+ sal_uInt32 nCharAnzRead = 0;
+ sal_uInt32 nCurrentPara = 0;
+ sal_uInt32 nCurrentSpecMarker = (sal_uInt32)(sal_uIntPtr)aSpecMarkerList.First();
+ sal_uInt16 nStringLen = aString.Len();
+
+ while ( nCharAnzRead < nStringLen )
+ {
+ sal_uInt32 nExtParaFlags = 0, nLatestParaUpdate = 0xffffffff, nAnmScheme = 0;
+ sal_uInt16 nBuBlip = 0xffff, nHasAnm = 0;
+
+ PPTCharPropSet aCharPropSet( nCurrentPara );
+ if ( bTextPropAtom )
+ ReadCharProps( rIn, aCharPropSet, aString, nCharCount, nCharAnzRead,
+ bTextPropAtom, nExtParaPos, aStyleTextProp9, nExtParaFlags,
+ nBuBlip, nHasAnm, nAnmScheme );
+ else
+ nCharCount = nStringLen;
+
+ sal_uInt32 nLen;
+ while( nCharCount )
+ {
+ if ( nExtParaPos && ( nLatestParaUpdate != nCurrentPara ) && ( nCurrentPara < aParaPropList.Count() ) )
+ {
+ PPTParaPropSet* pPropSet = (PPTParaPropSet*)aParaPropList.GetObject( nCurrentPara );
+ pPropSet->pParaSet->mnExtParagraphMask = nExtParaFlags;
+ if ( nExtParaFlags & 0x800000 )
+ pPropSet->pParaSet->mnBuBlip = nBuBlip;
+ if ( nExtParaFlags & 0x01000000 )
+ pPropSet->pParaSet->mnAnmScheme = nAnmScheme;
+ if ( nExtParaFlags & 0x02000000 )
+ pPropSet->pParaSet->mnHasAnm = nHasAnm;
+ nLatestParaUpdate = nCurrentPara;
+ }
+ aCharPropSet.mnOriginalTextPos = nCharAnzRead;
+ if ( nCurrentSpecMarker && ( ( nCurrentSpecMarker & 0xffff ) < ( nCharAnzRead + nCharCount ) ) )
+ {
+ if ( nCurrentSpecMarker & PPT_SPEC_NEWLINE )
+ {
+ nLen = ( nCurrentSpecMarker & 0xffff ) - nCharAnzRead;
+ if ( nLen )
+ aCharPropSet.maString = String( aString, (sal_uInt16)nCharAnzRead, (sal_uInt16)nLen );
+ else if ( bEmptyParaPossible )
+ aCharPropSet.maString = String();
+ if ( nLen || bEmptyParaPossible )
+ aCharPropList.Insert( new PPTCharPropSet( aCharPropSet, nCurrentPara ), LIST_APPEND );
+ nCurrentPara++;
+ nLen++;
+ nCharAnzRead += nLen;
+ nCharCount -= nLen;
+ bEmptyParaPossible = sal_True;
+ }
+ else if ( nCurrentSpecMarker & PPT_SPEC_SYMBOL )
+ {
+ if ( ( nCurrentSpecMarker & 0xffff ) != nCharAnzRead )
+ {
+ nLen = ( nCurrentSpecMarker & 0xffff ) - nCharAnzRead;
+ aCharPropSet.maString = String( aString, (sal_uInt16)nCharAnzRead, (sal_uInt16)nLen );
+ aCharPropList.Insert( new PPTCharPropSet( aCharPropSet, nCurrentPara ), LIST_APPEND );
+ nCharCount -= nLen;
+ nCharAnzRead += nLen;
+ }
+ PPTCharPropSet* pCPropSet = new PPTCharPropSet( aCharPropSet, nCurrentPara );
+ pCPropSet->maString = aString.GetChar( (sal_uInt16)nCharAnzRead );
+ if ( aCharPropSet.pCharSet->mnAttrSet & ( 1 << PPT_CharAttr_Symbol ) )
+ pCPropSet->SetFont( aCharPropSet.pCharSet->mnSymbolFont );
+ aCharPropList.Insert( pCPropSet, LIST_APPEND );
+ nCharCount--;
+ nCharAnzRead++;
+ bEmptyParaPossible = sal_False;
+ }
+ nCurrentSpecMarker = (sal_uInt32)(sal_uIntPtr)aSpecMarkerList.Next();
+ }
+ else
+ {
+ aCharPropSet.maString = String( aString, (sal_uInt16)nCharAnzRead, (sal_uInt16)nCharCount );
+ aCharPropList.Insert( new PPTCharPropSet( aCharPropSet, nCurrentPara ), LIST_APPEND );
+ nCharAnzRead += nCharCount;
+ bEmptyParaPossible = sal_False;
+ break;
+ }
+ }
+ }
+ if ( aCharPropList.Count() && ( ((PPTCharPropSet*)aCharPropList.Last())->mnParagraph != nCurrentPara ) )
+ {
+ PPTCharPropSet* pCharPropSet = new PPTCharPropSet( *(PPTCharPropSet*)aCharPropList.Last(), nCurrentPara );
+ pCharPropSet->maString = String();
+ pCharPropSet->mnOriginalTextPos = nStringLen - 1;
+ aCharPropList.Insert( pCharPropSet, LIST_APPEND );
+ }
+ }
+ rIn.Seek( nMerk );
+}
+
+PPTStyleTextPropReader::~PPTStyleTextPropReader()
+{
+ void* pTmp;
+ for ( pTmp = aParaPropList.First(); pTmp; pTmp = aParaPropList.Next() )
+ delete (PPTParaPropSet*)pTmp;
+ for ( pTmp = aCharPropList.First(); pTmp; pTmp = aCharPropList.Next() )
+ delete (PPTCharPropSet*)pTmp;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+struct FieldEntry
+{
+ UINT32 nFieldType;
+ UINT32 nFieldStartPos;
+ UINT32 nFieldEndPos;
+ String aFieldUrl;
+
+ FieldEntry( UINT32 nType, UINT32 nStart, UINT32 nEnd )
+ {
+ nFieldType = nType;
+ nFieldStartPos = nStart;
+ nFieldEndPos = nEnd;
+ }
+ FieldEntry( FieldEntry& rFieldEntry )
+ {
+ nFieldType = rFieldEntry.nFieldType;
+ nFieldStartPos = rFieldEntry.nFieldStartPos;
+ nFieldEndPos = rFieldEntry.nFieldEndPos;
+ aFieldUrl = rFieldEntry.aFieldUrl;
+ }
+};
+
+
+PPTPortionObj::PPTPortionObj( const PPTStyleSheet& rStyleSheet, UINT32 nInstance, UINT32 nDepth ) :
+ PPTCharPropSet ( 0 ),
+ mrStyleSheet ( rStyleSheet ),
+ mnInstance ( nInstance ),
+ mnDepth ( ( nDepth > 4 ) ? 4 : nDepth )
+{
+}
+
+PPTPortionObj::PPTPortionObj( PPTCharPropSet& rCharPropSet, const PPTStyleSheet& rStyleSheet, UINT32 nInstance, UINT32 nDepth ) :
+ PPTCharPropSet ( rCharPropSet ),
+ mrStyleSheet ( rStyleSheet ),
+ mnInstance ( nInstance ),
+ mnDepth ( nDepth )
+{
+}
+
+PPTPortionObj::PPTPortionObj( PPTPortionObj& rPortionObj ) :
+ PPTCharPropSet ( rPortionObj ),
+ mrStyleSheet ( rPortionObj.mrStyleSheet ),
+ mnInstance ( rPortionObj.mnInstance ),
+ mnDepth ( rPortionObj.mnDepth )
+{
+}
+
+PPTPortionObj::~PPTPortionObj()
+{
+}
+
+BOOL PPTPortionObj::HasTabulator()
+{
+ BOOL bRetValue = FALSE;
+ sal_Int32 nCount;
+ const sal_Unicode* pPtr = maString.GetBuffer();
+ for ( nCount = 0; nCount < maString.Len(); nCount++ )
+ {
+ if ( pPtr[ nCount ] == 0x9 )
+ {
+ bRetValue = TRUE;
+ break;
+ }
+
+ }
+ return bRetValue;
+}
+
+BOOL PPTPortionObj::GetAttrib( UINT32 nAttr, UINT32& nRetValue, UINT32 nDestinationInstance )
+{
+ UINT32 nMask = 1 << nAttr;
+ nRetValue = 0;
+
+ UINT32 bIsHardAttribute = ( ( pCharSet->mnAttrSet & nMask ) != 0 ) ? 1 : 0;
+
+ if ( bIsHardAttribute )
+ {
+ switch ( nAttr )
+ {
+ case PPT_CharAttr_Bold :
+ case PPT_CharAttr_Italic :
+ case PPT_CharAttr_Underline :
+ case PPT_CharAttr_Shadow :
+ case PPT_CharAttr_Strikeout :
+ case PPT_CharAttr_Embossed :
+ nRetValue = ( pCharSet->mnFlags & nMask ) ? 1 : 0;
+ break;
+ case PPT_CharAttr_Font :
+ nRetValue = pCharSet->mnFont;
+ break;
+ case PPT_CharAttr_AsianOrComplexFont :
+ nRetValue = pCharSet->mnAsianOrComplexFont;
+ break;
+ case PPT_CharAttr_FontHeight :
+ nRetValue = pCharSet->mnFontHeight;
+ break;
+ case PPT_CharAttr_FontColor :
+ nRetValue = pCharSet->mnColor;
+ break;
+ case PPT_CharAttr_Escapement :
+ nRetValue = pCharSet->mnEscapement;
+ break;
+ default :
+ DBG_ERROR( "SJ:PPTPortionObj::GetAttrib ( hard attribute does not exist )" );
+ }
+ }
+ else
+ {
+ const PPTCharLevel& rCharLevel = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ mnDepth ];
+ PPTCharLevel* pCharLevel = NULL;
+ if ( ( nDestinationInstance == 0xffffffff )
+ || ( mnDepth && ( ( mnInstance == TSS_TYPE_SUBTITLE ) || ( mnInstance == TSS_TYPE_TEXT_IN_SHAPE ) ) ) )
+ bIsHardAttribute = 1;
+ else if ( nDestinationInstance != mnInstance )
+ pCharLevel = &mrStyleSheet.mpCharSheet[ nDestinationInstance ]->maCharLevel[ mnDepth ];
+ switch( nAttr )
+ {
+ case PPT_CharAttr_Bold :
+ case PPT_CharAttr_Italic :
+ case PPT_CharAttr_Underline :
+ case PPT_CharAttr_Shadow :
+ case PPT_CharAttr_Strikeout :
+ case PPT_CharAttr_Embossed :
+ {
+ nRetValue = ( rCharLevel.mnFlags & nMask ) ? 1 : 0;
+ if ( pCharLevel )
+ {
+ UINT32 nTmp = ( pCharLevel->mnFlags & nMask ) ? 1 : 0;
+ if ( nRetValue != nTmp )
+ bIsHardAttribute = 1;
+ }
+ }
+ break;
+ case PPT_CharAttr_Font :
+ {
+ nRetValue = rCharLevel.mnFont;
+ if ( pCharLevel && ( nRetValue != pCharLevel->mnFont ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_CharAttr_AsianOrComplexFont :
+ {
+ nRetValue = rCharLevel.mnAsianOrComplexFont;
+ if ( pCharLevel && ( nRetValue != pCharLevel->mnAsianOrComplexFont ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_CharAttr_FontHeight :
+ {
+ nRetValue = rCharLevel.mnFontHeight;
+ if ( pCharLevel && ( nRetValue != pCharLevel->mnFontHeight ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_CharAttr_FontColor :
+ {
+ nRetValue = rCharLevel.mnFontColor;
+ if ( pCharLevel && ( nRetValue != pCharLevel->mnFontColor ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_CharAttr_Escapement :
+ {
+ nRetValue = rCharLevel.mnEscapement;
+ if ( pCharLevel && ( nRetValue != pCharLevel->mnEscapement ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ default :
+ DBG_ERROR( "SJ:PPTPortionObj::GetAttrib ( attribute does not exist )" );
+ }
+ }
+ return (BOOL)bIsHardAttribute;
+}
+
+void PPTPortionObj::ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, UINT32 nDestinationInstance )
+{
+ ApplyTo( rSet, rManager, nDestinationInstance, NULL );
+}
+
+void PPTPortionObj::ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, UINT32 nDestinationInstance, const PPTTextObj* pTextObj )
+{
+ UINT32 nVal;
+ if ( GetAttrib( PPT_CharAttr_Bold, nVal, nDestinationInstance ) )
+ {
+ rSet.Put( SvxWeightItem( nVal != 0 ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
+ rSet.Put( SvxWeightItem( nVal != 0 ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
+ rSet.Put( SvxWeightItem( nVal != 0 ? WEIGHT_BOLD : WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
+ }
+ if ( GetAttrib( PPT_CharAttr_Italic, nVal, nDestinationInstance ) )
+ {
+ rSet.Put( SvxPostureItem( nVal != 0 ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC ) );
+ rSet.Put( SvxPostureItem( nVal != 0 ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
+ rSet.Put( SvxPostureItem( nVal != 0 ? ITALIC_NORMAL : ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
+ }
+ if ( GetAttrib( PPT_CharAttr_Underline, nVal, nDestinationInstance ) )
+ rSet.Put( SvxUnderlineItem( nVal != 0 ? UNDERLINE_SINGLE : UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
+
+ if ( GetAttrib( PPT_CharAttr_Shadow, nVal, nDestinationInstance ) )
+ rSet.Put( SvxShadowedItem( nVal != 0, EE_CHAR_SHADOW ) );
+
+ if ( GetAttrib( PPT_CharAttr_Strikeout, nVal, nDestinationInstance ) )
+ rSet.Put( SvxCrossedOutItem( nVal != 0 ? STRIKEOUT_SINGLE : STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
+
+ sal_uInt32 nAsianFontId = 0xffff;
+ if ( GetAttrib( PPT_CharAttr_AsianOrComplexFont, nAsianFontId, nDestinationInstance ) )
+ {
+ if ( nAsianFontId != 0xffff )
+ {
+ PptFontEntityAtom* pFontEnityAtom = rManager.GetFontEnityAtom( nAsianFontId );
+ if ( pFontEnityAtom )
+ {
+ rSet.Put( SvxFontItem( pFontEnityAtom->eFamily, pFontEnityAtom->aName,
+ String(), pFontEnityAtom->ePitch, pFontEnityAtom->eCharSet, EE_CHAR_FONTINFO_CJK ) );
+ rSet.Put( SvxFontItem( pFontEnityAtom->eFamily, pFontEnityAtom->aName,
+ String(), pFontEnityAtom->ePitch, pFontEnityAtom->eCharSet, EE_CHAR_FONTINFO_CTL ) );
+ }
+ }
+ }
+ if ( GetAttrib( PPT_CharAttr_Font, nVal, nDestinationInstance ) )
+ {
+ PptFontEntityAtom* pFontEnityAtom = rManager.GetFontEnityAtom( nVal );
+ if ( pFontEnityAtom )
+ rSet.Put( SvxFontItem( pFontEnityAtom->eFamily, pFontEnityAtom->aName, String(), pFontEnityAtom->ePitch, pFontEnityAtom->eCharSet, EE_CHAR_FONTINFO ) );
+ }
+ if ( GetAttrib( PPT_CharAttr_FontHeight, nVal, nDestinationInstance ) ) // Schriftgrad in Point
+ {
+ sal_uInt32 nHeight = rManager.ScalePoint( nVal );
+ rSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT ) );
+ rSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT_CJK ) );
+ rSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT_CTL ) );
+ }
+
+ if ( GetAttrib( PPT_CharAttr_Embossed, nVal, nDestinationInstance ) )
+ rSet.Put( SvxCharReliefItem( nVal != 0 ? RELIEF_EMBOSSED : RELIEF_NONE, EE_CHAR_RELIEF ) );
+ if ( nVal ) /* if Embossed is set, the font color depends to the fillstyle/color of the object,
+ if the object has no fillstyle, the font color depends to fillstyle of the background */
+ {
+ Color aDefColor( COL_BLACK );
+ MSO_FillType eFillType = mso_fillSolid;
+ if ( rManager.GetPropertyValue( DFF_Prop_fNoFillHitTest ) & 0x10 )
+ eFillType = (MSO_FillType)rManager.GetPropertyValue( DFF_Prop_fillType, mso_fillSolid );
+ else
+ eFillType = mso_fillBackground;
+ switch( eFillType )
+ {
+ case mso_fillShade :
+ case mso_fillShadeCenter :
+ case mso_fillShadeShape :
+ case mso_fillShadeScale :
+ case mso_fillShadeTitle :
+ case mso_fillSolid :
+ aDefColor = rManager.MSO_CLR_ToColor( rManager.GetPropertyValue( DFF_Prop_fillColor ) );
+ break;
+ case mso_fillPattern :
+ aDefColor = rManager.MSO_CLR_ToColor( rManager.GetPropertyValue( DFF_Prop_fillBackColor ) );
+ break;
+ case mso_fillTexture :
+ {
+ Graphic aGraf;
+ if ( rManager.GetBLIP( rManager.GetPropertyValue( DFF_Prop_fillBlip ), aGraf, NULL ) )
+ {
+ Bitmap aBmp( aGraf.GetBitmap() );
+ Size aSize( aBmp.GetSizePixel() );
+ if ( aSize.Width() && aSize.Height() )
+ {
+ if ( aSize.Width () > 64 )
+ aSize.Width () = 64;
+ if ( aSize.Height() > 64 )
+ aSize.Height() = 64;
+
+ ULONG nRt = 0, nGn = 0, nBl = 0;
+ BitmapReadAccess* pAcc = aBmp.AcquireReadAccess();
+ if( pAcc )
+ {
+ const long nWidth = aSize.Width();
+ const long nHeight = aSize.Height();
+
+ if( pAcc->HasPalette() )
+ {
+ for( long nY = 0L; nY < nHeight; nY++ )
+ {
+ for( long nX = 0L; nX < nWidth; nX++ )
+ {
+ const BitmapColor& rCol = pAcc->GetPaletteColor( (BYTE) pAcc->GetPixel( nY, nX ) );
+ nRt+=rCol.GetRed(); nGn+=rCol.GetGreen(); nBl+=rCol.GetBlue();
+ }
+ }
+ }
+ else
+ {
+ for( long nY = 0L; nY < nHeight; nY++ )
+ {
+ for( long nX = 0L; nX < nWidth; nX++ )
+ {
+ const BitmapColor aCol( pAcc->GetPixel( nY, nX ) );
+ nRt+=aCol.GetRed(); nGn+=aCol.GetGreen(); nBl+=aCol.GetBlue();
+ }
+ }
+ }
+ aBmp.ReleaseAccess( pAcc );
+ sal_uInt32 nC = ( aSize.Width() * aSize.Height() );
+ nRt /= nC;
+ nGn /= nC;
+ nBl /= nC;
+ aDefColor = Color(sal_uInt8( nRt ), sal_uInt8( nGn ),sal_uInt8( nBl ) );
+ }
+ }
+ }
+ }
+ break;
+ case mso_fillBackground :
+ {
+ if ( pTextObj ) // the textobject is needed
+ {
+ const SfxItemSet* pItemSet = pTextObj->GetBackground();
+ if ( pItemSet )
+ {
+ const SfxPoolItem* pFillStyleItem = NULL;
+ pItemSet->GetItemState( XATTR_FILLSTYLE, FALSE, &pFillStyleItem );
+ if ( pFillStyleItem )
+ {
+ XFillStyle eFillStyle = ((XFillStyleItem*)pFillStyleItem)->GetValue();
+ switch( eFillStyle )
+ {
+ case XFILL_SOLID :
+ {
+ const SfxPoolItem* pFillColorItem = NULL;
+ pItemSet->GetItemState( XATTR_FILLCOLOR, FALSE, &pFillColorItem );
+ if ( pFillColorItem )
+ aDefColor = ((XColorItem*)pFillColorItem)->GetColorValue();
+ }
+ break;
+ case XFILL_GRADIENT :
+ {
+ const SfxPoolItem* pGradientItem = NULL;
+ pItemSet->GetItemState( XATTR_FILLGRADIENT, FALSE, &pGradientItem );
+ if ( pGradientItem )
+ aDefColor = ((XFillGradientItem*)pGradientItem)->GetGradientValue().GetStartColor();
+ }
+ break;
+ case XFILL_HATCH :
+ case XFILL_BITMAP :
+ aDefColor = Color( COL_WHITE );
+ break;
+ default: break;
+ }
+ }
+ }
+ }
+ }
+ break;
+// case mso_fillPicture :
+ default: break;
+ }
+ rSet.Put( SvxColorItem( aDefColor, EE_CHAR_COLOR ) );
+ }
+ else
+ {
+ if ( GetAttrib( PPT_CharAttr_FontColor, nVal, nDestinationInstance ) ) // Textfarbe (4Byte-Arg)
+ {
+ Color aCol( rManager.MSO_TEXT_CLR_ToColor( nVal ) );
+ rSet.Put( SvxColorItem( aCol, EE_CHAR_COLOR ) );
+ if ( nDestinationInstance == 0xffffffff )
+ mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ mnDepth ].mnFontColorInStyleSheet = aCol;
+ }
+ else if ( nVal & 0x0f000000 ) // this is not a hard attribute, but maybe the page has a different colerscheme,
+ { // so that in this case we must use a hard color attribute
+ Color aCol( rManager.MSO_TEXT_CLR_ToColor( nVal ) );
+ Color& aColorInSheet = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ mnDepth ].mnFontColorInStyleSheet;
+ if ( aColorInSheet != aCol )
+ rSet.Put( SvxColorItem( aCol, EE_CHAR_COLOR ) );
+ }
+ }
+
+ if ( GetAttrib( PPT_CharAttr_Escapement, nVal, nDestinationInstance ) ) // Hoch/Tiefstellung in %
+ {
+ sal_uInt16 nEsc = 0;
+ sal_uInt8 nProp = 100;
+
+ if ( nVal )
+ {
+ nEsc = (sal_Int16)nVal;
+ nProp = DFLT_ESC_PROP;
+ }
+ SvxEscapementItem aItem( nEsc, nProp, EE_CHAR_ESCAPEMENT );
+ rSet.Put( aItem );
+ }
+ if ( mnLanguage[ 0 ] )
+ rSet.Put( SvxLanguageItem( mnLanguage[ 0 ], EE_CHAR_LANGUAGE ) );
+ if ( mnLanguage[ 1 ] )
+ rSet.Put( SvxLanguageItem( mnLanguage[ 1 ], EE_CHAR_LANGUAGE_CJK ) );
+ if ( mnLanguage[ 2 ] )
+ rSet.Put( SvxLanguageItem( mnLanguage[ 2 ], EE_CHAR_LANGUAGE_CTL ) );
+}
+
+SvxFieldItem* PPTPortionObj::GetTextField()
+{
+ if ( mpFieldItem )
+ return new SvxFieldItem( *mpFieldItem );
+ return NULL;
+}
+
+// -----------------------------------------------------------------------
+
+PPTParagraphObj::PPTParagraphObj( const PPTStyleSheet& rStyleSheet, UINT32 nInstance, UINT16 nDepth ) :
+ PPTNumberFormatCreator ( NULL ),
+ mrStyleSheet ( rStyleSheet ),
+ mnInstance ( nInstance ),
+ mbTab ( TRUE ), // style sheets always have to get the right tabulator setting
+ mnPortionCount ( 0 ),
+ mpPortionList ( NULL )
+{
+ if ( nDepth > 4 )
+ nDepth = 4;
+ pParaSet->mnDepth = nDepth;
+}
+
+PPTParagraphObj::PPTParagraphObj( PPTStyleTextPropReader& rPropReader, const PPTStyleSheet& rStyleSheet,
+ UINT32 nInstance, PPTTextRulerInterpreter& rRuler ) :
+ PPTParaPropSet ( *( (PPTParaPropSet*)rPropReader.aParaPropList.GetCurObject() ) ),
+ PPTNumberFormatCreator ( NULL ),
+ PPTTextRulerInterpreter ( rRuler ),
+ mrStyleSheet ( rStyleSheet ),
+ mnInstance ( nInstance ),
+ mbTab ( FALSE ),
+ mnCurrentObject ( 0 ),
+ mnPortionCount ( 0 ),
+ mpPortionList ( NULL )
+{
+ sal_uInt32 nCurPos = rPropReader.aCharPropList.GetCurPos();
+ PPTCharPropSet* pCharPropSet = (PPTCharPropSet*)rPropReader.aCharPropList.GetCurObject();
+ if ( pCharPropSet )
+ {
+ sal_uInt32 nCurrentParagraph = pCharPropSet->mnParagraph;
+ for ( ; pCharPropSet && ( pCharPropSet->mnParagraph == nCurrentParagraph ); pCharPropSet = (PPTCharPropSet*)rPropReader.aCharPropList.Next() )
+ mnPortionCount++; // counting number of portions that are part of this paragraph
+ pCharPropSet = (PPTCharPropSet*)rPropReader.aCharPropList.Seek( nCurPos );
+
+ mpPortionList = new PPTPortionObj*[ mnPortionCount ];
+ for ( UINT32 i = 0; i < mnPortionCount; i++ )
+ {
+ if ( pCharPropSet )
+ {
+ PPTPortionObj* pPPTPortion = new PPTPortionObj( *pCharPropSet, rStyleSheet, nInstance, pParaSet->mnDepth );
+ mpPortionList[ i ] = pPPTPortion;
+ if ( !mbTab )
+ mbTab = mpPortionList[ i ]->HasTabulator();
+ }
+ else
+ {
+ DBG_ERROR( "SJ:PPTParagraphObj::It seems that there are missing some textportions" );
+ mpPortionList[ i ] = NULL;
+ }
+ pCharPropSet = (PPTCharPropSet*)rPropReader.aCharPropList.Next();
+ }
+ }
+}
+
+PPTParagraphObj::~PPTParagraphObj()
+{
+ ImplClear();
+}
+
+void PPTParagraphObj::AppendPortion( PPTPortionObj& rPPTPortion )
+{
+ UINT32 i;
+ PPTPortionObj** mpOldPortionList = mpPortionList;
+ mpPortionList = new PPTPortionObj*[ ++mnPortionCount ];
+ for ( i = 0; i < mnPortionCount - 1; i++ )
+ mpPortionList[ i ] = mpOldPortionList[ i ];
+ delete[] mpOldPortionList;
+ mpPortionList[ mnPortionCount - 1 ] = new PPTPortionObj( rPPTPortion );
+ if ( !mbTab )
+ mbTab = mpPortionList[ mnPortionCount - 1 ]->HasTabulator();
+}
+
+void PPTParagraphObj::UpdateBulletRelSize( sal_uInt32& nBulletRelSize ) const
+{
+ if ( nBulletRelSize > 0x7fff ) // a negative value is the absolute bullet height
+ {
+ sal_uInt16 nFontHeight = 0;
+ if ( mpPortionList )
+ {
+ PPTPortionObj* pPortion = mpPortionList[ 0 ];
+ if ( pPortion && ( pPortion->pCharSet->mnAttrSet & ( 1 << PPT_CharAttr_FontHeight ) ) )
+ nFontHeight = pPortion->pCharSet->mnFontHeight;
+ }
+ // if we do not have a hard attributed fontheight, the fontheight is taken from the style
+ if ( !nFontHeight )
+ nFontHeight = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFontHeight;
+ nBulletRelSize = nFontHeight ? ((-((sal_Int16)nBulletRelSize)) * 100 ) / nFontHeight : 100;
+ }
+}
+
+BOOL PPTParagraphObj::GetAttrib( UINT32 nAttr, UINT32& nRetValue, UINT32 nDestinationInstance )
+{
+ UINT32 nMask = 1 << nAttr;
+ nRetValue = 0;
+
+ if ( nAttr > 21 )
+ {
+ DBG_ERROR( "SJ:PPTParagraphObj::GetAttrib - attribute does not exist" );
+ return FALSE;
+ }
+
+ UINT32 bIsHardAttribute = ( ( pParaSet->mnAttrSet & nMask ) != 0 ) ? 1 : 0;
+
+ if ( bIsHardAttribute )
+ {
+ if ( nAttr == PPT_ParaAttr_BulletColor )
+ {
+ sal_Bool bHardBulletColor;
+ if ( pParaSet->mnAttrSet & ( 1 << PPT_ParaAttr_BuHardColor ) )
+ bHardBulletColor = pParaSet->mpArry[ PPT_ParaAttr_BuHardColor ] != 0;
+ else
+ bHardBulletColor = ( mrStyleSheet.mpParaSheet[ mnInstance ]->maParaLevel[ pParaSet->mnDepth ].mnBuFlags
+ & ( 1 << PPT_ParaAttr_BuHardColor ) ) != 0;
+ if ( bHardBulletColor )
+ nRetValue = pParaSet->mnBulletColor;
+ else
+ {
+ nRetValue = PPT_COLSCHEME_TEXT_UND_ZEILEN;
+ if ( ( nDestinationInstance != 0xffffffff ) && mnPortionCount )
+ {
+ PPTPortionObj* pPortion = mpPortionList[ 0 ];
+ if ( pPortion )
+ {
+ if ( pPortion->pCharSet->mnAttrSet & ( 1 << PPT_CharAttr_FontColor ) )
+ nRetValue = pPortion->pCharSet->mnColor;
+ else
+ nRetValue = mrStyleSheet.mpCharSheet[ nDestinationInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFontColor;
+ }
+ }
+ }
+ }
+ else if ( nAttr == PPT_ParaAttr_BulletFont )
+ {
+ sal_Bool bHardBuFont;
+ if ( pParaSet->mnAttrSet & ( 1 << PPT_ParaAttr_BuHardFont ) )
+ bHardBuFont = pParaSet->mpArry[ PPT_ParaAttr_BuHardFont ] != 0;
+ else
+ bHardBuFont = ( mrStyleSheet.mpParaSheet[ mnInstance ]->maParaLevel[ pParaSet->mnDepth ].mnBuFlags
+ & ( 1 << PPT_ParaAttr_BuHardFont ) ) != 0;
+ if ( bHardBuFont )
+ nRetValue = pParaSet->mpArry[ PPT_ParaAttr_BulletFont ];
+ else
+ {
+ // it is the font used which assigned to the first character of the following text
+ nRetValue = 0;
+ if ( ( nDestinationInstance != 0xffffffff ) && mnPortionCount )
+ {
+ PPTPortionObj* pPortion = mpPortionList[ 0 ];
+ if ( pPortion )
+ {
+ if ( pPortion->pCharSet->mnAttrSet & ( 1 << PPT_CharAttr_Font ) )
+ nRetValue = pPortion->pCharSet->mnFont;
+ else
+ nRetValue = mrStyleSheet.mpCharSheet[ nDestinationInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFont;
+ }
+ }
+ }
+ }
+ else
+ nRetValue = pParaSet->mpArry[ nAttr ];
+ }
+ else
+ {
+ const PPTParaLevel& rParaLevel = mrStyleSheet.mpParaSheet[ mnInstance ]->maParaLevel[ pParaSet->mnDepth ];
+
+ PPTParaLevel* pParaLevel = NULL;
+ if ( ( nDestinationInstance == 0xffffffff )
+ || ( pParaSet->mnDepth && ( ( mnInstance == TSS_TYPE_SUBTITLE ) || ( mnInstance == TSS_TYPE_TEXT_IN_SHAPE ) ) ) )
+ bIsHardAttribute = 1;
+ else if ( nDestinationInstance != mnInstance )
+ pParaLevel = &mrStyleSheet.mpParaSheet[ nDestinationInstance ]->maParaLevel[ pParaSet->mnDepth ];
+ switch ( nAttr )
+ {
+ case PPT_ParaAttr_BulletOn :
+ {
+ nRetValue = rParaLevel.mnBuFlags & ( 1 << PPT_ParaAttr_BulletOn );
+ if ( pParaLevel )
+ {
+ if ( nRetValue != ( (sal_uInt32)pParaLevel->mnBuFlags & ( 1 << PPT_ParaAttr_BulletOn ) ) )
+ bIsHardAttribute = 1;
+ }
+ }
+ break;
+ case PPT_ParaAttr_BuHardFont :
+ case PPT_ParaAttr_BuHardColor :
+ case PPT_ParaAttr_BuHardHeight :
+ DBG_ERROR( "SJ:PPTParagraphObj::GetAttrib - this attribute does not make sense" );
+ break;
+ case PPT_ParaAttr_BulletChar :
+ {
+ nRetValue = rParaLevel.mnBulletChar;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBulletChar ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_BulletFont :
+ {
+ sal_Bool bHardBuFont;
+ if ( pParaSet->mnAttrSet & ( 1 << PPT_ParaAttr_BuHardFont ) )
+ bHardBuFont = pParaSet->mpArry[ PPT_ParaAttr_BuHardFont ] != 0;
+ else
+ bHardBuFont = ( rParaLevel.mnBuFlags & ( 1 << PPT_ParaAttr_BuHardFont ) ) != 0;
+ if ( bHardBuFont )
+ {
+ nRetValue = rParaLevel.mnBulletFont;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBulletFont ) )
+ bIsHardAttribute = 1;
+ }
+ else
+ {
+ if ( mnPortionCount )
+ {
+ PPTPortionObj* pPortion = mpPortionList[ 0 ];
+ if ( pPortion )
+ bIsHardAttribute = pPortion->GetAttrib( PPT_CharAttr_Font, nRetValue, nDestinationInstance );
+ }
+ else
+ {
+ nRetValue = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFont;
+ bIsHardAttribute = 1;
+ }
+ }
+ }
+ break;
+ case PPT_ParaAttr_BulletHeight :
+ {
+ nRetValue = rParaLevel.mnBulletHeight;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBulletHeight ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_BulletColor :
+ {
+ sal_Bool bHardBulletColor;
+ if ( pParaSet->mnAttrSet & ( 1 << PPT_ParaAttr_BuHardColor ) )
+ bHardBulletColor = pParaSet->mpArry[ PPT_ParaAttr_BuHardColor ] != 0;
+ else
+ bHardBulletColor = ( rParaLevel.mnBuFlags & ( 1 << PPT_ParaAttr_BuHardColor ) ) != 0;
+ if ( bHardBulletColor )
+ {
+ nRetValue = rParaLevel.mnBulletColor;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBulletColor ) )
+ bIsHardAttribute = 1;
+ }
+ else
+ {
+ if ( mnPortionCount )
+ {
+ PPTPortionObj* pPortion = mpPortionList[ 0 ];
+ if ( pPortion )
+ bIsHardAttribute = pPortion->GetAttrib( PPT_CharAttr_FontColor, nRetValue, nDestinationInstance );
+ }
+ else
+ {
+ nRetValue = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ pParaSet->mnDepth ].mnFontColor;
+ bIsHardAttribute = 1;
+ }
+ }
+ }
+ break;
+ case PPT_ParaAttr_Adjust :
+ {
+ nRetValue = rParaLevel.mnAdjust;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnAdjust ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_LineFeed :
+ {
+ nRetValue = rParaLevel.mnLineFeed;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnLineFeed ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_UpperDist :
+ {
+ nRetValue = rParaLevel.mnUpperDist;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnUpperDist ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_LowerDist :
+ {
+ nRetValue = rParaLevel.mnLowerDist;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnLowerDist ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_TextOfs :
+ {
+ nRetValue = rParaLevel.mnTextOfs;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnTextOfs ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_BulletOfs :
+ {
+ nRetValue = rParaLevel.mnBulletOfs;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBulletOfs ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_DefaultTab :
+ {
+ nRetValue = rParaLevel.mnDefaultTab;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBulletOfs ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_AsianLB_1 :
+ {
+ nRetValue = rParaLevel.mnAsianLineBreak & 1;
+ if ( pParaLevel && ( nRetValue != ( (sal_uInt32)pParaLevel->mnAsianLineBreak & 1 ) ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_AsianLB_2 :
+ {
+ nRetValue = ( rParaLevel.mnAsianLineBreak >> 1 ) & 1;
+ if ( pParaLevel && ( nRetValue != ( ( (sal_uInt32)pParaLevel->mnAsianLineBreak >> 1 ) & 1 ) ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_AsianLB_3 :
+ {
+ nRetValue = ( rParaLevel.mnAsianLineBreak >> 2 ) & 1;
+ if ( pParaLevel && ( nRetValue != ( ( (sal_uInt32)pParaLevel->mnAsianLineBreak >> 2 ) & 1 ) ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ case PPT_ParaAttr_BiDi :
+ {
+ nRetValue = rParaLevel.mnBiDi;
+ if ( pParaLevel && ( nRetValue != pParaLevel->mnBiDi ) )
+ bIsHardAttribute = 1;
+ }
+ break;
+ }
+ }
+ return (BOOL)bIsHardAttribute;
+}
+
+void PPTParagraphObj::ApplyTo( SfxItemSet& rSet, boost::optional< sal_Int16 >& rStartNumbering, SdrPowerPointImport& rManager, sal_uInt32 nDestinationInstance, const PPTParagraphObj* /*pPrev*/)
+{
+ INT16 nVal2;
+ UINT32 nVal, nUpperDist, nLowerDist;
+ UINT32 nInstance = nDestinationInstance != 0xffffffff ? nDestinationInstance : mnInstance;
+
+ if ( ( nDestinationInstance != 0xffffffff ) || ( pParaSet->mnDepth <= 1 ) )
+ {
+ SvxNumBulletItem* pNumBulletItem = mrStyleSheet.mpNumBulletItem[ nInstance ];
+ if ( pNumBulletItem )
+ {
+ SvxNumberFormat aNumberFormat( SVX_NUM_NUMBER_NONE );
+ if ( GetNumberFormat( rManager, aNumberFormat, this, nDestinationInstance, rStartNumbering ) )
+ {
+ if ( aNumberFormat.GetNumberingType() == SVX_NUM_NUMBER_NONE )
+ {
+ aNumberFormat.SetLSpace( 0 );
+ aNumberFormat.SetAbsLSpace( 0 );
+ aNumberFormat.SetFirstLineOffset( 0 );
+ aNumberFormat.SetCharTextDistance( 0 );
+ aNumberFormat.SetFirstLineIndent( 0 );
+ aNumberFormat.SetIndentAt( 0 );
+ }
+ SvxNumBulletItem aNewNumBulletItem( *pNumBulletItem );
+ SvxNumRule* pRule = aNewNumBulletItem.GetNumRule();
+ if ( pRule )
+ {
+ pRule->SetLevel( pParaSet->mnDepth, aNumberFormat );
+ sal_uInt16 i, n;
+ for ( i = 0; i < pRule->GetLevelCount(); i++ )
+ {
+ if ( i != pParaSet->mnDepth )
+ {
+ n = i > 4 ? 4 : i;
+
+ SvxNumberFormat aNumberFormat2( pRule->GetLevel( i ) );
+ const PPTParaLevel& rParaLevel = mrStyleSheet.mpParaSheet[ nInstance ]->maParaLevel[ n ];
+ const PPTCharLevel& rCharLevel = mrStyleSheet.mpCharSheet[ nInstance ]->maCharLevel[ n ];
+ sal_uInt32 nColor;
+ if ( rParaLevel.mnBuFlags & ( 1 << PPT_ParaAttr_BuHardColor ) )
+ nColor = rParaLevel.mnBulletColor;
+ else
+ nColor = rCharLevel.mnFontColor;
+ aNumberFormat2.SetBulletColor( rManager.MSO_TEXT_CLR_ToColor( nColor ) );
+ pRule->SetLevel( i, aNumberFormat2 );
+ }
+ }
+ rSet.Put( aNewNumBulletItem );
+ }
+ }
+ }
+ }
+
+ UINT32 nIsBullet2, _nTextOfs, _nBulletOfs, nHardAttribute = 0;
+ GetAttrib( PPT_ParaAttr_BulletOn, nIsBullet2, nDestinationInstance );
+ nHardAttribute += GetAttrib( PPT_ParaAttr_TextOfs, _nTextOfs, nDestinationInstance );
+ nHardAttribute += GetAttrib( PPT_ParaAttr_BulletOfs, _nBulletOfs, nDestinationInstance );
+ if ( !nIsBullet2 )
+ {
+ SvxLRSpaceItem aLRSpaceItem( EE_PARA_LRSPACE );
+ UINT16 nAbsLSpace = (UINT16)( ( (UINT32)_nTextOfs * 2540 ) / 576 );
+ UINT16 nFirstLineOffset = nAbsLSpace - (UINT16)( ( (UINT32)_nBulletOfs * 2540 ) / 576 );
+ aLRSpaceItem.SetLeft( nAbsLSpace );
+ aLRSpaceItem.SetTxtFirstLineOfstValue( -nFirstLineOffset );
+ rSet.Put( aLRSpaceItem );
+ }
+ else
+ {
+ SvxLRSpaceItem aLRSpaceItem( EE_PARA_LRSPACE );
+ aLRSpaceItem.SetLeft( 0 );
+ aLRSpaceItem.SetTxtFirstLineOfstValue( 0 );
+ rSet.Put( aLRSpaceItem );
+ }
+ if ( GetAttrib( PPT_ParaAttr_Adjust, nVal, nDestinationInstance ) )
+ {
+ if ( nVal <= 3 )
+ { // Absatzausrichtung
+ static SvxAdjust __READONLY_DATA aAdj[ 4 ] = { SVX_ADJUST_LEFT, SVX_ADJUST_CENTER, SVX_ADJUST_RIGHT, SVX_ADJUST_BLOCK };
+ rSet.Put( SvxAdjustItem( aAdj[ nVal ], EE_PARA_JUST ) );
+ }
+ }
+
+ if ( GetAttrib( PPT_ParaAttr_AsianLB_1, nVal, nDestinationInstance ) )
+ rSet.Put( SfxBoolItem( EE_PARA_FORBIDDENRULES, nVal != 0 ) );
+ if ( GetAttrib( PPT_ParaAttr_AsianLB_3, nVal, nDestinationInstance ) )
+ rSet.Put( SfxBoolItem( EE_PARA_HANGINGPUNCTUATION, nVal != 0 ) );
+
+ if ( GetAttrib( PPT_ParaAttr_BiDi, nVal, nDestinationInstance ) )
+ rSet.Put( SvxFrameDirectionItem( nVal == 1 ? FRMDIR_HORI_RIGHT_TOP : FRMDIR_HORI_LEFT_TOP, EE_PARA_WRITINGDIR ) );
+
+ // LineSpacing
+ PPTPortionObj* pPortion = First();
+ BOOL bIsHardAttribute = GetAttrib( PPT_ParaAttr_LineFeed, nVal, nDestinationInstance );
+ nVal2 = (INT16)nVal;
+ sal_uInt32 nFont = sal_uInt32();
+ if ( pPortion && pPortion->GetAttrib( PPT_CharAttr_Font, nFont, nDestinationInstance ) )
+ bIsHardAttribute = TRUE;
+
+ if ( bIsHardAttribute )
+ {
+ if ( pPortion && ( nVal2 > 200 ) )
+ {
+ UINT32 nFontHeight;
+ pPortion->GetAttrib( PPT_CharAttr_FontHeight, nFontHeight, nDestinationInstance );
+ nVal2 = -(sal_Int16)( ( nFontHeight * nVal * 8 ) / 100 );
+ }
+ rSet.Put( SdrTextFixedCellHeightItem( TRUE ), SDRATTR_TEXT_USEFIXEDCELLHEIGHT );
+ SvxLineSpacingItem aItem( 200, EE_PARA_SBL );
+ if ( nVal2 <= 0 )
+ aItem.SetLineHeight( (UINT16)( rManager.ScalePoint( -nVal2 ) / 8 ) );
+ else
+ {
+ sal_uInt8 nPropLineSpace = (BYTE)nVal2;
+ aItem.SetPropLineSpace( nPropLineSpace );
+ aItem.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ }
+ rSet.Put( aItem );
+ }
+
+ // Paragraph Spacing
+ UINT32 nFontHeight = 0;
+ bIsHardAttribute = ( (UINT32)GetAttrib( PPT_ParaAttr_UpperDist, nUpperDist, nDestinationInstance ) +
+ (UINT32)GetAttrib( PPT_ParaAttr_LowerDist, nLowerDist, nDestinationInstance ) ) != 0;
+ if ( ( nUpperDist > 0 ) || ( nLowerDist > 0 ) )
+ {
+ if ( mnPortionCount )
+ {
+ mpPortionList[ mnPortionCount - 1 ]->GetAttrib( PPT_CharAttr_FontHeight, nFontHeight, nDestinationInstance );
+ if ( ((INT16)nUpperDist) > 0 )
+ nUpperDist = - (sal_Int16)( ( nFontHeight * nUpperDist * 100 ) / 1000 );
+ if ( ((INT16)nLowerDist) > 0 )
+ nLowerDist = - (sal_Int16)( ( nFontHeight * nLowerDist * 100 ) / 1000 );
+ }
+ bIsHardAttribute = TRUE;
+ }
+ if ( bIsHardAttribute )
+ {
+ SvxULSpaceItem aULSpaceItem( EE_PARA_ULSPACE );
+ nVal2 = (INT16)nUpperDist;
+ if ( nVal2 <= 0 )
+ aULSpaceItem.SetUpper( (UINT16)(((UINT32) - nVal2 * 2540 ) / ( 72 * 8 ) ) );
+ else
+ {
+ aULSpaceItem.SetUpperValue( 0 );
+ aULSpaceItem.SetPropUpper( (UINT16)nUpperDist == 100 ? 101 : (UINT16)nUpperDist );
+ }
+ nVal2 = (INT16)nLowerDist;
+ if ( nVal2 <= 0 )
+ aULSpaceItem.SetLower( (UINT16)(((UINT32) - nVal2 * 2540 ) / ( 72 * 8 ) ) );
+ else
+ {
+ aULSpaceItem.SetLowerValue( 0 );
+ aULSpaceItem.SetPropLower( (UINT16)nLowerDist == 100 ? 101 : (UINT16)nLowerDist );
+ }
+ rSet.Put( aULSpaceItem );
+ }
+
+ if ( mbTab ) // makes it sense to apply tabsettings
+ {
+ UINT32 i, nDefaultTab, nTab, nTextOfs2 = 0;
+ UINT32 nLatestManTab = 0;
+ GetAttrib( PPT_ParaAttr_TextOfs, nTextOfs2, nDestinationInstance );
+ GetAttrib( PPT_ParaAttr_BulletOfs, nTab, nDestinationInstance );
+ GetAttrib( PPT_ParaAttr_BulletOn, i, nDestinationInstance );
+ GetAttrib( PPT_ParaAttr_DefaultTab, nDefaultTab, nDestinationInstance );
+ SvxTabStopItem aTabItem( 0, 0, SVX_TAB_ADJUST_DEFAULT, EE_PARA_TABS );
+ if ( GetTabCount() )
+ {
+ for ( i = 0; i < GetTabCount(); i++ )
+ {
+ SvxTabAdjust eTabAdjust;
+ nTab = GetTabOffsetByIndex( (sal_uInt16)i );
+ switch( GetTabStyleByIndex( (sal_uInt16)i ) )
+ {
+ case 1 : eTabAdjust = SVX_TAB_ADJUST_CENTER; break;
+ case 2 : eTabAdjust = SVX_TAB_ADJUST_RIGHT; break;
+ case 3 : eTabAdjust = SVX_TAB_ADJUST_DECIMAL; break;
+ default : eTabAdjust = SVX_TAB_ADJUST_LEFT;
+ }
+ if ( nTab > nTextOfs2 )
+ aTabItem.Insert( SvxTabStop( (UINT16)( ( ( nTab - nTextOfs2 ) * 2540 ) / 576 ), eTabAdjust ) );
+ }
+ nLatestManTab = nTab;
+ }
+ if ( nIsBullet2 == 0 )
+ aTabItem.Insert( SvxTabStop( (sal_uInt16)0 ) );
+ if ( nDefaultTab )
+ {
+ nTab = ( nTextOfs2 > nLatestManTab ) ? nTextOfs2 : nLatestManTab;
+ nTab /= nDefaultTab;
+ nTab = nDefaultTab * ( 1 + nTab );
+ for ( i = 0; ( i < 20 ) && ( nTab < 0x1b00 ); i++ )
+ {
+ aTabItem.Insert( SvxTabStop( (UINT16)( ( ( nTab - nTextOfs2 ) * 2540 ) / 576 ) ) );
+ nTab += nDefaultTab;
+ }
+ }
+ rSet.Put( aTabItem );
+ }
+}
+
+UINT32 PPTParagraphObj::GetTextSize()
+{
+ UINT32 nCount, nRetValue = 0;
+ for ( UINT32 i = 0; i < mnPortionCount; i++ )
+ {
+ PPTPortionObj* pPortionObj = mpPortionList[ i ];
+ nCount = pPortionObj->Count();
+ if ( ( !nCount ) && pPortionObj->mpFieldItem )
+ nCount++;
+ nRetValue += nCount;
+ }
+ return nRetValue;
+}
+
+PPTPortionObj* PPTParagraphObj::First()
+{
+ mnCurrentObject = 0;
+ if ( !mnPortionCount )
+ return NULL;
+ return mpPortionList[ 0 ];
+}
+
+PPTPortionObj* PPTParagraphObj::Next()
+{
+ UINT32 i = mnCurrentObject + 1;
+ if ( i >= mnPortionCount )
+ return NULL;
+ mnCurrentObject++;
+ return mpPortionList[ i ];
+}
+
+void PPTParagraphObj::ImplClear()
+{
+ for ( void* pPtr = First(); pPtr; pPtr = Next() )
+ delete (PPTPortionObj*)pPtr;
+ delete[] mpPortionList;
+}
+
+PPTFieldEntry::~PPTFieldEntry()
+{
+ delete pField1;
+ delete pField2;
+ delete pString;
+};
+
+void PPTFieldEntry::GetDateTime( const sal_uInt32 nVal, SvxDateFormat& eDateFormat, SvxTimeFormat& eTimeFormat )
+{
+ eDateFormat = SVXDATEFORMAT_APPDEFAULT;
+ eTimeFormat = SVXTIMEFORMAT_APPDEFAULT;
+ // ID auswerten
+ switch( nVal )
+ {
+ case 0:
+ case 6:
+ eDateFormat = SVXDATEFORMAT_A;
+ break;
+ case 1:
+ eDateFormat = SVXDATEFORMAT_F;
+ break;
+ case 2:
+ case 3:
+ eDateFormat = SVXDATEFORMAT_D;
+ break;
+ case 4:
+ case 5:
+ eDateFormat = SVXDATEFORMAT_C;
+ break;
+ case 7:
+ eDateFormat = SVXDATEFORMAT_A;
+ case 9:
+ eTimeFormat = SVXTIMEFORMAT_24_HM;
+ break;
+ case 8:
+ eDateFormat = SVXDATEFORMAT_A;
+ case 11:
+ eTimeFormat = SVXTIMEFORMAT_12_HM;
+ break;
+ case 10:
+ eTimeFormat = SVXTIMEFORMAT_24_HMS;
+ break;
+ case 12:
+ eTimeFormat = SVXTIMEFORMAT_12_HMS;
+ break;
+ }
+}
+
+void PPTFieldEntry::SetDateTime( UINT32 nVal )
+{
+ SvxDateFormat eDateFormat;
+ SvxTimeFormat eTimeFormat;
+ GetDateTime( nVal, eDateFormat, eTimeFormat );
+ if ( eDateFormat != SVXDATEFORMAT_APPDEFAULT )
+ pField1 = new SvxFieldItem( SvxDateField( Date(), SVXDATETYPE_VAR, eDateFormat ), EE_FEATURE_FIELD );
+ if ( eTimeFormat != SVXTIMEFORMAT_APPDEFAULT )
+ {
+ SvxFieldItem* pFieldItem = new SvxFieldItem( SvxExtTimeField( Time(), SVXTIMETYPE_VAR, eTimeFormat ), EE_FEATURE_FIELD );
+ if ( pField1 )
+ pField2 = pFieldItem;
+ else
+ pField1 = pFieldItem;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport, PptSlidePersistEntry& rPersistEntry, DffObjData* pObjData ) :
+ mpImplTextObj ( new ImplPPTTextObj( rPersistEntry ) )
+{
+ mpImplTextObj->mnRefCount = 1;
+ mpImplTextObj->mnShapeId = 0;
+ mpImplTextObj->mnShapeMaster = 0;
+ mpImplTextObj->mpPlaceHolderAtom = NULL;
+ mpImplTextObj->mnDestinationInstance = mpImplTextObj->mnInstance = 4;
+ mpImplTextObj->mnCurrentObject = 0;
+ mpImplTextObj->mnParagraphCount = 0;
+ mpImplTextObj->mpParagraphList = NULL;
+ mpImplTextObj->mnTextFlags = 0;
+ mpImplTextObj->meShapeType = ( pObjData && pObjData->bShapeType ) ? pObjData->eShapeType : mso_sptMin;
+
+ DffRecordHeader aExtParaHd;
+ aExtParaHd.nRecType = 0; // set empty
+
+ UINT32 bStatus = TRUE;
+
+ DffRecordHeader aShapeContainerHd;
+ rIn >> aShapeContainerHd;
+
+ if ( ( pObjData == NULL ) || ( pObjData->bShapeType ) )
+ {
+ PPTExtParaProv* pExtParaProv = rSdrPowerPointImport.pPPTStyleSheet->pExtParaProv;
+ if ( pObjData )
+ {
+ mpImplTextObj->mnShapeId = pObjData->nShapeId;
+ if ( pObjData->nSpFlags & SP_FHAVEMASTER )
+ mpImplTextObj->mnShapeMaster = rSdrPowerPointImport.GetPropertyValue( DFF_Prop_hspMaster, 0 );
+ }
+ ////////////////
+ // ClientData //
+ ////////////////
+ if ( rSdrPowerPointImport.maShapeRecords.SeekToContent( rIn, DFF_msofbtClientData, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ UINT32 nOldPos = rIn.Tell();
+ DffRecordHeader& aClientDataContainerHd = *rSdrPowerPointImport.maShapeRecords.Current();
+ DffRecordHeader aPlaceHolderAtomHd;
+ if ( rSdrPowerPointImport.SeekToRec( rIn, PPT_PST_OEPlaceholderAtom, aClientDataContainerHd.GetRecEndFilePos(), &aPlaceHolderAtomHd ) )
+ {
+ mpImplTextObj->mpPlaceHolderAtom = new PptOEPlaceholderAtom;
+ rIn >> *( mpImplTextObj->mpPlaceHolderAtom );
+ }
+ rIn.Seek( nOldPos );
+ DffRecordHeader aProgTagHd;
+ if ( rSdrPowerPointImport.SeekToContentOfProgTag( 9, rIn, aClientDataContainerHd, aProgTagHd ) )
+ {
+ rIn >> aExtParaHd;
+ }
+ }
+
+ ///////////////////
+ // ClientTextBox //
+ ///////////////////
+ if ( rSdrPowerPointImport.maShapeRecords.SeekToContent( rIn, DFF_msofbtClientTextbox, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ DffRecordHeader aClientTextBoxHd( *rSdrPowerPointImport.maShapeRecords.Current() );
+ UINT32 nTextRulerAtomOfs = 0; // case of zero -> this atom may be found in aClientDataContainerHd;
+ // case of -1 -> ther is no atom of this kind
+ // else -> this is the fileofs where we can get it
+
+ //////////////////////////////////////
+ // checkout if this is a referenced //
+ // textobj, if so the we will patch //
+ // the ClientTextBoxHd for a //
+ // equivalent one //
+ //////////////////////////////////////
+ DffRecordHeader aTextHd;
+ if ( rSdrPowerPointImport.SeekToRec( rIn, PPT_PST_OutlineTextRefAtom, aClientTextBoxHd.GetRecEndFilePos(), &aTextHd ) )
+ {
+ UINT32 nRefNum;
+ rIn >> nRefNum;
+
+ if ( rSdrPowerPointImport.SeekToRec( rIn, PPT_PST_TextRulerAtom, aClientTextBoxHd.GetRecEndFilePos() ) )
+ nTextRulerAtomOfs = rIn.Tell();
+ else
+ nTextRulerAtomOfs = 0xffffffff;
+
+ UINT32 nInstance = 0;
+ switch( rSdrPowerPointImport.eAktPageKind )
+ {
+ case PPT_NOTEPAGE :
+ nInstance++;
+ case PPT_MASTERPAGE :
+ nInstance++;
+ case PPT_SLIDEPAGE :
+ break;
+ default :
+ bStatus = FALSE;
+ }
+ if ( bStatus )
+ {
+ sal_uInt32 nSlideId = rSdrPowerPointImport.GetAktPageId();
+ if ( !nSlideId )
+ bStatus = FALSE;
+ else
+ {
+ if ( !aExtParaHd.nRecType )
+ {
+ UINT32 nOldPos = rIn.Tell();
+ // try to locate the referenced ExtendedParaHd
+ DffRecordHeader* pHd = pExtParaProv->
+ aExtendedPresRules.GetRecordHeader( PPT_PST_ExtendedParagraphHeaderAtom,
+ SEEK_FROM_CURRENT_AND_RESTART );
+ DffRecordHeader aPresRuleHd;
+ DffRecordHeader* pFirst = pHd;
+
+ UINT32 nTmpSlideId, nTmpRef;
+ while ( pHd )
+ {
+ pHd->SeekToContent( rIn );
+ rIn >> nTmpSlideId
+ >> nTmpRef; // this seems to be the instance
+
+ if ( ( nTmpSlideId == nSlideId ) && ( pHd->nRecInstance == nRefNum ) )
+ {
+ pHd->SeekToEndOfRecord( rIn );
+ rIn >> aPresRuleHd;
+ if ( aPresRuleHd.nRecType == PPT_PST_ExtendedParagraphAtom )
+ {
+ aExtParaHd = aPresRuleHd;
+ break;
+ }
+ }
+ pHd = pExtParaProv->
+ aExtendedPresRules.GetRecordHeader( PPT_PST_ExtendedParagraphHeaderAtom,
+ SEEK_FROM_CURRENT_AND_RESTART );
+ if ( pHd == pFirst )
+ break;
+ }
+ rIn.Seek( nOldPos );
+ }
+ // now pHd points to the right SlideListWithText Container
+ PptSlidePersistList* pPageList = rSdrPowerPointImport.GetPageList( rSdrPowerPointImport.eAktPageKind );
+ PptSlidePersistEntry* pE = NULL;
+ if ( pPageList && ( rSdrPowerPointImport.nAktPageNum < pPageList->Count() ) )
+ pE = (*pPageList)[ rSdrPowerPointImport.nAktPageNum ];
+ if ( (!pE) || (!pE->nSlidePersistStartOffset) || ( pE->aPersistAtom.nSlideId != nSlideId ) )
+ bStatus = sal_False;
+ else
+ {
+ rIn.Seek( pE->nSlidePersistStartOffset );
+ // now we got the right page and are searching for the right
+ // TextHeaderAtom
+ while ( rIn.Tell() < pE->nSlidePersistEndOffset )
+ {
+ rIn >> aClientTextBoxHd;
+ if ( aClientTextBoxHd.nRecType == PPT_PST_TextHeaderAtom )
+ {
+ if ( aClientTextBoxHd.nRecInstance == nRefNum )
+ {
+ aClientTextBoxHd.SeekToEndOfRecord( rIn );
+ break;
+ }
+ }
+ aClientTextBoxHd.SeekToEndOfRecord( rIn );
+ }
+ if ( rIn.Tell() > pE->nSlidePersistEndOffset )
+ bStatus = FALSE;
+ else
+ { // patching the RecordHeader
+ aClientTextBoxHd.nFilePos -= DFF_COMMON_RECORD_HEADER_SIZE;
+ aClientTextBoxHd.nRecLen += DFF_COMMON_RECORD_HEADER_SIZE;
+ aClientTextBoxHd.nRecType = DFF_msofbtClientTextbox;
+ aClientTextBoxHd.nRecVer = DFF_PSFLAG_CONTAINER;
+
+ // we have to calculate the correct record len
+ DffRecordHeader aTmpHd;
+ while ( rIn.Tell() < pE->nSlidePersistEndOffset )
+ {
+ rIn >> aTmpHd;
+ if ( ( aTmpHd.nRecType == PPT_PST_SlidePersistAtom ) || ( aTmpHd.nRecType == PPT_PST_TextHeaderAtom ) )
+ break;
+ aTmpHd.SeekToEndOfRecord( rIn );
+ aClientTextBoxHd.nRecLen += aTmpHd.nRecLen + DFF_COMMON_RECORD_HEADER_SIZE;
+ }
+ aClientTextBoxHd.SeekToContent( rIn );
+ }
+ }
+ }
+ }
+ }
+
+ if ( bStatus )
+ {
+ if ( rSdrPowerPointImport.SeekToRec( rIn, PPT_PST_TextHeaderAtom, aClientTextBoxHd.GetRecEndFilePos(), &aTextHd ) )
+ {
+ // TextHeaderAtom is always the first Atom
+ UINT16 nInstance;
+ rIn >> nInstance; // this number tells us the TxMasterStyleAtom Instance
+ if ( nInstance > 8 )
+ nInstance = 4;
+ aTextHd.SeekToEndOfRecord( rIn );
+ mpImplTextObj->mnInstance = nInstance;
+
+ UINT32 nFilePos = rIn.Tell();
+ if ( rSdrPowerPointImport.SeekToRec2( PPT_PST_TextBytesAtom,
+ PPT_PST_TextCharsAtom,
+ aClientTextBoxHd.GetRecEndFilePos() )
+ || rSdrPowerPointImport.SeekToRec( rIn,
+ PPT_PST_StyleTextPropAtom,
+ aClientTextBoxHd.GetRecEndFilePos() ) )
+ {
+ PPTTextRulerInterpreter aTextRulerInterpreter( nTextRulerAtomOfs, rSdrPowerPointImport,
+ aClientTextBoxHd, rIn );
+
+ PPTStyleTextPropReader aStyleTextPropReader( rIn, rSdrPowerPointImport, aClientTextBoxHd,
+ aTextRulerInterpreter, aExtParaHd, nInstance );
+ sal_uInt32 nParagraphs = mpImplTextObj->mnParagraphCount = aStyleTextPropReader.aParaPropList.Count();
+ if ( nParagraphs )
+ {
+ // the language settings will be merged into the list of PPTCharPropSet
+ DffRecordHeader aTextSpecInfoHd;
+ PPTTextSpecInfoAtomInterpreter aTextSpecInfoAtomInterpreter;
+ if ( rSdrPowerPointImport.SeekToRec( rIn, PPT_PST_TextSpecInfoAtom,
+ aClientTextBoxHd.GetRecEndFilePos(), &aTextSpecInfoHd ) )
+ {
+ if ( aTextSpecInfoAtomInterpreter.Read( rIn, aTextSpecInfoHd, PPT_PST_TextSpecInfoAtom,
+ &(rSdrPowerPointImport.pPPTStyleSheet->maTxSI) ) )
+ {
+ sal_uInt32 nI = 0;
+ PPTTextSpecInfo* pSpecInfo;
+ for ( pSpecInfo = (PPTTextSpecInfo*)aTextSpecInfoAtomInterpreter.aList.First();
+ pSpecInfo; pSpecInfo =(PPTTextSpecInfo*)aTextSpecInfoAtomInterpreter.aList.Next() )
+ {
+ sal_uInt32 nCharIdx = pSpecInfo->nCharIdx;
+
+ // portions and text have to been splitted in some cases
+ for ( ; nI < aStyleTextPropReader.aCharPropList.Count(); )
+ {
+ PPTCharPropSet* pSet = (PPTCharPropSet*)aStyleTextPropReader.aCharPropList.GetObject( nI );
+ if ( pSet->mnOriginalTextPos < nCharIdx )
+ {
+ pSet->mnLanguage[ 0 ] = pSpecInfo->nLanguage[ 0 ];
+ pSet->mnLanguage[ 1 ] = pSpecInfo->nLanguage[ 1 ];
+ pSet->mnLanguage[ 2 ] = pSpecInfo->nLanguage[ 2 ];
+ // test if the current portion needs to be splitted
+ if ( pSet->maString.Len() > 1 )
+ {
+ sal_Int32 nIndexOfNextPortion = pSet->maString.Len() + pSet->mnOriginalTextPos;
+ sal_Int32 nNewLen = nIndexOfNextPortion - nCharIdx;
+ sal_Int32 nOldLen = pSet->maString.Len() - nNewLen;
+
+ if ( ( nNewLen > 0 ) && ( nOldLen > 0 ) )
+ {
+ String aString( pSet->maString );
+ PPTCharPropSet* pNew = new PPTCharPropSet( *pSet );
+ pSet->maString = String( aString, 0, (sal_uInt16)nOldLen );
+ pNew->maString = String( aString, (sal_uInt16)nOldLen, (sal_uInt16)nNewLen );
+ pNew->mnOriginalTextPos += nOldLen;
+ aStyleTextPropReader.aCharPropList.Insert( pNew, nI + 1 );
+ }
+ }
+ }
+ else
+ break;
+ nI++;
+ }
+ }
+ }
+#ifdef DBG_UTIL
+ else
+ {
+ if (!(rSdrPowerPointImport.rImportParam.nImportFlags & PPT_IMPORTFLAGS_NO_TEXT_ASSERT))
+ {
+ DBG_ERROR( "SdrTextSpecInfoAtomInterpreter::Ctor(): parsing error, this document needs to be analysed (SJ)" );
+ }
+ }
+#endif
+ }
+ //
+ // now will search for possible textextensions such as date/time fields
+ // or ParaTabStops and append them on this textobj
+ //
+ rIn.Seek( nFilePos );
+ List* pFieldList = NULL;
+ while ( rIn.Tell() < aClientTextBoxHd.GetRecEndFilePos() )
+ {
+ rIn >> aTextHd;
+ UINT16 nVal = 0;
+ PPTFieldEntry* pEntry = NULL;
+ switch ( aTextHd.nRecType )
+ {
+ case PPT_PST_DateTimeMCAtom :
+ {
+ pEntry = new PPTFieldEntry;
+ rIn >> pEntry->nPos
+ >> nVal
+ >> nVal;
+ pEntry->SetDateTime( nVal & 0xff );
+ }
+ break;
+
+ case PPT_PST_FooterMCAtom :
+ {
+ pEntry = new PPTFieldEntry;
+ rIn >> pEntry->nPos;
+ pEntry->pField1 = new SvxFieldItem( SvxFooterField(), EE_FEATURE_FIELD );
+ }
+ break;
+
+ case PPT_PST_HeaderMCAtom :
+ {
+ pEntry = new PPTFieldEntry;
+ rIn >> pEntry->nPos;
+ pEntry->pField1 = new SvxFieldItem( SvxHeaderField(), EE_FEATURE_FIELD );
+ }
+ break;
+
+ case PPT_PST_GenericDateMCAtom :
+ {
+ pEntry = new PPTFieldEntry;
+ rIn >> pEntry->nPos;
+ pEntry->pField1 = new SvxFieldItem( SvxDateTimeField(), EE_FEATURE_FIELD );
+ if ( rPersistEntry.pHeaderFooterEntry ) // sj: #i34111# on master pages it is possible
+ { // that there is no HeaderFooterEntry available
+ if ( rPersistEntry.pHeaderFooterEntry->nAtom & 0x20000 ) // auto date time
+ pEntry->SetDateTime( rPersistEntry.pHeaderFooterEntry->nAtom & 0xff );
+ else
+ pEntry->pString = new String( rPersistEntry.pHeaderFooterEntry->pPlaceholder[ nVal ] );
+ }
+ }
+ break;
+
+ case PPT_PST_SlideNumberMCAtom :
+ case PPT_PST_RTFDateTimeMCAtom :
+ {
+ pEntry = new PPTFieldEntry;
+ if ( aTextHd.nRecLen >= 4 )
+ {
+ rIn >> pEntry->nPos
+ >> nVal;
+
+ // ID auswerten
+ //SvxFieldItem* pFieldItem = NULL;
+ switch( aTextHd.nRecType )
+ {
+ case PPT_PST_SlideNumberMCAtom:
+ pEntry->pField1 = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD );
+ break;
+
+ case PPT_PST_RTFDateTimeMCAtom:
+ {
+ // Rude workaround for one specal case reported
+ // by a customer. (#i75203#)
+
+ // Don't even attempt to handle the general use
+ // case for PPT_PST_RTFDateTimeMCAtom (a generic
+ // MS style date/time format string). Just handle
+ // the special case where the format string
+ // contains only one or several possibly empty
+ // quoted strings. I.e. something that doesn't
+ // expand to any date or time at all, but to a
+ // fixed string. How on earth somebody manages to
+ // produce such things in PPT slides I have no
+ // idea.
+ if (nVal == 0)
+ {
+ sal_Unicode n;
+ xub_StrLen nLen;
+ String aStr;
+ bool inquote = FALSE;
+ for (nLen = 0, n = 0; nLen < 64; nLen++)
+ {
+ rIn >> n;
+
+ // Collect quoted characters into aStr
+ if ( n == '\'')
+ inquote = !inquote;
+ else if (!n)
+ {
+ // End of format string
+ pEntry->pString = new String( aStr );
+ break;
+ }
+ else if (!inquote)
+ {
+ // Non-quoted character, i.e. a real
+ // format specifier. We don't handle
+ // those. Sorry.
+ break;
+ }
+ else
+ {
+ aStr += n;
+ }
+ }
+ }
+ if ( pEntry->pString == NULL )
+ {
+ // Handle as previously
+ pEntry->pField1 = new SvxFieldItem( SvxDateField( Date(), SVXDATETYPE_FIX ), EE_FEATURE_FIELD );
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case PPT_PST_InteractiveInfo :
+ {
+ DffRecordHeader aHdInteractiveInfoAtom;
+ if ( rSdrPowerPointImport.SeekToRec( rIn, PPT_PST_InteractiveInfoAtom, aTextHd.GetRecEndFilePos(), &aHdInteractiveInfoAtom ) )
+ {
+ PptInteractiveInfoAtom aInteractiveInfoAtom;
+ rIn >> aInteractiveInfoAtom;
+ for ( SdHyperlinkEntry* pHyperlink = (SdHyperlinkEntry*)rSdrPowerPointImport.aHyperList.First();
+ pHyperlink; pHyperlink = (SdHyperlinkEntry*)rSdrPowerPointImport.aHyperList.Next() )
+ {
+ if ( pHyperlink->nIndex == aInteractiveInfoAtom.nExHyperlinkId )
+ {
+ aTextHd.SeekToEndOfRecord( rIn );
+ rIn >> aTextHd;
+ if ( aTextHd.nRecType != PPT_PST_TxInteractiveInfoAtom )
+ {
+ aTextHd.SeekToBegOfRecord( rIn );
+ continue;
+ }
+ else
+ {
+ sal_uInt32 nStartPos, nEndPos;
+ rIn >> nStartPos
+ >> nEndPos;
+ if ( nEndPos )
+ {
+ pEntry = new PPTFieldEntry;
+ pEntry->nPos = (sal_uInt16)nStartPos;
+ pEntry->nTextRangeEnd = (sal_uInt16)nEndPos;
+ String aTarget( pHyperlink->aTarget );
+ if ( pHyperlink->aConvSubString.Len() )
+ {
+ aTarget.Append( (sal_Unicode)'#' );
+ aTarget.Append( pHyperlink->aConvSubString );
+ }
+ pEntry->pField1 = new SvxFieldItem( SvxURLField( aTarget, String(), SVXURLFORMAT_REPR ), EE_FEATURE_FIELD );
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ break;
+ }
+ aTextHd.SeekToEndOfRecord( rIn );
+ if ( pEntry )
+ {
+ if ( !pFieldList )
+ pFieldList = new List;
+ UINT32 n;
+ for ( n = 0; n < pFieldList->Count(); n++ )
+ { // sorting fields ( hi >> lo )
+ if ( ( (PPTFieldEntry*)pFieldList->GetObject( n ) )->nPos < pEntry->nPos )
+ break;
+ }
+ pFieldList->Insert( pEntry, (UINT32)n );
+ }
+ }
+ if ( pFieldList )
+ {
+ PPTFieldEntry* pFE = (PPTFieldEntry*)pFieldList->First();
+ List& aCharPropList = aStyleTextPropReader.aCharPropList;
+
+ sal_Int32 i = nParagraphs - 1;
+ sal_Int32 n = aCharPropList.Count() - 1;
+
+ // at this point we just have a list of textportions(aCharPropList)
+ // the next while loop tries to resolve the list of fields(pFieldList)
+ while( pFE && ( n >= 0 ) && ( i >= 0 ) )
+ {
+ PPTCharPropSet* pSet = (PPTCharPropSet*)aCharPropList.GetObject( n );
+ String aString( pSet->maString );
+ UINT32 nCount = aString.Len();
+ UINT32 nPos = pSet->mnOriginalTextPos + nCount;
+ while ( pFE && nCount-- )
+ {
+ nPos--;
+ while ( pFE && ( pFE->nPos > nPos ) )
+ pFE = (PPTFieldEntry*)pFieldList->Next();
+ if ( !pFE )
+ break;
+
+ if ( pFE->nPos == nPos )
+ {
+ if ( aString.GetChar( (sal_uInt16)nCount ) == 0x2a )
+ {
+ UINT32 nBehind = aString.Len() - ( nCount + 1 );
+ pSet->maString = String();
+ if ( nBehind )
+ {
+ PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pSet );
+ pNewCPS->maString = String( aString, (UINT16)nCount + 1, (UINT16)nBehind );
+ aCharPropList.Insert( pNewCPS, n + 1 );
+ }
+ if ( pFE->pField2 )
+ {
+ PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pSet );
+ pNewCPS->mpFieldItem = pFE->pField2, pFE->pField2 = NULL;
+ aCharPropList.Insert( pNewCPS, n + 1 );
+
+ pNewCPS = new PPTCharPropSet( *pSet );
+ pNewCPS->maString = String( String( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
+ aCharPropList.Insert( pNewCPS, n + 1 );
+ }
+ if ( nCount )
+ {
+ PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pSet );
+ pNewCPS->maString = String( aString, (UINT16)0, (UINT16)nCount );
+ aCharPropList.Insert( pNewCPS, n++ );
+ }
+ if ( pFE->pField1 )
+ {
+ pSet->mpFieldItem = pFE->pField1, pFE->pField1 = NULL;
+ }
+ else if ( pFE->pString )
+ pSet->maString = *pFE->pString;
+ }
+ else
+ {
+ if ( pFE->nTextRangeEnd ) // text range hyperlink
+ {
+ sal_uInt32 nHyperLen = pFE->nTextRangeEnd - nPos;
+ if ( nHyperLen )
+ {
+ PPTCharPropSet* pBefCPS = NULL;
+ if ( nCount )
+ {
+ pBefCPS = new PPTCharPropSet( *pSet );
+ pSet->maString = String( pSet->maString, (UINT16)nCount, (UINT16)( pSet->maString.Len() - nCount ) );
+ }
+ sal_uInt32 nIdx = n;
+ sal_Int32 nHyperLenLeft = nHyperLen;
+
+ while ( ( aCharPropList.Count() > nIdx ) && nHyperLenLeft )
+ {
+ // the textrange hyperlink can take more than 1 paragraph
+ // the solution here is to clone the hyperlink...
+
+ PPTCharPropSet* pCurrent = (PPTCharPropSet*)aCharPropList.GetObject( nIdx );
+ sal_Int32 nNextStringLen = pCurrent->maString.Len();
+
+ const SvxURLField* pField = (const SvxURLField*)pFE->pField1->GetField();
+
+ if ( pCurrent->mpFieldItem )
+ {
+ pCurrent->SetColor( PPT_COLSCHEME_A_UND_HYPERLINK );
+ if ( pCurrent->mpFieldItem->GetField()->ISA( SvxURLField ) )
+ break;
+ nHyperLenLeft--;
+ }
+ else if ( nNextStringLen )
+ {
+ if ( nNextStringLen <= nHyperLenLeft )
+ {
+ pCurrent->mpFieldItem = new SvxFieldItem( SvxURLField( pField->GetURL(), pCurrent->maString, SVXURLFORMAT_REPR ), EE_FEATURE_FIELD );
+ nHyperLenLeft -= nNextStringLen;
+
+ if ( nHyperLenLeft )
+ {
+ // if the next portion is in a higher paragraph,
+ // the textrange is to decrease (because of the LineBreak character)
+ if ( aCharPropList.Count() > ( nIdx + 1 ) )
+ {
+ PPTCharPropSet* pNext = (PPTCharPropSet*)aCharPropList.GetObject( nIdx + 1 );
+ if ( pNext->mnParagraph > pCurrent->mnParagraph )
+ nHyperLenLeft--;
+ }
+ }
+ }
+ else
+ {
+ PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pCurrent );
+ pNewCPS->maString = String( pCurrent->maString, (UINT16)nHyperLenLeft, (UINT16)( nNextStringLen - nHyperLenLeft ) );
+ aCharPropList.Insert( pNewCPS, nIdx + 1 );
+ String aRepresentation( pCurrent->maString, 0, (UINT16)nHyperLenLeft );
+ pCurrent->mpFieldItem = new SvxFieldItem( SvxURLField( pField->GetURL(), aRepresentation, SVXURLFORMAT_REPR ), EE_FEATURE_FIELD );
+ nHyperLenLeft = 0;
+ }
+ pCurrent->maString = String();
+ pCurrent->SetColor( PPT_COLSCHEME_A_UND_HYPERLINK );
+ }
+ nIdx++;
+ }
+ delete pFE->pField1, pFE->pField1 = NULL;
+
+ if ( pBefCPS )
+ {
+ pBefCPS->maString = String( aString, (UINT16)0, (UINT16)nCount );
+ aCharPropList.Insert( pBefCPS, n++ );
+
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ n--;
+ }
+ for ( void* pPtr = pFieldList->First(); pPtr; pPtr = pFieldList->Next() )
+ delete (PPTFieldEntry*)pPtr;
+ delete pFieldList;
+ }
+ mpImplTextObj->mpParagraphList = new PPTParagraphObj*[ nParagraphs ];
+ aStyleTextPropReader.aCharPropList.First();
+ UINT32 nCount = 0;
+ for ( void* pPtr = aStyleTextPropReader.aParaPropList.First();
+ pPtr;
+ pPtr = aStyleTextPropReader.aParaPropList.Next() )
+ {
+ PPTParagraphObj* pPara = new PPTParagraphObj( aStyleTextPropReader, *rSdrPowerPointImport.pPPTStyleSheet, nInstance, aTextRulerInterpreter );
+ mpImplTextObj->mpParagraphList[ nCount++ ] = pPara;
+
+ sal_uInt32 nParaAdjust, nFlags = 0;
+ pPara->GetAttrib( PPT_ParaAttr_Adjust, nParaAdjust, GetInstance() );
+
+ switch ( nParaAdjust )
+ {
+ case 0 : nFlags = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT; break;
+ case 1 : nFlags = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER; break;
+ case 2 : nFlags = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT; break;
+ case 3 : nFlags = PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK; break;
+ }
+ mpImplTextObj->mnTextFlags |= nFlags;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+PPTTextObj::PPTTextObj( PPTTextObj& rTextObj )
+{
+ mpImplTextObj = rTextObj.mpImplTextObj;
+ mpImplTextObj->mnRefCount++;
+}
+
+PPTTextObj::~PPTTextObj()
+{
+ ImplClear();
+}
+
+PPTParagraphObj* PPTTextObj::First()
+{
+ mpImplTextObj->mnCurrentObject = 0;
+ if ( !mpImplTextObj->mnParagraphCount )
+ return NULL;
+ return mpImplTextObj->mpParagraphList[ 0 ];
+}
+
+PPTParagraphObj* PPTTextObj::Next()
+{
+ UINT32 i = mpImplTextObj->mnCurrentObject + 1;
+ if ( i >= mpImplTextObj->mnParagraphCount )
+ return NULL;
+ mpImplTextObj->mnCurrentObject++;
+ return mpImplTextObj->mpParagraphList[ i ];
+}
+
+const SfxItemSet* PPTTextObj::GetBackground() const
+{
+ if ( mpImplTextObj->mrPersistEntry.pBObj )
+ return &mpImplTextObj->mrPersistEntry.pBObj->GetMergedItemSet();
+ else
+ return NULL;
+}
+
+void PPTTextObj::ImplClear()
+{
+ if ( ! ( --mpImplTextObj->mnRefCount ) )
+ {
+ for ( PPTParagraphObj* pPtr = First(); pPtr; pPtr = Next() )
+ delete pPtr;
+ delete[] mpImplTextObj->mpParagraphList;
+ delete mpImplTextObj->mpPlaceHolderAtom;
+ delete mpImplTextObj;
+ }
+}
+
+PPTTextObj& PPTTextObj::operator=( PPTTextObj& rTextObj )
+{
+ if ( this != &rTextObj )
+ {
+ ImplClear();
+ mpImplTextObj = rTextObj.mpImplTextObj;
+ mpImplTextObj->mnRefCount++;
+ }
+ return *this;
+}
+
+sal_Bool IsLine( const SdrObject* pObj )
+{
+ return pObj->ISA( SdrPathObj ) && ((SdrPathObj*)pObj)->IsLine() && (((SdrPathObj*)pObj)->GetPointCount() == 2 );
+}
+
+sal_Bool GetCellPosition( const SdrObject* pObj, const std::set< sal_Int32 >& rRows, const std::set< sal_Int32 >& rColumns,
+ sal_Int32& nTableIndex, sal_Int32& nRow, sal_Int32& nRowCount, sal_Int32& nColumn, sal_Int32& nColumnCount )
+{
+ Rectangle aSnapRect( pObj->GetSnapRect() );
+ sal_Bool bCellObject = ( aSnapRect.GetWidth() > 1 ) && ( aSnapRect.GetHeight() > 1 );
+ if ( bCellObject )
+ {
+ std::set< sal_Int32 >::const_iterator aRowIter( rRows.find( aSnapRect.Top() ) );
+ std::set< sal_Int32 >::const_iterator aColumnIter( rColumns.find( aSnapRect.Left() ) );
+ if ( ( aRowIter == rRows.end() ) || ( aColumnIter == rColumns.end() ) )
+ bCellObject = sal_False;
+ else
+ {
+ nRowCount = 1;
+ nRow = std::distance( rRows.begin(), aRowIter );
+ while( ++aRowIter != rRows.end() )
+ {
+ if ( *aRowIter >= aSnapRect.Bottom() )
+ break;
+ nRowCount++;
+ }
+ nColumnCount = 1;
+ nColumn = std::distance( rColumns.begin(), aColumnIter );
+ while( ++aColumnIter != rColumns.end() )
+ {
+ if ( *aColumnIter >= aSnapRect.Right() )
+ break;
+ nColumnCount++;
+ }
+ nTableIndex = nRow * rColumns.size() + nColumn;
+ }
+ }
+ return bCellObject;
+}
+
+#define LinePositionLeft 0x01000000
+#define LinePositionTop 0x02000000
+#define LinePositionRight 0x04000000
+#define LinePositionBottom 0x08000000
+#define LinePositionTLBR 0x10000000
+#define LinePositionBLTR 0x20000000
+
+
+void GetRowPositions( const Rectangle& rSnapRect, const std::set< sal_Int32 >& rRows,
+ const std::set< sal_Int32 >& rColumns, std::vector< sal_Int32 >& rPositions, sal_Int32 nColumn, sal_Int32 nFlags )
+{
+ std::set< sal_Int32 >::const_iterator aRow( rRows.find( rSnapRect.Top() ) );
+ if ( aRow != rRows.end() )
+ {
+ sal_Int32 nRow = std::distance( rRows.begin(), aRow );
+ while( ( aRow != rRows.end() ) && ((*aRow) < rSnapRect.Bottom() ) )
+ {
+ if ( nFlags & LinePositionLeft )
+ rPositions.push_back( ( ( nRow * rColumns.size() ) + nColumn ) | LinePositionLeft );
+ if ( nFlags & LinePositionRight )
+ rPositions.push_back( ( ( nRow * rColumns.size() ) + ( nColumn - 1 ) ) | LinePositionRight );
+
+ nRow++;
+ aRow++;
+ }
+ }
+}
+
+
+void GetColumnPositions( const Rectangle& rSnapRect, const std::set< sal_Int32 >& /* rRows */,
+ const std::set< sal_Int32 >& rColumns, std::vector< sal_Int32 >& rPositions, sal_Int32 nRow, sal_Int32 nFlags )
+{
+ std::set< sal_Int32 >::const_iterator aColumn( rColumns.find( rSnapRect.Left() ) );
+ if ( aColumn != rColumns.end() )
+ {
+ sal_Int32 nColumn = std::distance( rColumns.begin(), aColumn );
+ while( ( aColumn != rColumns.end() ) && ((*aColumn) < rSnapRect.Right() ) )
+ {
+ if ( nFlags & LinePositionTop )
+ rPositions.push_back( ( ( nRow * rColumns.size() ) + nColumn ) | LinePositionTop );
+ if ( nFlags & LinePositionBottom )
+ rPositions.push_back( ( ( ( nRow - 1 ) * rColumns.size() ) + nColumn ) | LinePositionBottom );
+
+ nColumn++;
+ aColumn++;
+ }
+ }
+}
+
+void GetLinePositions( const SdrObject* pObj, const std::set< sal_Int32 >& rRows, const std::set< sal_Int32 >& rColumns,
+ std::vector< sal_Int32 >& rPositions, const Rectangle& rGroupSnap )
+{
+ Rectangle aSnapRect( pObj->GetSnapRect() );
+ if ( aSnapRect.Left() == aSnapRect.Right() )
+ {
+ std::set< sal_Int32 >::const_iterator aColumn( rColumns.find( aSnapRect.Left() ) );
+ if ( ( aColumn != rColumns.end() ) || ( aSnapRect.Left() == rGroupSnap.Right() ) )
+ {
+ sal_Int32 nColumn, nFlags;
+ if ( aColumn != rColumns.end() )
+ {
+ nColumn = std::distance( rColumns.begin(), aColumn );
+ nFlags = LinePositionLeft;
+ if ( aColumn != rColumns.begin() )
+ nFlags |= LinePositionRight;
+ }
+ else
+ {
+ nColumn = rColumns.size();
+ nFlags = LinePositionRight;
+ }
+ GetRowPositions( aSnapRect, rRows, rColumns, rPositions, nColumn, nFlags );
+ }
+ }
+ else if ( aSnapRect.Top() == aSnapRect.Bottom() )
+ {
+ std::set< sal_Int32 >::const_iterator aRow( rRows.find( aSnapRect.Top() ) );
+ if ( ( aRow != rRows.end() ) || ( aSnapRect.Top() == rGroupSnap.Bottom() ) )
+ {
+ sal_Int32 nRow, nFlags;
+ if ( aRow != rRows.end() )
+ {
+ nRow = std::distance( rRows.begin(), aRow );
+ nFlags = LinePositionTop;
+ if ( aRow != rRows.begin() )
+ nFlags |= LinePositionBottom;
+ }
+ else
+ {
+ nRow = rRows.size();
+ nFlags = LinePositionBottom;
+ }
+ GetColumnPositions( aSnapRect, rRows, rColumns, rPositions, nRow, nFlags );
+ }
+ }
+ else
+ {
+ sal_uInt32 nPosition = 0;
+ Point aPt1( ((SdrPathObj*)pObj)->GetPoint( 0 ) );
+ Point aPt2( ((SdrPathObj*)pObj)->GetPoint( 1 ) );
+ if ( aPt1.X() < aPt2.X() )
+ nPosition |= aPt1.Y() < aPt2.Y() ? LinePositionTLBR : LinePositionBLTR;
+ else
+ nPosition |= aPt1.Y() < aPt2.Y() ? LinePositionBLTR : LinePositionTLBR;
+
+ std::set< sal_Int32 >::const_iterator aRow( rRows.find( aPt1.Y() < aPt2.Y() ? aPt1.Y() : aPt2.Y() ) );
+ std::set< sal_Int32 >::const_iterator aColumn( rColumns.find( aPt1.X() < aPt2.X() ? aPt1.X() : aPt2.X() ) );
+ if ( ( aRow != rRows.end() ) && ( aColumn != rColumns.end() ) )
+ {
+ nPosition |= ( std::distance( rRows.begin(), aRow ) * rColumns.size() ) + std::distance( rColumns.begin(), aColumn );
+ rPositions.push_back( nPosition );
+ }
+ }
+}
+
+void CreateTableRows( Reference< XTableRows > xTableRows, const std::set< sal_Int32 >& rRows, sal_Int32 nTableBottom )
+{
+ if ( rRows.size() > 1 )
+ xTableRows->insertByIndex( 0, rRows.size() - 1 );
+
+ std::set< sal_Int32 >::const_iterator aIter( rRows.begin() );
+ sal_Int32 nLastPosition( *aIter );
+ Reference< XIndexAccess > xIndexAccess( xTableRows, UNO_QUERY_THROW );
+ for ( sal_Int32 n = 0; n < xIndexAccess->getCount(); n++ )
+ {
+ sal_Int32 nHeight;
+ if ( ++aIter != rRows.end() )
+ {
+ nHeight = *aIter - nLastPosition;
+ nLastPosition = *aIter;
+ }
+ else
+ nHeight = nTableBottom - nLastPosition;
+
+ static const rtl::OUString sWidth( RTL_CONSTASCII_USTRINGPARAM ( "Height" ) );
+ Reference< XPropertySet > xPropSet( xIndexAccess->getByIndex( n ), UNO_QUERY_THROW );
+ xPropSet->setPropertyValue( sWidth, Any( nHeight ) );
+ }
+}
+
+void CreateTableColumns( Reference< XTableColumns > xTableColumns, const std::set< sal_Int32 >& rColumns, sal_Int32 nTableRight )
+{
+ if ( rColumns.size() > 1 )
+ xTableColumns->insertByIndex( 0, rColumns.size() - 1 );
+
+ std::set< sal_Int32 >::const_iterator aIter( rColumns.begin() );
+ sal_Int32 nLastPosition( *aIter );
+ Reference< XIndexAccess > xIndexAccess( xTableColumns, UNO_QUERY_THROW );
+ for ( sal_Int32 n = 0; n < xIndexAccess->getCount(); n++ )
+ {
+ sal_Int32 nWidth;
+ if ( ++aIter != rColumns.end() )
+ {
+ nWidth = *aIter - nLastPosition;
+ nLastPosition = *aIter;
+ }
+ else
+ nWidth = nTableRight - nLastPosition;
+
+ static const rtl::OUString sWidth( RTL_CONSTASCII_USTRINGPARAM ( "Width" ) );
+ Reference< XPropertySet > xPropSet( xIndexAccess->getByIndex( n ), UNO_QUERY_THROW );
+ xPropSet->setPropertyValue( sWidth, Any( nWidth ) );
+ }
+}
+
+void MergeCells( const Reference< XTable >& xTable, sal_Int32 nCol, sal_Int32 nRow, sal_Int32 nColSpan, sal_Int32 nRowSpan )
+{
+ DBG_ASSERT( (nColSpan > 1) || (nRowSpan > 1), "nonsense parameter!!" );
+ DBG_ASSERT( (nCol >= 0) && (nCol < xTable->getColumnCount()) && (nRow >= 0) && (nRow < xTable->getRowCount()), "die celle gibts nicht!!" );
+ DBG_ASSERT( (nColSpan >= 1) && ((nCol + nColSpan - 1) < xTable->getColumnCount()), "nColSpan murks!" );
+ DBG_ASSERT( (nRowSpan >= 1) && ((nRow + nRowSpan - 1) < xTable->getRowCount()), "nRowSpan murks!" );
+
+ if( xTable.is() ) try
+ {
+ Reference< XMergeableCellRange > xRange( xTable->createCursorByRange( xTable->getCellRangeByPosition( nCol, nRow,nCol + nColSpan - 1, nRow + nRowSpan - 1 ) ), UNO_QUERY_THROW );
+ if( xRange->isMergeable() )
+ xRange->merge();
+ }
+ catch( Exception& )
+ {
+ DBG_ASSERT( false, "exception caught!" );
+ }
+}
+
+void ApplyCellAttributes( const SdrObject* pObj, Reference< XCell >& xCell )
+{
+ try
+ {
+ Reference< XPropertySet > xPropSet( xCell, UNO_QUERY_THROW );
+
+ const sal_Int32 nLeftDist(((const SdrTextLeftDistItem&)pObj->GetMergedItem(SDRATTR_TEXT_LEFTDIST)).GetValue());
+ const sal_Int32 nRightDist(((const SdrTextRightDistItem&)pObj->GetMergedItem(SDRATTR_TEXT_RIGHTDIST)).GetValue());
+ const sal_Int32 nUpperDist(((const SdrTextUpperDistItem&)pObj->GetMergedItem(SDRATTR_TEXT_UPPERDIST)).GetValue());
+ const sal_Int32 nLowerDist(((const SdrTextLowerDistItem&)pObj->GetMergedItem(SDRATTR_TEXT_LOWERDIST)).GetValue());
+ static const rtl::OUString sTopBorder( RTL_CONSTASCII_USTRINGPARAM( "TextUpperDistance" ) );
+ static const rtl::OUString sBottomBorder( RTL_CONSTASCII_USTRINGPARAM( "TextLowerDistance" ) );
+ static const rtl::OUString sLeftBorder( RTL_CONSTASCII_USTRINGPARAM( "TextLeftDistance" ) );
+ static const rtl::OUString sRightBorder( RTL_CONSTASCII_USTRINGPARAM( "TextRightDistance" ) );
+ xPropSet->setPropertyValue( sTopBorder, Any( nUpperDist ) );
+ xPropSet->setPropertyValue( sRightBorder, Any( nRightDist ) );
+ xPropSet->setPropertyValue( sLeftBorder, Any( nLeftDist ) );
+ xPropSet->setPropertyValue( sBottomBorder, Any( nLowerDist ) );
+
+ static const rtl::OUString sTextVerticalAdjust( RTL_CONSTASCII_USTRINGPARAM( "TextVerticalAdjust" ) );
+ const SdrTextVertAdjust eTextVertAdjust(((const SdrTextVertAdjustItem&)pObj->GetMergedItem(SDRATTR_TEXT_VERTADJUST)).GetValue());
+ drawing::TextVerticalAdjust eVA( drawing::TextVerticalAdjust_TOP );
+ if ( eTextVertAdjust == SDRTEXTVERTADJUST_CENTER )
+ eVA = drawing::TextVerticalAdjust_CENTER;
+ else if ( eTextVertAdjust == SDRTEXTVERTADJUST_BOTTOM )
+ eVA = drawing::TextVerticalAdjust_BOTTOM;
+ xPropSet->setPropertyValue( sTextVerticalAdjust, Any( eVA ) );
+
+ SfxItemSet aSet( pObj->GetMergedItemSet() );
+ XFillStyle eFillStyle(((XFillStyleItem&)pObj->GetMergedItem( XATTR_FILLSTYLE )).GetValue());
+ ::com::sun::star::drawing::FillStyle eFS( com::sun::star::drawing::FillStyle_NONE );
+ switch( eFillStyle )
+ {
+ case XFILL_SOLID :
+ {
+ static const rtl::OUString sFillColor( String( RTL_CONSTASCII_USTRINGPARAM( "FillColor" ) ) );
+ eFS = com::sun::star::drawing::FillStyle_SOLID;
+ Color aFillColor( ((XFillColorItem&)pObj->GetMergedItem( XATTR_FILLCOLOR )).GetColorValue() );
+ sal_Int32 nFillColor( aFillColor.GetColor() );
+ xPropSet->setPropertyValue( sFillColor, Any( nFillColor ) );
+ }
+ break;
+ case XFILL_GRADIENT :
+ {
+ eFS = com::sun::star::drawing::FillStyle_GRADIENT;
+ XGradient aXGradient(((const XFillGradientItem&)pObj->GetMergedItem(XATTR_FILLGRADIENT)).GetGradientValue());
+
+ com::sun::star::awt::Gradient aGradient;
+ aGradient.Style = (awt::GradientStyle) aXGradient.GetGradientStyle();
+ aGradient.StartColor = (INT32)aXGradient.GetStartColor().GetColor();
+ aGradient.EndColor = (INT32)aXGradient.GetEndColor().GetColor();
+ aGradient.Angle = (short)aXGradient.GetAngle();
+ aGradient.Border = aXGradient.GetBorder();
+ aGradient.XOffset = aXGradient.GetXOffset();
+ aGradient.YOffset = aXGradient.GetYOffset();
+ aGradient.StartIntensity = aXGradient.GetStartIntens();
+ aGradient.EndIntensity = aXGradient.GetEndIntens();
+ aGradient.StepCount = aXGradient.GetSteps();
+
+ static const rtl::OUString sFillGradient( String( RTL_CONSTASCII_USTRINGPARAM( "FillGradient" ) ) );
+ xPropSet->setPropertyValue( sFillGradient, Any( aGradient ) );
+ }
+ break;
+ case XFILL_HATCH :
+ eFS = com::sun::star::drawing::FillStyle_HATCH;
+ break;
+ case XFILL_BITMAP :
+ {
+ eFS = com::sun::star::drawing::FillStyle_BITMAP;
+
+ XFillBitmapItem aXFillBitmapItem((const XFillBitmapItem&)pObj->GetMergedItem( XATTR_FILLBITMAP ));
+ XOBitmap aLocalXOBitmap( aXFillBitmapItem.GetBitmapValue() );
+ rtl::OUString aURL( RTL_CONSTASCII_USTRINGPARAM(UNO_NAME_GRAPHOBJ_URLPREFIX));
+ aURL += rtl::OUString::createFromAscii( aLocalXOBitmap.GetGraphicObject().GetUniqueID().GetBuffer() );
+
+ static const rtl::OUString sFillBitmapURL( String( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapURL" ) ) );
+ xPropSet->setPropertyValue( sFillBitmapURL, Any( aURL ) );
+ }
+ break;
+ case XFILL_NONE :
+ eFS = com::sun::star::drawing::FillStyle_NONE;
+ break;
+
+ }
+ static const rtl::OUString sFillStyle( String( RTL_CONSTASCII_USTRINGPARAM( "FillStyle" ) ) );
+ xPropSet->setPropertyValue( sFillStyle, Any( eFS ) );
+ if ( eFillStyle != XFILL_NONE )
+ {
+ sal_Int16 nFillTransparence( ( (const XFillTransparenceItem&)pObj->GetMergedItem( XATTR_FILLTRANSPARENCE ) ).GetValue() );
+ if ( nFillTransparence != 100 )
+ {
+ nFillTransparence *= 100;
+ static const rtl::OUString sFillTransparence( String( RTL_CONSTASCII_USTRINGPARAM( "FillTransparence" ) ) );
+ xPropSet->setPropertyValue( sFillTransparence, Any( nFillTransparence ) );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ApplyCellLineAttributes( const SdrObject* pLine, Reference< XTable >& xTable, const std::vector< sal_Int32 > vPositions, sal_Int32 nColumns )
+{
+ try
+ {
+ SfxItemSet aSet( pLine->GetMergedItemSet() );
+ XLineStyle eLineStyle(((XLineStyleItem&)pLine->GetMergedItem( XATTR_LINESTYLE )).GetValue());
+ com::sun::star::table::BorderLine aBorderLine;
+ switch( eLineStyle )
+ {
+ case XLINE_DASH :
+ case XLINE_SOLID :
+ {
+ Color aLineColor( ((XLineColorItem&)pLine->GetMergedItem( XATTR_LINECOLOR )).GetColorValue() );
+ aBorderLine.Color = aLineColor.GetColor();
+ aBorderLine.OuterLineWidth = static_cast< sal_Int16 >( ((const XLineWidthItem&)(pLine->GetMergedItem(XATTR_LINEWIDTH))).GetValue() / 4 );
+ aBorderLine.InnerLineWidth = static_cast< sal_Int16 >( ((const XLineWidthItem&)(pLine->GetMergedItem(XATTR_LINEWIDTH))).GetValue() / 4 );
+ aBorderLine.LineDistance = 0;
+ }
+ break;
+ case XLINE_NONE :
+ {
+ aBorderLine.OuterLineWidth = 0;
+ aBorderLine.InnerLineWidth = 0;
+ aBorderLine.LineDistance = 0;
+ }
+ break;
+ }
+ Reference< XCellRange > xCellRange( xTable, UNO_QUERY_THROW );
+ std::vector< sal_Int32 >::const_iterator aIter( vPositions.begin() );
+ while( aIter != vPositions.end() )
+ {
+ static const rtl::OUString sTopBorder( String( RTL_CONSTASCII_USTRINGPARAM( "TopBorder" ) ) );
+ static const rtl::OUString sBottomBorder( String( RTL_CONSTASCII_USTRINGPARAM( "BottomBorder" ) ) );
+ static const rtl::OUString sLeftBorder( String( RTL_CONSTASCII_USTRINGPARAM( "LeftBorder" ) ) );
+ static const rtl::OUString sRightBorder( String( RTL_CONSTASCII_USTRINGPARAM( "RightBorder" ) ) );
+ static const rtl::OUString sDiagonalTLBR( RTL_CONSTASCII_USTRINGPARAM ( "DiagonalTLBR" ) );
+ static const rtl::OUString sDiagonalBLTR( RTL_CONSTASCII_USTRINGPARAM ( "DiagonalBLTR" ) );
+
+ sal_Int32 nPosition = *aIter & 0xffffff;
+ sal_Int32 nFlags = *aIter &~0xffffff;
+ sal_Int32 nRow = nPosition / nColumns;
+ sal_Int32 nColumn = nPosition - ( nRow * nColumns );
+ Reference< XCell > xCell( xCellRange->getCellByPosition( nColumn, nRow ) );
+ Reference< XPropertySet > xPropSet( xCell, UNO_QUERY_THROW );
+
+ if ( nFlags & LinePositionLeft )
+ xPropSet->setPropertyValue( sLeftBorder, Any( aBorderLine ) );
+ if ( nFlags & LinePositionTop )
+ xPropSet->setPropertyValue( sTopBorder, Any( aBorderLine ) );
+ if ( nFlags & LinePositionRight )
+ xPropSet->setPropertyValue( sRightBorder, Any( aBorderLine ) );
+ if ( nFlags & LinePositionBottom )
+ xPropSet->setPropertyValue( sBottomBorder, Any( aBorderLine ) );
+ if ( nFlags & LinePositionTLBR )
+ xPropSet->setPropertyValue( sDiagonalTLBR, Any( sal_True ) );
+ if ( nFlags & LinePositionBLTR )
+ xPropSet->setPropertyValue( sDiagonalBLTR, Any( sal_True ) );
+ aIter++;
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+SdrObject* SdrPowerPointImport::CreateTable( SdrObject* pGroup, sal_uInt32* pTableArry, SvxMSDffSolverContainer* pSolverContainer )
+{
+ SdrObject* pRet = pGroup;
+ sal_uInt32 nRows = pTableArry[ 1 ];
+ if ( nRows && pGroup->ISA( SdrObjGroup ) )
+ {
+ SdrObjList* pSubList(((SdrObjGroup*)pGroup)->GetSubList());
+ if ( pSubList )
+ {
+ std::set< sal_Int32 > aRows;
+ std::set< sal_Int32 > aColumns;
+
+ SdrObjListIter aGroupIter( *pSubList, IM_DEEPNOGROUPS, FALSE );
+ while( aGroupIter.IsMore() )
+ {
+ const SdrObject* pObj( aGroupIter.Next() );
+ if ( !IsLine( pObj ) )
+ {
+ Rectangle aSnapRect( pObj->GetSnapRect() );
+ aRows.insert( aSnapRect.Top() );
+ aColumns.insert( aSnapRect.Left() );
+ }
+ }
+ ::sdr::table::SdrTableObj* pTable = new ::sdr::table::SdrTableObj( pSdrModel );
+ pTable->uno_lock();
+ Reference< XTable > xTable( pTable->getTable() );
+ try
+ {
+ Reference< XColumnRowRange > xColumnRowRange( xTable, UNO_QUERY_THROW );
+
+ CreateTableRows( xColumnRowRange->getRows(), aRows, pGroup->GetSnapRect().Bottom() );
+ CreateTableColumns( xColumnRowRange->getColumns(), aColumns, pGroup->GetSnapRect().Right() );
+
+ sal_Int32 nCellCount = aRows.size() * aColumns.size();
+ sal_Int32 *pMergedCellIndexTable = new sal_Int32[ nCellCount ];
+ for ( sal_Int32 i = 0; i < nCellCount; i++ )
+ pMergedCellIndexTable[ i ] = i;
+
+ aGroupIter.Reset();
+ while( aGroupIter.IsMore() )
+ {
+ SdrObject* pObj( aGroupIter.Next() );
+ if ( !IsLine( pObj ) )
+ {
+ Rectangle aSnapRect( pObj->GetSnapRect() );
+ sal_Int32 nTableIndex = 0;
+ sal_Int32 nRow = 0;
+ sal_Int32 nRowCount = 0;
+ sal_Int32 nColumn = 0;
+ sal_Int32 nColumnCount = 0;
+ if ( GetCellPosition( pObj, aRows, aColumns, nTableIndex, nRow, nRowCount, nColumn, nColumnCount ) )
+ {
+ Reference< XCellRange > xCellRange( xTable, UNO_QUERY_THROW );
+ Reference< XCell > xCell( xCellRange->getCellByPosition( nColumn, nRow ) );
+
+ ApplyCellAttributes( pObj, xCell );
+
+ if ( ( nRowCount > 1 ) || ( nColumnCount > 1 ) ) // cell merging
+ {
+ MergeCells( xTable, nColumn, nRow, nColumnCount, nRowCount );
+ for ( sal_Int32 nRowIter = 0; nRowIter < nRowCount; nRowIter++ )
+ {
+ for ( sal_Int32 nColumnIter = 0; nColumnIter < nColumnCount; nColumnIter++ )
+ { // now set the correct index for the merged cell
+ pMergedCellIndexTable[ ( ( nRow + nRowIter ) * aColumns.size() ) + nColumn + nColumnIter ] = nTableIndex;
+ }
+ }
+ }
+
+ // applying text
+ OutlinerParaObject* pParaObject = pObj->GetOutlinerParaObject();
+ if ( pParaObject )
+ {
+ SdrText* pSdrText = pTable->getText( nTableIndex );
+ if ( pSdrText )
+ pSdrText->SetOutlinerParaObject(new OutlinerParaObject(*pParaObject) );
+ }
+ }
+ }
+ }
+ aGroupIter.Reset();
+ while( aGroupIter.IsMore() )
+ {
+ SdrObject* pObj( aGroupIter.Next() );
+ if ( IsLine( pObj ) )
+ {
+ std::vector< sal_Int32 > vPositions; // containing cell indexes + cell position
+ GetLinePositions( pObj, aRows, aColumns, vPositions, pGroup->GetSnapRect() );
+
+ // correcting merged cell position
+ std::vector< sal_Int32 >::iterator aIter( vPositions.begin() );
+ while( aIter != vPositions.end() )
+ {
+ sal_Int32 nOldPosition = *aIter & 0xffff;
+ sal_Int32 nOldFlags = *aIter & 0xffff0000;
+ sal_Int32 nNewPosition = pMergedCellIndexTable[ nOldPosition ] | nOldFlags;
+ *aIter++ = nNewPosition;
+ }
+ ApplyCellLineAttributes( pObj, xTable, vPositions, aColumns.size() );
+ }
+ }
+ delete[] pMergedCellIndexTable;
+
+ // we are replacing the whole group object by a single table object, so
+ // possibly connections to the group object have to be removed.
+ if ( pSolverContainer )
+ {
+ for ( SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)pSolverContainer->aCList.First();
+ pPtr; pPtr = (SvxMSDffConnectorRule*)pSolverContainer->aCList.Next() )
+ {
+ SdrObjListIter aIter( *pGroup, IM_DEEPWITHGROUPS );
+ while( aIter.IsMore() )
+ {
+ SdrObject* pPartObj = aIter.Next();
+ if ( pPtr->pAObj == pPartObj )
+ pPtr->pAObj = NULL;
+ if ( pPtr->pBObj == pPartObj )
+ pPtr->pBObj = NULL;
+ }
+ }
+ }
+ pTable->uno_unlock();
+ pTable->SetSnapRect( pGroup->GetSnapRect() );
+ pRet = pTable;
+
+ //Remove Objects from shape map
+ SdrObjListIter aIter( *pGroup, IM_DEEPWITHGROUPS );
+ while( aIter.IsMore() )
+ {
+ SdrObject* pPartObj = aIter.Next();
+ removeShapeId( pPartObj );
+ }
+
+ SdrObject::Free( pGroup );
+ }
+ catch( Exception& )
+ {
+ pTable->uno_unlock();
+ SdrObject* pObj = pTable;
+ SdrObject::Free( pObj );
+ }
+ }
+ }
+ return pRet;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
diff --git a/filter/source/msfilter/svxmsbas.cxx b/filter/source/msfilter/svxmsbas.cxx
new file mode 100644
index 000000000000..e4305c2e4e65
--- /dev/null
+++ b/filter/source/msfilter/svxmsbas.cxx
@@ -0,0 +1,403 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+#include <tools/debug.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/app.hxx>
+#include <basic/basmgr.hxx>
+#include <basic/sbmod.hxx>
+#include <svx/svxerr.hxx>
+#include <filter/msfilter/svxmsbas.hxx>
+#include <msvbasic.hxx>
+#include <filter/msfilter/msocximex.hxx>
+#include <sot/storinfo.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+using namespace com::sun::star::beans;
+using namespace com::sun::star::io;
+using namespace com::sun::star::awt;
+#include <comphelper/storagehelper.hxx>
+
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/script/XLibraryContainer.hpp>
+using namespace com::sun::star::container;
+using namespace com::sun::star::script;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star;
+
+using rtl::OUString;
+
+int SvxImportMSVBasic::Import( const String& rStorageName,
+ const String &rSubStorageName,
+ BOOL bAsComment, BOOL bStripped )
+{
+ int nRet = 0;
+ if( bImport && ImportCode_Impl( rStorageName, rSubStorageName,
+ bAsComment, bStripped ))
+ nRet |= 1;
+
+ if (bImport)
+ ImportForms_Impl(rStorageName, rSubStorageName);
+
+ if( bCopy && CopyStorage_Impl( rStorageName, rSubStorageName ))
+ nRet |= 2;
+
+ return nRet;
+}
+
+bool SvxImportMSVBasic::ImportForms_Impl(const String& rStorageName,
+ const String& rSubStorageName)
+{
+ SvStorageRef xVBAStg(xRoot->OpenSotStorage(rStorageName,
+ STREAM_READWRITE | STREAM_NOCREATE | STREAM_SHARE_DENYALL));
+ if (!xVBAStg.Is() || xVBAStg->GetError())
+ return false;
+
+ std::vector<String> aUserForms;
+ SvStorageInfoList aContents;
+ xVBAStg->FillInfoList(&aContents);
+ for (USHORT nI = 0; nI < aContents.Count(); ++nI)
+ {
+ SvStorageInfo& rInfo = aContents.GetObject(nI);
+ if (!rInfo.IsStream() && rInfo.GetName() != rSubStorageName)
+ aUserForms.push_back(rInfo.GetName());
+ }
+
+ if (aUserForms.empty())
+ return false;
+
+ bool bRet = true;
+ SFX_APP()->EnterBasicCall();
+ try
+ {
+ Reference<XMultiServiceFactory> xSF(comphelper::getProcessServiceFactory());
+
+ Reference<XComponentContext> xContext;
+ Reference<XPropertySet> xProps(xSF, UNO_QUERY);
+ xProps->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext;
+
+
+ Reference<XLibraryContainer> xLibContainer = rDocSh.GetDialogContainer();
+ DBG_ASSERT( xLibContainer.is(), "No BasicContainer!" );
+
+ String aLibName( RTL_CONSTASCII_USTRINGPARAM( "Standard" ) );
+ Reference<XNameContainer> xLib;
+ if (xLibContainer.is())
+ {
+ if( !xLibContainer->hasByName(aLibName))
+ xLibContainer->createLibrary(aLibName);
+
+ Any aLibAny = xLibContainer->getByName( aLibName );
+ aLibAny >>= xLib;
+ }
+
+ if(xLib.is())
+ {
+ typedef std::vector<String>::iterator myIter;
+ myIter aEnd = aUserForms.end();
+ for (myIter aIter = aUserForms.begin(); aIter != aEnd; ++aIter)
+ {
+ SvStorageRef xForm (xVBAStg->OpenSotStorage(*aIter,
+ STREAM_READWRITE | STREAM_NOCREATE | STREAM_SHARE_DENYALL));
+
+ if (!xForm.Is() || xForm->GetError())
+ continue;
+
+ SvStorageStreamRef xFrame = xForm->OpenSotStream(
+ String( RTL_CONSTASCII_USTRINGPARAM( "\3VBFrame" ) ),
+ STREAM_STD_READ | STREAM_NOCREATE);
+
+ if (!xFrame.Is() || xFrame->GetError())
+ continue;
+
+ SvStorageStreamRef xTypes = xForm->OpenSotStream(
+ String( 'f' ), STREAM_STD_READ | STREAM_NOCREATE);
+
+ if (!xTypes.Is() || xTypes->GetError())
+ continue;
+
+ //<UserForm Name=""><VBFrame></VBFrame>"
+ String sData;
+ String sLine;
+ while(xFrame->ReadByteStringLine(sLine, RTL_TEXTENCODING_MS_1252))
+ {
+ sData += sLine;
+ sData += '\n';
+ }
+ sData.ConvertLineEnd();
+
+ Reference<container::XNameContainer> xDialog(
+ xSF->createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.awt.UnoControlDialogModel"))), uno::UNO_QUERY);
+
+ OCX_UserForm aForm(xVBAStg, *aIter, *aIter, xDialog, xSF );
+ aForm.pDocSh = &rDocSh;
+ sal_Bool bOk = aForm.Read(xTypes);
+ DBG_ASSERT(bOk, "Had unexpected content, not risking this module");
+ if (bOk)
+ aForm.Import(xLib);
+ }
+ }
+ }
+ catch(...)
+ {
+ DBG_ERRORFILE( "SvxImportMSVBasic::ImportForms_Impl - any exception caught" );
+ //bRet = false;
+ }
+ SFX_APP()->LeaveBasicCall();
+ return bRet;
+}
+
+
+BOOL SvxImportMSVBasic::CopyStorage_Impl( const String& rStorageName,
+ const String& rSubStorageName)
+{
+ BOOL bValidStg = FALSE;
+ {
+ SvStorageRef xVBAStg( xRoot->OpenSotStorage( rStorageName,
+ STREAM_READWRITE | STREAM_NOCREATE |
+ STREAM_SHARE_DENYALL ));
+ if( xVBAStg.Is() && !xVBAStg->GetError() )
+ {
+ SvStorageRef xVBASubStg( xVBAStg->OpenSotStorage( rSubStorageName,
+ STREAM_READWRITE | STREAM_NOCREATE |
+ STREAM_SHARE_DENYALL ));
+ if( xVBASubStg.Is() && !xVBASubStg->GetError() )
+ {
+ // then we will copy these storages into the (temporary) storage of the document
+ bValidStg = TRUE;
+ }
+ }
+ }
+
+ if( bValidStg )
+ {
+ String aDstStgName( GetMSBasicStorageName() );
+ SotStorageRef xDst = SotStorage::OpenOLEStorage( rDocSh.GetStorage(), aDstStgName, STREAM_READWRITE | STREAM_TRUNC );
+ SotStorageRef xSrc = xRoot->OpenSotStorage( rStorageName, STREAM_STD_READ );
+
+ // TODO/LATER: should we commit the storage?
+ xSrc->CopyTo( xDst );
+ xDst->Commit();
+ ErrCode nError = xDst->GetError();
+ if ( nError == ERRCODE_NONE )
+ nError = xSrc->GetError();
+ if ( nError != ERRCODE_NONE )
+ xRoot->SetError( nError );
+ else
+ bValidStg = TRUE;
+ }
+
+ return bValidStg;
+}
+
+BOOL SvxImportMSVBasic::ImportCode_Impl( const String& rStorageName,
+ const String &rSubStorageName,
+ BOOL bAsComment, BOOL bStripped )
+{
+ BOOL bRet = FALSE;
+ VBA_Impl aVBA( *xRoot, bAsComment );
+ if( aVBA.Open(rStorageName,rSubStorageName) )
+ {
+ SFX_APP()->EnterBasicCall();
+ Reference<XLibraryContainer> xLibContainer = rDocSh.GetBasicContainer();
+ DBG_ASSERT( xLibContainer.is(), "No BasicContainer!" );
+
+ UINT16 nStreamCount = aVBA.GetNoStreams();
+ Reference<XNameContainer> xLib;
+ if( xLibContainer.is() && nStreamCount )
+ {
+ String aLibName( RTL_CONSTASCII_USTRINGPARAM( "Standard" ) );
+ if( !xLibContainer->hasByName( aLibName ) )
+ xLibContainer->createLibrary( aLibName );
+
+ Any aLibAny = xLibContainer->getByName( aLibName );
+ aLibAny >>= xLib;
+ }
+ if( xLib.is() )
+ {
+ for( UINT16 i=0; i<nStreamCount;i++)
+ {
+ StringArray aDecompressed = aVBA.Decompress(i);
+#if 0
+/* DR 2005-08-11 #124850# Do not filter special characters from module name.
+ Just put the original module name and let the Basic interpreter deal with
+ it. Needed for roundtrip...
+ */
+ ByteString sByteBasic(aVBA.GetStreamName(i),
+ RTL_TEXTENCODING_ASCII_US,
+ (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_UNDERLINE|
+ RTL_UNICODETOTEXT_FLAGS_INVALID_UNDERLINE |
+ RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0 |
+ RTL_UNICODETOTEXT_FLAGS_NOCOMPOSITE)
+ );
+
+ const String sBasicModule(sByteBasic,
+ RTL_TEXTENCODING_ASCII_US);
+#else
+ const String &sBasicModule = aVBA.GetStreamName( i);
+#endif
+ /* #117718# expose information regarding type of Module
+ * Class, Form or plain 'ould VBA module with a REM statment
+ * at the top of the module. Mapping of Module Name
+ * to type is performed in VBA_Impl::Open() method,
+ * ( msvbasic.cxx ) by examining the PROJECT stream.
+ */
+
+ // using name from aVBA.GetStreamName
+ // because the encoding of the same returned
+ // is the same as the encoding for the names
+ // that are keys in the map used by GetModuleType method
+ const String &sOrigVBAModName = aVBA.GetStreamName( i );
+ ModuleType mType = aVBA.GetModuleType( sOrigVBAModName );
+
+ rtl::OUString sClassRem( RTL_CONSTASCII_USTRINGPARAM( "Rem Attribute VBA_ModuleType=" ) );
+
+ rtl::OUString modeTypeComment;
+
+ switch( mType )
+ {
+ case Class:
+ modeTypeComment = sClassRem +
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "VBAClassModule\n" ) );
+ break;
+ case Form:
+ modeTypeComment = sClassRem +
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "VBAFormModule\n" ) );
+ break;
+ case Document:
+ modeTypeComment = sClassRem +
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "VBADocumentModule\n" ) );
+ break;
+ case Normal:
+ modeTypeComment = sClassRem +
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "VBAModule\n" ) );
+ break;
+ case Unknown:
+ modeTypeComment = sClassRem +
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "VBAUnknown\n" ) );
+ break;
+ default:
+ DBG_ERRORFILE( "SvxImportMSVBasic::ImportCode_Impl - unknown module type" );
+ break;
+ }
+ static ::rtl::OUString sVBAOption( RTL_CONSTASCII_USTRINGPARAM( "Option VBASupport 1\n" ) );
+ static ::rtl::OUString sClassOption( RTL_CONSTASCII_USTRINGPARAM( "Option ClassModule\n" ) );
+ if ( !bAsComment )
+ {
+ modeTypeComment = modeTypeComment + sVBAOption;
+ if ( mType == Class )
+ modeTypeComment = modeTypeComment + sClassOption;
+
+ }
+
+ String sModule(sBasicModule); //#i52606# no need to split Macros in 64KB blocks any more!
+ String sTemp;
+ if (bAsComment)
+ {
+ sTemp+=String(RTL_CONSTASCII_USTRINGPARAM( "Sub " ));
+ String sMunge(sModule);
+ //Streams can have spaces in them, but modulenames
+ //cannot !
+ sMunge.SearchAndReplaceAll(' ','_');
+
+ sTemp += sMunge;
+ sTemp.AppendAscii("\n");
+ };
+ ::rtl::OUString aSource(sTemp);
+
+ for(ULONG j=0;j<aDecompressed.GetSize();j++)
+ {
+ if (bStripped)
+ {
+ String *pStr = aDecompressed.Get(j);
+ bool bMac = true;
+ xub_StrLen nBegin = pStr->Search('\x0D');
+ if ((STRING_NOTFOUND != nBegin) && (pStr->Len() > 1) && (pStr->GetChar(nBegin+1) == '\x0A'))
+ bMac = false;
+
+ const char cLineEnd = bMac ? '\x0D' : '\x0A';
+ const String sAttribute(String::CreateFromAscii(
+ bAsComment ? "Rem Attribute" : "Attribute"));
+ nBegin = 0;
+ while (STRING_NOTFOUND != (nBegin = pStr->Search(sAttribute, nBegin)))
+ {
+ if ((nBegin) && pStr->GetChar(nBegin-1) != cLineEnd)
+ {
+ // npower #i63766# Need to skip instances of Attribute
+ // that are NOT Attribute statements
+ nBegin = nBegin + sAttribute.Len();
+ continue;
+ }
+ xub_StrLen nEnd = pStr->Search(cLineEnd ,nBegin);
+ // DR #i26521# catch STRING_NOTFOUND, will loop endless otherwise
+ if( nEnd == STRING_NOTFOUND )
+ pStr->Erase();
+ else
+ pStr->Erase(nBegin, (nEnd-nBegin)+1);
+ }
+ }
+ if( aDecompressed.Get(j)->Len() )
+ {
+ aSource+=::rtl::OUString( *aDecompressed.Get(j) );
+ }
+
+ }
+ if (bAsComment)
+ {
+ aSource += rtl::OUString::createFromAscii("\nEnd Sub");
+ }
+ ::rtl::OUString aModName( sModule );
+ if ( aSource.getLength() )
+ {
+ aSource = modeTypeComment + aSource;
+
+ Any aSourceAny;
+ aSourceAny <<= aSource;
+ if( xLib->hasByName( aModName ) )
+ xLib->replaceByName( aModName, aSourceAny );
+ else
+ xLib->insertByName( aModName, aSourceAny );
+ }
+
+ bRet = true;
+ }
+ }
+ SFX_APP()->LeaveBasicCall();
+ }
+ return bRet;
+}
+
+/* vi:set tabstop=4 shiftwidth=4 expandtab: */
diff --git a/filter/source/msfilter/svxmsbas2.cxx b/filter/source/msfilter/svxmsbas2.cxx
new file mode 100644
index 000000000000..8da475ed78c8
--- /dev/null
+++ b/filter/source/msfilter/svxmsbas2.cxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * 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_filter.hxx"
+
+#include <basic/basmgr.hxx>
+#include <sfx2/objsh.hxx>
+#include <svx/svxerr.hxx>
+#include <filter/msfilter/svxmsbas.hxx>
+
+using namespace com::sun::star;
+
+ULONG SvxImportMSVBasic::SaveOrDelMSVBAStorage( BOOL bSaveInto,
+ const String& rStorageName )
+{
+ ULONG nRet = ERRCODE_NONE;
+ uno::Reference < embed::XStorage > xSrcRoot( rDocSh.GetStorage() );
+ String aDstStgName( GetMSBasicStorageName() );
+ SotStorageRef xVBAStg( SotStorage::OpenOLEStorage( xSrcRoot, aDstStgName,
+ STREAM_READWRITE | STREAM_NOCREATE | STREAM_SHARE_DENYALL ) );
+ if( xVBAStg.Is() && !xVBAStg->GetError() )
+ {
+ xVBAStg = 0;
+ if( bSaveInto )
+ {
+ BasicManager *pBasicMan = rDocSh.GetBasicManager();
+ if( pBasicMan && pBasicMan->IsBasicModified() )
+ nRet = ERRCODE_SVX_MODIFIED_VBASIC_STORAGE;
+
+ SotStorageRef xSrc = SotStorage::OpenOLEStorage( xSrcRoot, aDstStgName, STREAM_STD_READ );
+ SotStorageRef xDst = xRoot->OpenSotStorage( rStorageName, STREAM_READWRITE | STREAM_TRUNC );
+ xSrc->CopyTo( xDst );
+ xDst->Commit();
+ ErrCode nError = xDst->GetError();
+ if ( nError == ERRCODE_NONE )
+ nError = xSrc->GetError();
+ if ( nError != ERRCODE_NONE )
+ xRoot->SetError( nError );
+ }
+ }
+
+ return nRet;
+}
+
+// check if the MS-VBA-Storage exists in the RootStorage of the DocShell.
+// If it exists, then return the WarningId for losing the information.
+ULONG SvxImportMSVBasic::GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocSh)
+{
+ uno::Reference < embed::XStorage > xSrcRoot( rDocSh.GetStorage() );
+ SvStorageRef xVBAStg( SotStorage::OpenOLEStorage( xSrcRoot, GetMSBasicStorageName(),
+ STREAM_READ | STREAM_NOCREATE | STREAM_SHARE_DENYALL ));
+ return ( xVBAStg.Is() && !xVBAStg->GetError() )
+ ? ERRCODE_SVX_VBASIC_STORAGE_EXIST
+ : ERRCODE_NONE;
+}
+
+String SvxImportMSVBasic::GetMSBasicStorageName()
+{
+ return String( RTL_CONSTASCII_USTRINGPARAM( "_MS_VBA_Macros" ) );
+}
diff --git a/filter/source/msfilter/viscache.hxx b/filter/source/msfilter/viscache.hxx
new file mode 100644
index 000000000000..075c4c39cc38
--- /dev/null
+++ b/filter/source/msfilter/viscache.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <tools/stream.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/bitmap.hxx>
+
+/************************************************************************
+|* Impl_CacheElement
+|* Impl_Cache
+|*
+|* Beschreibung
+*************************************************************************/
+class Impl_OlePres
+{
+ ULONG nFormat;
+ USHORT nAspect;
+ Bitmap * pBmp;
+ GDIMetaFile * pMtf;
+
+ UINT32 nAdvFlags;
+ INT32 nJobLen;
+ BYTE* pJob;
+ Size aSize; // Groesse in 100TH_MM
+public:
+ Impl_OlePres( ULONG nF )
+ : nFormat( nF )
+ , pBmp( NULL )
+ , pMtf( NULL )
+ , nAdvFlags( 0x2 ) // in Dokument gefunden
+ , nJobLen( 0 )
+ , pJob( NULL )
+ {}
+ ~Impl_OlePres()
+ {
+ delete pJob;
+ delete pBmp;
+ delete pMtf;
+ }
+ void SetMtf( const GDIMetaFile & rMtf )
+ {
+ if( pMtf )
+ delete pMtf;
+ pMtf = new GDIMetaFile( rMtf );
+ }
+ Bitmap *GetBitmap() const { return pBmp; }
+ GDIMetaFile *GetMetaFile() const { return pMtf; }
+ ULONG GetFormat() const { return nFormat; }
+ void SetAspect( USHORT nAsp ) { nAspect = nAsp; }
+ ULONG GetAdviseFlags() const { return nAdvFlags; }
+ void SetAdviseFlags( ULONG nAdv ) { nAdvFlags = nAdv; }
+ void SetSize( const Size & rSize ) { aSize = rSize; }
+ /// return FALSE => unknown format
+ BOOL Read( SvStream & rStm );
+ void Write( SvStream & rStm );
+};
+
+
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx
index 4037ba0560a8..68c449dd7353 100644
--- a/filter/source/pdf/impdialog.cxx
+++ b/filter/source/pdf/impdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impdialog.cxx,v $
- * $Revision: 1.35.28.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,15 +30,27 @@
#include "impdialog.hxx"
#include "impdialog.hrc"
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <sfx2/passwd.hxx>
-#include <com/sun/star/uno/Sequence.h>
-#include <com/sun/star/text/XTextRange.hpp>
-#include <com/sun/star/drawing/XShapes.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/frame/XController.hpp>
-#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include "vcl/svapp.hxx"
+#include "vcl/msgbox.hxx"
+#include "sfx2/passwd.hxx"
+#include "com/sun/star/uno/Sequence.hxx"
+#include "com/sun/star/text/XTextRange.hpp"
+#include "com/sun/star/drawing/XShapes.hpp"
+#include "com/sun/star/container/XIndexAccess.hpp"
+#include "com/sun/star/frame/XController.hpp"
+#include "com/sun/star/view/XSelectionSupplier.hpp"
+
+#include <boost/shared_ptr.hpp>
+
+static ResMgr& getPDFFilterResMgr()
+{
+ static ResMgr *pRes = ResMgr::CreateResMgr( "pdffilter", Application::GetSettings().GetUILocale());
+ return *pRes;
+}
+
+PDFFilterResId::PDFFilterResId( sal_uInt32 nId ) : ResId( nId, getPDFFilterResMgr() )
+{
+}
// ----------------
// - ImpPDFDialog -
@@ -55,12 +64,11 @@ using namespace ::com::sun::star;
// they should be the same in PDFFilter::implExport and in PDFExport::PDFExport
// -----------------------------------------------------------------------------
ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
- ResMgr& rResMgr,
Sequence< PropertyValue >& rFilterData,
const Reference< XComponent >& rxDoc,
const Reference< lang::XMultiServiceFactory >& xFact
) :
- SfxTabDialog( pParent, ResId( RID_PDF_EXPORT_DLG, rResMgr ), 0, FALSE, 0 ),
+ SfxTabDialog( pParent, PDFFilterResId( RID_PDF_EXPORT_DLG ), 0, FALSE, 0 ),
mxMSF( xFact ),
maConfigItem( String( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/PDF/Export/" ) ), &rFilterData ),
maConfigI18N( String( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/I18N/CTL/" ) ) ),
@@ -74,7 +82,8 @@ ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
mbReduceImageResolution( sal_False ),
mnMaxImageResolution( 300 ),
mbUseTaggedPDF( sal_False ),
- mbExportNotesBoth( sal_True ),
+ mbExportNotes( sal_True ),
+ mbExportNotesPages( sal_False ),
mbUseTransitionEffects( sal_False ),
mbIsSkipEmptyPages( sal_True ),
mnFormsType( 0 ),
@@ -114,7 +123,6 @@ ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
mbExportBmkToPDFDestination( sal_False )
{
FreeResource();
- mprResMgr = &rResMgr;
// check for selection
try
{
@@ -179,9 +187,8 @@ ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
mbUseTaggedPDF = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "UseTaggedPDF" ) ), sal_False );
mnPDFTypeSelection = maConfigItem.ReadInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "SelectPdfVersion" ) ), 0 );
if ( mbIsPresentation )
- mbExportNotesBoth = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ), sal_False );
- else
- mbExportNotesBoth = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotes" ) ), sal_True );
+ mbExportNotesPages = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ), sal_False );
+ mbExportNotes = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotes" ) ), sal_False );
mbExportBookmarks = maConfigItem.ReadBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportBookmarks" ) ), sal_True );
mnOpenBookmarkLevels = maConfigItem.ReadInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenBookmarkLevels" ) ), -1 );
@@ -242,7 +249,7 @@ ImpPDFTabDialog::ImpPDFTabDialog( Window* pParent,
//change text on the Ok button: get the relevant string from resources, update it on the button
//according to the exported pdf file destination: send as e-mail or write to file?
GetOKButton().SetText( ( sOkButtonText.getLength() > 0 ) ?
- sOkButtonText : OUString( String( ResId( STR_PDF_EXPORT, rResMgr ) ) ));
+ sOkButtonText : OUString( String( PDFFilterResId( STR_PDF_EXPORT ) ) ));
//remove the reset button, not needed in this tabbed dialog
RemoveResetButton();
@@ -299,6 +306,14 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
// updating the FilterData sequence and storing FilterData to configuration
if( GetTabPage( RID_PDF_TAB_GENER ) )
( ( ImpPDFTabGeneralPage* )GetTabPage( RID_PDF_TAB_GENER ) )->GetFilterConfigItem( this );
+ if( GetTabPage( RID_PDF_TAB_VPREFER ) )
+ ( ( ImpPDFTabViewerPage* )GetTabPage( RID_PDF_TAB_VPREFER ) )->GetFilterConfigItem( this );
+ if( GetTabPage( RID_PDF_TAB_OPNFTR ) )
+ ( ( ImpPDFTabOpnFtrPage* )GetTabPage( RID_PDF_TAB_OPNFTR ) )->GetFilterConfigItem( this );
+ if( GetTabPage( RID_PDF_TAB_LINKS ) )
+ ( ( ImpPDFTabLinksPage* )GetTabPage( RID_PDF_TAB_LINKS ) )->GetFilterConfigItem( this );
+ if( GetTabPage( RID_PDF_TAB_SECURITY ) )
+ ( ( ImpPDFTabSecurityPage* )GetTabPage( RID_PDF_TAB_SECURITY ) )->GetFilterConfigItem( this );
//prepare the items to be returned
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "UseLosslessCompression" ) ), mbUseLosslessCompression );
@@ -310,9 +325,8 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
maConfigItem.WriteInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "SelectPdfVersion" ) ), mnPDFTypeSelection );
if ( mbIsPresentation )
- maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ), mbExportNotesBoth );
- else
- maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotes" ) ), mbExportNotesBoth );
+ maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ), mbExportNotesPages );
+ maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotes" ) ), mbExportNotes );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportBookmarks" ) ), mbExportBookmarks );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "UseTransitionEffects" ) ), mbUseTransitionEffects );
@@ -327,12 +341,6 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportFormFields" ) ), mbExportFormFields );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "AllowDuplicateFieldNames" ) ), mbAllowDuplicateFieldNames );
- if( GetTabPage( RID_PDF_TAB_VPREFER ) )
- ( ( ImpPDFTabViewerPage* )GetTabPage( RID_PDF_TAB_VPREFER ) )->GetFilterConfigItem( this );
-
- if( GetTabPage( RID_PDF_TAB_OPNFTR ) )
- ( ( ImpPDFTabOpnFtrPage* )GetTabPage( RID_PDF_TAB_OPNFTR ) )->GetFilterConfigItem( this );
-
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "HideViewerToolbar" ) ), mbHideViewerToolbar );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "HideViewerMenubar" ) ), mbHideViewerMenubar );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "HideViewerWindowControls" ) ), mbHideViewerWindowControls );
@@ -348,17 +356,11 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "FirstPageOnLeft" ) ), mbFirstPageLeft );
maConfigItem.WriteInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenBookmarkLevels" ) ), mnOpenBookmarkLevels );
- if( GetTabPage( RID_PDF_TAB_LINKS ) )
- ( ( ImpPDFTabLinksPage* )GetTabPage( RID_PDF_TAB_LINKS ) )->GetFilterConfigItem( this );
-
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportLinksRelativeFsys" ) ), mbExportRelativeFsysLinks );
maConfigItem.WriteInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "PDFViewSelection" ) ), mnViewPDFMode );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ConvertOOoTargetToPDFTarget" ) ), mbConvertOOoTargets );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportBookmarksToPDFDestination" ) ), mbExportBmkToPDFDestination );
- if( GetTabPage( RID_PDF_TAB_SECURITY ) )
- ( ( ImpPDFTabSecurityPage* )GetTabPage( RID_PDF_TAB_SECURITY ) )->GetFilterConfigItem( this );
-
maConfigItem.WriteInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "Printing" ) ), mnPrint );
maConfigItem.WriteInt32( OUString( RTL_CONSTASCII_USTRINGPARAM( "Changes" ) ), mnChangesAllowed );
maConfigItem.WriteBool( OUString( RTL_CONSTASCII_USTRINGPARAM( "EnableCopyingOfContent" ) ), mbCanCopyOrExtract );
@@ -407,45 +409,45 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
// -----------------------------------------------------------------------------
ImpPDFTabGeneralPage::ImpPDFTabGeneralPage( Window* pParent,
- const SfxItemSet& rCoreSet,
- ResMgr* paResMgr ) :
- SfxTabPage( pParent, ResId( RID_PDF_TAB_GENER, *paResMgr ), rCoreSet ),
-
- maFlPages( this, ResId( FL_PAGES, *paResMgr ) ),
- maRbAll( this, ResId( RB_ALL, *paResMgr) ),
- maRbRange( this, ResId( RB_RANGE, *paResMgr ) ),
- maRbSelection( this, ResId( RB_SELECTION, *paResMgr ) ),
- maEdPages( this, ResId( ED_PAGES, *paResMgr ) ),
-
- maFlCompression( this, ResId( FL_IMAGES, *paResMgr ) ),
- maRbLosslessCompression( this, ResId( RB_LOSSLESSCOMPRESSION, *paResMgr ) ),
- maRbJPEGCompression( this, ResId( RB_JPEGCOMPRESSION, *paResMgr ) ),
- maFtQuality( this, ResId( FT_QUALITY, *paResMgr ) ),
- maNfQuality( this, ResId( NF_QUALITY, *paResMgr ) ),
- maCbReduceImageResolution( this, ResId( CB_REDUCEIMAGERESOLUTION, *paResMgr ) ),
- maCoReduceImageResolution( this, ResId( CO_REDUCEIMAGERESOLUTION, *paResMgr ) ),
-
- maFlGeneral( this, ResId( FL_GENERAL, *paResMgr ) ),
- maCbPDFA1b( this, ResId( CB_PDFA_1B_SELECT, *paResMgr ) ),
-
- maCbTaggedPDF( this, ResId( CB_TAGGEDPDF, *paResMgr ) ),
+ const SfxItemSet& rCoreSet
+ ) :
+ SfxTabPage( pParent, PDFFilterResId( RID_PDF_TAB_GENER ), rCoreSet ),
+
+ maFlPages( this, PDFFilterResId( FL_PAGES ) ),
+ maRbAll( this, PDFFilterResId( RB_ALL ) ),
+ maRbRange( this, PDFFilterResId( RB_RANGE ) ),
+ maRbSelection( this, PDFFilterResId( RB_SELECTION ) ),
+ maEdPages( this, PDFFilterResId( ED_PAGES ) ),
+
+ maFlCompression( this, PDFFilterResId( FL_IMAGES ) ),
+ maRbLosslessCompression( this, PDFFilterResId( RB_LOSSLESSCOMPRESSION ) ),
+ maRbJPEGCompression( this, PDFFilterResId( RB_JPEGCOMPRESSION ) ),
+ maFtQuality( this, PDFFilterResId( FT_QUALITY ) ),
+ maNfQuality( this, PDFFilterResId( NF_QUALITY ) ),
+ maCbReduceImageResolution( this, PDFFilterResId( CB_REDUCEIMAGERESOLUTION ) ),
+ maCoReduceImageResolution( this, PDFFilterResId( CO_REDUCEIMAGERESOLUTION ) ),
+
+ maFlGeneral( this, PDFFilterResId( FL_GENERAL ) ),
+ maCbPDFA1b( this, PDFFilterResId( CB_PDFA_1B_SELECT ) ),
+
+ maCbTaggedPDF( this, PDFFilterResId( CB_TAGGEDPDF ) ),
mbTaggedPDFUserSelection( sal_False ),
- maCbExportFormFields( this, ResId( CB_EXPORTFORMFIELDS, *paResMgr ) ),
+ maCbExportFormFields( this, PDFFilterResId( CB_EXPORTFORMFIELDS ) ),
mbExportFormFieldsUserSelection( sal_False ),
- maFtFormsFormat( this, ResId( FT_FORMSFORMAT, *paResMgr ) ),
- maLbFormsFormat( this, ResId( LB_FORMSFORMAT, *paResMgr ) ),
- maCbAllowDuplicateFieldNames( this, ResId( CB_ALLOWDUPLICATEFIELDNAMES, *paResMgr ) ),
-
- maCbExportBookmarks( this, ResId( CB_EXPORTBOOKMARKS, *paResMgr ) ),
- maCbExportNotes( this, ResId( CB_EXPORTNOTES, *paResMgr ) ),
- maCbExportEmptyPages( this, ResId( CB_EXPORTEMPTYPAGES, *paResMgr ) ),
- maCbAddStream( this, ResId( CB_ADDSTREAM, *paResMgr ) ),
+ maFtFormsFormat( this, PDFFilterResId( FT_FORMSFORMAT ) ),
+ maLbFormsFormat( this, PDFFilterResId( LB_FORMSFORMAT ) ),
+ maCbAllowDuplicateFieldNames( this, PDFFilterResId( CB_ALLOWDUPLICATEFIELDNAMES ) ),
+
+ maCbExportBookmarks( this, PDFFilterResId( CB_EXPORTBOOKMARKS ) ),
+ maCbExportNotes( this, PDFFilterResId( CB_EXPORTNOTES ) ),
+ maCbExportNotesPages( this, PDFFilterResId( CB_EXPORTNOTESPAGES ) ),
+ maCbExportEmptyPages( this, PDFFilterResId( CB_EXPORTEMPTYPAGES ) ),
+ maCbAddStream( this, PDFFilterResId( CB_ADDSTREAM ) ),
mbIsPresentation( sal_False ),
mbIsWriter( sal_False),
mpaParent( 0 )
{
- mpaResMgr = paResMgr;
FreeResource();
// pb: #i91991# maCbExportEmptyPages double-spaced if necessary
@@ -465,7 +467,6 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage( Window* pParent,
// -----------------------------------------------------------------------------
ImpPDFTabGeneralPage::~ImpPDFTabGeneralPage()
{
- delete mpaResMgr;
}
// -----------------------------------------------------------------------------
@@ -489,9 +490,6 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent
maCbExportEmptyPages.Enable( mbIsWriter );
-// SJ: Dont know if there are Notes available also for writer.
-// maCbExportNotes.Enable( paParent->mbIsPresentation );
-
maRbLosslessCompression.SetToggleHdl( LINK( this, ImpPDFTabGeneralPage, ToggleCompressionHdl ) );
const sal_Bool bUseLosslessCompression = paParent->mbUseLosslessCompression;
if ( bUseLosslessCompression )
@@ -538,12 +536,27 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent
maCbAllowDuplicateFieldNames.Check( paParent->mbAllowDuplicateFieldNames );
maCbAllowDuplicateFieldNames.Enable( paParent->mbExportFormFields );
+ maCbExportBookmarks.Check( paParent->mbExportBookmarks );
+
+ maCbExportNotes.Check( paParent->mbExportNotes );
+
if ( mbIsPresentation )
- maCbExportNotes.Check( paParent->mbExportNotesBoth );
+ {
+ maCbExportNotesPages.Show( TRUE );
+ maCbExportNotesPages.Check( paParent->mbExportNotesPages );
+ }
else
- maCbExportNotes.Check( paParent->mbExportNotesBoth );
-
- maCbExportBookmarks.Check( paParent->mbExportBookmarks );
+ {
+ long nCheckBoxHeight =
+ maCbExportNotesPages.LogicToPixel( Size( 13, 13 ), MAP_APPFONT ).Height();
+
+ Point aPos = maCbExportEmptyPages.GetPosPixel();
+ maCbExportEmptyPages.SetPosPixel( Point( aPos.X(), aPos.Y() - nCheckBoxHeight ) );
+ aPos = maCbAddStream.GetPosPixel();
+ maCbAddStream.SetPosPixel( Point( aPos.X(), aPos.Y() - nCheckBoxHeight ) );
+ maCbExportNotesPages.Show( FALSE );
+ maCbExportNotesPages.Check( FALSE );
+ }
maCbExportEmptyPages.Check( !paParent->mbIsSkipEmptyPages );
@@ -576,7 +589,9 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* paParent )
paParent->mnQuality = static_cast<sal_Int32>(maNfQuality.GetValue());
paParent->mbReduceImageResolution = maCbReduceImageResolution.IsChecked();
paParent->mnMaxImageResolution = maCoReduceImageResolution.GetText().ToInt32();
- paParent->mbExportNotesBoth = maCbExportNotes.IsChecked();
+ paParent->mbExportNotes = maCbExportNotes.IsChecked();
+ if ( mbIsPresentation )
+ paParent->mbExportNotesPages = maCbExportNotesPages.IsChecked();
paParent->mbExportBookmarks = maCbExportBookmarks.IsChecked();
paParent->mbIsSkipEmptyPages = !maCbExportEmptyPages.IsChecked();
@@ -618,9 +633,7 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* paParent )
SfxTabPage* ImpPDFTabGeneralPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
- ByteString aResMgrName( "pdffilter" );
- ResMgr* paResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- return ( new ImpPDFTabGeneralPage( pParent, rAttrSet, paResMgr ) );
+ return ( new ImpPDFTabGeneralPage( pParent, rAttrSet ) );
}
// -----------------------------------------------------------------------------
@@ -719,34 +732,32 @@ IMPL_LINK( ImpPDFTabGeneralPage, ToggleExportPDFAHdl, void*, EMPTYARG )
// the option features tab page
// -----------------------------------------------------------------------------
ImpPDFTabOpnFtrPage::ImpPDFTabOpnFtrPage( Window* pParent,
- const SfxItemSet& rCoreSet,
- ResMgr* paResMgr ) :
- SfxTabPage( pParent, ResId( RID_PDF_TAB_OPNFTR, *paResMgr ), rCoreSet ),
-
- maFlInitialView( this, ResId( FL_INITVIEW, *paResMgr ) ),
- maRbOpnPageOnly( this, ResId( RB_OPNMODE_PAGEONLY, *paResMgr ) ),
- maRbOpnOutline( this, ResId( RB_OPNMODE_OUTLINE, *paResMgr ) ),
- maRbOpnThumbs( this, ResId( RB_OPNMODE_THUMBS, *paResMgr ) ),
- maFtInitialPage( this, ResId( FT_MAGNF_INITIAL_PAGE, *paResMgr ) ),
- maNumInitialPage( this, ResId( NUM_MAGNF_INITIAL_PAGE, *paResMgr ) ),
-
- maFlMagnification( this, ResId( FL_MAGNIFICATION, *paResMgr ) ),
- maRbMagnDefault( this, ResId( RB_MAGNF_DEFAULT, *paResMgr ) ),
- maRbMagnFitWin( this, ResId( RB_MAGNF_WIND, *paResMgr ) ),
- maRbMagnFitWidth( this, ResId( RB_MAGNF_WIDTH, *paResMgr ) ),
- maRbMagnFitVisible( this, ResId( RB_MAGNF_VISIBLE, *paResMgr ) ),
- maRbMagnZoom( this, ResId( RB_MAGNF_ZOOM, *paResMgr ) ),
- maNumZoom( this, ResId( NUM_MAGNF_ZOOM, *paResMgr ) ),
-
- maFlPageLayout( this, ResId( FL_PAGE_LAYOUT, *paResMgr ) ),
- maRbPgLyDefault( this, ResId( RB_PGLY_DEFAULT, *paResMgr ) ),
- maRbPgLySinglePage( this, ResId( RB_PGLY_SINGPG, *paResMgr ) ),
- maRbPgLyContinue( this, ResId( RB_PGLY_CONT, *paResMgr ) ),
- maRbPgLyContinueFacing( this, ResId( RB_PGLY_CONTFAC, *paResMgr ) ),
- maCbPgLyFirstOnLeft( this, ResId( CB_PGLY_FIRSTLEFT, *paResMgr ) ),
+ const SfxItemSet& rCoreSet ) :
+ SfxTabPage( pParent, PDFFilterResId( RID_PDF_TAB_OPNFTR ), rCoreSet ),
+
+ maFlInitialView( this, PDFFilterResId( FL_INITVIEW ) ),
+ maRbOpnPageOnly( this, PDFFilterResId( RB_OPNMODE_PAGEONLY ) ),
+ maRbOpnOutline( this, PDFFilterResId( RB_OPNMODE_OUTLINE ) ),
+ maRbOpnThumbs( this, PDFFilterResId( RB_OPNMODE_THUMBS ) ),
+ maFtInitialPage( this, PDFFilterResId( FT_MAGNF_INITIAL_PAGE ) ),
+ maNumInitialPage( this, PDFFilterResId( NUM_MAGNF_INITIAL_PAGE ) ),
+
+ maFlMagnification( this, PDFFilterResId( FL_MAGNIFICATION ) ),
+ maRbMagnDefault( this, PDFFilterResId( RB_MAGNF_DEFAULT ) ),
+ maRbMagnFitWin( this, PDFFilterResId( RB_MAGNF_WIND ) ),
+ maRbMagnFitWidth( this, PDFFilterResId( RB_MAGNF_WIDTH ) ),
+ maRbMagnFitVisible( this, PDFFilterResId( RB_MAGNF_VISIBLE ) ),
+ maRbMagnZoom( this, PDFFilterResId( RB_MAGNF_ZOOM ) ),
+ maNumZoom( this, PDFFilterResId( NUM_MAGNF_ZOOM ) ),
+
+ maFlPageLayout( this, PDFFilterResId( FL_PAGE_LAYOUT ) ),
+ maRbPgLyDefault( this, PDFFilterResId( RB_PGLY_DEFAULT ) ),
+ maRbPgLySinglePage( this, PDFFilterResId( RB_PGLY_SINGPG ) ),
+ maRbPgLyContinue( this, PDFFilterResId( RB_PGLY_CONT ) ),
+ maRbPgLyContinueFacing( this, PDFFilterResId( RB_PGLY_CONTFAC ) ),
+ maCbPgLyFirstOnLeft( this, PDFFilterResId( CB_PGLY_FIRSTLEFT ) ),
mbUseCTLFont( sal_False )
{
- mpaResMgr = paResMgr;
FreeResource();
maRbMagnDefault.SetToggleHdl( LINK( this, ImpPDFTabOpnFtrPage, ToggleRbMagnHdl ) );
@@ -759,16 +770,13 @@ ImpPDFTabOpnFtrPage::ImpPDFTabOpnFtrPage( Window* pParent,
// -----------------------------------------------------------------------------
ImpPDFTabOpnFtrPage::~ImpPDFTabOpnFtrPage()
{
- delete mpaResMgr;
}
// -----------------------------------------------------------------------------
SfxTabPage* ImpPDFTabOpnFtrPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
- ByteString aResMgrName( "pdffilter" );
- ResMgr* paResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- return ( new ImpPDFTabOpnFtrPage( pParent, rAttrSet, paResMgr ) );
+ return ( new ImpPDFTabOpnFtrPage( pParent, rAttrSet ) );
}
// -----------------------------------------------------------------------------
@@ -896,29 +904,27 @@ IMPL_LINK( ImpPDFTabOpnFtrPage, ToggleRbMagnHdl, void*, )
// The Viewer preferences tab page
// -----------------------------------------------------------------------------
ImpPDFTabViewerPage::ImpPDFTabViewerPage( Window* pParent,
- const SfxItemSet& rCoreSet,
- ResMgr* paResMgr ) :
- SfxTabPage( pParent, ResId( RID_PDF_TAB_VPREFER, *paResMgr ), rCoreSet ),
-
- maFlWindowOptions( this, ResId( FL_WINOPT, *paResMgr ) ),
- maCbResWinInit( this, ResId( CB_WNDOPT_RESINIT, *paResMgr ) ),
- maCbCenterWindow( this, ResId( CB_WNDOPT_CNTRWIN, *paResMgr ) ),
- maCbOpenFullScreen( this, ResId( CB_WNDOPT_OPNFULL, *paResMgr ) ),
- maCbDispDocTitle( this, ResId( CB_DISPDOCTITLE, *paResMgr ) ),
-
- maFlUIOptions( this, ResId( FL_USRIFOPT, *paResMgr ) ),
- maCbHideViewerMenubar( this, ResId( CB_UOP_HIDEVMENUBAR, *paResMgr ) ),
- maCbHideViewerToolbar( this, ResId( CB_UOP_HIDEVTOOLBAR, *paResMgr ) ),
- maCbHideViewerWindowControls( this, ResId( CB_UOP_HIDEVWINCTRL, *paResMgr ) ),
- maFlTransitions( this, ResId( FL_TRANSITIONS, *paResMgr ) ),
- maCbTransitionEffects( this, ResId( CB_TRANSITIONEFFECTS, *paResMgr ) ),
+ const SfxItemSet& rCoreSet ) :
+ SfxTabPage( pParent, PDFFilterResId( RID_PDF_TAB_VPREFER ), rCoreSet ),
+
+ maFlWindowOptions( this, PDFFilterResId( FL_WINOPT ) ),
+ maCbResWinInit( this, PDFFilterResId( CB_WNDOPT_RESINIT ) ),
+ maCbCenterWindow( this, PDFFilterResId( CB_WNDOPT_CNTRWIN ) ),
+ maCbOpenFullScreen( this, PDFFilterResId( CB_WNDOPT_OPNFULL ) ),
+ maCbDispDocTitle( this, PDFFilterResId( CB_DISPDOCTITLE ) ),
+
+ maFlUIOptions( this, PDFFilterResId( FL_USRIFOPT ) ),
+ maCbHideViewerMenubar( this, PDFFilterResId( CB_UOP_HIDEVMENUBAR ) ),
+ maCbHideViewerToolbar( this, PDFFilterResId( CB_UOP_HIDEVTOOLBAR ) ),
+ maCbHideViewerWindowControls( this, PDFFilterResId( CB_UOP_HIDEVWINCTRL ) ),
+ maFlTransitions( this, PDFFilterResId( FL_TRANSITIONS ) ),
+ maCbTransitionEffects( this, PDFFilterResId( CB_TRANSITIONEFFECTS ) ),
mbIsPresentation( sal_True ),
- maFlBookmarks( this, ResId( FL_BOOKMARKS, *paResMgr ) ),
- maRbAllBookmarkLevels( this, ResId( RB_ALLBOOKMARKLEVELS, *paResMgr ) ),
- maRbVisibleBookmarkLevels( this, ResId( RB_VISIBLEBOOKMARKLEVELS, *paResMgr ) ),
- maNumBookmarkLevels( this, ResId( NUM_BOOKMARKLEVELS, *paResMgr ) )
+ maFlBookmarks( this, PDFFilterResId( FL_BOOKMARKS ) ),
+ maRbAllBookmarkLevels( this, PDFFilterResId( RB_ALLBOOKMARKLEVELS ) ),
+ maRbVisibleBookmarkLevels( this, PDFFilterResId( RB_VISIBLEBOOKMARKLEVELS ) ),
+ maNumBookmarkLevels( this, PDFFilterResId( NUM_BOOKMARKLEVELS ) )
{
- mpaResMgr = paResMgr;
FreeResource();
maRbAllBookmarkLevels.SetToggleHdl( LINK( this, ImpPDFTabViewerPage, ToggleRbBookmarksHdl ) );
maRbVisibleBookmarkLevels.SetToggleHdl( LINK( this, ImpPDFTabViewerPage, ToggleRbBookmarksHdl ) );
@@ -927,7 +933,6 @@ ImpPDFTabViewerPage::ImpPDFTabViewerPage( Window* pParent,
// -----------------------------------------------------------------------------
ImpPDFTabViewerPage::~ImpPDFTabViewerPage()
{
- delete mpaResMgr;
}
// -----------------------------------------------------------------------------
@@ -940,9 +945,7 @@ IMPL_LINK( ImpPDFTabViewerPage, ToggleRbBookmarksHdl, void*, )
SfxTabPage* ImpPDFTabViewerPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
- ByteString aResMgrName( "pdffilter" );
- ResMgr* paResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- return ( new ImpPDFTabViewerPage( pParent, rAttrSet, paResMgr ) );
+ return ( new ImpPDFTabViewerPage( pParent, rAttrSet ) );
}
// -----------------------------------------------------------------------------
@@ -991,51 +994,48 @@ void ImpPDFTabViewerPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent
// The Security preferences tab page
// -----------------------------------------------------------------------------
ImpPDFTabSecurityPage::ImpPDFTabSecurityPage( Window* i_pParent,
- const SfxItemSet& i_rCoreSet,
- ResMgr* i_pResMgr ) :
- SfxTabPage( i_pParent, ResId( RID_PDF_TAB_SECURITY, *i_pResMgr ), i_rCoreSet ),
- maPbUserPwd( this, ResId( BTN_USER_PWD, *i_pResMgr ) ),
- maFtUserPwd( this, ResId( FT_USER_PWD, *i_pResMgr ) ),
- maUserPwdSet( ResId( STR_USER_PWD_SET, *i_pResMgr ) ),
- maUserPwdUnset( ResId( STR_USER_PWD_UNSET, *i_pResMgr ) ),
-
- maPbOwnerPwd( this, ResId( BTN_OWNER_PWD, *i_pResMgr ) ),
- maFtOwnerPwd( this, ResId( FT_OWNER_PWD, *i_pResMgr ) ),
- maOwnerPwdSet( ResId( STR_OWNER_PWD_SET, *i_pResMgr ) ),
- maOwnerPwdUnset( ResId( STR_OWNER_PWD_UNSET, *i_pResMgr ) ),
-
- maFlPrintPermissions( this, ResId( FL_PRINT_PERMISSIONS , *i_pResMgr ) ),
- maRbPrintNone( this, ResId( RB_PRINT_NONE, *i_pResMgr ) ),
- maRbPrintLowRes( this, ResId( RB_PRINT_LOWRES , *i_pResMgr ) ),
- maRbPrintHighRes( this, ResId( RB_PRINT_HIGHRES , *i_pResMgr ) ),
-
- maFlChangesAllowed( this, ResId( FL_CHANGES_ALLOWED , *i_pResMgr ) ),
- maRbChangesNone( this, ResId( RB_CHANGES_NONE , *i_pResMgr ) ),
- maRbChangesInsDel( this, ResId( RB_CHANGES_INSDEL , *i_pResMgr ) ),
- maRbChangesFillForm( this, ResId( RB_CHANGES_FILLFORM , *i_pResMgr ) ),
- maRbChangesComment( this, ResId( RB_CHANGES_COMMENT , *i_pResMgr ) ),
- maRbChangesAnyNoCopy( this, ResId( RB_CHANGES_ANY_NOCOPY , *i_pResMgr ) ),
-
- maCbEnableCopy( this, ResId( CB_ENDAB_COPY , *i_pResMgr ) ),
- maCbEnableAccessibility( this, ResId( CB_ENAB_ACCESS , *i_pResMgr ) ),
-
- msUserPwdTitle( ResId( STR_PDF_EXPORT_UDPWD, *i_pResMgr ) ),
-
- msOwnerPwdTitle( ResId( STR_PDF_EXPORT_ODPWD, *i_pResMgr ) )
+ const SfxItemSet& i_rCoreSet ) :
+ SfxTabPage( i_pParent, PDFFilterResId( RID_PDF_TAB_SECURITY ), i_rCoreSet ),
+ maPbUserPwd( this, PDFFilterResId( BTN_USER_PWD ) ),
+ maFtUserPwd( this, PDFFilterResId( FT_USER_PWD ) ),
+ maUserPwdSet( PDFFilterResId( STR_USER_PWD_SET ) ),
+ maUserPwdUnset( PDFFilterResId( STR_USER_PWD_UNSET ) ),
+
+ maPbOwnerPwd( this, PDFFilterResId( BTN_OWNER_PWD ) ),
+ maFtOwnerPwd( this, PDFFilterResId( FT_OWNER_PWD ) ),
+ maOwnerPwdSet( PDFFilterResId( STR_OWNER_PWD_SET ) ),
+ maOwnerPwdUnset( PDFFilterResId( STR_OWNER_PWD_UNSET ) ),
+
+ maFlPrintPermissions( this, PDFFilterResId( FL_PRINT_PERMISSIONS ) ),
+ maRbPrintNone( this, PDFFilterResId( RB_PRINT_NONE ) ),
+ maRbPrintLowRes( this, PDFFilterResId( RB_PRINT_LOWRES ) ),
+ maRbPrintHighRes( this, PDFFilterResId( RB_PRINT_HIGHRES ) ),
+
+ maFlChangesAllowed( this, PDFFilterResId( FL_CHANGES_ALLOWED ) ),
+ maRbChangesNone( this, PDFFilterResId( RB_CHANGES_NONE ) ),
+ maRbChangesInsDel( this, PDFFilterResId( RB_CHANGES_INSDEL ) ),
+ maRbChangesFillForm( this, PDFFilterResId( RB_CHANGES_FILLFORM ) ),
+ maRbChangesComment( this, PDFFilterResId( RB_CHANGES_COMMENT ) ),
+ maRbChangesAnyNoCopy( this, PDFFilterResId( RB_CHANGES_ANY_NOCOPY ) ),
+
+ maCbEnableCopy( this, PDFFilterResId( CB_ENDAB_COPY ) ),
+ maCbEnableAccessibility( this, PDFFilterResId( CB_ENAB_ACCESS ) ),
+
+ msUserPwdTitle( PDFFilterResId( STR_PDF_EXPORT_UDPWD ) ),
+
+ msOwnerPwdTitle( PDFFilterResId( STR_PDF_EXPORT_ODPWD ) )
{
- mpaResMgr = i_pResMgr;
-
maUserPwdSet.Append( sal_Unicode( '\n' ) );
- maUserPwdSet.Append( String( ResId( STR_USER_PWD_ENC, *i_pResMgr ) ) );
+ maUserPwdSet.Append( String( PDFFilterResId( STR_USER_PWD_ENC ) ) );
maUserPwdUnset.Append( sal_Unicode( '\n' ) );
- maUserPwdUnset.Append( String( ResId( STR_USER_PWD_UNENC, *i_pResMgr ) ) );
+ maUserPwdUnset.Append( String( PDFFilterResId( STR_USER_PWD_UNENC ) ) );
maOwnerPwdSet.Append( sal_Unicode( '\n' ) );
- maOwnerPwdSet.Append( String( ResId( STR_OWNER_PWD_REST, *i_pResMgr ) ) );
+ maOwnerPwdSet.Append( String( PDFFilterResId( STR_OWNER_PWD_REST ) ) );
maOwnerPwdUnset.Append( sal_Unicode( '\n' ) );
- maOwnerPwdUnset.Append( String( ResId( STR_OWNER_PWD_UNREST, *i_pResMgr ) ) );
+ maOwnerPwdUnset.Append( String( PDFFilterResId( STR_OWNER_PWD_UNREST ) ) );
FreeResource();
@@ -1065,16 +1065,13 @@ ImpPDFTabSecurityPage::ImpPDFTabSecurityPage( Window* i_pParent,
// -----------------------------------------------------------------------------
ImpPDFTabSecurityPage::~ImpPDFTabSecurityPage()
{
- delete mpaResMgr;
}
// -----------------------------------------------------------------------------
SfxTabPage* ImpPDFTabSecurityPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
- ByteString aResMgrName( "pdffilter" );
- ResMgr* paResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- return ( new ImpPDFTabSecurityPage( pParent, rAttrSet, paResMgr ) );
+ return ( new ImpPDFTabSecurityPage( pParent, rAttrSet ) );
}
// -----------------------------------------------------------------------------
@@ -1238,23 +1235,21 @@ void ImpPDFTabSecurityPage::ImplPDFASecurityControl( sal_Bool bEnableSecurity
// The link preferences tab page (relative and other stuff)
// -----------------------------------------------------------------------------
ImpPDFTabLinksPage::ImpPDFTabLinksPage( Window* pParent,
- const SfxItemSet& rCoreSet,
- ResMgr& rResMgr ) :
- SfxTabPage( pParent, ResId( RID_PDF_TAB_LINKS, rResMgr ), rCoreSet ),
+ const SfxItemSet& rCoreSet ) :
+ SfxTabPage( pParent, PDFFilterResId( RID_PDF_TAB_LINKS ), rCoreSet ),
- maCbExprtBmkrToNmDst( this, ResId( CB_EXP_BMRK_TO_DEST , rResMgr ) ),
- maCbOOoToPDFTargets( this, ResId( CB_CNV_OOO_DOCTOPDF , rResMgr ) ),
- maCbExportRelativeFsysLinks( this, ResId( CB_ENAB_RELLINKFSYS , rResMgr ) ),
+ maCbExprtBmkrToNmDst( this, PDFFilterResId( CB_EXP_BMRK_TO_DEST ) ),
+ maCbOOoToPDFTargets( this, PDFFilterResId( CB_CNV_OOO_DOCTOPDF ) ),
+ maCbExportRelativeFsysLinks( this, PDFFilterResId( CB_ENAB_RELLINKFSYS ) ),
- maFlDefaultTitle( this, ResId( FL_DEFAULT_LINK_ACTION , rResMgr ) ),
- maRbOpnLnksDefault( this, ResId( CB_VIEW_PDF_DEFAULT , rResMgr ) ),
+ maFlDefaultTitle( this, PDFFilterResId( FL_DEFAULT_LINK_ACTION ) ),
+ maRbOpnLnksDefault( this, PDFFilterResId( CB_VIEW_PDF_DEFAULT ) ),
mbOpnLnksDefaultUserState( sal_False ),
- maRbOpnLnksLaunch( this, ResId( CB_VIEW_PDF_APPLICATION , rResMgr ) ),
+ maRbOpnLnksLaunch( this, PDFFilterResId( CB_VIEW_PDF_APPLICATION ) ),
mbOpnLnksLaunchUserState( sal_False ),
- maRbOpnLnksBrowser( this, ResId( CB_VIEW_PDF_BROWSER , rResMgr ) ),
+ maRbOpnLnksBrowser( this, PDFFilterResId( CB_VIEW_PDF_BROWSER ) ),
mbOpnLnksBrowserUserState( sal_False )
{
- mpaResMgr = &rResMgr;
FreeResource();
// pb: #i91991# checkboxes only double-spaced if necessary
@@ -1311,16 +1306,13 @@ ImpPDFTabLinksPage::ImpPDFTabLinksPage( Window* pParent,
// -----------------------------------------------------------------------------
ImpPDFTabLinksPage::~ImpPDFTabLinksPage()
{
- delete mpaResMgr;
}
// -----------------------------------------------------------------------------
SfxTabPage* ImpPDFTabLinksPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
- ByteString aResMgrName( "pdffilter" );
- ResMgr * paResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- return ( new ImpPDFTabLinksPage( pParent, rAttrSet, *paResMgr ) );
+ return ( new ImpPDFTabLinksPage( pParent, rAttrSet ) );
}
// -----------------------------------------------------------------------------
@@ -1436,18 +1428,18 @@ IMPL_LINK( ImpPDFTabLinksPage, ClickRbOpnLnksBrowserHdl, void*, EMPTYARG )
return 0;
}
-ImplErrorDialog::ImplErrorDialog( const std::set< vcl::PDFWriter::ErrorCode >& rErrors, ResMgr& rResMgr ) :
- ModalDialog( NULL, ResId( RID_PDF_ERROR_DLG, rResMgr ) ),
+ImplErrorDialog::ImplErrorDialog( const std::set< vcl::PDFWriter::ErrorCode >& rErrors ) :
+ ModalDialog( NULL, PDFFilterResId( RID_PDF_ERROR_DLG ) ),
maFI( this, 0 ),
- maProcessText( this, ResId( FT_PROCESS, rResMgr ) ),
+ maProcessText( this, PDFFilterResId( FT_PROCESS ) ),
maErrors( this, WB_BORDER | WB_AUTOVSCROLL ),
maExplanation( this, WB_WORDBREAK ),
maButton( this, WB_DEFBUTTON )
{
// load images
- Image aWarnImg = Image ( BitmapEx( ResId( IMG_WARN, rResMgr ) ) );
- Image aErrImg= Image ( BitmapEx( ResId( IMG_ERR, rResMgr ) ) );
+ Image aWarnImg( BitmapEx( PDFFilterResId( IMG_WARN ) ) );
+ Image aErrImg( BitmapEx( PDFFilterResId( IMG_ERR ) ) );
for( std::set<vcl::PDFWriter::ErrorCode>::const_iterator it = rErrors.begin();
it != rErrors.end(); ++it )
@@ -1456,30 +1448,30 @@ ImplErrorDialog::ImplErrorDialog( const std::set< vcl::PDFWriter::ErrorCode >& r
{
case vcl::PDFWriter::Warning_Transparency_Omitted_PDFA:
{
- USHORT nPos = maErrors.InsertEntry( String( ResId( STR_WARN_TRANSP_PDFA_SHORT, rResMgr ) ),
+ USHORT nPos = maErrors.InsertEntry( String( PDFFilterResId( STR_WARN_TRANSP_PDFA_SHORT ) ),
aWarnImg );
- maErrors.SetEntryData( nPos, new String( ResId( STR_WARN_TRANSP_PDFA, rResMgr ) ) );
+ maErrors.SetEntryData( nPos, new String( PDFFilterResId( STR_WARN_TRANSP_PDFA ) ) );
}
break;
case vcl::PDFWriter::Warning_Transparency_Omitted_PDF13:
{
- USHORT nPos = maErrors.InsertEntry( String( ResId( STR_WARN_TRANSP_VERSION_SHORT, rResMgr ) ),
+ USHORT nPos = maErrors.InsertEntry( String( PDFFilterResId( STR_WARN_TRANSP_VERSION_SHORT ) ),
aWarnImg );
- maErrors.SetEntryData( nPos, new String( ResId( STR_WARN_TRANSP_VERSION, rResMgr ) ) );
+ maErrors.SetEntryData( nPos, new String( PDFFilterResId( STR_WARN_TRANSP_VERSION ) ) );
}
break;
case vcl::PDFWriter::Warning_FormAction_Omitted_PDFA:
{
- USHORT nPos = maErrors.InsertEntry( String( ResId( STR_WARN_FORMACTION_PDFA_SHORT, rResMgr ) ),
+ USHORT nPos = maErrors.InsertEntry( String( PDFFilterResId( STR_WARN_FORMACTION_PDFA_SHORT ) ),
aWarnImg );
- maErrors.SetEntryData( nPos, new String( ResId( STR_WARN_FORMACTION_PDFA, rResMgr ) ) );
+ maErrors.SetEntryData( nPos, new String( PDFFilterResId( STR_WARN_FORMACTION_PDFA ) ) );
}
break;
case vcl::PDFWriter::Warning_Transparency_Converted:
{
- USHORT nPos = maErrors.InsertEntry( String( ResId( STR_WARN_TRANSP_CONVERTED_SHORT, rResMgr ) ),
+ USHORT nPos = maErrors.InsertEntry( String( PDFFilterResId( STR_WARN_TRANSP_CONVERTED_SHORT ) ),
aWarnImg );
- maErrors.SetEntryData( nPos, new String( ResId( STR_WARN_TRANSP_CONVERTED, rResMgr ) ) );
+ maErrors.SetEntryData( nPos, new String( PDFFilterResId( STR_WARN_TRANSP_CONVERTED ) ) );
}
break;
default:
diff --git a/filter/source/pdf/impdialog.hrc b/filter/source/pdf/impdialog.hrc
index 91ff6a662ae3..6a010120e3bd 100644
--- a/filter/source/pdf/impdialog.hrc
+++ b/filter/source/pdf/impdialog.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impdialog.hrc,v $
- * $Revision: 1.15.80.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -88,6 +85,7 @@
#define CB_ADDSTREAM 25
#define CB_PDFA_1B_SELECT 26
+#define CB_EXPORTNOTESPAGES 27
#define FL_OLD_PAGES 51
#define RB_OLD_ALL 52
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
index e1cb794cf4a3..050aeee4caf5 100644
--- a/filter/source/pdf/impdialog.hxx
+++ b/filter/source/pdf/impdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impdialog.hxx,v $
- * $Revision: 1.23.80.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -57,6 +54,12 @@ class ImpPDFTabViewerPage;
class ImpPDFTabOpnFtrPage;
class ImpPDFTabLinksPage;
+class PDFFilterResId : public ResId
+{
+public:
+ PDFFilterResId( sal_uInt32 nId );
+};
+
class ImplErrorDialog : public ModalDialog
{
FixedImage maFI;
@@ -68,7 +71,7 @@ class ImplErrorDialog : public ModalDialog
DECL_LINK( SelectHdl, ListBox* );
public:
- ImplErrorDialog( const std::set< vcl::PDFWriter::ErrorCode >&, ResMgr& rResMgr );
+ ImplErrorDialog( const std::set< vcl::PDFWriter::ErrorCode >& );
~ImplErrorDialog();
};
@@ -84,8 +87,6 @@ private:
Any maSelection;
protected:
-
- ResMgr* mprResMgr;
//the following data are the configuration used throughout the dialog and pages
sal_Bool mbIsPresentation;
sal_Bool mbIsWriter;
@@ -97,7 +98,8 @@ protected:
sal_Int32 mnMaxImageResolution;
sal_Bool mbUseTaggedPDF;
sal_Int32 mnPDFTypeSelection;
- sal_Bool mbExportNotesBoth;
+ sal_Bool mbExportNotes;
+ sal_Bool mbExportNotesPages;
sal_Bool mbUseTransitionEffects;
sal_Bool mbIsSkipEmptyPages;
sal_Bool mbAddStream;
@@ -149,7 +151,7 @@ public:
friend class ImpPDFTabSecurityPage;
friend class ImpPDFTabLinksPage;
- ImpPDFTabDialog( Window* pParent, ResMgr& rResMgr,
+ ImpPDFTabDialog( Window* pParent,
Sequence< PropertyValue >& rFilterData,
const Reference< XComponent >& rDoc,
const Reference< lang::XMultiServiceFactory >& xFact
@@ -197,6 +199,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage
CheckBox maCbExportBookmarks;
CheckBox maCbExportNotes;
+ CheckBox maCbExportNotesPages;
CheckBox maCbExportEmptyPages;
CheckBox maCbAddStream;
@@ -204,8 +207,6 @@ class ImpPDFTabGeneralPage : public SfxTabPage
sal_Bool mbIsPresentation;
sal_Bool mbIsWriter;
- ResMgr* mpaResMgr;
-
const ImpPDFTabDialog* mpaParent;
DECL_LINK( TogglePagesHdl, void* );
@@ -218,8 +219,7 @@ public:
DECL_LINK( ToggleExportPDFAHdl, void* );
ImpPDFTabGeneralPage( Window* pParent,
- const SfxItemSet& rSet,
- ResMgr* paResMgr );
+ const SfxItemSet& rSet );
~ImpPDFTabGeneralPage();
static SfxTabPage* Create( Window* pParent,
@@ -256,15 +256,13 @@ class ImpPDFTabOpnFtrPage : public SfxTabPage
CheckBox maCbPgLyFirstOnLeft;
sal_Bool mbUseCTLFont;
- ResMgr* mpaResMgr;
DECL_LINK( ToggleRbPgLyContinueFacingHdl, void* );
DECL_LINK( ToggleRbMagnHdl, void* );
public:
ImpPDFTabOpnFtrPage( Window* pParent,
- const SfxItemSet& rSet,
- ResMgr* paResMgr );
+ const SfxItemSet& rSet );
~ImpPDFTabOpnFtrPage();
static SfxTabPage* Create( Window* pParent,
@@ -297,13 +295,10 @@ class ImpPDFTabViewerPage : public SfxTabPage
RadioButton maRbVisibleBookmarkLevels;
NumericField maNumBookmarkLevels;
- ResMgr* mpaResMgr;
-
DECL_LINK( ToggleRbBookmarksHdl, void* );
public:
ImpPDFTabViewerPage( Window* pParent,
- const SfxItemSet& rSet,
- ResMgr* paResMgr );
+ const SfxItemSet& rSet );
~ImpPDFTabViewerPage();
static SfxTabPage* Create( Window* pParent,
@@ -347,8 +342,6 @@ class ImpPDFTabSecurityPage : public SfxTabPage
String msOwnerPassword;
String msOwnerPwdTitle;
- ResMgr* mpaResMgr;
-
long nWidth;
DECL_LINK( ClickmaPbUserPwdHdl, void* );
@@ -360,8 +353,7 @@ class ImpPDFTabSecurityPage : public SfxTabPage
public:
ImpPDFTabSecurityPage( Window* pParent,
- const SfxItemSet& rSet,
- ResMgr* paResMgr );
+ const SfxItemSet& rSet );
~ImpPDFTabSecurityPage();
static SfxTabPage* Create( Window* pParent,
@@ -387,8 +379,6 @@ class ImpPDFTabLinksPage : public SfxTabPage
RadioButton maRbOpnLnksBrowser;
sal_Bool mbOpnLnksBrowserUserState;
- ResMgr* mpaResMgr;
-
long nWidth;
DECL_LINK( ClickRbOpnLnksDefaultHdl, void* );
@@ -396,8 +386,7 @@ class ImpPDFTabLinksPage : public SfxTabPage
public:
ImpPDFTabLinksPage( Window* pParent,
- const SfxItemSet& rSet,
- ResMgr& rResMgr );
+ const SfxItemSet& rSet );
~ImpPDFTabLinksPage();
static SfxTabPage* Create( Window* pParent,
diff --git a/filter/source/pdf/impdialog.src b/filter/source/pdf/impdialog.src
index f47a6219c313..34f788495674 100644
--- a/filter/source/pdf/impdialog.src
+++ b/filter/source/pdf/impdialog.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: impdialog.src,v $
- * $Revision: 1.41.4.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,7 +27,7 @@
#include "impdialog.hrc"
-#define TAB_PDF_SIZE Size = MAP_APPFONT ( 176, 239 )
+#define TAB_PDF_SIZE Size = MAP_APPFONT ( 176, 255 )
//string for TabDialog standard buttons
String STR_PDF_EXPORT
{
@@ -217,9 +214,16 @@ TabPage RID_PDF_TAB_GENER
TabStop = TRUE ;
Text[ en-US ] = "~Export comments";
};
- CheckBox CB_EXPORTEMPTYPAGES
+ CheckBox CB_EXPORTNOTESPAGES
{
Pos = MAP_APPFONT ( 12 , 216 ) ;
+ Size = MAP_APPFONT ( 158 , 10 ) ;
+ TabStop = TRUE ;
+ Text[ en-US ] = "Export ~notes pages";
+ };
+ CheckBox CB_EXPORTEMPTYPAGES
+ {
+ Pos = MAP_APPFONT ( 12 , 229 ) ;
Size = MAP_APPFONT ( 158 , 16 ) ;
TabStop = TRUE ;
WordBreak = TRUE ;
@@ -227,7 +231,7 @@ TabPage RID_PDF_TAB_GENER
};
CheckBox CB_ADDSTREAM
{
- Pos = MAP_APPFONT ( 12 , 235 ) ;
+ Pos = MAP_APPFONT ( 12 , 248 ) ;
Size = MAP_APPFONT ( 158 , 10 ) ;
TabStop = TRUE ;
Text[ en-US ] = "Create ~hybrid file";
diff --git a/filter/source/pdf/makefile.mk b/filter/source/pdf/makefile.mk
index 5c4064d02cbd..e2319422691f 100644
--- a/filter/source/pdf/makefile.mk
+++ b/filter/source/pdf/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/pdf/pdf.hrc b/filter/source/pdf/pdf.hrc
index 7667f2e95da2..0d4f74cbfcba 100644
--- a/filter/source/pdf/pdf.hrc
+++ b/filter/source/pdf/pdf.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdf.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/pdf/pdf.src b/filter/source/pdf/pdf.src
index 97e8a5145d1b..0c7655c1c30c 100644
--- a/filter/source/pdf/pdf.src
+++ b/filter/source/pdf/pdf.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdf.src,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/pdf/pdfdialog.cxx b/filter/source/pdf/pdfdialog.cxx
index 78ee2f82dbc5..6703511ec914 100644
--- a/filter/source/pdf/pdfdialog.cxx
+++ b/filter/source/pdf/pdfdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdfdialog.cxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -35,7 +32,7 @@
#include "impdialog.hxx"
#include <vcl/svapp.hxx>
#include <vcl/dialog.hxx>
-#include <svtools/solar.hrc>
+#include <svl/solar.hrc>
#include <com/sun/star/view/XRenderable.hpp>
using namespace ::rtl;
@@ -45,8 +42,6 @@ using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
-//uncomment this to use the Tabbed PDF dialog (under development !)
-
// -----------------------
// - PDFDialog functions -
// -----------------------
@@ -100,16 +95,12 @@ Reference< XInterface > SAL_CALL PDFDialog_createInstance( const Reference< XMul
PDFDialog::PDFDialog( const Reference< XMultiServiceFactory > &rxMSF )
: PDFDialog_Base( rxMSF )
{
- ByteString aResMgrName( "pdffilter" );
-
- mpResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
}
// -----------------------------------------------------------------------------
PDFDialog::~PDFDialog()
{
- delete mpResMgr;
}
// -----------------------------------------------------------------------------
@@ -142,9 +133,9 @@ Dialog* PDFDialog::createDialog( Window* pParent )
{
Dialog* pRet = NULL;
- if( mpResMgr && mxSrcDoc.is() )
+ if( mxSrcDoc.is() )
{
- ImpPDFTabDialog* pDlg = new ImpPDFTabDialog( pParent, *mpResMgr, maFilterData, mxSrcDoc, m_aContext.getLegacyServiceFactory() );
+ ImpPDFTabDialog* pDlg = new ImpPDFTabDialog( pParent, maFilterData, mxSrcDoc, m_aContext.getLegacyServiceFactory() );
pRet = pDlg;
}
diff --git a/filter/source/pdf/pdfdialog.hxx b/filter/source/pdf/pdfdialog.hxx
index 682e7974c11f..29da770e65ff 100644
--- a/filter/source/pdf/pdfdialog.hxx
+++ b/filter/source/pdf/pdfdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdfdialog.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -34,7 +31,7 @@
#include "pdffilter.hxx"
#include <svtools/genericunodialog.hxx>
-#include <cppuhelper/implbase2.hxx>
+#include <cppuhelper/implbase2.hxx>
// -------------
// - PDFDialog -
@@ -43,19 +40,17 @@
class Window;
class ResMgr;
-typedef ::svt::OGenericUnoDialog PDFDialog_DialogBase;
-typedef ::cppu::ImplInheritanceHelper2 <
- PDFDialog_DialogBase,
- XPropertyAccess,
- XExporter
- > PDFDialog_Base;
-
-class PDFDialog : public PDFDialog_Base,
- public ::comphelper::OPropertyArrayUsageHelper< PDFDialog >
+typedef ::svt::OGenericUnoDialog PDFDialog_DialogBase;
+typedef ::cppu::ImplInheritanceHelper2 <
+ PDFDialog_DialogBase,
+ XPropertyAccess,
+ XExporter
+ > PDFDialog_Base;
+
+class PDFDialog : public PDFDialog_Base,
+ public ::comphelper::OPropertyArrayUsageHelper< PDFDialog >
{
private:
-
- ResMgr* mpResMgr;
Sequence< PropertyValue > maMediaDescriptor;
Sequence< PropertyValue > maFilterData;
Reference< XComponent > mxSrcDoc;
diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index bb1537ccd79b..3ff1b23aad5d 100644
--- a/filter/source/pdf/pdfexport.cxx
+++ b/filter/source/pdf/pdfexport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdfexport.cxx,v $
- * $Revision: 1.69.36.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -51,10 +48,10 @@
#include <unotools/processfactory.hxx>
#include <svtools/FilterConfigItem.hxx>
#include <svtools/filter.hxx>
-#include <svtools/solar.hrc>
+#include <svl/solar.hrc>
#include <comphelper/string.hxx>
-#include <svtools/saveopt.hxx> // only for testing of relative saving options in PDF
+#include <unotools/saveopt.hxx> // only for testing of relative saving options in PDF
#include <vcl/graphictools.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -81,31 +78,6 @@ using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::view;
-sal_Bool GetPropertyValue( Any& rAny, const Reference< XPropertySet > & rXPropSet, const sal_Char* pName )
-{
- sal_Bool bRetValue = sal_True;
- try
- {
- rAny = rXPropSet->getPropertyValue( String::CreateFromAscii( pName ) );
- if ( !rAny.hasValue() )
- bRetValue = sal_False;
- }
- catch( ::com::sun::star::uno::Exception& )
- {
- bRetValue = sal_False;
- }
- return bRetValue;
-}
-
-OUString GetProperty( const Reference< XPropertySet > & rXPropSet, const sal_Char* pName )
-{
- OUString aRetValue;
- Any aAny;
- if ( GetPropertyValue( aAny, rXPropSet, pName ) )
- aAny >>= aRetValue;
- return aRetValue;
-}
-
// -------------
// - PDFExport -
// -------------
@@ -895,7 +867,10 @@ sal_Bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue
}
}
- bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aMultiSelection, aRenderOptions, nPageCount );
+ if( nPageCount > 0 )
+ bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aMultiSelection, aRenderOptions, nPageCount );
+ else
+ bRet = FALSE;
if ( bRet && bSecondPassForImpressNotes )
{
@@ -944,14 +919,8 @@ void PDFExport::showErrors( const std::set< PDFWriter::ErrorCode >& rErrors )
{
if( ! rErrors.empty() )
{
- ByteString aResMgrName( "pdffilter" );
- ResMgr* pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
- if ( pResMgr )
- {
- ImplErrorDialog aDlg( rErrors, *pResMgr );
- aDlg.Execute();
- delete pResMgr;
- }
+ ImplErrorDialog aDlg( rErrors );
+ aDlg.Execute();
}
}
@@ -1365,7 +1334,6 @@ sal_Bool PDFExport::ImplWriteActions( PDFWriter& rWriter, PDFExtOutDevData* pPDF
PolyPolygon aEndArrow;
double fTransparency( aStroke.getTransparency() );
double fStrokeWidth( aStroke.getStrokeWidth() );
- SvtGraphicStroke::JoinType eJT( aStroke.getJoinType() );
SvtGraphicStroke::DashArray aDashArray;
aStroke.getStartArrow( aStartArrow );
@@ -1375,8 +1343,6 @@ sal_Bool PDFExport::ImplWriteActions( PDFWriter& rWriter, PDFExtOutDevData* pPDF
bSkipSequence = sal_True;
if ( aStartArrow.Count() || aEndArrow.Count() )
bSkipSequence = sal_False;
- if ( (sal_uInt32)eJT > 2 )
- bSkipSequence = sal_False;
if ( aDashArray.size() && ( fStrokeWidth != 0.0 ) && ( fTransparency == 0.0 ) )
bSkipSequence = sal_False;
if ( bSkipSequence )
@@ -1404,7 +1370,40 @@ sal_Bool PDFExport::ImplWriteActions( PDFWriter& rWriter, PDFExtOutDevData* pPDF
break;
}
aInfo.m_aDashArray = aDashArray;
- rWriter.DrawPolyLine( aPath, aInfo );
+
+ if(SvtGraphicStroke::joinNone == aStroke.getJoinType()
+ && fStrokeWidth > 0.0)
+ {
+ // emulate no edge rounding by handling single edges
+ const sal_uInt16 nPoints(aPath.GetSize());
+ const bool bCurve(aPath.HasFlags());
+
+ for(sal_uInt16 a(0); a + 1 < nPoints; a++)
+ {
+ if(bCurve
+ && POLY_NORMAL != aPath.GetFlags(a + 1)
+ && a + 2 < nPoints
+ && POLY_NORMAL != aPath.GetFlags(a + 2)
+ && a + 3 < nPoints)
+ {
+ const Polygon aSnippet(4,
+ aPath.GetConstPointAry() + a,
+ aPath.GetConstFlagAry() + a);
+ rWriter.DrawPolyLine( aSnippet, aInfo );
+ a += 2;
+ }
+ else
+ {
+ const Polygon aSnippet(2,
+ aPath.GetConstPointAry() + a);
+ rWriter.DrawPolyLine( aSnippet, aInfo );
+ }
+ }
+ }
+ else
+ {
+ rWriter.DrawPolyLine( aPath, aInfo );
+ }
}
}
else if ( pA->GetComment().Equals( "XPATHFILL_SEQ_BEGIN" ) )
diff --git a/filter/source/pdf/pdfexport.hxx b/filter/source/pdf/pdfexport.hxx
index cfe70a4ff0af..18c760b85675 100644
--- a/filter/source/pdf/pdfexport.hxx
+++ b/filter/source/pdf/pdfexport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdfexport.hxx,v $
- * $Revision: 1.14.80.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/pdf/pdffilter.cxx b/filter/source/pdf/pdffilter.cxx
index eea108d39187..0c08be6d8a66 100644
--- a/filter/source/pdf/pdffilter.cxx
+++ b/filter/source/pdf/pdffilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdffilter.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -35,7 +32,7 @@
#include "pdfexport.hxx"
#include <vcl/svapp.hxx>
#include <vcl/window.hxx>
-#include <svtools/outstrm.hxx>
+#include <svl/outstrm.hxx>
#include <svtools/FilterConfigItem.hxx>
// -------------
@@ -85,7 +82,8 @@ sal_Bool PDFFilter::implExport( const Sequence< PropertyValue >& rDescriptor )
aCfgItem.ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "MaxImageResolution" ) ), 300 );
aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "UseTaggedPDF" ) ), sal_False );
aCfgItem.ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "SelectPdfVersion" ) ), 0 );
- aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "ExportNotes" ) ), sal_True );
+ aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "ExportNotes" ) ), sal_False );
+ aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ), sal_False );
aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "UseTransitionEffects" ) ), sal_True );
aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "IsSkipEmptyPages" ) ), sal_False );
aCfgItem.ReadBool( String( RTL_CONSTASCII_USTRINGPARAM( "ExportFormFields" ) ), sal_True );
diff --git a/filter/source/pdf/pdffilter.hxx b/filter/source/pdf/pdffilter.hxx
index b1afcc27ba64..b4720c1627c7 100644
--- a/filter/source/pdf/pdffilter.hxx
+++ b/filter/source/pdf/pdffilter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdffilter.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/pdf/pdfuno.cxx b/filter/source/pdf/pdfuno.cxx
index a08689371a84..10c0f7df293d 100644
--- a/filter/source/pdf/pdfuno.cxx
+++ b/filter/source/pdf/pdfuno.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdfuno.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/Base64Codec.cxx b/filter/source/placeware/Base64Codec.cxx
index cc25fb146204..624be24dc256 100644
--- a/filter/source/placeware/Base64Codec.cxx
+++ b/filter/source/placeware/Base64Codec.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Base64Codec.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/Base64Codec.hxx b/filter/source/placeware/Base64Codec.hxx
index b684a5e0c739..125b944876a9 100644
--- a/filter/source/placeware/Base64Codec.hxx
+++ b/filter/source/placeware/Base64Codec.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Base64Codec.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/exporter.cxx b/filter/source/placeware/exporter.cxx
index acb705a00329..964bc618af5d 100644
--- a/filter/source/placeware/exporter.cxx
+++ b/filter/source/placeware/exporter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: exporter.cxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/exporter.hxx b/filter/source/placeware/exporter.hxx
index 10236c127e11..d52519cfcb4e 100644
--- a/filter/source/placeware/exporter.hxx
+++ b/filter/source/placeware/exporter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: exporter.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/filter.cxx b/filter/source/placeware/filter.cxx
index 4c44acecbe86..b38927d793d6 100644
--- a/filter/source/placeware/filter.cxx
+++ b/filter/source/placeware/filter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filter.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/makefile.mk b/filter/source/placeware/makefile.mk
index 6fdfe7ecb0fd..1f26aabe8072 100644
--- a/filter/source/placeware/makefile.mk
+++ b/filter/source/placeware/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/tempfile.cxx b/filter/source/placeware/tempfile.cxx
index 51e58d599211..46c01e80d4a4 100644
--- a/filter/source/placeware/tempfile.cxx
+++ b/filter/source/placeware/tempfile.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tempfile.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/tempfile.hxx b/filter/source/placeware/tempfile.hxx
index a195bd1a24aa..d1f8335b38d5 100644
--- a/filter/source/placeware/tempfile.hxx
+++ b/filter/source/placeware/tempfile.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tempfile.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/uno.cxx b/filter/source/placeware/uno.cxx
index d42320c7c15d..c11b4392a1b4 100644
--- a/filter/source/placeware/uno.cxx
+++ b/filter/source/placeware/uno.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: uno.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/zip.cxx b/filter/source/placeware/zip.cxx
index b99b0532138b..494ce2e576c4 100644
--- a/filter/source/placeware/zip.cxx
+++ b/filter/source/placeware/zip.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: zip.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/zip.hxx b/filter/source/placeware/zip.hxx
index 4977c048af75..b43ed32b8e7d 100644
--- a/filter/source/placeware/zip.hxx
+++ b/filter/source/placeware/zip.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: zip.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/placeware/zipfile.hxx b/filter/source/placeware/zipfile.hxx
index 3cec2eb5c494..33d9c1d1d587 100644
--- a/filter/source/placeware/zipfile.hxx
+++ b/filter/source/placeware/zipfile.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: zipfile.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/SOTranscoder.java b/filter/source/svg/SOTranscoder.java
index 02aa67c892b1..d0b3728e5978 100644
--- a/filter/source/svg/SOTranscoder.java
+++ b/filter/source/svg/SOTranscoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SOTranscoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/makefile.mk b/filter/source/svg/makefile.mk
index 17b999ce29bb..0cac9d29e632 100644
--- a/filter/source/svg/makefile.mk
+++ b/filter/source/svg/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -56,9 +52,10 @@ SLOFILES+= $(SLO)$/svgimport.obj
SHL1TARGET=$(TARGET)$(DLLPOSTFIX)
SHL1STDLIBS=\
+ $(EDITENGLIB) \
$(SVXCORELIB) \
$(XMLOFFLIB) \
- $(GOODIESLIB) \
+ $(SVTOOLLIB) \
$(VCLLIB) \
$(UNOTOOLSLIB) \
$(TOOLSLIB) \
diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx
index b55a0224daaa..081a914934c7 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgexport.cxx,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -40,9 +37,9 @@
#include <svx/unopage.hxx>
#include <svx/svdpage.hxx>
#include <svx/svdoutl.hxx>
-#include <svx/outliner.hxx>
-#include <svx/flditem.hxx>
-#include <svx/numitem.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/flditem.hxx>
+#include <editeng/numitem.hxx>
using ::rtl::OUString;
diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index 7e594b4377c2..118474bbe2b0 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgfilter.cxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/svgfilter.hxx b/filter/source/svg/svgfilter.hxx
index caf6b005cd06..0bbc64e2c244 100644
--- a/filter/source/svg/svgfilter.hxx
+++ b/filter/source/svg/svgfilter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgfilter.hxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -77,7 +74,7 @@
#include <vcl/svapp.hxx>
#include <vcl/outdev.hxx>
#include <vcl/metaact.hxx>
-#include <goodies/grfmgr.hxx>
+#include <svtools/grfmgr.hxx>
#include <svx/unomodel.hxx>
#include <svx/unoapi.hxx>
#include <svx/svdxcgv.hxx>
diff --git a/filter/source/svg/svgfontexport.cxx b/filter/source/svg/svgfontexport.cxx
index 789c6e270927..8fa9db03eacf 100644
--- a/filter/source/svg/svgfontexport.cxx
+++ b/filter/source/svg/svgfontexport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgfontexport.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/svgfontexport.hxx b/filter/source/svg/svgfontexport.hxx
index 4dfd392ca374..9147efb27a55 100644
--- a/filter/source/svg/svgfontexport.hxx
+++ b/filter/source/svg/svgfontexport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgfontexport.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/svgimport.cxx b/filter/source/svg/svgimport.cxx
index 7139f559fa29..fd4f711cb085 100644
--- a/filter/source/svg/svgimport.cxx
+++ b/filter/source/svg/svgimport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgimport.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/svgscript.hxx b/filter/source/svg/svgscript.hxx
index c511a2872141..9be9f268dd91 100644
--- a/filter/source/svg/svgscript.hxx
+++ b/filter/source/svg/svgscript.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgscript.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/svguno.cxx b/filter/source/svg/svguno.cxx
index a927fa9d858a..aa91889fc93f 100644
--- a/filter/source/svg/svguno.cxx
+++ b/filter/source/svg/svguno.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svguno.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index b66118c53473..15f83c3be407 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgwriter.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -330,7 +327,7 @@ NMSP_RTL::OUString SVGAttributeWriter::GetFontStyle( const Font& rFont )
// -----------------------------------------------------------------------------
-NMSP_RTL::OUString SVGAttributeWriter::GetPaintStyle( const Color& rLineColor, const Color& rFillColor )
+NMSP_RTL::OUString SVGAttributeWriter::GetPaintStyle( const Color& rLineColor, const Color& rFillColor, const LineInfo* pLineInfo )
{
FastString aStyle;
@@ -357,6 +354,68 @@ NMSP_RTL::OUString SVGAttributeWriter::GetPaintStyle( const Color& rLineColor, c
aStyle += B2UCONST( "stroke-opacity:" );
aStyle += NMSP_RTL::OUString::valueOf( ( 255 - (double) rLineColor.GetTransparency() ) / 255.0 );
}
+
+ if(pLineInfo)
+ {
+ // more infos for line needed
+ if(pLineInfo->GetWidth() > 1)
+ {
+ aStyle += B2UCONST( ";" );
+ aStyle += B2UCONST( "stroke-width:" );
+ aStyle += NMSP_RTL::OUString::valueOf(pLineInfo->GetWidth());
+ }
+
+ if(LINE_DASH == pLineInfo->GetStyle())
+ {
+ aStyle += B2UCONST( ";" );
+ aStyle += B2UCONST( "stroke-dasharray:" );
+ const long nDashLen(pLineInfo->GetDashLen());
+ const long nDotLen(pLineInfo->GetDotLen());
+ const long nDistance(pLineInfo->GetDistance());
+ bool bIsFirst(true);
+
+ for(sal_uInt16 a(0); a < pLineInfo->GetDashCount(); a++)
+ {
+ if(bIsFirst)
+ aStyle += B2UCONST(" "), bIsFirst = false;
+ else
+ aStyle += B2UCONST(",");
+ aStyle += NMSP_RTL::OUString::valueOf(nDashLen);
+ aStyle += B2UCONST(",");
+ aStyle += NMSP_RTL::OUString::valueOf(nDistance);
+ }
+
+ for(sal_uInt16 b(0); b < pLineInfo->GetDotCount(); b++)
+ {
+ if(bIsFirst)
+ aStyle += B2UCONST(" "), bIsFirst = false;
+ else
+ aStyle += B2UCONST(",");
+ aStyle += NMSP_RTL::OUString::valueOf(nDotLen);
+ aStyle += B2UCONST(",");
+ aStyle += NMSP_RTL::OUString::valueOf(nDistance);
+ }
+ }
+
+ if(basegfx::B2DLINEJOIN_MITER != pLineInfo->GetLineJoin())
+ {
+ aStyle += B2UCONST( ";" );
+ aStyle += B2UCONST( "stroke-linejoin:" );
+
+ switch(pLineInfo->GetLineJoin())
+ {
+ default: // B2DLINEJOIN_NONE, B2DLINEJOIN_MIDDLE, B2DLINEJOIN_MITER
+ aStyle += B2UCONST( "miter" );
+ break;
+ case basegfx::B2DLINEJOIN_ROUND:
+ aStyle += B2UCONST( "round" );
+ break;
+ case basegfx::B2DLINEJOIN_BEVEL:
+ aStyle += B2UCONST( "bevel" );
+ break;
+ }
+ }
+ }
}
// fill color
@@ -403,12 +462,12 @@ void SVGAttributeWriter::SetFontAttr( const Font& rFont )
// -----------------------------------------------------------------------------
-void SVGAttributeWriter::SetPaintAttr( const Color& rLineColor, const Color& rFillColor )
+void SVGAttributeWriter::SetPaintAttr( const Color& rLineColor, const Color& rFillColor, const LineInfo* pLineInfo )
{
if( !mpElemPaint || ( rLineColor != maCurLineColor ) || ( rFillColor != maCurFillColor ) )
{
delete mpElemPaint;
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, GetPaintStyle( maCurLineColor = rLineColor, maCurFillColor = rFillColor ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, GetPaintStyle( maCurLineColor = rLineColor, maCurFillColor = rFillColor, pLineInfo ) );
mpElemPaint = new SvXMLElementExport( mrExport, XML_NAMESPACE_NONE, aXMLElemG, TRUE, TRUE );
}
}
@@ -460,6 +519,48 @@ Size SVGActionWriter::ImplMap( const Size& rSz ) const
// -----------------------------------------------------------------------------
+LineInfo SVGActionWriter::ImplMap( const LineInfo& rLineInfo ) const
+{
+ LineInfo aInfo(rLineInfo);
+ long aTemp(0);
+
+ if(aInfo.GetStyle() == LINE_DASH)
+ {
+ if(aInfo.GetDotCount() && aInfo.GetDotLen())
+ {
+ aTemp = aInfo.GetDotLen();
+ mpVDev->LogicToLogic(&aTemp, 1, &mpVDev->GetMapMode(), &maTargetMapMode);
+ aInfo.SetDotLen(Max(aTemp, 1L));
+ }
+ else
+ aInfo.SetDotCount(0);
+
+ if(aInfo.GetDashCount() && aInfo.GetDashLen())
+ {
+ aTemp = aInfo.GetDashLen();
+ mpVDev->LogicToLogic(&aTemp, 1, &mpVDev->GetMapMode(), &maTargetMapMode);
+ aInfo.SetDashLen(Max(aTemp, 1L));
+ }
+ else
+ aInfo.SetDashCount(0);
+
+ aTemp = aInfo.GetDistance();
+ mpVDev->LogicToLogic(&aTemp, 1, &mpVDev->GetMapMode(), &maTargetMapMode);
+ aInfo.SetDistance(aTemp);
+
+ if((!aInfo.GetDashCount() && !aInfo.GetDotCount()) || !aInfo.GetDistance())
+ aInfo.SetStyle(LINE_SOLID);
+ }
+
+ aTemp = aInfo.GetWidth();
+ mpVDev->LogicToLogic(&aTemp, 1, &mpVDev->GetMapMode(), &maTargetMapMode);
+ aInfo.SetWidth(aTemp);
+
+ return aInfo;
+}
+
+// -----------------------------------------------------------------------------
+
NMSP_RTL::OUString SVGActionWriter::GetValueString( sal_Int32 nVal )
{
return ::rtl::OUString::valueOf( nVal );
@@ -1017,7 +1118,16 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
{
const MetaLineAction* pA = (const MetaLineAction*) pAction;
- mpContext->SetPaintAttr( mpVDev->GetLineColor(), mpVDev->GetLineColor() );
+ if(pA->GetLineInfo().IsDefault())
+ {
+ mpContext->SetPaintAttr( mpVDev->GetLineColor(), mpVDev->GetLineColor() );
+ }
+ else
+ {
+ const LineInfo aMappedLineInfo(ImplMap(pA->GetLineInfo()));
+ mpContext->SetPaintAttr( mpVDev->GetLineColor(), mpVDev->GetLineColor(), &aMappedLineInfo );
+ }
+
ImplWriteLine( pA->GetStartPoint(), pA->GetEndPoint(), NULL, pStyle );
}
}
@@ -1113,8 +1223,51 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
if( rPoly.GetSize() )
{
- mpContext->SetPaintAttr( mpVDev->GetLineColor(), mpVDev->GetFillColor() );
- ImplWritePolyPolygon( rPoly, sal_True, pStyle );
+ bool bNoLineJoin(false);
+
+ if(pA->GetLineInfo().IsDefault())
+ {
+ mpContext->SetPaintAttr( mpVDev->GetLineColor(), mpVDev->GetFillColor() );
+ }
+ else
+ {
+ const LineInfo aMappedLineInfo(ImplMap(pA->GetLineInfo()));
+ bNoLineJoin = basegfx::B2DLINEJOIN_NONE == aMappedLineInfo.GetLineJoin();
+ mpContext->SetPaintAttr( mpVDev->GetLineColor(), mpVDev->GetFillColor(), &aMappedLineInfo );
+ }
+
+ if(bNoLineJoin)
+ {
+ // emulate B2DLINEJOIN_NONE by creating single edges
+ const sal_uInt16 nPoints(rPoly.GetSize());
+ const bool bCurve(rPoly.HasFlags());
+
+ for(sal_uInt16 a(0); a + 1 < nPoints; a++)
+ {
+ if(bCurve
+ && POLY_NORMAL != rPoly.GetFlags(a + 1)
+ && a + 2 < nPoints
+ && POLY_NORMAL != rPoly.GetFlags(a + 2)
+ && a + 3 < nPoints)
+ {
+ const Polygon aSnippet(4,
+ rPoly.GetConstPointAry() + a,
+ rPoly.GetConstFlagAry() + a);
+ ImplWritePolyPolygon( aSnippet, sal_True, pStyle );
+ a += 2;
+ }
+ else
+ {
+ const Polygon aSnippet(2,
+ rPoly.GetConstPointAry() + a);
+ ImplWritePolyPolygon( aSnippet, sal_True, pStyle );
+ }
+ }
+ }
+ else
+ {
+ ImplWritePolyPolygon( rPoly, sal_True, pStyle );
+ }
}
}
}
diff --git a/filter/source/svg/svgwriter.hxx b/filter/source/svg/svgwriter.hxx
index 2a1e5a9ee514..113448a551d5 100644
--- a/filter/source/svg/svgwriter.hxx
+++ b/filter/source/svg/svgwriter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: svgwriter.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -156,10 +153,10 @@ public:
virtual ~SVGAttributeWriter();
::rtl::OUString GetFontStyle( const Font& rFont );
- ::rtl::OUString GetPaintStyle( const Color& rLineColor, const Color& rFillColor );
+ ::rtl::OUString GetPaintStyle( const Color& rLineColor, const Color& rFillColor, const LineInfo* pLineInfo );
void SetFontAttr( const Font& rFont );
- void SetPaintAttr( const Color& rLineColor, const Color& rFillColor );
+ void SetPaintAttr( const Color& rLineColor, const Color& rFillColor, const LineInfo* pLineInfo = 0);
};
// -------------------
@@ -192,6 +189,7 @@ private:
long ImplMap( sal_Int32 nVal ) const;
Point ImplMap( const Point& rPt ) const;
Size ImplMap( const Size& rSz ) const;
+ LineInfo ImplMap( const LineInfo& rLineInfo ) const;
inline Rectangle ImplMap( const Rectangle& rRect ) const { return Rectangle( ImplMap( rRect.TopLeft() ), ImplMap( rRect.GetSize() ) ); }
void ImplWriteLine( const Point& rPt1, const Point& rPt2, const Color* pLineColor = NULL, const ::rtl::OUString* pStyle = NULL );
diff --git a/filter/source/t602/filterenv.cxx b/filter/source/t602/filterenv.cxx
index b9941d8ce15b..f7fc319c27e3 100644
--- a/filter/source/t602/filterenv.cxx
+++ b/filter/source/t602/filterenv.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterenv.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/t602/makefile.mk b/filter/source/t602/makefile.mk
index eb183798f4a2..c51c055978ae 100644
--- a/filter/source/t602/makefile.mk
+++ b/filter/source/t602/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/t602/t602filter.cxx b/filter/source/t602/t602filter.cxx
index 8043f02af1ee..6ee62e306208 100644
--- a/filter/source/t602/t602filter.cxx
+++ b/filter/source/t602/t602filter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: t602filter.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/t602/t602filter.hrc b/filter/source/t602/t602filter.hrc
index 798e9700a6eb..5ddb1e158521 100644
--- a/filter/source/t602/t602filter.hrc
+++ b/filter/source/t602/t602filter.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: t602filter.hrc,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/t602/t602filter.hxx b/filter/source/t602/t602filter.hxx
index dc4a2919ad2e..077787689bb2 100644
--- a/filter/source/t602/t602filter.hxx
+++ b/filter/source/t602/t602filter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: t602filter.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/t602/t602filter.src b/filter/source/t602/t602filter.src
index ca9a36944003..1862bb2586c6 100644
--- a/filter/source/t602/t602filter.src
+++ b/filter/source/t602/t602filter.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: t602filter.src,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilteradaptor/XmlFilterAdaptor.cxx b/filter/source/xmlfilteradaptor/XmlFilterAdaptor.cxx
index 8a1a21d1cc73..313c1e72dff5 100644
--- a/filter/source/xmlfilteradaptor/XmlFilterAdaptor.cxx
+++ b/filter/source/xmlfilteradaptor/XmlFilterAdaptor.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlFilterAdaptor.cxx,v $
- *
- * $Revision: 1.21 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilteradaptor/XmlFilterAdaptor.hxx b/filter/source/xmlfilteradaptor/XmlFilterAdaptor.hxx
index 2628e08def17..e949f7aa8982 100644
--- a/filter/source/xmlfilteradaptor/XmlFilterAdaptor.hxx
+++ b/filter/source/xmlfilteradaptor/XmlFilterAdaptor.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlFilterAdaptor.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilteradaptor/genericfilter.cxx b/filter/source/xmlfilteradaptor/genericfilter.cxx
index 59ab4a3547d2..f91c7e4f296c 100644
--- a/filter/source/xmlfilteradaptor/genericfilter.cxx
+++ b/filter/source/xmlfilteradaptor/genericfilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: genericfilter.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilteradaptor/makefile.mk b/filter/source/xmlfilteradaptor/makefile.mk
index da4319036874..74a40a38ca95 100644
--- a/filter/source/xmlfilteradaptor/makefile.mk
+++ b/filter/source/xmlfilteradaptor/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.11 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilteradaptor/streamwrap.cxx b/filter/source/xmlfilteradaptor/streamwrap.cxx
index b5e61f210035..42d2a6774057 100755
--- a/filter/source/xmlfilteradaptor/streamwrap.cxx
+++ b/filter/source/xmlfilteradaptor/streamwrap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: streamwrap.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilteradaptor/streamwrap.hxx b/filter/source/xmlfilteradaptor/streamwrap.hxx
index af552e28af1e..dd87dbd13492 100755
--- a/filter/source/xmlfilteradaptor/streamwrap.hxx
+++ b/filter/source/xmlfilteradaptor/streamwrap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: streamwrap.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilterdetect/fdcomp.cxx b/filter/source/xmlfilterdetect/fdcomp.cxx
index 5697ccd9077e..10820fc8f280 100644
--- a/filter/source/xmlfilterdetect/fdcomp.cxx
+++ b/filter/source/xmlfilterdetect/fdcomp.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fdcomp.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilterdetect/filterdetect.cxx b/filter/source/xmlfilterdetect/filterdetect.cxx
index b883814efde0..2509bc88f9af 100644
--- a/filter/source/xmlfilterdetect/filterdetect.cxx
+++ b/filter/source/xmlfilterdetect/filterdetect.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterdetect.cxx,v $
- *
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilterdetect/filterdetect.hxx b/filter/source/xmlfilterdetect/filterdetect.hxx
index 97df5f7e64a7..965e2ceaa1d7 100644
--- a/filter/source/xmlfilterdetect/filterdetect.hxx
+++ b/filter/source/xmlfilterdetect/filterdetect.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterdetect.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xmlfilterdetect/makefile.mk b/filter/source/xmlfilterdetect/makefile.mk
index 05195af889b1..a08346c23127 100644
--- a/filter/source/xmlfilterdetect/makefile.mk
+++ b/filter/source/xmlfilterdetect/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xslt/common/math.xsl b/filter/source/xslt/common/math.xsl
index 166e715d5d96..2b6ce0c89ccf 100644
--- a/filter/source/xslt/common/math.xsl
+++ b/filter/source/xslt/common/math.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: math.xsl,v $
-
- $Revision: 1.8 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
xslt math lib by Wind Li
diff --git a/filter/source/xslt/common/measure_conversion.xsl b/filter/source/xslt/common/measure_conversion.xsl
index 8de5fa1ac034..4533013a5a06 100644
--- a/filter/source/xslt/common/measure_conversion.xsl
+++ b/filter/source/xslt/common/measure_conversion.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: measure_conversion.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xslt/export/common/ooo2ms_docpr.xsl b/filter/source/xslt/export/common/ooo2ms_docpr.xsl
index d90c11297817..cdf5ed9e8f32 100644
--- a/filter/source/xslt/export/common/ooo2ms_docpr.xsl
+++ b/filter/source/xslt/export/common/ooo2ms_docpr.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2ms_docpr.xsl,v $
-
- $Revision: 1.10 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:template match="office:meta">
diff --git a/filter/source/xslt/export/spreadsheetml/formular.xsl b/filter/source/xslt/export/spreadsheetml/formular.xsl
index 859ef29c2e99..3acb4f393c42 100644
--- a/filter/source/xslt/export/spreadsheetml/formular.xsl
+++ b/filter/source/xslt/export/spreadsheetml/formular.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: formular.xsl,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/filter/source/xslt/export/spreadsheetml/ooo2spreadsheetml.xsl b/filter/source/xslt/export/spreadsheetml/ooo2spreadsheetml.xsl
index e91fff273245..027f732d2f2a 100644
--- a/filter/source/xslt/export/spreadsheetml/ooo2spreadsheetml.xsl
+++ b/filter/source/xslt/export/spreadsheetml/ooo2spreadsheetml.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2spreadsheetml.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/filter/source/xslt/export/spreadsheetml/style_mapping.xsl b/filter/source/xslt/export/spreadsheetml/style_mapping.xsl
index 70c10aa798cf..a3396f1f9ac3 100644
--- a/filter/source/xslt/export/spreadsheetml/style_mapping.xsl
+++ b/filter/source/xslt/export/spreadsheetml/style_mapping.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: style_mapping.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/filter/source/xslt/export/spreadsheetml/styles.xsl b/filter/source/xslt/export/spreadsheetml/styles.xsl
index fdacf07c7133..8b8875d0de61 100644
--- a/filter/source/xslt/export/spreadsheetml/styles.xsl
+++ b/filter/source/xslt/export/spreadsheetml/styles.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: styles.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/filter/source/xslt/export/spreadsheetml/table.xsl b/filter/source/xslt/export/spreadsheetml/table.xsl
index b9952f8f65cc..6813b2510e1c 100644
--- a/filter/source/xslt/export/spreadsheetml/table.xsl
+++ b/filter/source/xslt/export/spreadsheetml/table.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.xsl,v $
-
- $Revision: 1.8 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/filter/source/xslt/export/wiki/mediawiki.ott b/filter/source/xslt/export/wiki/mediawiki.ott
deleted file mode 100644
index eb94e9607bc0..000000000000
--- a/filter/source/xslt/export/wiki/mediawiki.ott
+++ /dev/null
Binary files differ
diff --git a/filter/source/xslt/export/wiki/odt2mediawiki.xsl b/filter/source/xslt/export/wiki/odt2mediawiki.xsl
deleted file mode 100755
index 8d21a1cda1fd..000000000000
--- a/filter/source/xslt/export/wiki/odt2mediawiki.xsl
+++ /dev/null
@@ -1,1567 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- odt2wiki: OpenDocument to WikiMedia transformation
- Copyright (C) 2007 Bernhard Haumacher (haui at haumacher dot de)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--->
-<stylesheet version="1.0"
- xmlns="http://www.w3.org/1999/XSL/Transform"
-
- xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
- xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
- xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
- xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
- xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
- xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
- xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
- xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
- xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
- xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
- xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
- xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:math="http://www.w3.org/1998/Math/MathML"
- xmlns:dom="http://www.w3.org/2001/xml-events"
- xmlns:xforms="http://www.w3.org/2002/xforms"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
->
-
- <!--
- == Customization options ==
- -->
-
- <!-- Constant defining the newline token. -->
- <param name="NL" select="'&#10;'"/>
-
- <!-- String that a tabulator is expanded with in preformatted paragraphs. -->
-
- <variable name="codetabdocument-value"
- select="/office:document/office:meta/meta:user-defined[@meta:name='CODE_TAB_REPLACEMENT']"/>
-
- <param name="CODE_TAB_REPLACEMENT">
-
- <choose>
-
- <when test="boolean($codetabdocument-value)">
- <value-of select="$codetabdocument-value"/>
- </when>
-
- <otherwise>
- <value-of select="' '"/>
- </otherwise>
- </choose>
- </param>
-
- <!--
- Switch that suppresses separation of paragraphs with empty lines.
- (Set to 1 to activate) -->
- <param name="CODE_JOIN_PARAGRAPHS"
- select="boolean(string(/office:document/office:meta/meta:user-defined[@meta:name='CODE_JOIN_PARAGRAPHS']) != 'false')"/>
-
- <variable name="document-value"
- select="/office:document/office:meta/meta:user-defined[@meta:name='CODE_STYLES']"/>
-
- <param name="CODE_STYLES">
-
- <choose>
- <when test="boolean($document-value)">
- <value-of select="$document-value"/>
- </when>
-
- <otherwise>
- <value-of select="''"/>
- </otherwise>
- </choose>
- </param>
-
- <variable name="table-class"
- select="/office:document/office:meta/meta:user-defined[@meta:name='TABLE_CLASS']"/>
-
- <param name="TABLE_CLASS">
- <choose>
- <when test="boolean($table-class)">
- <value-of select="$table-class"/>
- </when>
-
- <otherwise>
- <value-of select="''"/>
- </otherwise>
- </choose>
- </param>
-
- <variable name="USE_DEFAULT_TABLE_CLASS" select="string-length($TABLE_CLASS) &gt; 0"/>
-
-
- <!--
- == Wiki style constants ==
- -->
-
- <!-- Bold character style. -->
- <variable name="BOLD_BIT" select="1"/>
-
- <!-- Italic character style. -->
- <variable name="ITALIC_BIT" select="2"/>
-
- <!-- Subscript character style. -->
- <variable name="SUBSCRIPT_BIT" select="4"/>
-
- <!-- Superscript character style. -->
- <variable name="SUPERSCRIPT_BIT" select="8"/>
-
- <!-- Typewriter character style. -->
- <variable name="TYPEWRITER_BIT" select="16"/>
-
- <!-- Preformatted text paragraph style. -->
- <variable name="CODE_BIT" select="32"/>
-
- <!-- Centered paragraph style. -->
- <variable name="CENTER_BIT" select="64"/>
-
- <!-- Right aligned paragraph style. -->
- <variable name="RIGHT_BIT" select="128"/>
-
- <!-- Constant defining the empty style. -->
- <variable name="NO_STYLE" select="0"/>
-
-
-
- <output
- method="text"
- media-type="text/plain"
- encoding="UTF-8"
- />
-
-
- <!--
- == Reference resolution ==
- -->
-
- <key
- name="style-ref"
- match="//style:style"
- use="@style:name"
- />
-
- <key
- name="list-style-ref"
- match="//text:list-style"
- use="@style:name"
- />
-
- <key
- name="font-face-ref"
- match="//style:font-face"
- use="@style:name"
- />
-
- <key
- name="reference-resolution"
- match="//text:reference-mark | //text:reference-mark-start"
- use="@text:name"
- />
-
-
- <!--
- Multiple pages (draw only)
- -->
-
- <template match="draw:page">
- <value-of select="concat('&#10;&lt;!-- Page ', @draw:name, '--&gt;&#10;')"/>
- <apply-templates/>
- <value-of select="'&#10;----&#10;&#10;'"/>
- </template>
-
-
- <!--
- == Lists ==
- -->
-
- <template match="text:list">
- <!--
- Check, whether this list is used to implement the outline numbering
- for headings. Such list must not be exported, because within the wiki,
- automatic outline numbering is performed. An outline list has a single
- text:h element as its single leaf grandchild.
-
- This method of section numbering seems not to be used when creating new
- documents with OpenOffice.org 2.2, but the document containing the
- OpenDocument specification version 1.1 uses such numbering through nested
- lists.
- -->
- <choose>
- <when test="boolean(./descendant::node()[not(./self::text:list) and not(./self::text:list-item) and not(./ancestor-or-self::text:h)])">
- <apply-templates/>
- </when>
-
- <otherwise>
- <apply-templates select=".//text:h"/>
- </otherwise>
- </choose>
- </template>
-
- <template match="text:list-item">
- <if test="position() &gt; 1 or boolean(ancestor::text:list-item)">
- <value-of select="$NL"/>
- </if>
- <variable name="list-style"
- select="key('list-style-ref',ancestor::text:list[boolean(@text:style-name)][1]/@text:style-name)"/>
- <call-template name="mk-list-token">
- <with-param name="list-style" select="$list-style"/>
- <with-param name="level" select="count(ancestor::text:list)"/>
- </call-template>
- <text> </text>
- <apply-templates/>
- <if test="position() = last() and not(boolean(ancestor::text:list-item))">
- <!-- End of (potentially nested) list is marked with a double newline. -->
- <value-of select="$NL"/>
- <value-of select="$NL"/>
- </if>
- </template>
-
- <template name="mk-list-token">
- <param name="list-style"/>
- <param name="level"/>
-
- <if test="$level &gt; 1">
- <call-template name="mk-list-token">
- <with-param name="list-style" select="$list-style"/>
- <with-param name="level" select="$level - 1"/>
- </call-template>
- </if>
-
- <variable name="number-style" select="$list-style/text:list-level-style-number[@text:level=$level]"/>
- <variable name="bullet-style" select="$list-style/text:list-level-style-bullet[@text:level=$level]"/>
- <choose>
- <when test="boolean($number-style)">
- <choose>
- <when test="string-length($number-style/@style:num-format) &gt; 0">
- <text>#</text>
- </when>
- <otherwise>
- <text>:</text>
- </otherwise>
- </choose>
- </when>
- <when test="boolean($bullet-style)">
- <text>*</text>
- </when>
- </choose>
- </template>
-
-
- <!--
- == Headings ==
- -->
-
- <template match="text:h">
- <if test="string-length(.) &gt; 0">
- <variable name="token">
- <call-template name="mk-heading-prefix">
- <with-param name="level" select="@text:outline-level"/>
- </call-template>
- </variable>
- <value-of select="$token"/>
- <text> </text>
- <apply-templates/>
- <text> </text>
- <value-of select="$token"/>
- <value-of select="$NL"/>
- </if>
- </template>
-
- <template match="text:index-title">
- <text>== </text>
- <apply-templates/>
- <text> ==</text>
- <value-of select="$NL"/>
- </template>
-
- <!--
- Function generating a wiki heading prefix.
-
- @param level
- The heading level. The value must be between 1 and 5.
- -->
- <template name="mk-heading-prefix">
- <param name="level"/>
- <choose>
- <when test="$level &gt; 5">
- <call-template name="mk-heading-prefix">
- <with-param name="level" select="5"/>
- </call-template>
- </when>
- <when test="$level &gt; 0">
- <text>=</text>
- <call-template name="mk-heading-prefix">
- <with-param name="level" select="$level - 1"/>
- </call-template>
- </when>
- </choose>
- </template>
-
- <!--
- Funktion generating a token consisting of the given character
- repeated 'level' times.
-
- @param level
- The lengh of the result.
- @param char
- The character that should be repeated 'level' times.
- -->
- <template name="mk-token">
- <param name="level"/>
- <param name="char"/>
- <if test="$level &gt; 0">
- <value-of select="$char"/>
- <call-template name="mk-token">
- <with-param name="level" select="$level - 1"/>
- <with-param name="char" select="$char"/>
- </call-template>
- </if>
- </template>
-
-
- <!--
- == Tables ==
- -->
-
- <template match="table:table">
- <text>&#10;</text>
- <text>{|</text>
-
- <choose>
- <when test="$USE_DEFAULT_TABLE_CLASS">
- <text> class="</text>
- <value-of select="$TABLE_CLASS"/>
- <text>"</text>
- </when>
-
- <otherwise>
- <!-- Default setting to translate detailed office table cell styles correctly. -->
- <text> style="border-spacing:0;"</text>
- </otherwise>
- </choose>
-
- <text>&#10;</text>
- <apply-templates/>
- <text>&#10;</text>
- <text>|}</text>
- <text>&#10;</text>
- </template>
-
- <template match="table:table-header-rows">
- <apply-templates/>
- </template>
-
- <template match="table:table-row[position() &lt; last()] | table:table-header-rows/table:table-row">
- <apply-templates/>
- <text>&#10;</text>
- <text>|-</text>
- <text>&#10;</text>
- </template>
-
- <template match="table:table-row">
- <apply-templates/>
- </template>
-
- <template match="table:table-header-rows//table:table-cell">
- <text>! </text>
- <if test="@table:number-columns-spanned">
- <text>colspan="</text>
- <value-of select="@table:number-columns-spanned"/>
- <text>" | </text>
- </if>
- <apply-templates/>
- <value-of select="$NL"/>
- </template>
-
- <template match="table:table-cell">
- <text>|</text>
- <if test="@table:number-columns-spanned">
- <text> colspan="</text>
- <value-of select="@table:number-columns-spanned"/>
- <text>" </text>
- </if>
- <if test="not($USE_DEFAULT_TABLE_CLASS) and boolean(@table:style-name)">
- <variable name="style-element" select="key('style-ref', @table:style-name)"/>
-
- <variable name="style">
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'background-color'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:background-color"/>
- </call-template>
-
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'border'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'border-top'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-top"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'border-bottom'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-bottom"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'border-left'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-left"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'border-right'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-right"/>
- </call-template>
-
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'padding'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'padding-top'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-top"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'padding-bottom'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-bottom"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'padding-left'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-left"/>
- </call-template>
- <call-template name="translate-style-property">
- <with-param name="style-name" select="'padding-right'"/>
- <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-right"/>
- </call-template>
- </variable>
-
- <if test="string-length($style) &gt; 0">
- <text> style="</text>
- <value-of select="$style"/>
- <text>"</text>
- </if>
- </if>
- <text>| </text>
- <apply-templates/>
- <value-of select="$NL"/>
- </template>
-
- <template name="translate-style-property">
- <param name="style-name"/>
- <param name="style-property"/>
-
- <if test="boolean($style-property)">
- <value-of select="$style-name"/>
- <text>:</text>
- <value-of select="string($style-property)"/>
- <text>;</text>
- </if>
- </template>
-
- <!--
- == WikiMath ==
- -->
-
- <template match="text:span[@text:style-name='WikiMath']">
- <value-of select="'&lt;math&gt;'"/>
- <apply-templates/>
- <value-of select="'&lt;/math&gt;'"/>
- </template>
-
-
- <!--
- == Native links ==
- -->
-
- <template match="text:a">
- <variable name="link-ref" select="@xlink:href"/>
- <choose>
- <when test="string-length($link-ref) &gt; 0">
- <variable name="link-label" select="string(.)"/>
- <text>[</text>
- <value-of select="$link-ref"/>
- <text> </text>
- <value-of select="$link-label"/>
- <text>]</text>
- </when>
-
- <otherwise>
- <apply-templates/>
- </otherwise>
- </choose>
- </template>
-
-
- <!--
- == WikiLink ==
- -->
-
- <template match="text:span[@text:style-name='WikiLink']">
- <value-of select="'[['"/>
- <variable name="link-def" select="string(.)"/>
- <variable name="link-label" select="normalize-space(substring-before($link-def, '['))"/>
- <variable name="link-ref" select="normalize-space(substring-before(substring-after($link-def, '['), ']'))"/>
- <choose>
- <when test="boolean($link-ref)">
- <value-of select="concat($link-ref, '|', $link-label)"/>
- </when>
- <otherwise>
- <value-of select="$link-def"/>
- </otherwise>
- </choose>
- <value-of select="']]'"/>
- </template>
-
-
- <!--
- == Paragraphs ==
- -->
-
- <template match="text:p[string-length(.) &gt; 0]">
- <variable name="style">
- <call-template name="mk-style-set">
- <with-param name="node" select="."/>
- </call-template>
- </variable>
-
- <variable name="code"
- select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
- <variable name="center"
- select="($style mod (2 * $CENTER_BIT)) - ($style mod ($CENTER_BIT)) != 0"/>
- <variable name="right"
- select="($style mod (2 * $RIGHT_BIT)) - ($style mod ($RIGHT_BIT)) != 0"/>
-
- <choose>
- <when test="$center">
- <text>&lt;center&gt;</text>
- </when>
- <when test="$right">
- <text>&lt;div align="right"&gt;</text>
- </when>
- <when test="$code">
- <value-of select="' '"/>
- </when>
- </choose>
-
- <apply-templates/>
-
- <choose>
- <when test="$center">
- <text>&lt;/center&gt;</text>
- </when>
- <when test="$right">
- <text>&lt;/div&gt;</text>
- </when>
- </choose>
-
- <variable name="paragraph-right"
- select="./following-sibling::*[1]/self::text:p"/>
-
- <choose>
- <when test="boolean($paragraph-right)">
- <!--
- Insert end of line only if not within a list. Within wiki lists,
- a line break leaves the current list item.
- -->
- <choose>
- <when test="boolean(ancestor::text:list-item)">
- <text>&lt;br/&gt; </text>
- </when>
- <when test="$code">
- <variable name="style-right">
- <call-template name="mk-style-set">
- <with-param name="node" select="$paragraph-right"/>
- </call-template>
- </variable>
-
- <variable name="code-right"
- select="($style-right mod (2 * $CODE_BIT)) - ($style-right mod ($CODE_BIT)) != 0"/>
-
- <choose>
- <when test="$code-right">
- <choose>
- <when test="$CODE_JOIN_PARAGRAPHS">
- <value-of select="$NL"/>
- </when>
-
- <otherwise>
- <value-of select="$NL"/>
- <value-of select="' '"/>
- <value-of select="$NL"/>
- </otherwise>
- </choose>
- </when>
- <otherwise>
- <value-of select="$NL"/>
- <value-of select="$NL"/>
- </otherwise>
- </choose>
- </when>
- <otherwise>
- <value-of select="$NL"/>
- <value-of select="$NL"/>
- </otherwise>
- </choose>
- </when>
- <when test="boolean(./following-sibling::*[1]/self::text:h) or boolean(./following-sibling::*[1]/self::table:table) or boolean(./following-sibling::*[1]/self::text:bibliography)">
- <!-- Newline before following heading or table. -->
- <value-of select="$NL"/>
- <value-of select="$NL"/>
- </when>
- <when test="./following-sibling::*[1]/self::text:list and not(ancestor::text:list-item)">
- <value-of select="$NL"/>
- <value-of select="$NL"/>
- </when>
- </choose>
- </template>
-
- <template match="text:p[string-length(.) = 0 and string-length(preceding-sibling::*[1]/self::text:p) &gt; 0]">
- <value-of select="$NL"/>
- </template>
-
-
- <!--
- == Preformatted text ==
- -->
-
- <template match="text:s">
- <variable name="style">
- <call-template name="mk-style-set">
- <with-param name="node" select="."/>
- </call-template>
- </variable>
-
- <variable name="code"
- select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
-
- <if test="$code">
- <choose>
- <when test="@text:c">
- <call-template name="mk-token">
- <with-param name="level" select="@text:c"/>
- <with-param name="char" select="' '"/>
- </call-template>
- </when>
- <otherwise>
- <value-of select="' '"/>
- </otherwise>
- </choose>
- </if>
- </template>
-
- <template match="text:tab">
- <variable name="style">
- <call-template name="mk-style-set">
- <with-param name="node" select="."/>
- </call-template>
- </variable>
-
- <variable name="code"
- select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
-
- <if test="$code">
- <value-of select="$CODE_TAB_REPLACEMENT"/>
- </if>
- </template>
-
- <template match="text:line-break">
- <variable name="style">
- <call-template name="mk-style-set">
- <with-param name="node" select="."/>
- </call-template>
- </variable>
-
- <variable name="code"
- select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
-
- <if test="$code">
- <value-of select="$NL"/>
- <value-of select="' '"/>
- </if>
- </template>
-
- <!--
- Footnotes
- -->
-
- <template match="text:note-body">
- <variable name="note" select="./parent::text:note"/>
-
- <if test="$note/@text:note-class = 'footnote'">
- <text>&lt;ref name="</text>
- <value-of select="$note/@text:id"/>
- <text>"&gt;</text>
- <apply-templates/>
- <text>&lt;/ref&gt;</text>
- </if>
- </template>
-
- <template match="text:note-ref[@text:note-class='footnote']">
- <text>&lt;ref name="</text>
- <value-of select="@text:ref-name"/>
- <text>"/&gt;</text>
- </template>
-
-
- <!--
- == Images ==
- -->
-
- <template match="draw:text-box[boolean(.//draw:image)]">
- <variable name="image" select=".//draw:image[1]"/>
-
- <variable name="image-description">
- <apply-templates/>
- </variable>
-
- <text>[[</text>
- <call-template name="mk-image-name">
- <with-param name="image" select="$image"/>
- </call-template>
- <text>|thumb|</text>
- <value-of select="normalize-space($image-description)"/>
- <text>]]</text>
- </template>
-
- <template match="draw:image[not(boolean(ancestor::draw:text-box))]">
- <text>[[</text>
- <call-template name="mk-image-name">
- <with-param name="image" select="."/>
- </call-template>
- <text>]]</text>
- </template>
-
- <template name="mk-image-name">
- <param name="image"/>
-
- <variable name="base-name">
- <call-template name="mk-base-name">
- <with-param name="href" select="$image/@xlink:href"/>
- </call-template>
- </variable>
-
- <if test="not(starts-with($base-name, 'Image:'))">
- <value-of select="'Image:'"/>
- </if>
- <value-of select="$base-name"/>
- </template>
-
- <template name="mk-base-name">
- <param name="href"/>
-
- <variable name="result" select="substring-after($href, '/')"/>
- <choose>
- <when test="boolean($result)">
- <call-template name="mk-base-name">
- <with-param name="href" select="$result"/>
- </call-template>
- </when>
- <otherwise>
- <value-of select="$href"/>
- </otherwise>
- </choose>
- </template>
-
- <!-- Frames -->
-
- <template match="draw:frame">
- <choose>
- <when test="draw:object/math:math">
- <apply-templates select="draw:object/math:math[1]"/>
- </when>
-
- <when test="draw:image">
- <apply-templates select="draw:image[1]"/>
- </when>
-
- <otherwise>
- <apply-templates select="./*[1]"/>
- </otherwise>
- </choose>
-
- </template>
-
- <!-- Formulas (Objects) -->
-
- <include href="math/mmltex.xsl"/>
-
- <template match="math:math" priority="1">
- <text>&lt;math&gt;</text>
- <apply-templates/>
- <text>&lt;/math&gt;</text>
- </template>
-
-
- <!--
- References
- -->
-
- <!-- TODO: text:bibliography-mark -->
-
- <template match="text:reference-ref">
- <variable name="reference-mark" select="key('reference-resolution', @text:ref-name)"/>
-
- <choose>
- <when test="boolean($reference-mark)">
- <!--
- In wiki syntax, only a local reference to a heading can be inserted.
- If the link target is a descendant of a heading element, a link can be
- inserted in the result. -->
- <variable name="header-anchor" select="$reference-mark/ancestor::text:h[1]"/>
- <if test="boolean($header-anchor)">
- <text>[[#</text>
- <value-of select="string($header-anchor)"/>
- <text>|</text>
- </if>
-
- <variable name="reference-text" select="string(.)"/>
-
- <choose>
- <!-- Check, whether the reference text is cached in the document. -->
- <when test="string-length($reference-text) &gt; 0">
- <value-of select="$reference-text"/>
- </when>
-
- <otherwise>
- <!--
- TODO: Evaluate the @text:reference-format attribute and
- generate the replacement text (difficult).-->
- <text>(REFERENCE TEXT UNAVAILABLE: "</text>
- <value-of select="@text:ref-name"/>
- <text>")</text>
- </otherwise>
- </choose>
-
- <if test="boolean($header-anchor)">
- <text>]]</text>
- </if>
- </when>
-
- <otherwise>
- <text>(UNDEFINED REFERENCE: "</text>
- <value-of select="@text:ref-name"/>
- <text>")</text>
- </otherwise>
- </choose>
- </template>
-
- <template match="text:reference-mark">
- <!-- TODO: Output an anchor. -->
- <apply-templates/>
- </template>
-
- <template match="text:reference-mark-start">
- <!-- TODO: Output an anchor. -->
- </template>
-
- <!--
- == Plain text ==
- -->
-
- <template match="text:p/text() | text:h/text() | text:span/text() | text:sequence/text() | text:sequence-ref/text() | text:a/text() | text:bookmark-ref/text() | text:reference-mark/text() | text:date/text() | text:time/text() | text:page-number/text() | text:sender-firstname/text() | text:sender-lastname/text() | text:sender-initials/text() | text:sender-title/text() | text:sender-position/text() | text:sender-email/text() | text:sender-phone-private/text() | text:sender-fax/text() | text:sender-company/text() | text:sender-phone-work/text() | text:sender-street/text() | text:sender-city/text() | text:sender-postal-code/text() | text:sender-country/text() | text:sender-state-or-province/text() | text:author-name/text() | text:author-initials/text() | text:chapter/text() | text:file-name/text() | text:template-name/text() | text:sheet-name/text() | text:variable-get/text() | text:variable-input/text() | text:user-field-get/text() | text:user-field-input/text() | text:expression/text() | text:text-input/text() | text:initial-creator/text() | text:creation-date/text() | text:creation-time/text() | text:description/text() | text:user-defined/text() | text:print-date/text() | text:printed-by/text() | text:title/text() | text:subject/text() | text:keywords/text() | text:editing-cycles/text() | text:editing-duration/text() | text:modification-date/text() | text:creator/text() | text:modification-time/text() | text:page-count/text() | text:paragraph-count/text() | text:word-count/text() | text:character-count/text() | text:table-count/text() | text:image-count/text() | text:object-count/text() | text:database-display/text() | text:database-row-number/text() | text:database-name/text() | text:page-variable-get/text() | text:placeholder/text() | text:conditional-text/text() | text:hidden-text/text() | text:execute-macro/text() | text:dde-connection/text() | text:measure/text() | text:table-formula/text()">
- <choose>
- <when test="boolean(./ancestor::table:table-header-rows | ./ancestor::text:h)">
- <!--
- No explicit styles within table headings or section headings,
- because those styles are consistently declared by the Wiki engine. -->
- <value-of select="."/>
- </when>
-
- <when test="string-length(.) &gt; 0">
- <variable name="style">
- <call-template name="mk-style-set">
- <with-param name="node" select="."/>
- </call-template>
- </variable>
-
- <variable name="current-paragraph"
- select="./ancestor::text:p[1]"/>
- <variable name="paragraph-id"
- select="generate-id($current-paragraph)"/>
- <variable name="frames"
- select="$current-paragraph/descendant::draw:frame"/>
- <variable name="frame-count"
- select="count($frames)"/>
-
- <!--
- The current style context consists of all text nodes that are
- descendants of the paragraph ancestor of this text node but not
- descendants of any frame nodes that are descendants of the current
- text nodes paragraph.
- -->
- <variable name="context"
- select="$current-paragraph//text()[not(boolean(./ancestor::draw:frame[1]) and count(./ancestor::draw:frame[1] | $frames) = $frame-count)]"/>
- <variable name="context-size" select="count($context)"/>
-
- <variable name="context-index">
- <call-template name="mk-context-index">
- <with-param name="current-id" select="generate-id(.)"/>
- <with-param name="context" select="$context"/>
- <with-param name="test-index" select="1"/>
- </call-template>
- </variable>
-
- <variable name="style-left">
- <choose>
- <when test="$context-index &gt; 1">
- <variable name="left" select="$context[$context-index - 1]"/>
- <!--
- The preceding text node is a child of this nodes topmost
- styled ancestor. This means that the result of the
- transformation will be directly concatenated.
- -->
- <call-template name="mk-style-set">
- <with-param name="node" select="$left"/>
- </call-template>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="style-right">
- <choose>
- <when test="$context-index &lt; count($context)">
- <variable name="right" select="$context[$context-index + 1]"/>
- <!--
- The preceding text node is a child of this nodes topmost
- styled ancestor. This means that the result of the
- transformation will be directly concatenated.
- -->
- <call-template name="mk-style-set">
- <with-param name="node" select="$right"/>
- </call-template>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="bold"
- select="($style mod (2 * $BOLD_BIT)) != 0"/>
- <variable name="italic"
- select="($style mod (2 * $ITALIC_BIT)) - ($style mod ($ITALIC_BIT)) != 0"/>
- <variable name="superscript"
- select="($style mod (2 * $SUPERSCRIPT_BIT)) - ($style mod ($SUPERSCRIPT_BIT)) != 0"/>
- <variable name="subscript"
- select="($style mod (2 * $SUBSCRIPT_BIT)) - ($style mod ($SUBSCRIPT_BIT)) != 0"/>
- <variable name="code"
- select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
- <variable name="typewriter"
- select="($style mod (2 * $TYPEWRITER_BIT)) - ($style mod ($TYPEWRITER_BIT)) != 0"/>
-
- <variable name="bold-left"
- select="($style-left mod (2 * $BOLD_BIT)) != 0"/>
- <variable name="italic-left"
- select="($style-left mod (2 * $ITALIC_BIT)) - ($style-left mod ($ITALIC_BIT)) != 0"/>
- <variable name="superscript-left"
- select="($style-left mod (2 * $SUPERSCRIPT_BIT)) - ($style-left mod ($SUPERSCRIPT_BIT)) != 0"/>
- <variable name="subscript-left"
- select="($style-left mod (2 * $SUBSCRIPT_BIT)) - ($style-left mod ($SUBSCRIPT_BIT)) != 0"/>
- <variable name="typewriter-left"
- select="($style-left mod (2 * $TYPEWRITER_BIT)) - ($style-left mod ($TYPEWRITER_BIT)) != 0"/>
-
- <variable name="bold-right"
- select="($style-right mod (2 * $BOLD_BIT)) != 0"/>
- <variable name="italic-right"
- select="($style-right mod (2 * $ITALIC_BIT)) - ($style-right mod ($ITALIC_BIT)) != 0"/>
- <variable name="superscript-right"
- select="($style-right mod (2 * $SUPERSCRIPT_BIT)) - ($style-right mod ($SUPERSCRIPT_BIT)) != 0"/>
- <variable name="subscript-right"
- select="($style-right mod (2 * $SUBSCRIPT_BIT)) - ($style-right mod ($SUBSCRIPT_BIT)) != 0"/>
- <variable name="typewriter-right"
- select="($style-right mod (2 * $TYPEWRITER_BIT)) - ($style-right mod ($TYPEWRITER_BIT)) != 0"/>
-
- <!-- Debugging: Add style infos to the output. -->
- <!--
- <value-of select="'{'"/>
- <value-of select="$style-left"/>
- <value-of select="'-'"/>
- <value-of select="$style"/>
- <value-of select="','"/>
- <value-of select="$context-size"/>
- <value-of select="'}'"/>
- -->
-
- <if test="$superscript and not($superscript-left)">
- <text>&lt;sup&gt;</text>
- </if>
- <if test="$subscript and not($subscript-left)">
- <text>&lt;sub&gt;</text>
- </if>
- <if test="not($code) and $typewriter and not($typewriter-left)">
- <text>&lt;tt&gt;</text>
- </if>
- <if test="$bold and not($bold-left)">
- <text>'''</text>
- </if>
- <if test="$italic and not($italic-left)">
- <text>''</text>
- </if>
-
- <call-template name="render-quoted-text">
- <with-param name="text" select="."/>
- </call-template>
-
- <if test="$italic and not($italic-right)">
- <text>''</text>
- </if>
- <if test="$bold and not($bold-right)">
- <text>'''</text>
- </if>
- <if test="not($code) and $typewriter and not($typewriter-right)">
- <text>&lt;/tt&gt;</text>
- </if>
- <if test="$subscript and not($subscript-right)">
- <text>&lt;/sub&gt;</text>
- </if>
- <if test="$superscript and not($superscript-right)">
- <text>&lt;/sup&gt;</text>
- </if>
-
- <!-- Debugging: Add style details to the output. -->
- <!--
- <value-of select="'{'"/>
- <value-of select="$style"/>
- <value-of select="'-'"/>
- <value-of select="$style-right"/>
- <value-of select="'}'"/>
- -->
-
- </when>
- </choose>
- </template>
-
- <!--
- Function for looking up the position of a node identified by the given
- 'current-id' within a node set 'context'.
-
- The search starts with the the index 'test-index'. The search is recursive
- in the 'test-index' argument. To save recursion depth, each recursive call
- iteratively tests a fixed number of indexes (by loop unrolling).
- -->
- <template name="mk-context-index">
- <param name="current-id"/>
- <param name="context"/>
- <param name="test-index"/>
-
- <variable name="context-size" select="count($context)"/>
-
- <choose>
- <when test="context-size &lt; $test-index">
- </when>
- <when test="$current-id = generate-id($context[$test-index])">
- <value-of select="$test-index"/>
- </when>
- <when test="context-size &lt; ($test-index + 1)">
- </when>
- <when test="$current-id = generate-id($context[$test-index + 1])">
- <value-of select="$test-index + 1"/>
- </when>
- <when test="context-size &lt; ($test-index + 2)">
- </when>
- <when test="$current-id = generate-id($context[$test-index + 2])">
- <value-of select="$test-index + 2"/>
- </when>
- <when test="context-size &lt; ($test-index + 3)">
- </when>
- <when test="$current-id = generate-id($context[$test-index + 3])">
- <value-of select="$test-index + 3"/>
- </when>
- <when test="context-size &lt; ($test-index + 4)">
- </when>
- <when test="$current-id = generate-id($context[$test-index + 4])">
- <value-of select="$test-index + 4"/>
- </when>
- <when test="context-size &lt; ($test-index + 5)">
- </when>
- <when test="$current-id = generate-id($context[$test-index + 5])">
- <value-of select="$test-index + 5"/>
- </when>
- <when test="context-size &lt; ($test-index + 6)">
- </when>
- <otherwise>
- <call-template name="mk-context-index">
- <with-param name="current-id" select="$current-id"/>
- <with-param name="context" select="$context"/>
- <with-param name="test-index" select="$test-index + 6"/>
- </call-template>
- </otherwise>
- </choose>
- </template>
-
- <template name="render-quoted-text">
- <param name="text"/>
-
- <choose>
- <when test="contains($text, '&lt;') or contains($text, '[') or starts-with($text, '----') or starts-with($text, '=') or starts-with($text, '*') or starts-with($text, ';') or starts-with($text, '#')">
- <text>&lt;nowiki&gt;</text>
- <choose>
- <when test="contains($text, '&lt;/nowiki&gt;')">
- <call-template name="render-escaped-text">
- <with-param name="text" select="$text"/>
- </call-template>
- </when>
- <otherwise>
- <call-template name="render-encoded-text">
- <with-param name="text" select="$text"/>
- </call-template>
- </otherwise>
- </choose>
- <text>&lt;/nowiki&gt;</text>
- </when>
- <otherwise>
- <call-template name="render-encoded-text">
- <with-param name="text" select="$text"/>
- </call-template>
- </otherwise>
- </choose>
- </template>
-
- <template name="render-escaped-text">
- <param name="text"/>
-
- <choose>
- <when test="contains($text, '&lt;')">
- <call-template name="render-encoded-text">
- <with-param name="text" select="substring-before($text, '&lt;')"/>
- </call-template>
- <value-of select="'&amp;lt;'"/>
- <call-template name="render-escaped-text">
- <with-param name="text" select="substring-after($text, '&lt;')"/>
- </call-template>
- </when>
- <otherwise>
- <call-template name="render-encoded-text">
- <with-param name="text" select="$text"/>
- </call-template>
- </otherwise>
- </choose>
- </template>
-
- <template name="render-encoded-text">
- <param name="text"/>
-
- <choose>
- <when test="contains($text, '&#160;')">
- <value-of select="substring-before($text, '&#160;')"/>
- <value-of select="'&amp;nbsp;'"/>
- <call-template name="render-encoded-text">
- <with-param name="text" select="substring-after($text, '&#160;')"/>
- </call-template>
- </when>
- <otherwise>
- <value-of select="$text"/>
- </otherwise>
- </choose>
- </template>
-
- <!--
- == Wiki styles: bold, italics, ... ==
- -->
-
- <template name="mk-style-set">
- <param name="node"/>
-
- <variable
- name="context"
- select="$node/ancestor-or-self::*[@text:style-name][1]"
- />
-
- <choose>
- <when test="boolean($context)">
- <variable
- name="style"
- select="key('style-ref', $context/@text:style-name)"
- />
-
- <!-- Debugging: Print inspected styles. -->
- <!--
- <message>
- <value-of select="'=== '"/>
- <value-of select="$style/@style:name"/>
- <value-of select="' ==='"/>
- </message>
- -->
-
- <call-template name="mk-style-set-internal">
- <with-param name="node" select="$context"/>
- <with-param name="style" select="$style"/>
- <with-param name="style-set" select="$NO_STYLE"/>
- <with-param name="style-mask" select="$NO_STYLE"/>
- </call-template>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </template>
-
- <!--
- Compute the wiki style set that corresponds
- to the given office style at the given context node.
-
- @param node
- A node in which context the style is computed. If neither the given style
- nor one of its linked styles does specify a style of the given type,
- ancestor nodes of the given context node are considered.
- @param style
- A style:style element node. The style of the requested type is searched
- in the given style and its linked styles.
- @style-set
- A bit set of styles already defined by the context.
- @style-mask
- A bit set of styles that must not be taken from the currently inspected
- style, because those styles are already defined by the context.
-
- @return A bit set composed of the wiki style constants.
- -->
- <template name="mk-style-set-internal">
- <param name="node"/>
- <param name="style"/>
- <param name="style-set"/>
- <param name="style-mask"/>
-
- <variable name="text-properties" select="$style/style:text-properties"/>
-
- <!-- Decompose style-mask into individual bits. -->
- <variable name="bold-requested"
- select="($style-mask mod (2 * $BOLD_BIT)) = 0"/>
- <variable name="italic-requested"
- select="($style-mask mod (2 * $ITALIC_BIT)) - ($style-mask mod ($ITALIC_BIT)) = 0"/>
- <variable name="superscript-requested"
- select="($style-mask mod (2 * $SUPERSCRIPT_BIT)) - ($style-mask mod ($SUPERSCRIPT_BIT)) = 0"/>
- <variable name="subscript-requested"
- select="($style-mask mod (2 * $SUBSCRIPT_BIT)) - ($style-mask mod ($SUBSCRIPT_BIT)) = 0"/>
- <variable name="typewriter-requested"
- select="($style-mask mod (2 * $TYPEWRITER_BIT)) - ($style-mask mod ($TYPEWRITER_BIT)) = 0"/>
- <variable name="code-requested"
- select="($style-mask mod (2 * $CODE_BIT)) - ($style-mask mod ($CODE_BIT)) = 0"/>
- <variable name="center-requested"
- select="($style-mask mod (2 * $CENTER_BIT)) - ($style-mask mod ($CENTER_BIT)) = 0"/>
- <variable name="right-requested"
- select="($style-mask mod (2 * $RIGHT_BIT)) - ($style-mask mod ($RIGHT_BIT)) = 0"/>
-
- <!-- Extract styles that are not already defined by the context. -->
- <variable name="bold-style">
- <choose>
- <when test="$bold-requested and boolean($text-properties/@fo:font-weight='bold')">
- <!-- Bold found in current style. -->
- <value-of select="$BOLD_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="bold-mask">
- <choose>
- <when test="$bold-requested and boolean($text-properties/@fo:font-weight)">
- <!--
- Other value than "bold" means that the character style is not
- bold and no parent style must be considered.
- -->
- <value-of select="$BOLD_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="italic-style">
- <choose>
- <when test="$italic-requested and boolean($text-properties/@fo:font-style='italic')">
- <!-- Italic found in current style. -->
- <value-of select="$ITALIC_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="italic-mask">
- <choose>
- <when test="$italic-requested and boolean($text-properties/@fo:font-style)">
- <!--
- Other value than "italic" means that the character style is not
- italic and no parent style must be considered.
- -->
- <value-of select="$ITALIC_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="superscript-style">
- <choose>
- <when test="$superscript-requested and contains($text-properties/@style:text-position, 'super')">
- <value-of select="$SUPERSCRIPT_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="superscript-mask">
- <choose>
- <when test="$superscript-requested and boolean($text-properties/@style:text-position)">
- <value-of select="$SUPERSCRIPT_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="subscript-style">
- <choose>
- <when test="$subscript-requested and contains($text-properties/@style:text-position, 'sub')">
- <value-of select="$SUBSCRIPT_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="subscript-mask">
- <choose>
- <when test="$subscript-requested and boolean($text-properties/@style:text-position)">
- <value-of select="$SUBSCRIPT_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="typewriter-style">
- <choose>
- <when test="$typewriter-requested and ($style/@style:family='text') and boolean($text-properties/@style:font-name)">
- <variable name="font-face"
- select="key('font-face-ref', $text-properties/@style:font-name)"/>
- <choose>
- <when test="$font-face/@style:font-pitch='fixed'">
- <value-of select="$TYPEWRITER_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="typewriter-mask">
- <choose>
- <!-- Note: Suppress the typewriter style on text within a code paragraph. -->
- <when test="$typewriter-requested and boolean($text-properties/@style:font-name)">
- <value-of select="$TYPEWRITER_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="code-style">
- <choose>
- <when test="$code-requested and ($style/@style:family='paragraph') and boolean($text-properties/@style:font-name)">
- <variable name="font-face"
- select="key('font-face-ref', $text-properties/@style:font-name)"/>
- <choose>
- <when test="$font-face/@style:font-pitch='fixed' or (boolean(@style:display-name) and contains($CODE_STYLES, $style/@style:display-name))">
- <value-of select="$CODE_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="code-mask">
- <choose>
- <when test="$code-requested and ($style/@style:family='paragraph') and boolean($text-properties/@style:font-name)">
- <value-of select="$CODE_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="center-style">
- <choose>
- <when test="$center-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align='center')">
- <value-of select="$CENTER_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="center-mask">
- <choose>
- <when test="$center-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align)">
- <value-of select="$CENTER_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
- <variable name="right-style">
- <choose>
- <when test="$right-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align='end')">
- <value-of select="$RIGHT_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
- <variable name="right-mask">
- <choose>
- <when test="$center-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align)">
- <value-of select="$RIGHT_BIT"/>
- </when>
- <otherwise>
- <value-of select="$NO_STYLE"/>
- </otherwise>
- </choose>
- </variable>
-
-
- <!-- Compute the updated styles and mask. -->
- <!--
- Note: The bit masks style-mask, bold-style, italic-style,... are
- guaranteed to be disjoint, therefore, addition can be use instead
- of bitwise or (which is missing in XPath). -->
- <variable name="updated-style"
- select="$style-set + $bold-style + $italic-style + $superscript-style + $subscript-style + $code-style + $typewriter-style + $center-style + $right-style"/>
- <variable name="updated-mask"
- select="$style-mask + $bold-mask + $italic-mask + $superscript-mask + $subscript-mask + $code-mask + $typewriter-mask + $center-mask + $right-mask"/>
-
- <!-- Inspect linked and nested styles. -->
- <choose>
- <when test="boolean($style/@style:parent-style-name)">
- <!-- Look through the style, the current style is based on. -->
- <call-template name="mk-style-set-internal">
- <with-param name="node" select="$node"/>
- <with-param name="style" select="key('style-ref', $style/@style:parent-style-name)"/>
- <with-param name="style-set" select="$updated-style"/>
- <with-param name="style-mask" select="$updated-mask"/>
- </call-template>
- </when>
- <otherwise>
- <variable name="ancestors" select="$node/ancestor::*[@text:style-name][1]"/>
-
- <!-- Debugging: Print currently inspected style. -->
- <!--
- <message>
- <value-of select="'{'"/>
- <value-of select="$style/@style:name"/>
- <value-of select="','"/>
- <value-of select="$updated-style"/>
- <value-of select="','"/>
- <value-of select="$updated-mask"/>
- <value-of select="','"/>
- <value-of select="local-name($ancestors)"/>
- <value-of select="',('"/>
- <value-of select="$node"/>
- <value-of select="')'"/>
- <value-of select="'}'"/>
- </message>
- -->
-
- <!--
- If there is an ancestor that has a style, use that style,
- otherwise, a style is not found. -->
- <choose>
- <when test="boolean($ancestors)">
- <!-- Look through the style of the nearest ancestor that has a style. -->
- <call-template name="mk-style-set-internal">
- <with-param name="node" select="$ancestors"/>
- <with-param name="style" select="key('style-ref', $ancestors/@text:style-name)"/>
- <with-param name="style-set" select="$updated-style"/>
- <with-param name="style-mask" select="$updated-mask"/>
- </call-template>
- </when>
- <otherwise>
- <!-- No more styles to inspect. Return the result. -->
- <value-of select="$updated-style"/>
- </otherwise>
- </choose>
- </otherwise>
- </choose>
- </template>
-
-
- <!--
- == Descending the tree ==
- -->
-
- <template match="/">
- <apply-templates/>
- <value-of select="$NL"/>
- <if test="boolean(//text:note[@text:note-class='footnote'])">
- <value-of select="$NL"/>
- <text>----</text>
- <value-of select="$NL"/>
- <text>&lt;references/&gt;</text>
- <value-of select="$NL"/>
- </if>
- </template>
-
- <template match="office:document-content">
- <apply-templates/>
- </template>
-
- <template match="office:body">
- <apply-templates/>
- </template>
-
- <template match="text:tracked-changes">
- <!-- Ignore change history. -->
- </template>
-
- <template match="office:* | text:* | draw:text-box | draw:a">
- <apply-templates/>
- </template>
-
- <template match="node()">
- </template>
-</stylesheet>
-
-<!--
- Local Variables:
- tab-width: 4
- sgml-indent-step: 4
- End:
--->
diff --git a/filter/source/xslt/export/wordml/ooo2wordml.xsl b/filter/source/xslt/export/wordml/ooo2wordml.xsl
index da9efc1e889b..416581b5e3ed 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml.xsl,v $
-
- $Revision: 1.10 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:output method="xml" indent="no" encoding="UTF-8" version="1.0" standalone="yes"/>
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_border.xsl b/filter/source/xslt/export/wordml/ooo2wordml_border.xsl
index 2e628d921b7e..9eb2fd4dcbd1 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_border.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_border.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_border.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<!-- multiple usage: get size, type, color of table-cell, paragraph, and page borders. -->
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_custom_draw.xsl b/filter/source/xslt/export/wordml/ooo2wordml_custom_draw.xsl
index 9f2015f30337..0548e2525d46 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_custom_draw.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_custom_draw.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_custom_draw.xsl,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:template name="ooo_custom_draw2ms_word_draw_map">
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_draw.xsl b/filter/source/xslt/export/wordml/ooo2wordml_draw.xsl
index 9143ef6f1ff2..40b146f1481e 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_draw.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_draw.xsl
@@ -2,27 +2,23 @@
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- Copyright 2008 by Sun Microsystems, Inc.
-
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
OpenOffice.org - a multi-platform office productivity suite
-
- $RCSfile: ooo2wordml_draw.xsl,v $
-
- $Revision: 1.10 $
-
+
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>
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_field.xsl b/filter/source/xslt/export/wordml/ooo2wordml_field.xsl
index 11538b0b2f10..48a5e4e7342c 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_field.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_field.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_field.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<!-- the following are common used fields -->
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_list.xsl b/filter/source/xslt/export/wordml/ooo2wordml_list.xsl
index 990d2e0a09a8..2762e1cd159f 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_list.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_list.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_list.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:template name="ListStyles">
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_page.xsl b/filter/source/xslt/export/wordml/ooo2wordml_page.xsl
index 1dc0bba2aeb9..477ee0b109f0 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_page.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_page.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_page.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:template name="page-background">
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_path.xsl b/filter/source/xslt/export/wordml/ooo2wordml_path.xsl
index 9ce6ed265bc9..695bbb0c3ef8 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_path.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_path.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_path.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:include href="../../common/math.xsl"/>
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_settings.xsl b/filter/source/xslt/export/wordml/ooo2wordml_settings.xsl
index 2f0d721eac02..71312d57ed5e 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_settings.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_settings.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_settings.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:template match="office:settings">
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_table.xsl b/filter/source/xslt/export/wordml/ooo2wordml_table.xsl
index 83bf00ed288f..67e4eafe01d7 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_table.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_table.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_table.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:key name="table-style" match="style:style[@style:family='table']" use="@style:name"/>
diff --git a/filter/source/xslt/export/wordml/ooo2wordml_text.xsl b/filter/source/xslt/export/wordml/ooo2wordml_text.xsl
index 08f5486840c8..5ba97699d4fa 100644
--- a/filter/source/xslt/export/wordml/ooo2wordml_text.xsl
+++ b/filter/source/xslt/export/wordml/ooo2wordml_text.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ooo2wordml_text.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
<xsl:template match="style:paragraph-properties" mode="paragraph">
diff --git a/filter/source/xslt/import/common/ms2ooo_docpr.xsl b/filter/source/xslt/import/common/ms2ooo_docpr.xsl
index 169573a3a18b..77d21306b7b7 100644
--- a/filter/source/xslt/import/common/ms2ooo_docpr.xsl
+++ b/filter/source/xslt/import/common/ms2ooo_docpr.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: ms2ooo_docpr.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt fo v">
<xsl:template match="o:DocumentProperties">
diff --git a/filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl b/filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl
index a1576db37f10..64ac1302b744 100644
--- a/filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl
+++ b/filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: spreadsheetml2ooo.xsl,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:SL="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" exclude-result-prefixes="aml dt html o ss SL v w10 w wx x">
<!--+++++ INCLUDED XSL MODULES +++++-->
diff --git a/filter/source/xslt/import/wordml/wordml2ooo.xsl b/filter/source/xslt/import/wordml/wordml2ooo.xsl
index e594e37012f9..1f36f195f3cd 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo.xsl,v $
-
- $Revision: 1.13 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v" xmlns:fla="urn:experimental:fla">
<xsl:output method="xml" indent="no" encoding="UTF-8" version="1.0"/>
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_custom_draw.xsl b/filter/source/xslt/import/wordml/wordml2ooo_custom_draw.xsl
index fedfd69ce458..118c63301774 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_custom_draw.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_custom_draw.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_custom_draw.xsl,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt fo v">
<xsl:template name="ms_word_draw_map2ooo_custom_draw">
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_draw.xsl b/filter/source/xslt/import/wordml/wordml2ooo_draw.xsl
index 2cd287e59e75..e0737d1374fa 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_draw.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_draw.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_draw.xsl,v $
-
- $Revision: 1.10 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xalan="http://xml.apache.org/xalan" xmlns:oleextracter="MyOleExtracter" xmlns:ole="java:XSLTFilterOLEExtracter" xmlns:java="http://saxon.sf.net/java-type" exclude-result-prefixes="w wx aml o dt v xalan ole oleextracter java" extension-element-prefixes="oleextracter">
<xsl:include href="wordml2ooo_custom_draw.xsl"/>
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_field.xsl b/filter/source/xslt/import/wordml/wordml2ooo_field.xsl
index ca26a0cb54bc..6c77f63e66a6 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_field.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_field.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_field.xsl,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt fo v">
<!--Generally, The MS fields can be represented in two forms, simple field w:fldsimple or complicated field
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_list.xsl b/filter/source/xslt/import/wordml/wordml2ooo_list.xsl
index 656f0b9b51f0..8bbe57a5e3ec 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_list.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_list.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_list.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v">
<xsl:template match="w:listPr" mode="style">
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_page.xsl b/filter/source/xslt/import/wordml/wordml2ooo_page.xsl
index 8e90a39f42a4..8514594bf19a 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_page.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_page.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_page.xsl,v $
-
- $Revision: 1.11 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v">
<xsl:template match="w:footnotePr" mode="config">
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_path.xsl b/filter/source/xslt/import/wordml/wordml2ooo_path.xsl
index 0befedba710e..2ad46a1a96a0 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_path.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_path.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_path.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v">
<xsl:include href="../../common/math.xsl"/>
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_settings.xsl b/filter/source/xslt/import/wordml/wordml2ooo_settings.xsl
index 2f519b1dc516..84696dcf5773 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_settings.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_settings.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_settings.xsl,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v">
<xsl:template match="w:docPr">
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_table.xsl b/filter/source/xslt/import/wordml/wordml2ooo_table.xsl
index f72d758f6ab1..113dd391b433 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_table.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_table.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_table.xsl,v $
-
- $Revision: 1.10 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v">
<xsl:template match="w:style[@w:type='table']" mode="table">
diff --git a/filter/source/xslt/import/wordml/wordml2ooo_text.xsl b/filter/source/xslt/import/wordml/wordml2ooo_text.xsl
index 0cd5e0dbe59f..a00656a9ed32 100644
--- a/filter/source/xslt/import/wordml/wordml2ooo_text.xsl
+++ b/filter/source/xslt/import/wordml/wordml2ooo_text.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: wordml2ooo_text.xsl,v $
-
- $Revision: 1.11 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="w wx aml o dt v">
<xsl:template name="create-default-paragraph-styles">
diff --git a/filter/source/xslt/odf2xhtml/export/common/body.xsl b/filter/source/xslt/odf2xhtml/export/common/body.xsl
index 1efa48718c2d..96f7d3ce691c 100644
--- a/filter/source/xslt/odf2xhtml/export/common/body.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/body.xsl
@@ -1,33 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- Copyright 2008 by Sun Microsystems, Inc.
-
- OpenOffice.org - a multi-platform office productivity suite
-
- $RCSfile: body.xsl,v $
-
- $Revision: 1.3.14.1 $
-
- 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.
-
+ 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.
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl b/filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl
index 1b42ae73a2ca..2aa2fdc50bc3 100644
--- a/filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/styles/style_collector.xsl
@@ -1,33 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- Copyright 2008 by Sun Microsystems, Inc.
-
- OpenOffice.org - a multi-platform office productivity suite
-
- $RCSfile: style_collector.xsl,v $
-
- $Revision: 1.3.14.3 $
-
- 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.
-
+ 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.
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl b/filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl
index 8f5aa99e0cd8..cfd38dcd9a3d 100644
--- a/filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/styles/style_mapping_css.xsl
@@ -1,33 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- Copyright 2008 by Sun Microsystems, Inc.
-
- OpenOffice.org - a multi-platform office productivity suite
-
- $RCSfile: style_mapping_css.xsl,v $
-
- $Revision: 1.3.14.3 $
-
- 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.
-
+ 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.
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/table/table.xsl b/filter/source/xslt/odf2xhtml/export/common/table/table.xsl
index 4c4d1b246c6a..a380088a26f7 100644
--- a/filter/source/xslt/odf2xhtml/export/common/table/table.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/table/table.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/table/table_cells.xsl b/filter/source/xslt/odf2xhtml/export/common/table/table_cells.xsl
index bf7019247700..b5398742a315 100644
--- a/filter/source/xslt/odf2xhtml/export/common/table/table_cells.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/table/table_cells.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table_cells.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/table/table_columns.xsl b/filter/source/xslt/odf2xhtml/export/common/table/table_columns.xsl
index f462f0bccd8e..ee578e158a63 100644
--- a/filter/source/xslt/odf2xhtml/export/common/table/table_columns.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/table/table_columns.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table_columns.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/table/table_rows.xsl b/filter/source/xslt/odf2xhtml/export/common/table/table_rows.xsl
index 6d76f17c54c6..1cf51362b1b5 100644
--- a/filter/source/xslt/odf2xhtml/export/common/table/table_rows.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/table/table_rows.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table_rows.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/common/table_of_content.xsl b/filter/source/xslt/odf2xhtml/export/common/table_of_content.xsl
index bac22f2edb0d..5934e2e3a87e 100644
--- a/filter/source/xslt/odf2xhtml/export/common/table_of_content.xsl
+++ b/filter/source/xslt/odf2xhtml/export/common/table_of_content.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table_of_content.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl b/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
index c731cb13b780..6cfeb35eb50e 100644
--- a/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
+++ b/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
@@ -1,2841 +1,2837 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- Copyright 2008 by Sun Microsystems, Inc.
-
- OpenOffice.org - a multi-platform office productivity suite
-
- $RCSfile: body.xsl,v $
-
- $Revision: 1.3.14.6 $
-
- 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.
-
--->
-<!--
- For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.jclark.com/xt" xmlns:common="http://exslt.org/common" xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="chart config dc dom dr3d draw fo form math meta number office ooo oooc ooow script style svg table text xforms xlink xsd xsi xt common xalan" xmlns="http://www.w3.org/1999/xhtml">
-
-
- <!--+++++ INCLUDED XSL MODULES +++++-->
-
- <!-- helper collection, to convert measures (e.g. inch to pixel using DPI (dots per inch) parameter)-->
- <xsl:import href="../../common/measure_conversion.xsl"/>
-
- <!-- common office body element handling -->
- <xsl:import href="../common/body.xsl"/>
-
- <!-- common table handling -->
- <xsl:import href="../common/table/table.xsl"/>
-
- <!-- xhtml table handling -->
- <xsl:include href="table.xsl"/>
-
- <!-- Useful in case of 'style:map', conditional formatting, where a style references to another -->
- <xsl:key name="styles" match="/*/office:styles/style:style | /*/office:automatic-styles/style:style" use="@style:name"/>
-
-
- <!-- ************ -->
- <!-- *** body *** -->
- <!-- ************ -->
-
- <xsl:key match="style:style/@style:master-page-name" name="masterPage" use="'count'"/>
- <xsl:key match="style:master-page" name="masterPageElements" use="@style:name"/>
- <xsl:key match="style:page-layout" name="pageLayoutElements" use="@style:name"/>
- <xsl:key name="writingModeStyles" match="/*/office:styles/style:style/style:paragraph-properties/@style:writing-mode | /*/office:automatic-styles/style:style/style:paragraph-properties/@style:writing-mode" use="'test'"/>
- <xsl:template name="create-body">
- <xsl:param name="globalData"/>
-
- <!-- approximation to find the correct master page style (with page dimensions) -->
- <xsl:variable name="masterPageNames">
- <!-- Loop over every style:style containing a @style:master-page-name attribute -->
- <xsl:for-each select="key('masterPage','count')">
- <!-- Check if this style is being used in the body -->
- <xsl:if test="key('elementUsingStyle', ../@style:name)">
- <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
- <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
- <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
-
- <!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
- <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
- <xsl:variable name="pageProperties">
- <xsl:choose>
- <xsl:when test="not($pageLayoutName) or $pageLayoutName = ''">
- <xsl:copy-of select="$globalData/styles-file/*/office:automatic-styles/style:page-layout[1]/style:page-layout-properties"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- Find the according style:page-layout and store the properties in a variable -->
- <xsl:copy-of select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:element name="body">
- <!-- direction of text flow -->
- <xsl:variable name="writingMode" select="$pageProperties/style:page-layout-properties/@style:writing-mode"/>
- <xsl:choose>
- <xsl:when test="$writingMode">
- <xsl:choose>
- <xsl:when test="contains($writingMode, 'lr')">
- <xsl:attribute name="dir">ltr</xsl:attribute>
- </xsl:when>
- <xsl:when test="contains($writingMode, 'rl')">
- <xsl:attribute name="dir">rtl</xsl:attribute>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <!-- As CSS writing-mode is not implemented by all browsers, a heuristic is done -->
- <xsl:variable name="writingMode" select="key('writingModeStyles', 'test')"/>
- <xsl:if test="contains($writingMode, 'rl')">
- <xsl:attribute name="dir">rtl</xsl:attribute>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- <!-- adapt page size -->
- <xsl:variable name="pageWidth" select="$pageProperties/style:page-layout-properties/@fo:page-width"/>
-
- <!-- multiple backgroundimages for different page styles (never used in html) -->
- <xsl:variable name="backgroundImage" select="$pageProperties/style:page-layout-properties/style:background-image"/>
- <!-- page margins & background image -->
- <xsl:if test="$pageWidth or $pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
- <xsl:attribute name="style">
- <xsl:if test="$pageWidth">
- <xsl:text>max-width:</xsl:text>
- <xsl:value-of select="$pageWidth"/>
- <xsl:text>;</xsl:text>
- </xsl:if>
- <xsl:if test="$pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
- <xsl:apply-templates select="$pageProperties/style:page-layout-properties/@fo:*"/>
- <xsl:if test="$backgroundImage/@xlink:href">
- <xsl:text>background-image:url(</xsl:text>
- <xsl:call-template name="create-href">
- <xsl:with-param name="href" select="$backgroundImage/@xlink:href"/>
- </xsl:call-template>
- <xsl:text>);</xsl:text>
-
- <xsl:if test="$backgroundImage/@style:repeat">
- <xsl:choose>
- <xsl:when test="$backgroundImage/@style:repeat = 'no-repeat'">
- <xsl:text>background-repeat:no-repeat;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>background-repeat:repeat;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:if test="$backgroundImage/@style:position">
- <xsl:text>background-position:</xsl:text>
- <xsl:value-of select="$backgroundImage/@style:position"/>
- <xsl:text>;</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
- <!-- processing the content of the OpenDocument content file -->
- <xsl:apply-templates select="/*/office:body/*">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- </xsl:element>
- </xsl:template>
-
- <!-- processing the content of the OpenDocument content file -->
- <xsl:template match="office:body/*">
- <xsl:param name="globalData"/>
-
- <!-- not using of 'apply-styles-and-content' as the content table information migth have been added to 'globalData' variable -->
- <xsl:apply-templates select="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name -->
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <!-- writing the footer- and endnotes beyond the body -->
- <xsl:call-template name="write-text-nodes">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:template>
-
- <!-- ******************************* -->
- <!-- *** User Field Declarations *** -->
- <!-- ******************************* -->
-
- <xsl:template match="text:user-field-get | text:user-field-input">
- <xsl:param name="globalData"/>
-
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:template match="text:conditional-text">
- <xsl:param name="globalData"/>
-
- <xsl:value-of select="."/>
- </xsl:template>
-
- <!-- ODF text fields -->
- <xsl:template match="text:author-initials | text:author-name | text:chapter | text:character-count | text:creation-date | text:creation-time | text:creator | text:date | text:description | text:editing-cycles | text:editing-duration | text:file-name | text:image-count | text:initial-creator | text:keywords | text:modification-date | text:modification-time | text:object-count | text:page-continuation | text:page-count | text:page-number | text:paragraph-count | text:print-date | text:print-time | text:printed-by | text:sender-city | text:sender-company | text:sender-country | text:sender-email | text:sender-fax | text:sender-firstname | text:sender-initials | text:sender-lastname | text:sender-phone-private | text:sender-phone-work | text:sender-position | text:sender-postal-code | text:sender-state-or-province | text:sender-street | text:sender-title | text:sheet-name | text:subject | text:table-count | text:time | text:title | text:user-defined | text:word-count">
- <xsl:param name="globalData"/>
-
- <xsl:element name="span">
- <xsl:attribute name="title">
- <xsl:value-of select="local-name()"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
-
-
- <!-- *************** -->
- <!-- *** Textbox *** -->
- <!-- *************** -->
-
- <xsl:template match="draw:text-box">
- <xsl:param name="globalData"/>
-
- <xsl:comment>Next 'div' was a 'draw:text-box'.</xsl:comment>
- <xsl:element name="div">
- <xsl:variable name="dimension">
- <xsl:apply-templates select="@fo:min-width"/>
- <xsl:apply-templates select="@fo:max-width"/>
- <xsl:apply-templates select="@fo:min-height"/>
- <xsl:apply-templates select="@fo:max-height"/>
- </xsl:variable>
- <xsl:if test="$dimension">
- <xsl:attribute name="style">
- <xsl:value-of select="$dimension"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:apply-templates select="@draw:name">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <xsl:apply-templates select="node()">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="@fo:min-width">
- <xsl:text>min-width:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="@fo:max-width">
- <xsl:text>max-width:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="@fo:min-height">
- <xsl:text>min-height:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="@fo:max-height">
- <xsl:text>max-height:</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>;</xsl:text>
- </xsl:template>
-
-
- <!-- inline style helper for the 'div' boxes -->
- <xsl:template name="svg:height">
- <xsl:text>height:</xsl:text>
- <xsl:choose>
- <!-- changing the distance measure: inch to in -->
- <xsl:when test="contains(@svg:height, 'inch')">
- <xsl:value-of select="substring-before(@svg:height, 'ch')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@svg:height"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
-
- <!-- inline style helper for the 'div' boxes -->
- <xsl:template name="svg:width">
- <xsl:text>width:</xsl:text>
- <xsl:choose>
- <!-- changing the distance measure: inch to in -->
- <xsl:when test="contains(@svg:width, 'inch')">
- <xsl:value-of select="substring-before(@svg:width, 'ch')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@svg:width"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
-
-
-
- <!-- ****************** -->
- <!-- *** Paragraphs *** -->
- <!-- ****************** -->
-
- <xsl:template match="text:p | draw:page">
- <xsl:param name="globalData"/>
- <!-- The footnote symbol is the prefix for a footnote in the footer -->
- <xsl:param name="footnotePrefix"/>
- <!-- 1) In ODF sometimes the followig children are nested
- <text:p>
- <draw:frame>
- <draw:text-box>
- <text:p>
- Which results in a paragraphs (the last text:p) having a paragraph as its anchestor.
- In HTML a 'p' can only have inline documents (no other 'p' as children'),
- a 'div' will be given for the ancestors instead.
- 2) ODF images are embedded in a paragraph, but CSS is not able to express a horizontal alignment for an HTML image (text:align is only valid for block elements).
- A surrounding 'div' element taking over the image style solves that problem, but the div is invalid as child of a paragraph
- Therefore the paragraph has to be exchanged with a HTML div element
- -->
- <!-- 2DO page alignment fix - PART1 -->
- <xsl:choose>
- <xsl:when test="draw:frame and ((normalize-space(text()) != '') or (count(*) &gt; 1 and (not(text:soft-page-break) and count(*) = 2)))">
- <!-- Create a div, if there is a 'draw:frame' child with either text (not being whitespace alone) and more than the draw:frame alone and
- not the draw:frame and a soft-page-break alone (which is quite often) -->
-
- <!-- If there is a frame within the text:p or draw:page, its siblings are surrounded as well by a div and are floating (CSS float) -->
- <!-- But it makes no sense to create floating if the frame is alone or only together with a soft-page-break not usable for HTML -->
- <!-- The paragraph is written as DIV as there might be nested paragraphs (see above choose block) -->
- <xsl:choose>
- <xsl:when test="name() = 'text:p'">
- <xsl:comment>Next 'div' was a 'text:p'.</xsl:comment>
- </xsl:when>
- <xsl:otherwise>
- <xsl:comment>Next 'div' was a 'draw:page'.</xsl:comment>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:element name="div">
- <xsl:apply-templates select="@*">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- <!-- the footnote symbol is the prefix for a footnote in the footer -->
- <xsl:copy-of select="$footnotePrefix"/>
-
- <!-- start floating of frame (and siblings) -->
- <xsl:apply-templates select="node()[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="previousFrameWidths" select="0"/>
- <xsl:with-param name="previousFrameHeights" select="0"/>
- <!-- 2DO for me (Svante) - Not used, uncertain 4now..
- <xsl:with-param name="pageMarginLeft">
- <xsl:call-template name="getPageMarginLeft"/>
- </xsl:with-param>-->
- </xsl:apply-templates>
- </xsl:element>
- <!-- after the last draw:frame sibling the CSS float is disabled
- &#160; is an unbreakable whitespace to give conent to the element and force a browser not to ignore the element -->
- <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
- </xsl:when>
- <xsl:when test="text:tab">
- <!-- If there is a tabulator (ie. text:tab) within a paragraph, a heuristic for ODF tabulators creates a
- span for every text:tab embracing the following text nodes aligning them according to the tabulator.
- A line break or another text:tab starts a new text:span, line break even the tab counter for the line.
- -->
- <xsl:element name="p">
- <xsl:apply-templates select="@*">
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:apply-templates>
- <!-- start with first child of the paragraph -->
- <xsl:variable name="firstChildNode" select="node()[1]" />
- <xsl:apply-templates select="$firstChildNode" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="tabStops" select="$globalData/all-doc-styles/style[@style:name = current()/@text:style-name]/*/style:tab-stops"/>
- <xsl:with-param name="parentMarginLeft">
- <!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
- <xsl:variable name="paragraphName" select="@text:style-name" />
- <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
- <!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
-<!-- 2DO: left-margin in order with bidirectional -->
- <xsl:choose>
- <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="pageMarginLeft">
- <xsl:call-template name="getPageMarginLeft"/>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <!-- !!Check if paragraph is empty!!
- OOo writes out empty paragraphs layouted behind an image (= draw:image within draw:frame)
- those have to be neglected in HTML -->
- <xsl:when test="name() = 'text:p' and not(text()) and not(*)">
- <xsl:variable name="isFollowingImage">
- <xsl:call-template name="follows-empty-paragraphs-and-image">
- <xsl:with-param name="precedingElement" select="preceding-sibling::node()[1]"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="$isFollowingImage = 'yes'">
- <xsl:call-template name="create-paragraph">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="create-paragraph">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <!-- A span will be created for every text:tab embracing the following text nodes.
- A line break or another text:tab starts a new text:span -->
- <xsl:template match="* | text()" mode="tabHandling">
- <xsl:param name="globalData"/>
- <xsl:param name="tabStops"/>
- <!-- there can be multiple tabs in one line, tabNo guesses the one to apply. By default the first i.e. "1" -->
- <xsl:param name="tabCount" select="0"/>
- <xsl:param name="parentMarginLeft" />
- <xsl:param name="pageMarginLeft" />
-
-<!-- 2DO: EXCHANGE FOLLOING SIBLING BY VARIABLE -->
- <xsl:variable name="followingSiblingNode" select="following-sibling::node()[1]"/>
-
-
- <!--
- Every tabulator indents its following content, encapuslated in a span
- element.
-
- This template have two modes:
-
- 1) Before the first tabulator it will match as usually paragraph content
- to HTML.
- 2) After the first paragraph it will always triggers two recursions.
- One embraces the following content of a paragraph element into a span.
- (tabContentHandling)
- The other calls this template and will now ignore anything else than
- TAB and LINE-BREAK.
-
-
- The tabulators and linebreaks are being iterated, one by one to keep track of the tab number
- -->
-
-
- <xsl:choose>
- <xsl:when test="name() = 'text:tab'">
- <!-- every frame sibling have to be incapuslated within a div with left indent -->
- <xsl:element name="span">
- <xsl:choose>
- <xsl:when test="count($tabStops/style:tab-stop) &lt; 3">
- <!-- only allow the heuristic when the style has less than 3 TABS -->
- <xsl:attribute name="style">
- <xsl:call-template name="createTabIndent">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="$tabCount + 1"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <!-- if there are more than 3 TABS in the style, create a none-breakable-space as whitespace -->
- <xsl:text>&#160;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="$tabCount + 1"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="name() = 'text:line-break'">
- <!-- A line-break resets the tabCount to '0' -->
- <br/>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="0"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <!-- only before the first tab all content is written out -->
- <xsl:if test="$tabCount = 0">
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:if>
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="tabStops" select="$tabStops"/>
- <xsl:with-param name="tabCount" select="$tabCount"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!--
- This recursion creates the content of a tab (i.e. following siblings
- till next TAB or LINE BREAK) and ends with the next
- TAB, LINE-BREAK or with the end of the paragraph.
- -->
- <xsl:template match="* | text()" mode="tabContentHandling">
- <xsl:param name="globalData"/>
-
- <xsl:if test="(name() != 'text:tab') and (name() != 'text:line-break')">
- <!-- Write out content -->
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- <!-- Apply for the next node -->
- <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="createTabIndent">
- <xsl:param name="globalData"/>
- <xsl:param name="tabStops"/>
- <xsl:param name="tabCount"/>
- <xsl:param name="parentMarginLeft" />
- <xsl:param name="pageMarginLeft" />
-
- <xsl:text>position:absolute;left:</xsl:text>
- <xsl:variable name="tabPosition">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$tabStops/style:tab-stop[$tabCount]/@style:position"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="tabIndent">
- <xsl:choose>
- <xsl:when test="$tabStops/style:tab-stop[$tabCount]/@style:type = 'center'">
- <!-- in case of style:type 'center' the text is even before the tab stop,
- centered around the beginning. As I see currently no way in mapping this,
- therefore I do some HEURISTIC (minus -2.5cm) -->
- <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft - 2.5"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$tabIndent='NaN'">
- <xsl:variable name="tabPosition">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$tabStops/style:tab-stop[last()]/@style:position"/>
- </xsl:call-template>
- </xsl:variable>
- <!-- Heuristic: for every tab that is more than specified give a further 1 cm -->
- <xsl:value-of select="$parentMarginLeft + $tabPosition + count($tabStops/style:tab-stop) - $tabCount"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabIndent"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>cm;</xsl:text>
- <xsl:apply-templates select="$tabStops/style:tab-stop[$tabCount]/@style:type"/>
- </xsl:template>
-
- <!-- OOo writes out empty paragraphs layouted behind an image,
- those have to be neglected in HTML
- This method checks if an empty paragraph is of that kind! -->
- <xsl:template name="follows-empty-paragraphs-and-image">
- <xsl:param name="precedingElement" />
- <xsl:param name="elementToCheck" select="1"/>
-
- <xsl:choose>
- <!-- OOo writes out empty paragraphs layouted behind the image,
- those have to be neglected in HTML -->
- <xsl:when test="name($precedingElement) = 'text:p' and not($precedingElement/text()) and not($precedingElement/*)">
- <xsl:call-template name="follows-empty-paragraphs-and-image">
- <xsl:with-param name="precedingElement" select="preceding-sibling::*[$elementToCheck]"/>
- <xsl:with-param name="elementToCheck" select="$elementToCheck +1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$precedingElement/draw:frame">no</xsl:when>
- <xsl:otherwise>yes</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="create-paragraph">
- <xsl:param name="globalData"/>
- <!-- the footnote symbol is the prefix for a footnote in the footer -->
- <xsl:param name="footnotePrefix"/>
-
- <!-- xhtml:p may only contain inline elements.
- If there is one frame beyond, div must be used! -->
- <xsl:variable name="elementName">
- <xsl:choose>
- <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
- <xsl:otherwise>p</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:element name="{$elementName}">
- <xsl:choose>
- <!-- in ODF borders of paragraphs will be merged by default. Merging means the adjactend paragraphs are building a unit,
- where only the first and the last will have have a border to the surrounding (top / bottom border)
- <xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
- <xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
- -->
- <xsl:when test="$globalData/all-styles/style[@style:name = current()/@text:style-name]/@mergedBorders">
- <xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
- <xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
- <xsl:choose>
- <xsl:when test="$precedingParagraphStyle or $followingParagraphStyle">
- <xsl:variable name="isPrecedingBorderParagraph" select="$globalData/all-styles/style[@style:name = $precedingParagraphStyle]/@mergedBorders"/>
- <xsl:variable name="isFollowingBorderParagraph" select="$globalData/all-styles/style[@style:name = $followingParagraphStyle]/@mergedBorders"/>
- <xsl:choose>
- <xsl:when test="not($isPrecedingBorderParagraph) and $isFollowingBorderParagraph">
- <xsl:attribute name="class">
- <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderStart')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="$isPrecedingBorderParagraph and not($isFollowingBorderParagraph)">
- <xsl:attribute name="class">
- <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderEnd')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="class">
- <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="write-paragraph">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="write-paragraph">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="write-paragraph">
- <xsl:param name="globalData"/>
- <!-- the footnote symbol is the prefix for a footnote in the footer -->
- <xsl:param name="footnotePrefix" />
-
- <!-- empty paragraph tags does not provoke an carridge return,
- therefore an non breakable space (&nbsp) have been inserted.-->
- <xsl:choose>
- <xsl:when test="node()">
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
- </xsl:call-template>
- <xsl:text>&#160;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="style:tab-stop/@style:type">
- <xsl:text>text-align:</xsl:text>
- <xsl:choose>
- <xsl:when test=". = 'left'">left</xsl:when>
- <xsl:when test=". = 'right'">right</xsl:when>
- <xsl:when test=". = 'center'">center</xsl:when>
- <xsl:otherwise>justify</xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
-
- <!-- As soon a frame is within a paragraph (text:p) or page:frame, every element floating (CSS) and worked out in sequence.
- Accumulating prior frame width and adding parent's left margin -->
-
- <!-- Matching all elements and text beyond a paragraph/text:page which are sibling of a draw:frame -->
- <xsl:template match="* | text()" mode="frameFloating">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" select="0"/>
- <xsl:param name="previousFrameHeights" select="0" />
- <!-- it becomes true for siblings after a draw:frame -->
- <xsl:param name="createDiv" select="false()"/>
- <xsl:param name="noDivBefore" select="true()"/>
- <xsl:param name="leftPosition" />
- <xsl:param name="parentMarginLeft" />
- <xsl:param name="frameAlignedToParagraphWithSvgY" />
-
- <xsl:choose>
- <xsl:when test="name() = 'draw:frame'">
- <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
-
- <!-- if the first node is a draw:frame create a div -->
- <xsl:call-template name="createDrawFrame">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- </xsl:call-template>
- <!-- next elements will be called after the creation with the new indent (plus width of frame) -->
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="nextSiblingIsFrame" select="name(following-sibling::node()[1]) = 'draw:frame'"/>
- <xsl:choose>
- <xsl:when test="$createDiv and normalize-space(.) != ''">
- <!-- every following frame sibling till the next draw:frame
- have to be incapuslated within a div with left indent.
- To be moved alltogether arcording the indent (usually right) -->
- <xsl:comment>Next 'div' added for floating.</xsl:comment>
- <xsl:element name="div">
- <xsl:attribute name="style">
- <xsl:text>position:relative; left:</xsl:text>
- <xsl:value-of select="$leftPosition"/>
- <xsl:text>cm;</xsl:text>
- </xsl:attribute>
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- <!-- if it is a frame sibling it will be NOT incapuslated within the div (as already within one) -->
- <xsl:if test="not($nextSiblingIsFrame)">
- <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="false()"/>
- <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:element>
- <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
-
- <!-- Other draw:frame will be created outside of the div element -->
- <xsl:apply-templates select="following-sibling::draw:frame[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="not($createDiv)">
- <xsl:apply-templates select=".">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- <xsl:if test="not($nextSiblingIsFrame) or $noDivBefore">
- <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
- <xsl:choose>
- <xsl:when test="normalize-space($followingSibling) != ''">
- <xsl:apply-templates select="$followingSibling" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="false()"/>
- <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- As draw:fame may occure within more elements than in text:p and draw:page -->
- <xsl:template match="draw:frame">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" select="0"/>
- <xsl:param name="previousFrameHeights" select="0" />
-
- <xsl:call-template name="createDrawFrame">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
- <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
- </xsl:call-template>
- <!-- after the last draw:frame sibling the CSS float is disabled -->
- <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
- </xsl:template>
-
- <xsl:template name="getPageMarginLeft">
- <!-- approximation to find the correct master page style (with page dimensions) -->
- <xsl:variable name="masterPageNames">
- <!-- Loop over every style:style containing a @style:master-page-name attribute -->
- <xsl:for-each select="key('masterPage','count')">
- <!-- Check if this style is being used in the body -->
- <xsl:if test="key('elementUsingStyle', ../@style:name)">
- <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
- <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
- <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
- <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
- <!-- Find the according style:page-layout and store the properties in a variable -->
- <xsl:variable name="pageMarginLeftAttr" select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties/@fo:margin-left"/>
- <xsl:choose>
- <xsl:when test="$pageMarginLeftAttr">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$pageMarginLeftAttr"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Elements and text aside of a draw:frame are floating, here a div is being created.
- Either for a draw:frame or for text and other elements floating aside -->
- <xsl:template name="createDrawFrame">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" select="0"/>
- <xsl:param name="previousFrameHeights" select="0" />
- <xsl:param name="parentMarginLeft"/>
-
- <xsl:variable name="parentMarginLeftNew">
- <xsl:choose>
- <xsl:when test="string-length(normalize-space($parentMarginLeft)) &lt; 1">
- <!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
- <xsl:variable name="paragraphName" select="parent::*/@text:style-name" />
- <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
- <!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
- <xsl:choose>
- <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$parentMarginLeft"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="svgWidth">
- <xsl:choose>
- <xsl:when test="@svg:width">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="@svg:width"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="svgX">
- <xsl:choose>
- <xsl:when test="@svg:x">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="@svg:x"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="leftPosition" select="$svgX - $parentMarginLeftNew - $previousFrameWidths"/>
- <xsl:variable name="svgY">
- <xsl:choose>
- <xsl:when test="@svg:y">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="@svg:y"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- if the frame is anchored on a paragraph -->
- <xsl:if test="@text:anchor-type='paragraph'">
- <xsl:comment>Next 'div' is emulating the top hight of a draw:frame.</xsl:comment>
- <!-- When the svg:y is set relativ to the paragraph content, the best way to emulate a positive height,
- is to add an invisbile division inbetween with a height.
- Often text will flow into this 'gap', which is handled separately!
- -->
- <xsl:if test="$svgY &gt; 0">
- <xsl:element name="div">
- <xsl:attribute name="style">
- <xsl:text>height:</xsl:text>
- <xsl:value-of select="$svgY"/>
- <xsl:text>cm;</xsl:text>
- </xsl:attribute>
- <xsl:text>&#160;</xsl:text>
- </xsl:element>
- </xsl:if>
- </xsl:if>
-
-
- <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
- <!--
- <xsl:choose>
- HEURISTIC: if the frame is anchored on a paragraph and the above gab is big enough to hold a text line,
- move it behind the text
- <xsl:when test="@text:anchor-type='paragraph' and
- (
- ($svgY &gt; 0.5) or
- ($svgX &gt; 4)
- ) and normalize-space($followingSibling) != ''">
- <xsl:apply-templates select="$followingSibling" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="true()"/>
- <xsl:with-param name="noDivBefore" select="false()"/>
- <xsl:with-param name="frameAlignedToParagraphWithSvgY">
- <xsl:call-template name="createDrawFrame2">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="svgY" select="$svgY"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>-->
- <xsl:call-template name="createDrawFrame2">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="svgY" select="$svgY"/>
- </xsl:call-template>
- <!-- <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
- <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
- <xsl:with-param name="leftPosition" select="$leftPosition"/>
- <xsl:with-param name="createDiv" select="true()"/>
- <xsl:with-param name="noDivBefore" select="false()"/>
- </xsl:apply-templates>
-
- </xsl:otherwise>
- </xsl:choose> -->
- </xsl:template>
-
- <xsl:template name="createDrawFrame2">
- <xsl:param name="globalData"/>
- <xsl:param name="previousFrameWidths" />
- <xsl:param name="parentMarginLeftNew"/>
- <xsl:param name="leftPosition" />
- <xsl:param name="svgY" />
-
- <xsl:comment>Next 'div' is a draw:frame.</xsl:comment>
- <xsl:element name="div">
- <xsl:attribute name="style">
- <xsl:call-template name="widthAndHeight"/>
-
- <!-- all images float (CSS float reltaive) with a left position calculated by svg:x - parentMarginLeft - previousFrameWidths -->
- <xsl:text> float:left; padding:0; position:relative; left:</xsl:text>
- <xsl:value-of select="$leftPosition"/>
- <xsl:text>cm; </xsl:text>
- <!-- if the frame is anchored on a char -->
- <xsl:if test="@text:anchor-type='char'">
- <xsl:text>top:</xsl:text>
- <xsl:value-of select="$svgY"/>
- <xsl:text>cm; </xsl:text>
- </xsl:if>
- </xsl:attribute>
- <xsl:apply-templates select="@*">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="node()">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="widthAndHeight">
- <xsl:if test="@svg:height | @svg:width">
- <xsl:choose>
- <xsl:when test="not(@svg:width)">
- <xsl:call-template name="svg:height"/>
- </xsl:when>
- <xsl:when test="not(@svg:height)">
- <xsl:call-template name="svg:width"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="svg:height"/>
- <xsl:call-template name="svg:width"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <!-- ***************** -->
- <!-- *** Text Span *** -->
- <!-- ***************** -->
-
- <xsl:template match="text:span">
- <xsl:param name="globalData"/>
-
- <xsl:choose>
- <xsl:when test="draw:frame">
- <!-- sometimes an ODF image is anchored as character and the
- image frame appears within a span (which is not valid for HTML)
- Heuristic: Neglecting the span assuming no text content aside
- of frame within span -->
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:element name="span">
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
-
- <!-- **************** -->
- <!-- *** Headings *** -->
- <!-- **************** -->
-
- <xsl:template match="text:h">
- <xsl:param name="globalData"/>
-
- <!-- no creation of empty headings (without text content) -->
- <xsl:if test="text() or descendant::text()">
- <!-- The URL linking of an table-of-content is due to a bug (cp. bug id# 102311) not mapped as URL in the XML.
- Linking of the table-of-content can therefore only be archieved by a work-around in HTML -->
- <xsl:call-template name="create-heading">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- default matching for header elements -->
- <xsl:template name="create-heading">
- <xsl:param name="globalData"/>
-
- <xsl:variable name="headingLevel">
- <xsl:choose>
- <xsl:when test="@text:outline-level &lt; 6">
- <xsl:value-of select="@text:outline-level"/>
- </xsl:when>
- <xsl:otherwise>6</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="headertyp" select="concat('h', $headingLevel)"/>
- <xsl:element name="{$headertyp}">
- <!-- outline style 'text:min-label-width' is interpreted as a CSS 'margin-right' attribute
- NOTE: Should be handled as CSS style in style header -->
- <xsl:variable name="min-label" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
- <xsl:attribute name="class">
- <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
-
- <xsl:call-template name="create-heading-anchor">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
-
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
-
- </xsl:template>
-
- <xsl:template name="create-heading-anchor">
- <xsl:param name="globalData"/>
-
- <!-- writing out a heading number if desired.-->
- <!-- if a corresponding 'text:outline-style' exist or is not empty -->
- <xsl:choose>
- <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-format != ''">
-
- <!-- Every heading element will get an unique anchor for its file, from its hiearchy level and name:
- For example: The heading title 'My favorite heading' might get <a name="1_2_2_My_favorite_heading" /> -->
- <!-- creating an anchor for referencing the heading (e.g. from content table) -->
- <xsl:variable name="headingNumber">
- <xsl:call-template name="get-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="create-heading-anchor2">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="headingNumber" select="$headingNumber"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="create-heading-anchor2">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <xsl:template name="get-heading-number">
- <xsl:param name="globalData"/>
-
- <!-- write number prefix -->
- <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-prefix"/>
- <xsl:call-template name="write-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- <!-- write number suffix -->
- <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-suffix"/>
- </xsl:template>
-
- <!-- creating an anchor for referencing the heading -->
- <xsl:template name="create-heading-anchor2">
- <xsl:param name="globalData"/>
- <xsl:param name="headingNumber" />
-
- <xsl:variable name="title">
- <xsl:apply-templates mode="concatenate"/>
- </xsl:variable>
- <!-- REFERENCE HANDLING - ANCHOR -->
- <xsl:element namespace="{$namespace}" name="a">
- <xsl:attribute name="id">
- <xsl:value-of select="translate(concat('a_',$headingNumber, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
- </xsl:attribute>
-
- <xsl:element name="span">
- <!-- outline style 'text:min-label-distance' is interpreted as a CSS 'margin-right' attribute
- NOTE: Should be handled as CSS style in style header -->
- <xsl:variable name="minLabelDistance" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-distance"/>
- <xsl:variable name="minLabelWidth" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
-
- <xsl:if test="$minLabelDistance | $minLabelWidth">
- <xsl:attribute name="style">
- <xsl:if test="$minLabelDistance">
- <xsl:text>margin-right:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$minLabelDistance"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- <xsl:if test="$minLabelWidth">
- <xsl:text>min-width:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$minLabelWidth"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
- <xsl:copy-of select="$headingNumber"/>
- </xsl:element>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="write-heading-number">
- <xsl:param name="globalData"/>
-
- <!-- By default heading start with '1', the parameter 'textStartValue' will only be set, if the attribute @text:start-value exist -->
- <xsl:choose>
- <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value">
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
- <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!--
- Find the correct heading no., which is the sum of 'text:start-value'
- and preceding siblings of 'text:h' with the same 'text:outline-level' (until a text:outline-level with lower value is found).
- If the 'text:start-value is not set the default value of '1' has to be taken.
- If a heading number is found (e.g. text:outline-level='3') all heading numbers
- for the higher levels have to be written out -->
- <xsl:template name="calc-heading-number">
- <xsl:param name="globalData"/>
- <xsl:param name="outlineLevel"/><!-- text level of the heading -->
- <xsl:param name="iOutlineLevel" select="1"/><!-- iterator, counts from 1 to the text level of the heading -->
- <xsl:param name="textStartValue" select="1"/><!-- text level to start with, default is '1' -->
-
- <xsl:choose>
- <!-- iText levels counts up from '1' to outlineLevel
- Which means writing a heading number from left to right -->
- <xsl:when test="$iOutlineLevel &lt; $outlineLevel">
-
- <!-- Write preceding heading numbers -->
- <xsl:call-template name="writeNumber">
- <xsl:with-param name="numberDigit">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="0"/>
- <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($outlineLevel)]/@style:num-format"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value">
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
- <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
- <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="calc-heading-number">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
- <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <!-- Write preceding heading numbers -->
- <xsl:call-template name="writeNumber">
- <xsl:with-param name="numberDigit">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="$textStartValue"/>
- <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = $outlineLevel]/@style:num-format"/>
- <xsl:with-param name="last" select="true()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="writeNumber">
- <xsl:param name="numberDigit"/>
- <xsl:param name="numberFormat"/>
- <xsl:param name="last"/>
-
- <xsl:choose>
- <xsl:when test="not($numberFormat)">
- <xsl:number value="$numberDigit" format="1."/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="$last">
- <xsl:number value="$numberDigit" format="{$numberFormat}"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:number value="$numberDigit" format="{$numberFormat}."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="calc-heading-digit">
- <xsl:param name="value"/>
- <xsl:param name="currentoutlineLevel"/>
- <xsl:param name="i" select="1"/>
-
- <xsl:variable name="precedingoutlineLevel" select="preceding-sibling::text:h[$i]/@text:outline-level"/>
- <xsl:choose>
- <xsl:when test="$currentoutlineLevel = $precedingoutlineLevel">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="$value + 1"/>
- <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
- <xsl:with-param name="i" select="$i + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$currentoutlineLevel &lt; $precedingoutlineLevel">
- <xsl:call-template name="calc-heading-digit">
- <xsl:with-param name="value" select="$value"/>
- <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
- <xsl:with-param name="i" select="$i + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Neglect Annotations -->
- <xsl:template match="office:annotation" mode="concatenate"/>
-
- <!-- Match text:placeholder child nodes (e.g. text) -->
- <xsl:template match="text:placeholder">
- <xsl:param name="globalData"/>
-
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:template>
-
- <!-- ************* -->
- <!-- *** Link *** -->
- <!-- ************* -->
-
- <xsl:template match="text:a | draw:a">
- <xsl:param name="globalData"/>
-
- <xsl:call-template name="create-common-anchor-link">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:template>
-
-
- <xsl:template name="create-common-anchor-link">
- <xsl:param name="globalData"/>
-
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="create-href">
- <xsl:with-param name="href" select="@xlink:href"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:template>
-
-
-
- <!-- ******************* -->
- <!-- *** Image Link *** -->
- <!-- ******************* -->
-
- <!-- currently suggesting that all draw:object-ole elements are images -->
- <xsl:template match="draw:image | draw:object-ole">
- <xsl:param name="globalData"/>
-
- <xsl:choose>
- <xsl:when test="ancestor::text:p or parent::text:span or parent::text:h or parent::draw:a or parent::text:a or text:ruby-base">
- <!-- XHTML does not allow the mapped elements to contain paragraphs -->
- <xsl:call-template name="create-image-element">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <!-- images are embedded in a paragraph, but are in CSS not able to express a horizontal alignment for themself.
- A 'div' element taking over the image style would solve that problem, but is invalid as child of a paragraph -->
- <xsl:element name="p">
- <xsl:apply-templates select="@draw:style-name">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
-
- <xsl:call-template name="create-image-element">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="create-image-element">
- <xsl:param name="globalData"/>
-
- <xsl:element name="img">
- <xsl:if test="../@svg:width or ../@svg:height">
- <xsl:attribute name="style">
- <xsl:if test="../@svg:height">
- <xsl:text>height:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="../@svg:height"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- <xsl:if test="../@svg:width">
- <xsl:text>width:</xsl:text>
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="../@svg:width"/>
- </xsl:call-template>
- <xsl:text>cm;</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="alt">
- <xsl:choose>
- <xsl:when test="../svg:desc">
- <xsl:value-of select="../svg:desc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
- Accessibility Warning:
- No alternate text ('svg:desc' element) set for
- image '<xsl:value-of select="@xlink:href"/>'!</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <xsl:attribute name="src">
- <xsl:call-template name="create-href">
- <xsl:with-param name="href" select="@xlink:href"/>
- </xsl:call-template>
- </xsl:attribute>
-
- <!-- style interpretation only, as no subelements are allowed for img in XHTML -->
- <xsl:apply-templates select="@draw:style-name">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <!-- ************ -->
- <!-- *** list *** -->
- <!-- ************ -->
- <!--
- Due to the requirements below the ODF list functionality is not handled by CSS, but the list labels calculated and written by XSLT.
-
- REQUIREMENTS:
- =============
-
- A)
- One significant difference between XHTML and Office List elements is that a list without text nodes but only further list children
- would not show a list symbol in the Office, but in the browser from XHTML.
-
- B)
- Since OASIS Open Document XML (implemented in OOo2.0) only one parent type exists for list items
- the 'text:list' element. The XHTML element 'ol', 'ul' will be choosen upon the list style type.
-
- C)
- An Office list may be spread over the whole document. Linked by their style and text:continue-numbering='true'.
-
- D)
- An Office list can use characters or images as list label.
-
- E)
- An Office list can have a prefix and suffix around the list label.
-
- F)
- An Office list style may have the attribute consecutive numbering, which resolves in a list counting for all levels
-
- G)
- An Office list may (re)start on any arbitrary value by using @text:start-value on the text:list-item
-
- INDENDATION:
- ============
-
- The indent of a list label is not only calculated by using the text:space-before of the list level (listLevelStyle), but
- as well taking the left margin of the first paragraph (or heading) of the list into account as loy match="" name="" use=""/>ng it is not negative.
-
- | MARGIN LEFT | LABEL |
-
- | text:space-before (listlevelstyle) | text:min-label-width |
- | + fo:left-margin (firstParagraph) | |
-
- Further details beyond text:list-list..
- -->
- <xsl:key name="listStyles" match=" /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style | /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style" use="@style:name"/>
-
- <!--
- A text list may only have text:list-item and text:list-header as children.
- -->
- <xsl:template match="text:list">
- <xsl:param name="globalData"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="listLevel" select="1"/>
- <xsl:param name="listRestart" select="false()"/>
- <xsl:param name="itemLabel" select="''"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName" select="@text:style-name"/>
-
- <!-- To choose list type - get the list style, with the same 'text:style-name' and same 'text:level' >-->
- <xsl:variable name="listStyleRTF">
- <xsl:variable name="listStyleInContentFile" select="key('listStyles', $listStyleName)"/>
- <xsl:choose>
- <xsl:when test="$listStyleInContentFile">
- <xsl:copy-of select="$listStyleInContentFile"/>
- </xsl:when>
- <xsl:when test="$globalData/office:styles/text:list-style[@style:name = $listStyleName]">
- <xsl:copy-of select="$globalData/office:styles/text:list-style[@style:name = $listStyleName]"/>
- </xsl:when>
- <xsl:when test="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]">
- <xsl:copy-of select="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="function-available('common:node-set')">
- <xsl:call-template name="create-list-type">
- <xsl:with-param name="listStyle" select="common:node-set($listStyleRTF)" />
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listStyleName" select="$listStyleName" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="function-available('xalan:nodeset')">
- <xsl:call-template name="create-list-type">
- <xsl:with-param name="listStyle" select="xalan:nodeset($listStyleRTF)" />
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listStyleName" select="$listStyleName" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="function-available('xt:node-set')">
- <xsl:call-template name="create-list-type">
- <xsl:with-param name="listStyle" select="xt:node-set($listStyleRTF)" />
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listStyleName" select="$listStyleName" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">The required node-set function was not found!</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="create-list-type">
- <xsl:param name="globalData"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="listLevel" />
- <xsl:param name="listRestart" />
- <xsl:param name="itemLabel"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName" />
-
- <!-- $globalData/styles-file/*/office:styles/ -->
- <xsl:variable name="listLevelStyle" select="$listStyle/*/*[@text:level = number($listLevel)]"/>
- <xsl:variable name="listIndent">
- <xsl:call-template name="getListIndent">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="firstPara" select="*[1]/*[name() = 'text:p' or name() = 'text:h'][1]"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="isEmptyList" select="not(*[1]/*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
- <xsl:variable name="listType">
- <xsl:choose>
- <!-- ordered list -->
- <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
- <xsl:text>ol</xsl:text>
- </xsl:when>
- <!-- unordered list (bullet or image) -->
- <xsl:otherwise>
- <xsl:text>ul</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:element name="{$listType}">
- <xsl:apply-templates select="*[1]" mode="listItemSibling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset">
- <xsl:choose>
- <xsl:when test="$isListNumberingReset">
- <xsl:value-of select="true()"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- A list is empty if a text:list does not have a text:list-header or text:list-item (wildcard as only those can exist beyond a text:list), which contains a text:h or text:p -->
- <xsl:value-of select="not($isEmptyList)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listRestart">
- <xsl:choose>
- <xsl:when test="$listRestart">
- <xsl:value-of select="$listRestart"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- descdendants restart their list numbering, when an ancestor is not empty -->
- <xsl:value-of select="not($isEmptyList)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="minLabelDist">
- <xsl:choose>
- <xsl:when test="$listLevelStyle/*/@text:min-label-distance">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-distance"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="minLabelWidth">
- <xsl:choose>
- <xsl:when test="$listLevelStyle/*/@text:min-label-width">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-width"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <!-- See comment before text:list template -->
- <xsl:template name="getListIndent">
- <xsl:param name="globalData"/>
- <xsl:param name="listLevelStyle"/>
- <!-- The first paragraph of the list item (heading is special paragraph in ODF) -->
- <xsl:param name="firstPara" />
-
- <!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
- <xsl:variable name="firstParaStyles" select="$globalData/all-styles/style[@style:name = $firstPara/@text:style-name]/final-properties"/>
-
- <!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
- <xsl:variable name="firstParaLeftMargin">
- <xsl:choose>
- <xsl:when test="contains($firstParaStyles, 'margin-left:')">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($firstParaStyles, 'margin-left:'), ';'))"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="spaceBefore">
- <xsl:choose>
- <xsl:when test="$listLevelStyle/*/@text:space-before">
- <xsl:call-template name="convert2cm">
- <xsl:with-param name="value" select="$listLevelStyle/*/@text:space-before"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Only if the left-margin of the first paragraph is positive the sum
- text:space-before and fo:left-margin is taken as list indent -->
- <xsl:choose>
- <xsl:when test="$firstParaLeftMargin &gt; 0">
- <xsl:value-of select="$firstParaLeftMargin + $spaceBefore"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$spaceBefore"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- ****************** -->
- <!-- *** list item *** -->
- <!-- ****************** -->
-<!--
- Left margin of the complete list:
- The space between left page and the list symbol (left-margin) is in the Office implemented by
- the sum of three values:
- 1) 'text:space-before', which is part of the 'text:list-style' element.
- 2) 'margin:left' from the style of the first child (e.g. paragraph).
- 3) 'fo:text-indent' the indent of the first line of some child (e.g. paragraph) (applied by CSS class style)
-
- Possible list children:
- <!ELEMENT text:list-item (text:p|text:h|text:list|text:list)+>
-
- In the Office the list label before the text depends on two attributes:
- - 'text:min-label-width': the distance between list label and all text of the list item.
- - 'text:min-label-distance': the distance between list label and text of the first line,
- only used, when text does not fit in text:min-label-width (ignored)
-
--->
- <xsl:template match="text:list-item | text:list-header" mode="listItemSibling">
- <xsl:param name="globalData"/>
- <xsl:param name="firstitemLabelWidth"/>
- <xsl:param name="isEmptyList" select="not(*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelDist"/>
- <xsl:param name="minLabelWidth"/>
- <xsl:param name="listIndent" />
-
-
- <xsl:variable name="listIndentNew">
- <xsl:choose>
- <xsl:when test="$listIndent">
- <xsl:value-of select="$listIndent"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="getListIndent">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="firstPara" select="*[name() = 'text:p' or name() = 'text:h'][1]" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="itemNumberNew">
- <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
- <xsl:choose>
- <xsl:when test="$isEmptyList">
- <!-- An empty list item (no text:h/text:p as child), will not count as item and does not increment the count. -->
- <xsl:variable name="tempItemNumber">
- <xsl:choose>
- <!-- siblings will be incremented by one -->
- <xsl:when test="$itemNumber">
- <xsl:value-of select="$itemNumber + 1"/>
- </xsl:when>
- <!-- if a higher list level had content the numbering starts with 1 -->
- <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
- <xsl:value-of select="1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="getItemNumber">
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <!-- in case the empty list-item is the first list-item in document -->
- <xsl:when test="$tempItemNumber = 1">
- <xsl:value-of select="1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tempItemNumber - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="@text:start-value">
- <xsl:value-of select="@text:start-value"/>
- </xsl:when>
- <!-- text:start-value from list level style will only be taken on the first list-item of a list -->
- <xsl:when test="$listLevelStyle/@text:start-value and count(preceding-sibling::text:list-item) = 0">
- <xsl:value-of select="$listLevelStyle/@text:start-value"/>
- </xsl:when>
- <!-- siblings will be incremented by one -->
- <xsl:when test="$itemNumber">
- <xsl:value-of select="$itemNumber + 1"/>
- </xsl:when>
- <!-- if a higher list level had content the numbering starts with 1 -->
- <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
- <xsl:value-of select="1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="getItemNumber">
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:variable>
- <xsl:variable name="itemLabelNew">
- <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
- <!--
- A numbered label (e.g. 2.C.III) is created for every text:list-item/header.
- Above list levels are listed in the label, if the list-style requires this. Levels are separated by a '.'
- Formatation is dependent for every list level depth.
- The label is passed from anchestor text:list-item/header and if requrired truncated.
- The prefix/suffix (as well list level dependent) comes before and after the complete label (after truncation)
- -->
- <!-- Numbered label will be generated -->
- <xsl:call-template name="createItemLabel">
- <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevelsToDisplay">
- <xsl:variable name="display" select="$listLevelStyle/@text:display-levels"/>
- <xsl:choose>
- <xsl:when test="$display">
- <xsl:value-of select="$display"/>
- </xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:variable>
- <xsl:element name="li">
- <xsl:choose>
- <xsl:when test="$isEmptyList">
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
- <xsl:with-param name="listLevel" select="$listLevel + 1"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <!-- Possible following children are text:h, text:p, list:text, text:soft-page-break -->
- <xsl:apply-templates mode="list-item-children" select="*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <!-- The new created label is given to the children -->
- <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
- <xsl:with-param name="listLabelElement">
- <xsl:choose>
- <xsl:when test="name() = 'text:list-header'"/>
- <xsl:otherwise>
- <xsl:variable name="listLabelWidth">
- <xsl:choose>
- <xsl:when test="$minLabelWidth &gt; $minLabelDist">
- <xsl:value-of select="$minLabelWidth"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$minLabelDist"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Numbering is being done by this transformation creating a HTML span representing the number label
- The html:span represents the list item/header label (e.g. 1.A.III)
- As the html:span is usually a inline element is formated by CSS as block element to use width upon it,
- to disable the caridge return float:left is used and later neglected -->
- <xsl:element name="span">
- <xsl:if test="$listLevelStyle/@text:style-name">
- <xsl:attribute name="class">
- <xsl:value-of select="$listLevelStyle/@text:style-name"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="style">
- <xsl:text>display:block;float:</xsl:text>
- <!-- 2DO: Svante - copy this functionality for other used margin:left (in western country 'left') -->
- <xsl:call-template name="getOppositeWritingDirection">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
- </xsl:call-template>
- <xsl:text>;min-width:</xsl:text>
- <xsl:value-of select="$listLabelWidth"/>
- <xsl:text>cm</xsl:text>
- </xsl:attribute>
- <xsl:variable name="labelContent">
- <xsl:choose>
- <xsl:when test="text:number">
- <xsl:apply-templates select="text:number" mode="listnumber"/>
- </xsl:when>
- <xsl:when test="name($listLevelStyle) = 'text:list-level-style-bullet'">
- <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
- <xsl:value-of select="$listLevelStyle/@text:bullet-char"/>
- <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
- </xsl:when>
- <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
- <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
- <xsl:value-of select="$itemLabelNew"/>
- <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- Listing with image as bullets, taken from the list style's href -->
- <xsl:value-of select="$listLevelStyle/@xlink:href"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Some browsers have problem with stand-alone elements (e.g. <span/>)
- Therefore a comment is being inserted into an empty label -->
- <xsl:choose>
- <xsl:when test="$labelContent != ''">
- <xsl:value-of select="$labelContent"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:comment>&#160;</xsl:comment>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="listLabelEmptyElement">
- <xsl:variable name="listLabelWidth">
- <xsl:choose>
- <xsl:when test="$minLabelWidth &gt; $minLabelDist">
- <xsl:value-of select="$minLabelWidth"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$minLabelDist"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:element name="span">
- <xsl:if test="$listLevelStyle/@text:style-name">
- <xsl:attribute name="class">
- <xsl:value-of select="$listLevelStyle/@text:style-name"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="style">
- <xsl:text>display:block;float:</xsl:text>
- <xsl:call-template name="getOppositeWritingDirection">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
- </xsl:call-template>
- <xsl:text>;min-width:</xsl:text>
- <xsl:value-of select="$listLabelWidth"/>
- <xsl:text>cm</xsl:text>
- </xsl:attribute>
- <xsl:comment>&#160;</xsl:comment>
- </xsl:element>
- </xsl:with-param>
- <xsl:with-param name="listLevel" select="$listLevel + 1"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndentNew"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
- <xsl:with-param name="listIndent">
- <xsl:choose>
- <xsl:when test="not($isEmptyList)">
- <xsl:value-of select="$listIndentNew"/>
- </xsl:when>
- </xsl:choose>
- </xsl:with-param>
- <!-- Receives the same parent label -->
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="minLabelDist" select="$minLabelDist"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template name="getOppositeWritingDirection">
- <xsl:param name="globalData"/>
- <xsl:param name="paraStyleName"/>
-
- <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paraStyleName]/final-properties"/>
-
- <xsl:choose>
- <xsl:when test="contains($imageParagraphStyle, 'writing-mode:')">
- <xsl:choose>
- <xsl:when test="contains(substring-before(substring-after($imageParagraphStyle, 'writing-mode:'), ';'), 'rl')">right</xsl:when>
- <xsl:otherwise>left</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>left</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="text:number" mode="listnumber">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="text:number" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="listLabelElement"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle" />
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLabelElement" select="$listLabelElement"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- Each key element holds the set of all text:list-item/text:list-header of a certain level and a certain style -->
- <xsl:key name="getListItemsByLevelAndStyle" use="concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)" match="text:list-item | text:list-header"/>
- <!-- Each key element holds the set of all text:list-item/text:list-header of a certain style -->
- <xsl:key name="getListItemsByStyle" use="ancestor::text:list/@text:style-name" match="text:list-item | text:list-header"/>
-
-
- <!-- The Numbering start value (or offset from regular counteing) is used at the first item of offset,
- but have to be reused on following item/headers with no text:start-value -->
- <xsl:template name="getItemNumber">
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="listStyle"/>
-
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="preceding::text:list-item[generate-id(key('getListItemsByLevelAndStyle', concat($listLevel, $listStyleName))) = generate-id(key('getListItemsByLevelAndStyle', concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)))]"/>
-
- <xsl:with-param name="precedingListItemsOfSameStyle" select="preceding::text:list-item[generate-id(key('getListItemsByStyle', $listStyleName)) = generate-id(key('getListItemsByStyle', ancestor::text:list/@text:style-name))]"/>
- </xsl:call-template>
- </xsl:template>
-
- <!-- When there is a text:start-value the last have to be found and added to the number -->
- <xsl:template name="countListItemTillStartValue">
- <xsl:param name="IteratorSameLevelAndStyle" select="1"/>
- <xsl:param name="IteratorSameStyle" select="1"/>
- <xsl:param name="itemNumber" select="1"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="precedingListItemsOfSameLevelAndStyle" />
- <xsl:param name="precedingListItemsOfSameLevelAndStyleCount" select="count($precedingListItemsOfSameLevelAndStyle)"/>
- <xsl:param name="precedingListItemsOfSameStyle" />
- <xsl:param name="precedingListItemsOfSameStyleCount" select="count($precedingListItemsOfSameStyle)"/>
- <!-- E.g.: If a list level 2 number is searched, a level 3 with content found with only a level 1 parent with content,
- the level 3 gets a 'pseudoLevel' -->
- <xsl:param name="pseudoLevel" select="0" />
-
- <!-- set the next of preceding list items. Starting from the current to the next previous text:list-item -->
- <xsl:variable name="precedingListItemOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle[$precedingListItemsOfSameLevelAndStyleCount - $IteratorSameLevelAndStyle + 1]"/>
- <xsl:variable name="precedingListItemOfSameStyle" select="$precedingListItemsOfSameStyle[$precedingListItemsOfSameStyleCount - $IteratorSameStyle + 1]"/>
- <xsl:choose>
- <xsl:when test="($precedingListItemOfSameStyle and $precedingListItemOfSameLevelAndStyle) or ($precedingListItemOfSameStyle and $listStyle/text:list-style/@text:consecutive-numbering)">
- <xsl:for-each select="$precedingListItemOfSameStyle">
- <xsl:choose>
- <!-- if it is a higher list level element -->
- <xsl:when test="$listStyle/text:list-style/@text:consecutive-numbering">
-
- <xsl:call-template name="countListItem">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <!-- NOT CONSECUTIVE NUMBERING -->
- <xsl:variable name="currentListLevel" select="count(ancestor::text:list)"/>
- <xsl:choose>
- <!-- IF IT IS A HIGHER LIST LEVEL ELEMENT -->
- <xsl:when test="$currentListLevel &lt; $listLevel">
- <xsl:choose>
- <!-- if it has content the counting is ended -->
- <xsl:when test="*[name() = 'text:h' or name() = 'text:p']">
- <!-- 2DO: Perhaps the children still have to be processed -->
- <xsl:value-of select="$itemNumber + $pseudoLevel"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- if it is empty the counting continues -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- IF IT IS A LIST LEVEL ELEMENT OF THE COUNTING LEVEL -->
- <xsl:when test="$currentListLevel = $listLevel">
- <xsl:call-template name="countListItem">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <!-- list item below the current level does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel">
- <xsl:choose>
- <!-- empty list item does not count -->
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
- <xsl:value-of select="$pseudoLevel"/>
- </xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$itemNumber"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="countListItem">
- <xsl:param name="IteratorSameLevelAndStyle"/>
- <xsl:param name="IteratorSameStyle"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listLevelStyle"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="precedingListItemsOfSameLevelAndStyle"/>
- <xsl:param name="precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:param name="precedingListItemsOfSameStyle"/>
- <xsl:param name="precedingListItemsOfSameStyleCount"/>
- <xsl:param name="pseudoLevel" />
-
- <xsl:choose>
- <xsl:when test="@text:start-value">
- <xsl:choose>
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
- <!-- empty list item does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$itemNumber + @text:start-value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$listLevelStyle/@text:start-value">
- <xsl:choose>
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
- <!-- empty list item does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$itemNumber + $listLevelStyle/@text:start-value"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
- <!-- empty list item does not count -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <!-- count on till you find a start-value or the end is reached -->
- <xsl:call-template name="countListItemTillStartValue">
- <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
- <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
- <xsl:with-param name="itemNumber" select="$itemNumber + 1"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
- <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
- <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
- <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
- <xsl:with-param name="pseudoLevel" select="0" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <!-- Creates the list label containing the number, which is separated by '.' between the levels.
- Depending on the levels to display (listLevelsToDisplay) -->
- <xsl:template name="createItemLabel">
- <xsl:param name="itemLabel" select="''"/>
- <xsl:param name="itemNumber" />
- <xsl:param name="listLevel" />
- <xsl:param name="listLevelStyle" />
- <xsl:param name="listLevelsToDisplay" />
-
- <xsl:choose>
- <xsl:when test="$listLevelsToDisplay &lt; $listLevel">
- <xsl:call-template name="truncLabel">
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber" />
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle" />
- <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="numberedSymbol">
- <xsl:comment>&#160;</xsl:comment>
- <!-- only give out a number when number format is not empty -->
- <xsl:if test="$listLevelStyle/@style:num-format != ''">
- <xsl:number value="$itemNumber" format="{$listLevelStyle/@style:num-format}"/>
- </xsl:if>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$listLevelsToDisplay != 1">
- <xsl:value-of select="concat($itemLabel, '.' , $numberedSymbol)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$numberedSymbol"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="truncLabel">
- <xsl:param name="itemLabel" />
- <xsl:param name="itemNumber" />
- <xsl:param name="listLevel" />
- <xsl:param name="listLevelStyle" />
- <xsl:param name="listLevelsToDisplay" />
- <xsl:param name="listStyle" />
- <xsl:param name="listStyleName" />
-
- <xsl:call-template name="createItemLabel">
- <xsl:with-param name="itemLabel">
- <xsl:if test="contains($itemLabel, '.')">
- <xsl:value-of select="substring-after($itemLabel, '.')"/>
- </xsl:if>
- </xsl:with-param>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLevel" select="$listLevel - 1"/>
- <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
- <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
- </xsl:call-template>
- </xsl:template>
-
-
- <xsl:template match="text:p" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="listLabelElement"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <!-- 2DO page alignment fix - PART1 -->
-
- <!-- xhtml:p may only contain inline elements.
- If there is one frame beyond, div must be used! -->
- <xsl:variable name="elementName">
- <xsl:choose>
- <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
- <xsl:otherwise>p</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:element name="{$elementName}">
- <xsl:call-template name="create-list-style">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="styleName" select="@text:style-name"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="$listLabelElement">
- <xsl:copy-of select="$listLabelElement"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$listLabelEmptyElement"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$minLabelWidth"/>
- </xsl:apply-templates>
- <!-- this span disables the float necessary to bring two block elements on one line. It contains a space as IE6 bug workaround -->
- <span class="odfLiEnd"></span>
- <xsl:text>&#160;</xsl:text>
- </xsl:element>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
-
- <!-- Neglecting the left margin behavior for headings for now -->
- <xsl:template match="text:h" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="listLabelElement"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <xsl:element name="h">
- <xsl:call-template name="create-list-style">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="styleName" select="@text:style-name"/>
- </xsl:call-template>
- <xsl:variable name="title">
- <xsl:apply-templates mode="concatenate"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$listLabelElement">
- <xsl:copy-of select="$listLabelElement"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$listLabelEmptyElement"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- REFERENCE HANDLING - ANCHOR -->
- <xsl:element namespace="{$namespace}" name="a">
- <xsl:attribute name="id">
- <xsl:value-of select="translate(concat('a_',$listLabelElement, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
- </xsl:attribute>
- <xsl:apply-templates>
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="listIndent" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:element>
-
- <!-- this span disables the float necessary to bring two block elements on one line. It contains a space as IE6 bug workaround -->
- <span class="odfLiEnd"></span>
- <xsl:text>&#160;</xsl:text>
- </xsl:element>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
-
- <xsl:template match="*" mode="list-item-children">
- <xsl:param name="globalData"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="listLabelEmptyElement"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
- <xsl:param name="minLabelWidth"/>
-
- <xsl:apply-templates select="self::*">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
-
- <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listRestart" select="$listRestart"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="*" mode="listItemSibling">
- <xsl:param name="globalData"/>
- <xsl:param name="isEmptyList"/>
- <xsl:param name="isListNumberingReset"/>
- <xsl:param name="isNextLevelNumberingReset"/>
- <xsl:param name="itemLabel"/>
- <xsl:param name="itemNumber"/>
- <xsl:param name="listIndent"/>
- <xsl:param name="listLevel"/>
- <xsl:param name="listRestart"/>
- <xsl:param name="listStyle"/>
- <xsl:param name="listStyleName"/>
-
- <xsl:apply-templates select="self::*">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <!-- receives the same parent label, only with a different itemNumber -->
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
- <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
- <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
- <xsl:with-param name="itemNumber" select="$itemNumber"/>
- <xsl:with-param name="listIndent" select="$listIndent"/>
- <!-- receives the same parent label, only with a different itemNumber -->
- <xsl:with-param name="itemLabel" select="$itemLabel"/>
- <xsl:with-param name="listLevel" select="$listLevel"/>
- <xsl:with-param name="listStyle" select="$listStyle"/>
- <xsl:with-param name="listStyleName" select="$listStyleName"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="text()" mode="list-item-children">
- <xsl:value-of select="."/>
- </xsl:template>
-
-
- <xsl:template name="create-list-style">
- <xsl:param name="globalData"/>
- <xsl:param name="listIndent" select="0"/>
- <xsl:param name="styleName"/>
-
- <xsl:if test="$styleName">
- <xsl:attribute name="class">
- <xsl:value-of select="translate($styleName, '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="style">
- <xsl:text>margin-</xsl:text>
- <xsl:call-template name="getOppositeWritingDirection">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
- </xsl:call-template>
- <xsl:text>:</xsl:text>
- <xsl:value-of select="$listIndent"/>
- <xsl:text>cm;</xsl:text>
- </xsl:attribute>
- </xsl:template>
-
-
- <!-- ********************************************** -->
- <!-- *** Text Section (contains: draw:text-box) *** -->
- <!-- ********************************************** -->
-
- <xsl:template match="text:section">
- <xsl:param name="globalData"/>
-
- <xsl:if test="not(contains(@text:display, 'none'))">
- <xsl:comment>Next 'div' was a 'text:section'.</xsl:comment>
- <xsl:element name="div">
- <xsl:call-template name="apply-styles-and-content">
- <xsl:with-param name="globalData" select="$globalData"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
-
- <!-- Hidden text dependend on Office variables:
- The text is not shown, if condition is 'true'.
- Implemented solely for conditons as '<VARIABLE>==0' or '<VARIABLE>==1'
- -->
- <xsl:key match="text:variable-set" name="varSet" use="@text:name"/>
- <xsl:template match="text:hidden-text">
- <xsl:param name="globalData"/>
-
- <xsl:variable name="varName" select="substring-before(@text:condition, '==')"/>
- <xsl:variable name="varValue" select="substring-after(@text:condition, '==')"/>
- <xsl:choose>
- <xsl:when test="key('varSet', $varName)/@text:value != $varValue">
- <xsl:value-of select="@text:string-value"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:comment>
- <xsl:value-of select="$varName"/>
- <xsl:value-of select="@text:string-value"/>
- <xsl:value-of select="$varName"/>
- </xsl:comment>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name-->
- <xsl:param name="globalData"/>
-
- <xsl:attribute name="class">
- <xsl:value-of select="translate(., '.,;: %()[]/\+', '_____________')"/>
- </xsl:attribute>
- </xsl:template>
-
-
- <!-- ***************** -->
- <!-- *** Footnotes *** -->
- <!-- ***************** -->
-
- <xsl:template match="text:note">
- <xsl:param name="globalData"/>
-
- <!-- get style configuration -->
- <xsl:variable name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
-
- <xsl:variable name="titlePrefix">
- <xsl:choose>
- <xsl:when test="@text:note-class = 'footnote'">
- <xsl:text>Footnote: </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>Endnote: </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- write anchor -->
- <xsl:element name="span">
- <xsl:attribute name="class">
- <xsl:value-of select="$footnoteConfig/@text:citation-body-style-name"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$titlePrefix"/>
- <xsl:apply-templates mode="textOnly" select="text:note-body"/>
- </xsl:attribute>
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#', @text:id)"/>
- </xsl:attribute>
- <xsl:attribute name="id">
- <xsl:value-of select="concat('body_', @text:id)"/>
- </xsl:attribute>
- <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
- </xsl:element>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="*" mode="textOnly">
- <xsl:apply-templates select="* | text()" mode="textOnly" />
- </xsl:template>
-
- <xsl:template match="text()" mode="textOnly">
- <xsl:value-of select="."/>
- </xsl:template>
-
- <!-- Useful in case of 'style:map', conditional formatting, where a style references to another -->
- <xsl:key name="textNotes" match="text:note" use="@text:note-class"/>
-
- <!-- writing the footer- and endnotes beyond the body -->
- <xsl:template name="write-text-nodes">
- <xsl:param name="globalData"/>
-
- <!-- write footnote body -->
- <xsl:for-each select="key('textNotes', 'footnote')">
- <xsl:call-template name="write-text-node">
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
- </xsl:call-template>
- </xsl:for-each>
-
- <!-- write endnote body -->
- <xsl:for-each select="key('textNotes', 'endnote')">
- <xsl:call-template name="write-text-node">
-
- <xsl:with-param name="globalData" select="$globalData"/>
- <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="write-text-node">
- <xsl:param name="globalData"/>
- <xsl:param name="footnoteConfig"/>
-
- <xsl:apply-templates select="text:note-body/*[1]">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="footnotePrefix">
- <xsl:element name="span">
- <xsl:attribute name="class">footnodeNumber</xsl:attribute>
- <xsl:element name="a">
- <xsl:attribute name="class">
- <xsl:value-of select="$footnoteConfig/@text:citation-style-name"/>
- </xsl:attribute>
- <xsl:attribute name="id">
- <xsl:value-of select="@text:id"/>
- </xsl:attribute>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#body_', @text:id)"/>
- </xsl:attribute>
- <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
- </xsl:element>
- </xsl:element>
- </xsl:with-param>
- </xsl:apply-templates>
- <xsl:apply-templates select="text:note-body/*[position()&gt;1]">
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- DISABLING this tab handling as the tab width is only relative
- <xsl:template match="text:tab">
- <xsl:param name="globalData"/>
-
- <xsl:variable name="tabNo">
- <xsl:choose>
- <xsl:when test="preceding-sibling::text:line-break">
- <xsl:call-template name="countTextTab"/>
- </xsl:when>
- <xsl:when test="preceding-sibling::text:tab">
- <xsl:value-of select="count(preceding-sibling::text:tab)"/>
- </xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:element name="span">
- <xsl:attribute name="style">margin-left:<xsl:value-of select="$globalData/all-doc-styles/style[@style:name = current()/parent::*/@text:style-name]/*/style:tab-stops/style:tab-stop[$tabNo]/@style:position"/>;</xsl:attribute>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="countTextTab">
- <xsl:param name="tabCount" select="1"/>
- <xsl:param name="context" select="."/>
-
- <xsl:choose>
- <xsl:when test="preceding-sibling::*[1]">
- <xsl:for-each select="preceding-sibling::*[1]">
- <xsl:call-template name="countTextTab">
- <xsl:with-param name="tabCout">
- <xsl:choose>
- <xsl:when test="name(.) = 'text:tab'">
- <xsl:value-of select="$tabCount + 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabCount"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="context" select="preceding-sibling::*[1]" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$tabCount"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
--->
- <!-- MathML -->
- <xsl:template match="draw:object[math:math]">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
- <xsl:apply-templates select="math:math/math:semantics/*" mode="math"/>
- </math>
- </xsl:template>
-
- <xsl:template match="*" mode="math">
- <xsl:element name="{local-name()}" namespace="http://www.w3.org/1998/Math/MathML">
- <xsl:apply-templates select="@*|node()" mode="math"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="@*" mode="math">
- <xsl:attribute name="{local-name()}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:template>
-
- <xsl:template match="math:annotation" mode="math"/>
-
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<!--
+ For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xt="http://www.jclark.com/xt" xmlns:common="http://exslt.org/common" xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="chart config dc dom dr3d draw fo form math meta number office ooo oooc ooow script style svg table text xforms xlink xsd xsi xt common xalan" xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <!--+++++ INCLUDED XSL MODULES +++++-->
+
+ <!-- helper collection, to convert measures (e.g. inch to pixel using DPI (dots per inch) parameter)-->
+ <xsl:import href="../../common/measure_conversion.xsl"/>
+
+ <!-- common office body element handling -->
+ <xsl:import href="../common/body.xsl"/>
+
+ <!-- common table handling -->
+ <xsl:import href="../common/table/table.xsl"/>
+
+ <!-- xhtml table handling -->
+ <xsl:include href="table.xsl"/>
+
+ <!-- Useful in case of 'style:map', conditional formatting, where a style references to another -->
+ <xsl:key name="styles" match="/*/office:styles/style:style | /*/office:automatic-styles/style:style" use="@style:name"/>
+
+
+ <!-- ************ -->
+ <!-- *** body *** -->
+ <!-- ************ -->
+
+ <xsl:key match="style:style/@style:master-page-name" name="masterPage" use="'count'"/>
+ <xsl:key match="style:master-page" name="masterPageElements" use="@style:name"/>
+ <xsl:key match="style:page-layout" name="pageLayoutElements" use="@style:name"/>
+ <xsl:key name="writingModeStyles" match="/*/office:styles/style:style/style:paragraph-properties/@style:writing-mode | /*/office:automatic-styles/style:style/style:paragraph-properties/@style:writing-mode" use="'test'"/>
+ <xsl:template name="create-body">
+ <xsl:param name="globalData"/>
+
+ <!-- approximation to find the correct master page style (with page dimensions) -->
+ <xsl:variable name="masterPageNames">
+ <!-- Loop over every style:style containing a @style:master-page-name attribute -->
+ <xsl:for-each select="key('masterPage','count')">
+ <!-- Check if this style is being used in the body -->
+ <xsl:if test="key('elementUsingStyle', ../@style:name)">
+ <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
+ <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
+ <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
+ <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
+ <xsl:variable name="pageProperties">
+ <xsl:choose>
+ <xsl:when test="not($pageLayoutName) or $pageLayoutName = ''">
+ <xsl:copy-of select="$globalData/styles-file/*/office:automatic-styles/style:page-layout[1]/style:page-layout-properties"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Find the according style:page-layout and store the properties in a variable -->
+ <xsl:copy-of select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="body">
+ <!-- direction of text flow -->
+ <xsl:variable name="writingMode" select="$pageProperties/style:page-layout-properties/@style:writing-mode"/>
+ <xsl:choose>
+ <xsl:when test="$writingMode">
+ <xsl:choose>
+ <xsl:when test="contains($writingMode, 'lr')">
+ <xsl:attribute name="dir">ltr</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="contains($writingMode, 'rl')">
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- As CSS writing-mode is not implemented by all browsers, a heuristic is done -->
+ <xsl:variable name="writingMode" select="key('writingModeStyles', 'test')"/>
+ <xsl:if test="contains($writingMode, 'rl')">
+ <xsl:attribute name="dir">rtl</xsl:attribute>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- adapt page size -->
+ <xsl:variable name="pageWidth" select="$pageProperties/style:page-layout-properties/@fo:page-width"/>
+
+ <!-- multiple backgroundimages for different page styles (never used in html) -->
+ <xsl:variable name="backgroundImage" select="$pageProperties/style:page-layout-properties/style:background-image"/>
+ <!-- page margins & background image -->
+ <xsl:if test="$pageWidth or $pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
+ <xsl:attribute name="style">
+ <xsl:if test="$pageWidth">
+ <xsl:text>max-width:</xsl:text>
+ <xsl:value-of select="$pageWidth"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ <xsl:if test="$pageProperties/style:page-layout-properties/@fo:* or $backgroundImage/@xlink:href">
+ <xsl:apply-templates select="$pageProperties/style:page-layout-properties/@fo:*"/>
+ <xsl:if test="$backgroundImage/@xlink:href">
+ <xsl:text>background-image:url(</xsl:text>
+ <xsl:call-template name="create-href">
+ <xsl:with-param name="href" select="$backgroundImage/@xlink:href"/>
+ </xsl:call-template>
+ <xsl:text>);</xsl:text>
+
+ <xsl:if test="$backgroundImage/@style:repeat">
+ <xsl:choose>
+ <xsl:when test="$backgroundImage/@style:repeat = 'no-repeat'">
+ <xsl:text>background-repeat:no-repeat;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>background-repeat:repeat;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="$backgroundImage/@style:position">
+ <xsl:text>background-position:</xsl:text>
+ <xsl:value-of select="$backgroundImage/@style:position"/>
+ <xsl:text>;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <!-- processing the content of the OpenDocument content file -->
+ <xsl:apply-templates select="/*/office:body/*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ </xsl:element>
+ </xsl:template>
+
+ <!-- processing the content of the OpenDocument content file -->
+ <xsl:template match="office:body/*">
+ <xsl:param name="globalData"/>
+
+ <!-- not using of 'apply-styles-and-content' as the content table information migth have been added to 'globalData' variable -->
+ <xsl:apply-templates select="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name -->
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <!-- writing the footer- and endnotes beyond the body -->
+ <xsl:call-template name="write-text-nodes">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ******************************* -->
+ <!-- *** User Field Declarations *** -->
+ <!-- ******************************* -->
+
+ <xsl:template match="text:user-field-get | text:user-field-input">
+ <xsl:param name="globalData"/>
+
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ <xsl:template match="text:conditional-text">
+ <xsl:param name="globalData"/>
+
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ <!-- ODF text fields -->
+ <xsl:template match="text:author-initials | text:author-name | text:chapter | text:character-count | text:creation-date | text:creation-time | text:creator | text:date | text:description | text:editing-cycles | text:editing-duration | text:file-name | text:image-count | text:initial-creator | text:keywords | text:modification-date | text:modification-time | text:object-count | text:page-continuation | text:page-count | text:page-number | text:paragraph-count | text:print-date | text:print-time | text:printed-by | text:sender-city | text:sender-company | text:sender-country | text:sender-email | text:sender-fax | text:sender-firstname | text:sender-initials | text:sender-lastname | text:sender-phone-private | text:sender-phone-work | text:sender-position | text:sender-postal-code | text:sender-state-or-province | text:sender-street | text:sender-title | text:sheet-name | text:subject | text:table-count | text:time | text:title | text:user-defined | text:word-count">
+ <xsl:param name="globalData"/>
+
+ <xsl:element name="span">
+ <xsl:attribute name="title">
+ <xsl:value-of select="local-name()"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+
+
+ <!-- *************** -->
+ <!-- *** Textbox *** -->
+ <!-- *************** -->
+
+ <xsl:template match="draw:text-box">
+ <xsl:param name="globalData"/>
+
+ <xsl:comment>Next 'div' was a 'draw:text-box'.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:variable name="dimension">
+ <xsl:apply-templates select="@fo:min-width"/>
+ <xsl:apply-templates select="@fo:max-width"/>
+ <xsl:apply-templates select="@fo:min-height"/>
+ <xsl:apply-templates select="@fo:max-height"/>
+ </xsl:variable>
+ <xsl:if test="$dimension">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$dimension"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="@draw:name">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="node()">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="@fo:min-width">
+ <xsl:text>min-width:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="@fo:max-width">
+ <xsl:text>max-width:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="@fo:min-height">
+ <xsl:text>min-height:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="@fo:max-height">
+ <xsl:text>max-height:</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+
+
+ <!-- inline style helper for the 'div' boxes -->
+ <xsl:template name="svg:height">
+ <xsl:text>height:</xsl:text>
+ <xsl:choose>
+ <!-- changing the distance measure: inch to in -->
+ <xsl:when test="contains(@svg:height, 'inch')">
+ <xsl:value-of select="substring-before(@svg:height, 'ch')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@svg:height"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+
+ <!-- inline style helper for the 'div' boxes -->
+ <xsl:template name="svg:width">
+ <xsl:text>width:</xsl:text>
+ <xsl:choose>
+ <!-- changing the distance measure: inch to in -->
+ <xsl:when test="contains(@svg:width, 'inch')">
+ <xsl:value-of select="substring-before(@svg:width, 'ch')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@svg:width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+
+
+
+ <!-- ****************** -->
+ <!-- *** Paragraphs *** -->
+ <!-- ****************** -->
+
+ <xsl:template match="text:p | draw:page">
+ <xsl:param name="globalData"/>
+ <!-- The footnote symbol is the prefix for a footnote in the footer -->
+ <xsl:param name="footnotePrefix"/>
+ <!-- 1) In ODF sometimes the followig children are nested
+ <text:p>
+ <draw:frame>
+ <draw:text-box>
+ <text:p>
+ Which results in a paragraphs (the last text:p) having a paragraph as its anchestor.
+ In HTML a 'p' can only have inline documents (no other 'p' as children'),
+ a 'div' will be given for the ancestors instead.
+ 2) ODF images are embedded in a paragraph, but CSS is not able to express a horizontal alignment for an HTML image (text:align is only valid for block elements).
+ A surrounding 'div' element taking over the image style solves that problem, but the div is invalid as child of a paragraph
+ Therefore the paragraph has to be exchanged with a HTML div element
+ -->
+ <!-- 2DO page alignment fix - PART1 -->
+ <xsl:choose>
+ <xsl:when test="draw:frame and ((normalize-space(text()) != '') or (count(*) &gt; 1 and (not(text:soft-page-break) and count(*) = 2)))">
+ <!-- Create a div, if there is a 'draw:frame' child with either text (not being whitespace alone) and more than the draw:frame alone and
+ not the draw:frame and a soft-page-break alone (which is quite often) -->
+
+ <!-- If there is a frame within the text:p or draw:page, its siblings are surrounded as well by a div and are floating (CSS float) -->
+ <!-- But it makes no sense to create floating if the frame is alone or only together with a soft-page-break not usable for HTML -->
+ <!-- The paragraph is written as DIV as there might be nested paragraphs (see above choose block) -->
+ <xsl:choose>
+ <xsl:when test="name() = 'text:p'">
+ <xsl:comment>Next 'div' was a 'text:p'.</xsl:comment>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>Next 'div' was a 'draw:page'.</xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:element name="div">
+ <xsl:apply-templates select="@*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ <!-- the footnote symbol is the prefix for a footnote in the footer -->
+ <xsl:copy-of select="$footnotePrefix"/>
+
+ <!-- start floating of frame (and siblings) -->
+ <xsl:apply-templates select="node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="previousFrameWidths" select="0"/>
+ <xsl:with-param name="previousFrameHeights" select="0"/>
+ <!-- 2DO for me (Svante) - Not used, uncertain 4now..
+ <xsl:with-param name="pageMarginLeft">
+ <xsl:call-template name="getPageMarginLeft"/>
+ </xsl:with-param>-->
+ </xsl:apply-templates>
+ </xsl:element>
+ <!-- after the last draw:frame sibling the CSS float is disabled
+ &#160; is an unbreakable whitespace to give conent to the element and force a browser not to ignore the element -->
+ <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
+ </xsl:when>
+ <xsl:when test="text:tab">
+ <!-- If there is a tabulator (ie. text:tab) within a paragraph, a heuristic for ODF tabulators creates a
+ span for every text:tab embracing the following text nodes aligning them according to the tabulator.
+ A line break or another text:tab starts a new text:span, line break even the tab counter for the line.
+ -->
+ <xsl:element name="p">
+ <xsl:apply-templates select="@*">
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:apply-templates>
+ <!-- start with first child of the paragraph -->
+ <xsl:variable name="firstChildNode" select="node()[1]" />
+ <xsl:apply-templates select="$firstChildNode" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="tabStops" select="$globalData/all-doc-styles/style[@style:name = current()/@text:style-name]/*/style:tab-stops"/>
+ <xsl:with-param name="parentMarginLeft">
+ <!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
+ <xsl:variable name="paragraphName" select="@text:style-name" />
+ <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
+ <!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
+<!-- 2DO: left-margin in order with bidirectional -->
+ <xsl:choose>
+ <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="pageMarginLeft">
+ <xsl:call-template name="getPageMarginLeft"/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- !!Check if paragraph is empty!!
+ OOo writes out empty paragraphs layouted behind an image (= draw:image within draw:frame)
+ those have to be neglected in HTML -->
+ <xsl:when test="name() = 'text:p' and not(text()) and not(*)">
+ <xsl:variable name="isFollowingImage">
+ <xsl:call-template name="follows-empty-paragraphs-and-image">
+ <xsl:with-param name="precedingElement" select="preceding-sibling::node()[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="$isFollowingImage = 'yes'">
+ <xsl:call-template name="create-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="create-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- A span will be created for every text:tab embracing the following text nodes.
+ A line break or another text:tab starts a new text:span -->
+ <xsl:template match="* | text()" mode="tabHandling">
+ <xsl:param name="globalData"/>
+ <xsl:param name="tabStops"/>
+ <!-- there can be multiple tabs in one line, tabNo guesses the one to apply. By default the first i.e. "1" -->
+ <xsl:param name="tabCount" select="0"/>
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="pageMarginLeft" />
+
+<!-- 2DO: EXCHANGE FOLLOING SIBLING BY VARIABLE -->
+ <xsl:variable name="followingSiblingNode" select="following-sibling::node()[1]"/>
+
+
+ <!--
+ Every tabulator indents its following content, encapuslated in a span
+ element.
+
+ This template have two modes:
+
+ 1) Before the first tabulator it will match as usually paragraph content
+ to HTML.
+ 2) After the first paragraph it will always triggers two recursions.
+ One embraces the following content of a paragraph element into a span.
+ (tabContentHandling)
+ The other calls this template and will now ignore anything else than
+ TAB and LINE-BREAK.
+
+
+ The tabulators and linebreaks are being iterated, one by one to keep track of the tab number
+ -->
+
+
+ <xsl:choose>
+ <xsl:when test="name() = 'text:tab'">
+ <!-- every frame sibling have to be incapuslated within a div with left indent -->
+ <xsl:element name="span">
+ <xsl:choose>
+ <xsl:when test="count($tabStops/style:tab-stop) &lt; 3">
+ <!-- only allow the heuristic when the style has less than 3 TABS -->
+ <xsl:attribute name="style">
+ <xsl:call-template name="createTabIndent">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="$tabCount + 1"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- if there are more than 3 TABS in the style, create a none-breakable-space as whitespace -->
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="$tabCount + 1"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="name() = 'text:line-break'">
+ <!-- A line-break resets the tabCount to '0' -->
+ <br/>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="0"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- only before the first tab all content is written out -->
+ <xsl:if test="$tabCount = 0">
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="tabStops" select="$tabStops"/>
+ <xsl:with-param name="tabCount" select="$tabCount"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="pageMarginLeft" select="$pageMarginLeft"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!--
+ This recursion creates the content of a tab (i.e. following siblings
+ till next TAB or LINE BREAK) and ends with the next
+ TAB, LINE-BREAK or with the end of the paragraph.
+ -->
+ <xsl:template match="* | text()" mode="tabContentHandling">
+ <xsl:param name="globalData"/>
+
+ <xsl:if test="(name() != 'text:tab') and (name() != 'text:line-break')">
+ <!-- Write out content -->
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ <!-- Apply for the next node -->
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="tabContentHandling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="createTabIndent">
+ <xsl:param name="globalData"/>
+ <xsl:param name="tabStops"/>
+ <xsl:param name="tabCount"/>
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="pageMarginLeft" />
+
+ <xsl:text>position:absolute;left:</xsl:text>
+ <xsl:variable name="tabPosition">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$tabStops/style:tab-stop[$tabCount]/@style:position"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="tabIndent">
+ <xsl:choose>
+ <xsl:when test="$tabStops/style:tab-stop[$tabCount]/@style:type = 'center'">
+ <!-- in case of style:type 'center' the text is even before the tab stop,
+ centered around the beginning. As I see currently no way in mapping this,
+ therefore I do some HEURISTIC (minus -2.5cm) -->
+ <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft - 2.5"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabPosition + $parentMarginLeft + $pageMarginLeft"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$tabIndent='NaN'">
+ <xsl:variable name="tabPosition">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$tabStops/style:tab-stop[last()]/@style:position"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- Heuristic: for every tab that is more than specified give a further 1 cm -->
+ <xsl:value-of select="$parentMarginLeft + $tabPosition + count($tabStops/style:tab-stop) - $tabCount"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabIndent"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>cm;</xsl:text>
+ <xsl:apply-templates select="$tabStops/style:tab-stop[$tabCount]/@style:type"/>
+ </xsl:template>
+
+ <!-- OOo writes out empty paragraphs layouted behind an image,
+ those have to be neglected in HTML
+ This method checks if an empty paragraph is of that kind! -->
+ <xsl:template name="follows-empty-paragraphs-and-image">
+ <xsl:param name="precedingElement" />
+ <xsl:param name="elementToCheck" select="1"/>
+
+ <xsl:choose>
+ <!-- OOo writes out empty paragraphs layouted behind the image,
+ those have to be neglected in HTML -->
+ <xsl:when test="name($precedingElement) = 'text:p' and not($precedingElement/text()) and not($precedingElement/*)">
+ <xsl:call-template name="follows-empty-paragraphs-and-image">
+ <xsl:with-param name="precedingElement" select="preceding-sibling::*[$elementToCheck]"/>
+ <xsl:with-param name="elementToCheck" select="$elementToCheck +1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$precedingElement/draw:frame">no</xsl:when>
+ <xsl:otherwise>yes</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="create-paragraph">
+ <xsl:param name="globalData"/>
+ <!-- the footnote symbol is the prefix for a footnote in the footer -->
+ <xsl:param name="footnotePrefix"/>
+
+ <!-- xhtml:p may only contain inline elements.
+ If there is one frame beyond, div must be used! -->
+ <xsl:variable name="elementName">
+ <xsl:choose>
+ <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
+ <xsl:otherwise>p</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$elementName}">
+ <xsl:choose>
+ <!-- in ODF borders of paragraphs will be merged by default. Merging means the adjactend paragraphs are building a unit,
+ where only the first and the last will have have a border to the surrounding (top / bottom border)
+ <xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
+ <xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
+ -->
+ <xsl:when test="$globalData/all-styles/style[@style:name = current()/@text:style-name]/@mergedBorders">
+ <xsl:variable name="precedingParagraphStyle" select="preceding-sibling::*[1][name() = 'text:p']/@text:style-name"/>
+ <xsl:variable name="followingParagraphStyle" select="following-sibling::*[1][name() = 'text:p']/@text:style-name"/>
+ <xsl:choose>
+ <xsl:when test="$precedingParagraphStyle or $followingParagraphStyle">
+ <xsl:variable name="isPrecedingBorderParagraph" select="$globalData/all-styles/style[@style:name = $precedingParagraphStyle]/@mergedBorders"/>
+ <xsl:variable name="isFollowingBorderParagraph" select="$globalData/all-styles/style[@style:name = $followingParagraphStyle]/@mergedBorders"/>
+ <xsl:choose>
+ <xsl:when test="not($isPrecedingBorderParagraph) and $isFollowingBorderParagraph">
+ <xsl:attribute name="class">
+ <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderStart')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="$isPrecedingBorderParagraph and not($isFollowingBorderParagraph)">
+ <xsl:attribute name="class">
+ <xsl:value-of select="concat(translate(@text:style-name, '.,;: %()[]/\+', '_____________'), '_borderEnd')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="write-paragraph">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="write-paragraph">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="write-paragraph">
+ <xsl:param name="globalData"/>
+ <!-- the footnote symbol is the prefix for a footnote in the footer -->
+ <xsl:param name="footnotePrefix" />
+
+ <!-- empty paragraph tags does not provoke an carridge return,
+ therefore an non breakable space (&nbsp) have been inserted.-->
+ <xsl:choose>
+ <xsl:when test="node()">
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix" select="$footnotePrefix" />
+ </xsl:call-template>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="style:tab-stop/@style:type">
+ <xsl:text>text-align:</xsl:text>
+ <xsl:choose>
+ <xsl:when test=". = 'left'">left</xsl:when>
+ <xsl:when test=". = 'right'">right</xsl:when>
+ <xsl:when test=". = 'center'">center</xsl:when>
+ <xsl:otherwise>justify</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+
+ <!-- As soon a frame is within a paragraph (text:p) or page:frame, every element floating (CSS) and worked out in sequence.
+ Accumulating prior frame width and adding parent's left margin -->
+
+ <!-- Matching all elements and text beyond a paragraph/text:page which are sibling of a draw:frame -->
+ <xsl:template match="* | text()" mode="frameFloating">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
+ <!-- it becomes true for siblings after a draw:frame -->
+ <xsl:param name="createDiv" select="false()"/>
+ <xsl:param name="noDivBefore" select="true()"/>
+ <xsl:param name="leftPosition" />
+ <xsl:param name="parentMarginLeft" />
+ <xsl:param name="frameAlignedToParagraphWithSvgY" />
+
+ <xsl:choose>
+ <xsl:when test="name() = 'draw:frame'">
+ <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
+
+ <!-- if the first node is a draw:frame create a div -->
+ <xsl:call-template name="createDrawFrame">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ </xsl:call-template>
+ <!-- next elements will be called after the creation with the new indent (plus width of frame) -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="nextSiblingIsFrame" select="name(following-sibling::node()[1]) = 'draw:frame'"/>
+ <xsl:choose>
+ <xsl:when test="$createDiv and normalize-space(.) != ''">
+ <!-- every following frame sibling till the next draw:frame
+ have to be incapuslated within a div with left indent.
+ To be moved alltogether arcording the indent (usually right) -->
+ <xsl:comment>Next 'div' added for floating.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:attribute name="style">
+ <xsl:text>position:relative; left:</xsl:text>
+ <xsl:value-of select="$leftPosition"/>
+ <xsl:text>cm;</xsl:text>
+ </xsl:attribute>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ <!-- if it is a frame sibling it will be NOT incapuslated within the div (as already within one) -->
+ <xsl:if test="not($nextSiblingIsFrame)">
+ <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="false()"/>
+ <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:element>
+ <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
+
+ <!-- Other draw:frame will be created outside of the div element -->
+ <xsl:apply-templates select="following-sibling::draw:frame[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="not($createDiv)">
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ <xsl:if test="not($nextSiblingIsFrame) or $noDivBefore">
+ <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
+ <xsl:choose>
+ <xsl:when test="normalize-space($followingSibling) != ''">
+ <xsl:apply-templates select="$followingSibling" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeft"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="false()"/>
+ <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY" select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- As draw:fame may occure within more elements than in text:p and draw:page -->
+ <xsl:template match="draw:frame">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
+
+ <xsl:call-template name="createDrawFrame">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths"/>
+ <xsl:with-param name="previousFrameHeights" select="$previousFrameHeights"/>
+ </xsl:call-template>
+ <!-- after the last draw:frame sibling the CSS float is disabled -->
+ <div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;">&#160;</div>
+ </xsl:template>
+
+ <xsl:template name="getPageMarginLeft">
+ <!-- approximation to find the correct master page style (with page dimensions) -->
+ <xsl:variable name="masterPageNames">
+ <!-- Loop over every style:style containing a @style:master-page-name attribute -->
+ <xsl:for-each select="key('masterPage','count')">
+ <!-- Check if this style is being used in the body -->
+ <xsl:if test="key('elementUsingStyle', ../@style:name)">
+ <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
+ <xsl:if test="string-length(../@style:master-page-name) &gt; 0">
+ <xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
+ <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
+ <!-- Find the according style:page-layout and store the properties in a variable -->
+ <xsl:variable name="pageMarginLeftAttr" select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties/@fo:margin-left"/>
+ <xsl:choose>
+ <xsl:when test="$pageMarginLeftAttr">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$pageMarginLeftAttr"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Elements and text aside of a draw:frame are floating, here a div is being created.
+ Either for a draw:frame or for text and other elements floating aside -->
+ <xsl:template name="createDrawFrame">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" select="0"/>
+ <xsl:param name="previousFrameHeights" select="0" />
+ <xsl:param name="parentMarginLeft"/>
+
+ <xsl:variable name="parentMarginLeftNew">
+ <xsl:choose>
+ <xsl:when test="string-length(normalize-space($parentMarginLeft)) &lt; 1">
+ <!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
+ <xsl:variable name="paragraphName" select="parent::*/@text:style-name" />
+ <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paragraphName]/final-properties"/>
+ <!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
+ <xsl:choose>
+ <xsl:when test="contains($imageParagraphStyle, 'margin-left:')">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($imageParagraphStyle, 'margin-left:'), ';'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$parentMarginLeft"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="svgWidth">
+ <xsl:choose>
+ <xsl:when test="@svg:width">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="@svg:width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="svgX">
+ <xsl:choose>
+ <xsl:when test="@svg:x">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="@svg:x"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="leftPosition" select="$svgX - $parentMarginLeftNew - $previousFrameWidths"/>
+ <xsl:variable name="svgY">
+ <xsl:choose>
+ <xsl:when test="@svg:y">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="@svg:y"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- if the frame is anchored on a paragraph -->
+ <xsl:if test="@text:anchor-type='paragraph'">
+ <xsl:comment>Next 'div' is emulating the top hight of a draw:frame.</xsl:comment>
+ <!-- When the svg:y is set relativ to the paragraph content, the best way to emulate a positive height,
+ is to add an invisbile division inbetween with a height.
+ Often text will flow into this 'gap', which is handled separately!
+ -->
+ <xsl:if test="$svgY &gt; 0">
+ <xsl:element name="div">
+ <xsl:attribute name="style">
+ <xsl:text>height:</xsl:text>
+ <xsl:value-of select="$svgY"/>
+ <xsl:text>cm;</xsl:text>
+ </xsl:attribute>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:if>
+
+
+ <xsl:variable name="followingSibling" select="following-sibling::node()[1]"/>
+ <!--
+ <xsl:choose>
+ HEURISTIC: if the frame is anchored on a paragraph and the above gab is big enough to hold a text line,
+ move it behind the text
+ <xsl:when test="@text:anchor-type='paragraph' and
+ (
+ ($svgY &gt; 0.5) or
+ ($svgX &gt; 4)
+ ) and normalize-space($followingSibling) != ''">
+ <xsl:apply-templates select="$followingSibling" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="true()"/>
+ <xsl:with-param name="noDivBefore" select="false()"/>
+ <xsl:with-param name="frameAlignedToParagraphWithSvgY">
+ <xsl:call-template name="createDrawFrame2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="svgY" select="$svgY"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>-->
+ <xsl:call-template name="createDrawFrame2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeftNew" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="svgY" select="$svgY"/>
+ </xsl:call-template>
+ <!-- <xsl:apply-templates select="following-sibling::node()[1]" mode="frameFloating">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="previousFrameWidths" select="$previousFrameWidths + $svgWidth"/>
+ <xsl:with-param name="parentMarginLeft" select="$parentMarginLeftNew"/>
+ <xsl:with-param name="leftPosition" select="$leftPosition"/>
+ <xsl:with-param name="createDiv" select="true()"/>
+ <xsl:with-param name="noDivBefore" select="false()"/>
+ </xsl:apply-templates>
+
+ </xsl:otherwise>
+ </xsl:choose> -->
+ </xsl:template>
+
+ <xsl:template name="createDrawFrame2">
+ <xsl:param name="globalData"/>
+ <xsl:param name="previousFrameWidths" />
+ <xsl:param name="parentMarginLeftNew"/>
+ <xsl:param name="leftPosition" />
+ <xsl:param name="svgY" />
+
+ <xsl:comment>Next 'div' is a draw:frame.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:attribute name="style">
+ <xsl:call-template name="widthAndHeight"/>
+
+ <!-- all images float (CSS float reltaive) with a left position calculated by svg:x - parentMarginLeft - previousFrameWidths -->
+ <xsl:text> float:left; padding:0; position:relative; left:</xsl:text>
+ <xsl:value-of select="$leftPosition"/>
+ <xsl:text>cm; </xsl:text>
+ <!-- if the frame is anchored on a char -->
+ <xsl:if test="@text:anchor-type='char'">
+ <xsl:text>top:</xsl:text>
+ <xsl:value-of select="$svgY"/>
+ <xsl:text>cm; </xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:apply-templates select="@*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="node()">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="widthAndHeight">
+ <xsl:if test="@svg:height | @svg:width">
+ <xsl:choose>
+ <xsl:when test="not(@svg:width)">
+ <xsl:call-template name="svg:height"/>
+ </xsl:when>
+ <xsl:when test="not(@svg:height)">
+ <xsl:call-template name="svg:width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="svg:height"/>
+ <xsl:call-template name="svg:width"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- ***************** -->
+ <!-- *** Text Span *** -->
+ <!-- ***************** -->
+
+ <xsl:template match="text:span">
+ <xsl:param name="globalData"/>
+
+ <xsl:choose>
+ <xsl:when test="draw:frame">
+ <!-- sometimes an ODF image is anchored as character and the
+ image frame appears within a span (which is not valid for HTML)
+ Heuristic: Neglecting the span assuming no text content aside
+ of frame within span -->
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="span">
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+
+ <!-- **************** -->
+ <!-- *** Headings *** -->
+ <!-- **************** -->
+
+ <xsl:template match="text:h">
+ <xsl:param name="globalData"/>
+
+ <!-- no creation of empty headings (without text content) -->
+ <xsl:if test="text() or descendant::text()">
+ <!-- The URL linking of an table-of-content is due to a bug (cp. bug id# 102311) not mapped as URL in the XML.
+ Linking of the table-of-content can therefore only be archieved by a work-around in HTML -->
+ <xsl:call-template name="create-heading">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- default matching for header elements -->
+ <xsl:template name="create-heading">
+ <xsl:param name="globalData"/>
+
+ <xsl:variable name="headingLevel">
+ <xsl:choose>
+ <xsl:when test="@text:outline-level &lt; 6">
+ <xsl:value-of select="@text:outline-level"/>
+ </xsl:when>
+ <xsl:otherwise>6</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="headertyp" select="concat('h', $headingLevel)"/>
+ <xsl:element name="{$headertyp}">
+ <!-- outline style 'text:min-label-width' is interpreted as a CSS 'margin-right' attribute
+ NOTE: Should be handled as CSS style in style header -->
+ <xsl:variable name="min-label" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate(@text:style-name, '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+
+ <xsl:call-template name="create-heading-anchor">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+
+ </xsl:template>
+
+ <xsl:template name="create-heading-anchor">
+ <xsl:param name="globalData"/>
+
+ <!-- writing out a heading number if desired.-->
+ <!-- if a corresponding 'text:outline-style' exist or is not empty -->
+ <xsl:choose>
+ <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-format != ''">
+
+ <!-- Every heading element will get an unique anchor for its file, from its hiearchy level and name:
+ For example: The heading title 'My favorite heading' might get <a name="1_2_2_My_favorite_heading" /> -->
+ <!-- creating an anchor for referencing the heading (e.g. from content table) -->
+ <xsl:variable name="headingNumber">
+ <xsl:call-template name="get-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="create-heading-anchor2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="headingNumber" select="$headingNumber"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="create-heading-anchor2">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template name="get-heading-number">
+ <xsl:param name="globalData"/>
+
+ <!-- write number prefix -->
+ <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-prefix"/>
+ <xsl:call-template name="write-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ <!-- write number suffix -->
+ <xsl:value-of select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@style:num-suffix"/>
+ </xsl:template>
+
+ <!-- creating an anchor for referencing the heading -->
+ <xsl:template name="create-heading-anchor2">
+ <xsl:param name="globalData"/>
+ <xsl:param name="headingNumber" />
+
+ <xsl:variable name="title">
+ <xsl:apply-templates mode="concatenate"/>
+ </xsl:variable>
+ <!-- REFERENCE HANDLING - ANCHOR -->
+ <xsl:element namespace="{$namespace}" name="a">
+ <xsl:attribute name="id">
+ <xsl:value-of select="translate(concat('a_',$headingNumber, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
+ </xsl:attribute>
+
+ <xsl:element name="span">
+ <!-- outline style 'text:min-label-distance' is interpreted as a CSS 'margin-right' attribute
+ NOTE: Should be handled as CSS style in style header -->
+ <xsl:variable name="minLabelDistance" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-distance"/>
+ <xsl:variable name="minLabelWidth" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/*/@text:min-label-width"/>
+
+ <xsl:if test="$minLabelDistance | $minLabelWidth">
+ <xsl:attribute name="style">
+ <xsl:if test="$minLabelDistance">
+ <xsl:text>margin-right:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$minLabelDistance"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ <xsl:if test="$minLabelWidth">
+ <xsl:text>min-width:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$minLabelWidth"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$headingNumber"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="write-heading-number">
+ <xsl:param name="globalData"/>
+
+ <!-- By default heading start with '1', the parameter 'textStartValue' will only be set, if the attribute @text:start-value exist -->
+ <xsl:choose>
+ <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value">
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
+ <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = current()/@text:outline-level]/@text:start-value"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="@text:outline-level"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!--
+ Find the correct heading no., which is the sum of 'text:start-value'
+ and preceding siblings of 'text:h' with the same 'text:outline-level' (until a text:outline-level with lower value is found).
+ If the 'text:start-value is not set the default value of '1' has to be taken.
+ If a heading number is found (e.g. text:outline-level='3') all heading numbers
+ for the higher levels have to be written out -->
+ <xsl:template name="calc-heading-number">
+ <xsl:param name="globalData"/>
+ <xsl:param name="outlineLevel"/><!-- text level of the heading -->
+ <xsl:param name="iOutlineLevel" select="1"/><!-- iterator, counts from 1 to the text level of the heading -->
+ <xsl:param name="textStartValue" select="1"/><!-- text level to start with, default is '1' -->
+
+ <xsl:choose>
+ <!-- iText levels counts up from '1' to outlineLevel
+ Which means writing a heading number from left to right -->
+ <xsl:when test="$iOutlineLevel &lt; $outlineLevel">
+
+ <!-- Write preceding heading numbers -->
+ <xsl:call-template name="writeNumber">
+ <xsl:with-param name="numberDigit">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="0"/>
+ <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($outlineLevel)]/@style:num-format"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value">
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
+ <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
+ <xsl:with-param name="textStartValue" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = ($iOutlineLevel + 1)]/@text:start-value"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="calc-heading-number">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="outlineLevel" select="$outlineLevel"/>
+ <xsl:with-param name="iOutlineLevel" select="$iOutlineLevel + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Write preceding heading numbers -->
+ <xsl:call-template name="writeNumber">
+ <xsl:with-param name="numberDigit">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="$textStartValue"/>
+ <xsl:with-param name="currentoutlineLevel" select="$iOutlineLevel"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="numberFormat" select="$globalData/office:styles/text:outline-style/text:outline-level-style[@text:level = $outlineLevel]/@style:num-format"/>
+ <xsl:with-param name="last" select="true()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="writeNumber">
+ <xsl:param name="numberDigit"/>
+ <xsl:param name="numberFormat"/>
+ <xsl:param name="last"/>
+
+ <xsl:choose>
+ <xsl:when test="not($numberFormat)">
+ <xsl:number value="$numberDigit" format="1."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$last">
+ <xsl:number value="$numberDigit" format="{$numberFormat}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number value="$numberDigit" format="{$numberFormat}."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="calc-heading-digit">
+ <xsl:param name="value"/>
+ <xsl:param name="currentoutlineLevel"/>
+ <xsl:param name="i" select="1"/>
+
+ <xsl:variable name="precedingoutlineLevel" select="preceding-sibling::text:h[$i]/@text:outline-level"/>
+ <xsl:choose>
+ <xsl:when test="$currentoutlineLevel = $precedingoutlineLevel">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="$value + 1"/>
+ <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
+ <xsl:with-param name="i" select="$i + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$currentoutlineLevel &lt; $precedingoutlineLevel">
+ <xsl:call-template name="calc-heading-digit">
+ <xsl:with-param name="value" select="$value"/>
+ <xsl:with-param name="currentoutlineLevel" select="$currentoutlineLevel"/>
+ <xsl:with-param name="i" select="$i + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Neglect Annotations -->
+ <xsl:template match="office:annotation" mode="concatenate"/>
+
+ <!-- Match text:placeholder child nodes (e.g. text) -->
+ <xsl:template match="text:placeholder">
+ <xsl:param name="globalData"/>
+
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ************* -->
+ <!-- *** Link *** -->
+ <!-- ************* -->
+
+ <xsl:template match="text:a | draw:a">
+ <xsl:param name="globalData"/>
+
+ <xsl:call-template name="create-common-anchor-link">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:template>
+
+
+ <xsl:template name="create-common-anchor-link">
+ <xsl:param name="globalData"/>
+
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:call-template name="create-href">
+ <xsl:with-param name="href" select="@xlink:href"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:template>
+
+
+
+ <!-- ******************* -->
+ <!-- *** Image Link *** -->
+ <!-- ******************* -->
+
+ <!-- currently suggesting that all draw:object-ole elements are images -->
+ <xsl:template match="draw:image | draw:object-ole">
+ <xsl:param name="globalData"/>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::text:p or parent::text:span or parent::text:h or parent::draw:a or parent::text:a or text:ruby-base">
+ <!-- XHTML does not allow the mapped elements to contain paragraphs -->
+ <xsl:call-template name="create-image-element">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- images are embedded in a paragraph, but are in CSS not able to express a horizontal alignment for themself.
+ A 'div' element taking over the image style would solve that problem, but is invalid as child of a paragraph -->
+ <xsl:element name="p">
+ <xsl:apply-templates select="@draw:style-name">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+
+ <xsl:call-template name="create-image-element">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="create-image-element">
+ <xsl:param name="globalData"/>
+
+ <xsl:element name="img">
+ <xsl:if test="../@svg:width or ../@svg:height">
+ <xsl:attribute name="style">
+ <xsl:if test="../@svg:height">
+ <xsl:text>height:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="../@svg:height"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ <xsl:if test="../@svg:width">
+ <xsl:text>width:</xsl:text>
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="../@svg:width"/>
+ </xsl:call-template>
+ <xsl:text>cm;</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="alt">
+ <xsl:choose>
+ <xsl:when test="../svg:desc">
+ <xsl:value-of select="../svg:desc"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Accessibility Warning:
+ No alternate text ('svg:desc' element) set for
+ image '<xsl:value-of select="@xlink:href"/>'!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:attribute name="src">
+ <xsl:call-template name="create-href">
+ <xsl:with-param name="href" select="@xlink:href"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <!-- style interpretation only, as no subelements are allowed for img in XHTML -->
+ <xsl:apply-templates select="@draw:style-name">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- ************ -->
+ <!-- *** list *** -->
+ <!-- ************ -->
+ <!--
+ Due to the requirements below the ODF list functionality is not handled by CSS, but the list labels calculated and written by XSLT.
+
+ REQUIREMENTS:
+ =============
+
+ A)
+ One significant difference between XHTML and Office List elements is that a list without text nodes but only further list children
+ would not show a list symbol in the Office, but in the browser from XHTML.
+
+ B)
+ Since OASIS Open Document XML (implemented in OOo2.0) only one parent type exists for list items
+ the 'text:list' element. The XHTML element 'ol', 'ul' will be choosen upon the list style type.
+
+ C)
+ An Office list may be spread over the whole document. Linked by their style and text:continue-numbering='true'.
+
+ D)
+ An Office list can use characters or images as list label.
+
+ E)
+ An Office list can have a prefix and suffix around the list label.
+
+ F)
+ An Office list style may have the attribute consecutive numbering, which resolves in a list counting for all levels
+
+ G)
+ An Office list may (re)start on any arbitrary value by using @text:start-value on the text:list-item
+
+ INDENDATION:
+ ============
+
+ The indent of a list label is not only calculated by using the text:space-before of the list level (listLevelStyle), but
+ as well taking the left margin of the first paragraph (or heading) of the list into account as loy match="" name="" use=""/>ng it is not negative.
+
+ | MARGIN LEFT | LABEL |
+
+ | text:space-before (listlevelstyle) | text:min-label-width |
+ | + fo:left-margin (firstParagraph) | |
+
+ Further details beyond text:list-list..
+ -->
+ <xsl:key name="listStyles" match=" /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style | /*/office:styles/text:list-style | /*/office:automatic-styles/text:list-style | /*/office:styles/style:graphic-properties/text:list-style | /*/office:automatic-styles/style:graphic-properties/text:list-style" use="@style:name"/>
+
+ <!--
+ A text list may only have text:list-item and text:list-header as children.
+ -->
+ <xsl:template match="text:list">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="listLevel" select="1"/>
+ <xsl:param name="listRestart" select="false()"/>
+ <xsl:param name="itemLabel" select="''"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName" select="@text:style-name"/>
+
+ <!-- To choose list type - get the list style, with the same 'text:style-name' and same 'text:level' >-->
+ <xsl:variable name="listStyleRTF">
+ <xsl:variable name="listStyleInContentFile" select="key('listStyles', $listStyleName)"/>
+ <xsl:choose>
+ <xsl:when test="$listStyleInContentFile">
+ <xsl:copy-of select="$listStyleInContentFile"/>
+ </xsl:when>
+ <xsl:when test="$globalData/office:styles/text:list-style[@style:name = $listStyleName]">
+ <xsl:copy-of select="$globalData/office:styles/text:list-style[@style:name = $listStyleName]"/>
+ </xsl:when>
+ <xsl:when test="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]">
+ <xsl:copy-of select="$globalData/office:styles/style:graphic-properties/text:list-style[@style:name = $listStyleName]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('common:node-set')">
+ <xsl:call-template name="create-list-type">
+ <xsl:with-param name="listStyle" select="common:node-set($listStyleRTF)" />
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="function-available('xalan:nodeset')">
+ <xsl:call-template name="create-list-type">
+ <xsl:with-param name="listStyle" select="xalan:nodeset($listStyleRTF)" />
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="function-available('xt:node-set')">
+ <xsl:call-template name="create-list-type">
+ <xsl:with-param name="listStyle" select="xt:node-set($listStyleRTF)" />
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">The required node-set function was not found!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="create-list-type">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="listLevel" />
+ <xsl:param name="listRestart" />
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName" />
+
+ <!-- $globalData/styles-file/*/office:styles/ -->
+ <xsl:variable name="listLevelStyle" select="$listStyle/*/*[@text:level = number($listLevel)]"/>
+ <xsl:variable name="listIndent">
+ <xsl:call-template name="getListIndent">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="firstPara" select="*[1]/*[name() = 'text:p' or name() = 'text:h'][1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="isEmptyList" select="not(*[1]/*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
+ <xsl:variable name="listType">
+ <xsl:choose>
+ <!-- ordered list -->
+ <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
+ <xsl:text>ol</xsl:text>
+ </xsl:when>
+ <!-- unordered list (bullet or image) -->
+ <xsl:otherwise>
+ <xsl:text>ul</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="{$listType}">
+ <xsl:apply-templates select="*[1]" mode="listItemSibling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset">
+ <xsl:choose>
+ <xsl:when test="$isListNumberingReset">
+ <xsl:value-of select="true()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- A list is empty if a text:list does not have a text:list-header or text:list-item (wildcard as only those can exist beyond a text:list), which contains a text:h or text:p -->
+ <xsl:value-of select="not($isEmptyList)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listRestart">
+ <xsl:choose>
+ <xsl:when test="$listRestart">
+ <xsl:value-of select="$listRestart"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- descdendants restart their list numbering, when an ancestor is not empty -->
+ <xsl:value-of select="not($isEmptyList)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="minLabelDist">
+ <xsl:choose>
+ <xsl:when test="$listLevelStyle/*/@text:min-label-distance">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-distance"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="minLabelWidth">
+ <xsl:choose>
+ <xsl:when test="$listLevelStyle/*/@text:min-label-width">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$listLevelStyle/*/@text:min-label-width"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- See comment before text:list template -->
+ <xsl:template name="getListIndent">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLevelStyle"/>
+ <!-- The first paragraph of the list item (heading is special paragraph in ODF) -->
+ <xsl:param name="firstPara" />
+
+ <!-- Styles of first paragraph in list item, including ancestor styles (inheritance) -->
+ <xsl:variable name="firstParaStyles" select="$globalData/all-styles/style[@style:name = $firstPara/@text:style-name]/final-properties"/>
+
+ <!-- Only the left margin of the first paragraph of a list item will be added to the margin of the complete list (all levels)-->
+ <xsl:variable name="firstParaLeftMargin">
+ <xsl:choose>
+ <xsl:when test="contains($firstParaStyles, 'margin-left:')">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="normalize-space(substring-before(substring-after($firstParaStyles, 'margin-left:'), ';'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="spaceBefore">
+ <xsl:choose>
+ <xsl:when test="$listLevelStyle/*/@text:space-before">
+ <xsl:call-template name="convert2cm">
+ <xsl:with-param name="value" select="$listLevelStyle/*/@text:space-before"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Only if the left-margin of the first paragraph is positive the sum
+ text:space-before and fo:left-margin is taken as list indent -->
+ <xsl:choose>
+ <xsl:when test="$firstParaLeftMargin &gt; 0">
+ <xsl:value-of select="$firstParaLeftMargin + $spaceBefore"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$spaceBefore"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ****************** -->
+ <!-- *** list item *** -->
+ <!-- ****************** -->
+<!--
+ Left margin of the complete list:
+ The space between left page and the list symbol (left-margin) is in the Office implemented by
+ the sum of three values:
+ 1) 'text:space-before', which is part of the 'text:list-style' element.
+ 2) 'margin:left' from the style of the first child (e.g. paragraph).
+ 3) 'fo:text-indent' the indent of the first line of some child (e.g. paragraph) (applied by CSS class style)
+
+ Possible list children:
+ <!ELEMENT text:list-item (text:p|text:h|text:list|text:list)+>
+
+ In the Office the list label before the text depends on two attributes:
+ - 'text:min-label-width': the distance between list label and all text of the list item.
+ - 'text:min-label-distance': the distance between list label and text of the first line,
+ only used, when text does not fit in text:min-label-width (ignored)
+
+-->
+ <xsl:template match="text:list-item | text:list-header" mode="listItemSibling">
+ <xsl:param name="globalData"/>
+ <xsl:param name="firstitemLabelWidth"/>
+ <xsl:param name="isEmptyList" select="not(*[name() = 'text:h' or name() = 'text:p' or name() = 'text:name'])"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelDist"/>
+ <xsl:param name="minLabelWidth"/>
+ <xsl:param name="listIndent" />
+
+
+ <xsl:variable name="listIndentNew">
+ <xsl:choose>
+ <xsl:when test="$listIndent">
+ <xsl:value-of select="$listIndent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="getListIndent">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="firstPara" select="*[name() = 'text:p' or name() = 'text:h'][1]" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="itemNumberNew">
+ <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
+ <xsl:choose>
+ <xsl:when test="$isEmptyList">
+ <!-- An empty list item (no text:h/text:p as child), will not count as item and does not increment the count. -->
+ <xsl:variable name="tempItemNumber">
+ <xsl:choose>
+ <!-- siblings will be incremented by one -->
+ <xsl:when test="$itemNumber">
+ <xsl:value-of select="$itemNumber + 1"/>
+ </xsl:when>
+ <!-- if a higher list level had content the numbering starts with 1 -->
+ <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="getItemNumber">
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- in case the empty list-item is the first list-item in document -->
+ <xsl:when test="$tempItemNumber = 1">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tempItemNumber - 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="@text:start-value">
+ <xsl:value-of select="@text:start-value"/>
+ </xsl:when>
+ <!-- text:start-value from list level style will only be taken on the first list-item of a list -->
+ <xsl:when test="$listLevelStyle/@text:start-value and count(preceding-sibling::text:list-item) = 0">
+ <xsl:value-of select="$listLevelStyle/@text:start-value"/>
+ </xsl:when>
+ <!-- siblings will be incremented by one -->
+ <xsl:when test="$itemNumber">
+ <xsl:value-of select="$itemNumber + 1"/>
+ </xsl:when>
+ <!-- if a higher list level had content the numbering starts with 1 -->
+ <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
+ <xsl:value-of select="1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="getItemNumber">
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:variable name="itemLabelNew">
+ <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
+ <!--
+ A numbered label (e.g. 2.C.III) is created for every text:list-item/header.
+ Above list levels are listed in the label, if the list-style requires this. Levels are separated by a '.'
+ Formatation is dependent for every list level depth.
+ The label is passed from anchestor text:list-item/header and if requrired truncated.
+ The prefix/suffix (as well list level dependent) comes before and after the complete label (after truncation)
+ -->
+ <!-- Numbered label will be generated -->
+ <xsl:call-template name="createItemLabel">
+ <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevelsToDisplay">
+ <xsl:variable name="display" select="$listLevelStyle/@text:display-levels"/>
+ <xsl:choose>
+ <xsl:when test="$display">
+ <xsl:value-of select="$display"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:element name="li">
+ <xsl:choose>
+ <xsl:when test="$isEmptyList">
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
+ <xsl:with-param name="listLevel" select="$listLevel + 1"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Possible following children are text:h, text:p, list:text, text:soft-page-break -->
+ <xsl:apply-templates mode="list-item-children" select="*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <!-- The new created label is given to the children -->
+ <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
+ <xsl:with-param name="listLabelElement">
+ <xsl:choose>
+ <xsl:when test="name() = 'text:list-header'"/>
+ <xsl:otherwise>
+ <xsl:variable name="listLabelWidth">
+ <xsl:choose>
+ <xsl:when test="$minLabelWidth &gt; $minLabelDist">
+ <xsl:value-of select="$minLabelWidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$minLabelDist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Numbering is being done by this transformation creating a HTML span representing the number label
+ The html:span represents the list item/header label (e.g. 1.A.III)
+ As the html:span is usually a inline element is formated by CSS as block element to use width upon it,
+ to disable the caridge return float:left is used and later neglected -->
+ <xsl:element name="span">
+ <xsl:if test="$listLevelStyle/@text:style-name">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$listLevelStyle/@text:style-name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="style">
+ <xsl:text>display:block;float:</xsl:text>
+ <!-- 2DO: Svante - copy this functionality for other used margin:left (in western country 'left') -->
+ <xsl:call-template name="getOppositeWritingDirection">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
+ </xsl:call-template>
+ <xsl:text>;min-width:</xsl:text>
+ <xsl:value-of select="$listLabelWidth"/>
+ <xsl:text>cm</xsl:text>
+ </xsl:attribute>
+ <xsl:variable name="labelContent">
+ <xsl:choose>
+ <xsl:when test="text:number">
+ <xsl:apply-templates select="text:number" mode="listnumber"/>
+ </xsl:when>
+ <xsl:when test="name($listLevelStyle) = 'text:list-level-style-bullet'">
+ <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
+ <xsl:value-of select="$listLevelStyle/@text:bullet-char"/>
+ <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
+ </xsl:when>
+ <xsl:when test="name($listLevelStyle) = 'text:list-level-style-number'">
+ <xsl:value-of select="$listLevelStyle/@style:num-prefix"/>
+ <xsl:value-of select="$itemLabelNew"/>
+ <xsl:value-of select="$listLevelStyle/@style:num-suffix"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Listing with image as bullets, taken from the list style's href -->
+ <xsl:value-of select="$listLevelStyle/@xlink:href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Some browsers have problem with stand-alone elements (e.g. <span/>)
+ Therefore a comment is being inserted into an empty label -->
+ <xsl:choose>
+ <xsl:when test="$labelContent != ''">
+ <xsl:value-of select="$labelContent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>&#160;</xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="listLabelEmptyElement">
+ <xsl:variable name="listLabelWidth">
+ <xsl:choose>
+ <xsl:when test="$minLabelWidth &gt; $minLabelDist">
+ <xsl:value-of select="$minLabelWidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$minLabelDist"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="span">
+ <xsl:if test="$listLevelStyle/@text:style-name">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$listLevelStyle/@text:style-name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="style">
+ <xsl:text>display:block;float:</xsl:text>
+ <xsl:call-template name="getOppositeWritingDirection">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
+ </xsl:call-template>
+ <xsl:text>;min-width:</xsl:text>
+ <xsl:value-of select="$listLabelWidth"/>
+ <xsl:text>cm</xsl:text>
+ </xsl:attribute>
+ <xsl:comment>&#160;</xsl:comment>
+ </xsl:element>
+ </xsl:with-param>
+ <xsl:with-param name="listLevel" select="$listLevel + 1"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndentNew"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemNumber" select="$itemNumberNew"/>
+ <xsl:with-param name="listIndent">
+ <xsl:choose>
+ <xsl:when test="not($isEmptyList)">
+ <xsl:value-of select="$listIndentNew"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ <!-- Receives the same parent label -->
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="minLabelDist" select="$minLabelDist"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template name="getOppositeWritingDirection">
+ <xsl:param name="globalData"/>
+ <xsl:param name="paraStyleName"/>
+
+ <xsl:variable name="imageParagraphStyle" select="$globalData/all-styles/style[@style:name = $paraStyleName]/final-properties"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($imageParagraphStyle, 'writing-mode:')">
+ <xsl:choose>
+ <xsl:when test="contains(substring-before(substring-after($imageParagraphStyle, 'writing-mode:'), ';'), 'rl')">right</xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>left</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="text:number" mode="listnumber">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="text:number" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLabelElement"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle" />
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLabelElement" select="$listLabelElement"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Each key element holds the set of all text:list-item/text:list-header of a certain level and a certain style -->
+ <xsl:key name="getListItemsByLevelAndStyle" use="concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)" match="text:list-item | text:list-header"/>
+ <!-- Each key element holds the set of all text:list-item/text:list-header of a certain style -->
+ <xsl:key name="getListItemsByStyle" use="ancestor::text:list/@text:style-name" match="text:list-item | text:list-header"/>
+
+
+ <!-- The Numbering start value (or offset from regular counteing) is used at the first item of offset,
+ but have to be reused on following item/headers with no text:start-value -->
+ <xsl:template name="getItemNumber">
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="listStyle"/>
+
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="preceding::text:list-item[generate-id(key('getListItemsByLevelAndStyle', concat($listLevel, $listStyleName))) = generate-id(key('getListItemsByLevelAndStyle', concat(count(ancestor::text:list), ancestor::text:list/@text:style-name)))]"/>
+
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="preceding::text:list-item[generate-id(key('getListItemsByStyle', $listStyleName)) = generate-id(key('getListItemsByStyle', ancestor::text:list/@text:style-name))]"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- When there is a text:start-value the last have to be found and added to the number -->
+ <xsl:template name="countListItemTillStartValue">
+ <xsl:param name="IteratorSameLevelAndStyle" select="1"/>
+ <xsl:param name="IteratorSameStyle" select="1"/>
+ <xsl:param name="itemNumber" select="1"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="precedingListItemsOfSameLevelAndStyle" />
+ <xsl:param name="precedingListItemsOfSameLevelAndStyleCount" select="count($precedingListItemsOfSameLevelAndStyle)"/>
+ <xsl:param name="precedingListItemsOfSameStyle" />
+ <xsl:param name="precedingListItemsOfSameStyleCount" select="count($precedingListItemsOfSameStyle)"/>
+ <!-- E.g.: If a list level 2 number is searched, a level 3 with content found with only a level 1 parent with content,
+ the level 3 gets a 'pseudoLevel' -->
+ <xsl:param name="pseudoLevel" select="0" />
+
+ <!-- set the next of preceding list items. Starting from the current to the next previous text:list-item -->
+ <xsl:variable name="precedingListItemOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle[$precedingListItemsOfSameLevelAndStyleCount - $IteratorSameLevelAndStyle + 1]"/>
+ <xsl:variable name="precedingListItemOfSameStyle" select="$precedingListItemsOfSameStyle[$precedingListItemsOfSameStyleCount - $IteratorSameStyle + 1]"/>
+ <xsl:choose>
+ <xsl:when test="($precedingListItemOfSameStyle and $precedingListItemOfSameLevelAndStyle) or ($precedingListItemOfSameStyle and $listStyle/text:list-style/@text:consecutive-numbering)">
+ <xsl:for-each select="$precedingListItemOfSameStyle">
+ <xsl:choose>
+ <!-- if it is a higher list level element -->
+ <xsl:when test="$listStyle/text:list-style/@text:consecutive-numbering">
+
+ <xsl:call-template name="countListItem">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- NOT CONSECUTIVE NUMBERING -->
+ <xsl:variable name="currentListLevel" select="count(ancestor::text:list)"/>
+ <xsl:choose>
+ <!-- IF IT IS A HIGHER LIST LEVEL ELEMENT -->
+ <xsl:when test="$currentListLevel &lt; $listLevel">
+ <xsl:choose>
+ <!-- if it has content the counting is ended -->
+ <xsl:when test="*[name() = 'text:h' or name() = 'text:p']">
+ <!-- 2DO: Perhaps the children still have to be processed -->
+ <xsl:value-of select="$itemNumber + $pseudoLevel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- if it is empty the counting continues -->
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <!-- IF IT IS A LIST LEVEL ELEMENT OF THE COUNTING LEVEL -->
+ <xsl:when test="$currentListLevel = $listLevel">
+ <xsl:call-template name="countListItem">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- list item below the current level does not count -->
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel">
+ <xsl:choose>
+ <!-- empty list item does not count -->
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <xsl:value-of select="$pseudoLevel"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$itemNumber"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="countListItem">
+ <xsl:param name="IteratorSameLevelAndStyle"/>
+ <xsl:param name="IteratorSameStyle"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listLevelStyle"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:param name="precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:param name="precedingListItemsOfSameStyle"/>
+ <xsl:param name="precedingListItemsOfSameStyleCount"/>
+ <xsl:param name="pseudoLevel" />
+
+ <xsl:choose>
+ <xsl:when test="@text:start-value">
+ <xsl:choose>
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <!-- empty list item does not count -->
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$itemNumber + @text:start-value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$listLevelStyle/@text:start-value">
+ <xsl:choose>
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <!-- empty list item does not count -->
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$itemNumber + $listLevelStyle/@text:start-value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+ <!-- empty list item does not count -->
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="$pseudoLevel" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- count on till you find a start-value or the end is reached -->
+ <xsl:call-template name="countListItemTillStartValue">
+ <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
+ <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber + 1"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameLevelAndStyleCount" select="$precedingListItemsOfSameLevelAndStyleCount"/>
+ <xsl:with-param name="precedingListItemsOfSameStyle" select="$precedingListItemsOfSameStyle"/>
+ <xsl:with-param name="precedingListItemsOfSameStyleCount" select="$precedingListItemsOfSameStyleCount"/>
+ <xsl:with-param name="pseudoLevel" select="0" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- Creates the list label containing the number, which is separated by '.' between the levels.
+ Depending on the levels to display (listLevelsToDisplay) -->
+ <xsl:template name="createItemLabel">
+ <xsl:param name="itemLabel" select="''"/>
+ <xsl:param name="itemNumber" />
+ <xsl:param name="listLevel" />
+ <xsl:param name="listLevelStyle" />
+ <xsl:param name="listLevelsToDisplay" />
+
+ <xsl:choose>
+ <xsl:when test="$listLevelsToDisplay &lt; $listLevel">
+ <xsl:call-template name="truncLabel">
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber" />
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle" />
+ <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="numberedSymbol">
+ <xsl:comment>&#160;</xsl:comment>
+ <!-- only give out a number when number format is not empty -->
+ <xsl:if test="$listLevelStyle/@style:num-format != ''">
+ <xsl:number value="$itemNumber" format="{$listLevelStyle/@style:num-format}"/>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$listLevelsToDisplay != 1">
+ <xsl:value-of select="concat($itemLabel, '.' , $numberedSymbol)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$numberedSymbol"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="truncLabel">
+ <xsl:param name="itemLabel" />
+ <xsl:param name="itemNumber" />
+ <xsl:param name="listLevel" />
+ <xsl:param name="listLevelStyle" />
+ <xsl:param name="listLevelsToDisplay" />
+ <xsl:param name="listStyle" />
+ <xsl:param name="listStyleName" />
+
+ <xsl:call-template name="createItemLabel">
+ <xsl:with-param name="itemLabel">
+ <xsl:if test="contains($itemLabel, '.')">
+ <xsl:value-of select="substring-after($itemLabel, '.')"/>
+ </xsl:if>
+ </xsl:with-param>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLevel" select="$listLevel - 1"/>
+ <xsl:with-param name="listLevelStyle" select="$listLevelStyle"/>
+ <xsl:with-param name="listLevelsToDisplay" select="$listLevelsToDisplay"/>
+ </xsl:call-template>
+ </xsl:template>
+
+
+ <xsl:template match="text:p" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLabelElement"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <!-- 2DO page alignment fix - PART1 -->
+
+ <!-- xhtml:p may only contain inline elements.
+ If there is one frame beyond, div must be used! -->
+ <xsl:variable name="elementName">
+ <xsl:choose>
+ <xsl:when test="descendant::draw:frame[1] or descendant::text:p[1]">div</xsl:when>
+ <xsl:otherwise>p</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$elementName}">
+ <xsl:call-template name="create-list-style">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="styleName" select="@text:style-name"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$listLabelElement">
+ <xsl:copy-of select="$listLabelElement"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$listLabelEmptyElement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ <!-- this span disables the float necessary to bring two block elements on one line. It contains a space as IE6 bug workaround -->
+ <span class="odfLiEnd"></span>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:element>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+ <!-- Neglecting the left margin behavior for headings for now -->
+ <xsl:template match="text:h" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listLabelElement"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <xsl:element name="h">
+ <xsl:call-template name="create-list-style">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="styleName" select="@text:style-name"/>
+ </xsl:call-template>
+ <xsl:variable name="title">
+ <xsl:apply-templates mode="concatenate"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$listLabelElement">
+ <xsl:copy-of select="$listLabelElement"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$listLabelEmptyElement"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- REFERENCE HANDLING - ANCHOR -->
+ <xsl:element namespace="{$namespace}" name="a">
+ <xsl:attribute name="id">
+ <xsl:value-of select="translate(concat('a_',$listLabelElement, '_', normalize-space($title)), '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '___________________________')"/>
+ </xsl:attribute>
+ <xsl:apply-templates>
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="listIndent" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:element>
+
+ <!-- this span disables the float necessary to bring two block elements on one line. It contains a space as IE6 bug workaround -->
+ <span class="odfLiEnd"></span>
+ <xsl:text>&#160;</xsl:text>
+ </xsl:element>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+
+ <xsl:template match="*" mode="list-item-children">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="listLabelEmptyElement"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+ <xsl:param name="minLabelWidth"/>
+
+ <xsl:apply-templates select="self::*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates mode="list-item-children" select="following-sibling::*[1]">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listLabelEmptyElement" select="$listLabelEmptyElement"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listRestart" select="$listRestart"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <xsl:with-param name="minLabelWidth" select="$minLabelWidth"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="*" mode="listItemSibling">
+ <xsl:param name="globalData"/>
+ <xsl:param name="isEmptyList"/>
+ <xsl:param name="isListNumberingReset"/>
+ <xsl:param name="isNextLevelNumberingReset"/>
+ <xsl:param name="itemLabel"/>
+ <xsl:param name="itemNumber"/>
+ <xsl:param name="listIndent"/>
+ <xsl:param name="listLevel"/>
+ <xsl:param name="listRestart"/>
+ <xsl:param name="listStyle"/>
+ <xsl:param name="listStyleName"/>
+
+ <xsl:apply-templates select="self::*">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <!-- receives the same parent label, only with a different itemNumber -->
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="listItemSibling">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
+ <xsl:with-param name="isListNumberingReset" select="$isListNumberingReset"/>
+ <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+ <xsl:with-param name="itemNumber" select="$itemNumber"/>
+ <xsl:with-param name="listIndent" select="$listIndent"/>
+ <!-- receives the same parent label, only with a different itemNumber -->
+ <xsl:with-param name="itemLabel" select="$itemLabel"/>
+ <xsl:with-param name="listLevel" select="$listLevel"/>
+ <xsl:with-param name="listStyle" select="$listStyle"/>
+ <xsl:with-param name="listStyleName" select="$listStyleName"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="list-item-children">
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+
+ <xsl:template name="create-list-style">
+ <xsl:param name="globalData"/>
+ <xsl:param name="listIndent" select="0"/>
+ <xsl:param name="styleName"/>
+
+ <xsl:if test="$styleName">
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate($styleName, '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="style">
+ <xsl:text>margin-</xsl:text>
+ <xsl:call-template name="getOppositeWritingDirection">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="paraStyleName" select="descendant-or-self::*/@text:style-name"/>
+ </xsl:call-template>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="$listIndent"/>
+ <xsl:text>cm;</xsl:text>
+ </xsl:attribute>
+ </xsl:template>
+
+
+ <!-- ********************************************** -->
+ <!-- *** Text Section (contains: draw:text-box) *** -->
+ <!-- ********************************************** -->
+
+ <xsl:template match="text:section">
+ <xsl:param name="globalData"/>
+
+ <xsl:if test="not(contains(@text:display, 'none'))">
+ <xsl:comment>Next 'div' was a 'text:section'.</xsl:comment>
+ <xsl:element name="div">
+ <xsl:call-template name="apply-styles-and-content">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+
+ <!-- Hidden text dependend on Office variables:
+ The text is not shown, if condition is 'true'.
+ Implemented solely for conditons as '<VARIABLE>==0' or '<VARIABLE>==1'
+ -->
+ <xsl:key match="text:variable-set" name="varSet" use="@text:name"/>
+ <xsl:template match="text:hidden-text">
+ <xsl:param name="globalData"/>
+
+ <xsl:variable name="varName" select="substring-before(@text:condition, '==')"/>
+ <xsl:variable name="varValue" select="substring-after(@text:condition, '==')"/>
+ <xsl:choose>
+ <xsl:when test="key('varSet', $varName)/@text:value != $varValue">
+ <xsl:value-of select="@text:string-value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:comment>
+ <xsl:value-of select="$varName"/>
+ <xsl:value-of select="@text:string-value"/>
+ <xsl:value-of select="$varName"/>
+ </xsl:comment>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="@text:style-name | @draw:style-name | @draw:text-style-name | @table:style-name"><!-- | @presentation:style-name-->
+ <xsl:param name="globalData"/>
+
+ <xsl:attribute name="class">
+ <xsl:value-of select="translate(., '.,;: %()[]/\+', '_____________')"/>
+ </xsl:attribute>
+ </xsl:template>
+
+
+ <!-- ***************** -->
+ <!-- *** Footnotes *** -->
+ <!-- ***************** -->
+
+ <xsl:template match="text:note">
+ <xsl:param name="globalData"/>
+
+ <!-- get style configuration -->
+ <xsl:variable name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
+
+ <xsl:variable name="titlePrefix">
+ <xsl:choose>
+ <xsl:when test="@text:note-class = 'footnote'">
+ <xsl:text>Footnote: </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Endnote: </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- write anchor -->
+ <xsl:element name="span">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$footnoteConfig/@text:citation-body-style-name"/>
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:value-of select="$titlePrefix"/>
+ <xsl:apply-templates mode="textOnly" select="text:note-body"/>
+ </xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#', @text:id)"/>
+ </xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:value-of select="concat('body_', @text:id)"/>
+ </xsl:attribute>
+ <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="*" mode="textOnly">
+ <xsl:apply-templates select="* | text()" mode="textOnly" />
+ </xsl:template>
+
+ <xsl:template match="text()" mode="textOnly">
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ <!-- Useful in case of 'style:map', conditional formatting, where a style references to another -->
+ <xsl:key name="textNotes" match="text:note" use="@text:note-class"/>
+
+ <!-- writing the footer- and endnotes beyond the body -->
+ <xsl:template name="write-text-nodes">
+ <xsl:param name="globalData"/>
+
+ <!-- write footnote body -->
+ <xsl:for-each select="key('textNotes', 'footnote')">
+ <xsl:call-template name="write-text-node">
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
+ </xsl:call-template>
+ </xsl:for-each>
+
+ <!-- write endnote body -->
+ <xsl:for-each select="key('textNotes', 'endnote')">
+ <xsl:call-template name="write-text-node">
+
+ <xsl:with-param name="globalData" select="$globalData"/>
+ <xsl:with-param name="footnoteConfig" select="$globalData/office:styles/text:notes-configuration[@text:note-class=current()/@text:note-class]" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="write-text-node">
+ <xsl:param name="globalData"/>
+ <xsl:param name="footnoteConfig"/>
+
+ <xsl:apply-templates select="text:note-body/*[1]">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="footnotePrefix">
+ <xsl:element name="span">
+ <xsl:attribute name="class">footnodeNumber</xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$footnoteConfig/@text:citation-style-name"/>
+ </xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:value-of select="@text:id"/>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#body_', @text:id)"/>
+ </xsl:attribute>
+ <xsl:apply-templates mode="textOnly" select="text:note-citation"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="text:note-body/*[position()&gt;1]">
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- DISABLING this tab handling as the tab width is only relative
+ <xsl:template match="text:tab">
+ <xsl:param name="globalData"/>
+
+ <xsl:variable name="tabNo">
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::text:line-break">
+ <xsl:call-template name="countTextTab"/>
+ </xsl:when>
+ <xsl:when test="preceding-sibling::text:tab">
+ <xsl:value-of select="count(preceding-sibling::text:tab)"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:element name="span">
+ <xsl:attribute name="style">margin-left:<xsl:value-of select="$globalData/all-doc-styles/style[@style:name = current()/parent::*/@text:style-name]/*/style:tab-stops/style:tab-stop[$tabNo]/@style:position"/>;</xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="countTextTab">
+ <xsl:param name="tabCount" select="1"/>
+ <xsl:param name="context" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="preceding-sibling::*[1]">
+ <xsl:for-each select="preceding-sibling::*[1]">
+ <xsl:call-template name="countTextTab">
+ <xsl:with-param name="tabCout">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'text:tab'">
+ <xsl:value-of select="$tabCount + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabCount"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="context" select="preceding-sibling::*[1]" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tabCount"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+-->
+ <!-- MathML -->
+ <xsl:template match="draw:object[math:math]">
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates select="math:math/math:semantics/*" mode="math"/>
+ </math>
+ </xsl:template>
+
+ <xsl:template match="*" mode="math">
+ <xsl:element name="{local-name()}" namespace="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates select="@*|node()" mode="math"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="@*" mode="math">
+ <xsl:attribute name="{local-name()}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:template>
+
+ <xsl:template match="math:annotation" mode="math"/>
+
+
</xsl:stylesheet> \ No newline at end of file
diff --git a/filter/source/xslt/odf2xhtml/export/xhtml/header.xsl b/filter/source/xslt/odf2xhtml/export/xhtml/header.xsl
index e63ed0226a64..ab2c9bbaa866 100644
--- a/filter/source/xslt/odf2xhtml/export/xhtml/header.xsl
+++ b/filter/source/xslt/odf2xhtml/export/xhtml/header.xsl
@@ -1,488 +1,484 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
- Copyright 2008 by Sun Microsystems, Inc.
-
- OpenOffice.org - a multi-platform office productivity suite
-
- $RCSfile: header.xsl,v $
-
- $Revision: 1.3.14.2 $
-
- 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.
-
--->
-<!--
- For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
--->
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
- xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:dom="http://www.w3.org/2001/xml-events"
- xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
- xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
- xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
- xmlns:math="http://www.w3.org/1998/Math/MathML"
- xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
- xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
- xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
- xmlns:ooo="http://openoffice.org/2004/office"
- xmlns:oooc="http://openoffice.org/2004/calc"
- xmlns:ooow="http://openoffice.org/2004/writer"
- xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
- xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
- xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
- xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
- xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
- xmlns:xforms="http://www.w3.org/2002/xforms"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- exclude-result-prefixes="chart config dc dom dr3d draw fo form math meta number office ooo oooc ooow script style svg table text xforms xlink xsd xsi xforms xsd xsi"
- xmlns="http://www.w3.org/1999/xhtml">
-
-
- <!-- ************** -->
- <!-- *** header *** -->
- <!-- ************** -->
-
- <xsl:template name="create-header">
- <xsl:param name="globalData" />
-
- <xsl:element name="head">
- <xsl:attribute name="profile">http://dublincore.org/documents/dcmi-terms/</xsl:attribute>
- <xsl:if test="$debugEnabled"><xsl:message>CSS helper variable will be created....</xsl:message></xsl:if>
- <xsl:call-template name='xhtml-header-properties'>
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:call-template>
-
- <xsl:if test="$debugEnabled"><xsl:message>CSS variable ready, header will be created....</xsl:message></xsl:if>
- <!-- constructing the css header simulating inheritance of style-families by style order -->
- <xsl:call-template name='create-css-styleheader'>
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:call-template>
- <xsl:if test="$debugEnabled"><xsl:message>CSS header creation finished!</xsl:message></xsl:if>
- </xsl:element>
-
- </xsl:template>
-
-
- <!-- Creating a CSS style header from the collected styles of the 'globalData' parameter -->
- <xsl:template name='create-css-styleheader'>
- <xsl:param name="globalData" />
-
- <xsl:element name="style">
- <xsl:attribute name="type">text/css</xsl:attribute>
-<xsl:text>
- </xsl:text>
- <xsl:call-template name='create-page-layout'>
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:call-template>
-<xsl:text>table { border-collapse:collapse; border-spacing:0; empty-cells:show }
- </xsl:text>
- <xsl:choose>
- <xsl:when test="/*/office:body/office:spreadsheet"><xsl:text>td, th { vertical-align:top; font-size:10pt;}
- </xsl:text></xsl:when>
- <xsl:otherwise><xsl:text>td, th { vertical-align:top; font-size:12pt;}
- </xsl:text></xsl:otherwise>
- </xsl:choose>
-<xsl:text>h1, h2, h3, h4, h5, h6 { clear:both }
- </xsl:text>
-<xsl:text>ol, ul { margin:0; padding:0;}
- </xsl:text>
-<xsl:text>li { list-style: none; margin:0; padding:0;}
- </xsl:text>
-<xsl:comment> "li span.odfLiEnd" - IE 7 issue</xsl:comment>
-<xsl:text>
- </xsl:text>
-<xsl:text>li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
- </xsl:text>
-<xsl:text>span.footnodeNumber { padding-right:1em; }
- </xsl:text>
-<xsl:text>span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; }
- </xsl:text>
-<xsl:text>* { margin:0;}
- </xsl:text>
- <xsl:call-template name="write-mapped-CSS-styles">
- <xsl:with-param name="globalData" select="$globalData" />
- </xsl:call-template>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="write-mapped-CSS-styles">
- <xsl:param name="globalData" />
- <xsl:param name="styleNo" select="1"/>
- <xsl:param name="emptyStyles"/>
-
- <xsl:choose>
- <xsl:when test="$globalData/all-styles/style[$styleNo]">
- <!-- If there is still a style to be written -->
- <!-- setting the context -->
- <xsl:for-each select="$globalData/all-styles/style[$styleNo]">
- <xsl:choose>
- <xsl:when test="final-properties != ''">
- <!-- NOTE: easy process, as only the style family in conjunction with the style name, makes the style unambigous -->
- <xsl:text>.</xsl:text><!--<xsl:value-of select="@style:family" /><xsl:text>:</xsl:text>--><xsl:value-of select="translate(@style:name, '.,;: %()[]/\+', '_____________')"/><xsl:text> { </xsl:text> <xsl:value-of select="final-properties" /><xsl:text>}
- </xsl:text>
- <xsl:call-template name="write-mapped-CSS-styles">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="emptyStyles" select="$emptyStyles"/>
- <xsl:with-param name="styleNo" select="$styleNo + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="write-mapped-CSS-styles">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="emptyStyles" select="concat($emptyStyles, '.', @style:name, ' ')"/>
- <xsl:with-param name="styleNo" select="$styleNo + 1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <!-- Otherwise all styles have been processed and the empty styles have to be given out -->
- <xsl:comment> ODF styles with no properties representable as CSS </xsl:comment><xsl:text>
- </xsl:text><xsl:value-of select="$emptyStyles"/><xsl:text>{ }
- </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <!-- Creating CSS page layout based on first office master style -->
- <xsl:template name='create-page-layout'>
- <xsl:param name="globalData" />
-
- <!-- approximation to find the correct master page style (with page dimensions) -->
- <xsl:variable name="masterPageNames">
- <!-- set context to styles.xml -->
- <xsl:for-each select="$globalData/all-doc-styles/style">
- <!-- Loop over every style:style containing a @style:master-page-name attribute -->
- <xsl:for-each select="key('masterPage','count')">
- <!-- set context to styles.xml -->
- <xsl:for-each select="/*/office:body">
- <!-- Check if this style is being used in the body -->
- <xsl:if test="key('elementUsingStyle', ../@style:name)">
- <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
- <xsl:if test="string-length(../@style:master-page-name) &gt; 0"><xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:for-each>
- </xsl:for-each>
- </xsl:variable>
- <!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
- <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
- <!-- Find the according style:page-layout and store the properties in a variable -->
- <xsl:variable name="pageProperties" select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties"/>
-
-<xsl:text>@page { </xsl:text>
-
- <xsl:call-template name="page-size">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="pageProperties" select="$pageProperties" />
- </xsl:call-template>
- <xsl:call-template name="page-margin">
- <xsl:with-param name="globalData" select="$globalData" />
- <xsl:with-param name="pageProperties" select="$pageProperties" />
- </xsl:call-template>
-
-<xsl:text> }
- </xsl:text>
-
- </xsl:template>
-
-
- <xsl:template name="page-size">
- <xsl:param name="globalData" />
- <xsl:param name="pageProperties" />
-
- <xsl:variable name="printOrientation" select="$pageProperties/@style:print-orientation" />
- <xsl:variable name="pageWidth" select="$pageProperties/@fo:page-width" />
- <xsl:variable name="pageHeight" select="$pageProperties/@fo:page-height" />
- <xsl:choose>
- <xsl:when test="$pageWidth and $pageHeight">
- <xsl:text>size: </xsl:text>
- <xsl:value-of select="$pageWidth" />
- <xsl:text> </xsl:text>
- <xsl:value-of select="$pageHeight" />
- <xsl:text>; </xsl:text>
- </xsl:when>
- <xsl:when test="$printOrientation">
- <xsl:text>size: </xsl:text>
- <xsl:value-of select="$printOrientation" />
- <xsl:text>; </xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
-
-
- <xsl:template name="page-margin">
- <xsl:param name="globalData" />
- <xsl:param name="pageProperties" />
-
- <xsl:variable name="marginTop" select="$pageProperties/@fo:margin-top" />
- <xsl:if test="$marginTop">
- <xsl:text>margin-top: </xsl:text>
- <xsl:value-of select="$marginTop" />
- <xsl:text>; </xsl:text>
- </xsl:if>
- <xsl:variable name="marginBottom" select="$pageProperties/@fo:margin-bottom" />
- <xsl:if test="$marginBottom">
- <xsl:text>margin-bottom: </xsl:text>
- <xsl:value-of select="$marginBottom" />
- <xsl:text>; </xsl:text>
- </xsl:if>
- <xsl:variable name="marginLeft" select="$pageProperties/@fo:margin-left" />
- <xsl:if test="$marginLeft">
- <xsl:text>margin-left: </xsl:text>
- <xsl:value-of select="$marginLeft" />
- <xsl:text>; </xsl:text>
- </xsl:if>
- <xsl:variable name="marginRight" select="$pageProperties/@fo:margin-right" />
- <xsl:if test="$marginRight">
- <xsl:text>margin-right: </xsl:text>
- <xsl:value-of select="$marginRight" />
- </xsl:if>
- </xsl:template>
-
-
- <!-- *************************** -->
- <!-- *** Common XHTML header *** -->
- <!-- *************************** -->
-
- <xsl:template name='xhtml-header-properties'>
- <xsl:param name="globalData" />
-
- <xsl:variable name="netloc">
- <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined">
- <xsl:if test="./@meta:name='ODF.base'">
- <xsl:value-of select="." />
- </xsl:if>
- </xsl:for-each>
- <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined">
- <xsl:if test="./@meta:name='ODF.filename'">
- <xsl:value-of select="." />
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:variable name="lang">
- <xsl:choose>
- <xsl:when test="$globalData/meta-file/*/office:meta/dc:language">
- <xsl:value-of select="$globalData/meta-file/*/office:meta/dc:language" />
- </xsl:when>
- <xsl:otherwise>en-US</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="prov">
- <xsl:choose>
- <xsl:when test="$globalData/meta-file/*/office:meta/meta:printed-by">
- <xsl:value-of select="concat('Printed by &quot;',$globalData/meta-file/*/office:meta/meta:printed-by,'&quot;[dc:publisher] on &quot;',$globalData/meta-file/*/office:meta/meta:print-date,'&quot;[dc:date] in &quot;',$lang,'&quot;[dc:language]')" />
- </xsl:when>
- <xsl:otherwise />
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="keywords">
- <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:keyword">
- <xsl:value-of select="." />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
-
- <!-- explicit output content-type for low-tech browser (e.g. IE6) -->
- <xsl:element name="meta">
- <xsl:attribute name="http-equiv">Content-Type</xsl:attribute>
- <xsl:attribute name="content">application/xhtml+xml; charset=utf-8</xsl:attribute>
- </xsl:element>
-
- <!-- title of document for browser frame title -->
- <xsl:element name="title">
- <xsl:attribute name="lang" namespace="http://www.w3.org/XML/1998/namespace">
- <xsl:value-of select="$lang" />
- </xsl:attribute>
-
- <xsl:choose>
- <xsl:when test="$globalData/meta-file/*/office:meta/dc:title">
- <xsl:value-of select="$globalData/meta-file/*/office:meta/dc:title" />
- </xsl:when>
- <!-- providing the mandatory title is a workaround for an IE bug-->
- <xsl:otherwise>
- <xsl:text>- no title specified</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
-
- <!-- title, in DC syntax -->
- <xsl:element name="meta">
- <xsl:attribute name="name">DCTERMS.title</xsl:attribute>
- <xsl:attribute name="content">
- <xsl:value-of select="$globalData/meta-file/*/office:meta/dc:title" />
- </xsl:attribute>
- <xsl:attribute name="lang" namespace="http://www.w3.org/XML/1998/namespace">
- <xsl:value-of select="$lang" />
- </xsl:attribute>
- </xsl:element>
-
- <!-- the identifier for source (identifier) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.identifier'" />
- <xsl:with-param name="meta-data" select="translate($netloc, ' ','')" />
- <xsl:with-param name="meta-enc" select="'DCTERMS.URI'" />
- </xsl:call-template>
-
- <!-- the language for source (language) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.language'" />
- <xsl:with-param name="meta-data" select="$lang" />
- <xsl:with-param name="meta-enc" select="'DCTERMS.RFC4646'" />
- </xsl:call-template>
-
- <!-- a bit commercial (generator) -->
- <xsl:element name="meta">
- <xsl:attribute name="name">DCTERMS.source</xsl:attribute>
- <xsl:attribute name="content">http://xml.openoffice.org/odf2xhtml</xsl:attribute>
- </xsl:element>
-
- <!-- the author of the input source (author) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.creator'" />
- <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/meta:initial-creator" />
- </xsl:call-template>
-
- <!-- creation-date of the input source (issued) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.issued'" />
- <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/meta:creation-date" />
- <xsl:with-param name="meta-enc" select="'DCTERMS.W3CDTF'" />
- </xsl:call-template>
-
- <!-- name of last changing person of the input source (changedby) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.contributor'" />
- <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/dc:creator" />
- </xsl:call-template>
-
- <!-- last changing date of the input source (changed) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.modified'" />
- <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/dc:date" />
- <xsl:with-param name="meta-enc" select="'DCTERMS.W3CDTF'" />
- </xsl:call-template>
-
- <!-- Last print, as provenance -->
- <xsl:if test="$prov">
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.provenance'" />
- <xsl:with-param name="meta-data" select="$prov" />
- <xsl:with-param name="meta-lang" select="$lang" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- keywords about the input source (keywords) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.subject'" />
- <xsl:with-param name="meta-data" select="normalize-space(concat($globalData/meta-file/*/office:meta/dc:subject,', ',$keywords))" />
- <xsl:with-param name="meta-lang" select="$lang" />
- </xsl:call-template>
-
- <!-- detailed description about the input source (description) -->
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="'DCTERMS.description'" />
- <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/dc:description" />
- <xsl:with-param name="meta-lang" select="$lang" />
- </xsl:call-template>
-
-
- <!-- user defined use of DCTERM tags -->
- <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined[starts-with(@meta:name,'DCTERMS.')][not(.='')]">
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="@meta:name" />
- <xsl:with-param name="meta-data" select="." />
- <!-- <xsl:with-param name="meta-lang" select="$lang" /> -->
- </xsl:call-template>
- </xsl:for-each>
- <!-- user defined use of DC tags (legacy) -->
- <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined[starts-with(@meta:name,'DC.')][not(.='')]">
- <xsl:call-template name="add-meta-tag">
- <xsl:with-param name="meta-name" select="@meta:name" />
- <xsl:with-param name="meta-data" select="." />
- <!-- <xsl:with-param name="meta-lang" select="$lang" /> -->
- </xsl:call-template>
- </xsl:for-each>
-
- <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en" />
- <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en" />
- <link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en" />
- <link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en" />
- <!-- W3C GRDDL Profile -->
- <!--
- <link rel="transformation" href="http://xml.openoffice.org/odf2xhtml/rdf-extract.xsl" />
- -->
-
- <!-- base URL of document for resolving relative links -->
- <xsl:element name="base">
- <xsl:attribute name="href">
- <!-- earlier 'targetURL' was used for an absoulte reference of base provided by the Office (file URL)
- <xsl:value-of select="$targetURL" />
- now '.' let relative links work, even if document has been moved -->
- <xsl:text>.</xsl:text>
- </xsl:attribute>
- </xsl:element>
- </xsl:template>
-
- <!-- generic template for adding common meta tags -->
- <xsl:template name="add-meta-tag">
- <xsl:param name="meta-name" />
- <xsl:param name="meta-data" />
- <xsl:param name="meta-enc" />
- <xsl:param name="meta-lang" />
-
- <xsl:if test="$meta-data">
- <xsl:element name="meta">
- <xsl:attribute name="name">
- <xsl:value-of select="$meta-name" />
- </xsl:attribute>
- <xsl:attribute name="content">
- <xsl:value-of select="$meta-data" />
- </xsl:attribute>
- <xsl:if test="$meta-enc">
- <xsl:attribute name="scheme">
- <xsl:value-of select="$meta-enc" />
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$meta-lang">
- <xsl:attribute name="lang" namespace="http://www.w3.org/XML/1998/namespace">
- <xsl:value-of select="$meta-lang" />
- </xsl:attribute>
- </xsl:if>
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<!--
+ For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:ooo="http://openoffice.org/2004/office"
+ xmlns:oooc="http://openoffice.org/2004/calc"
+ xmlns:ooow="http://openoffice.org/2004/writer"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ exclude-result-prefixes="chart config dc dom dr3d draw fo form math meta number office ooo oooc ooow script style svg table text xforms xlink xsd xsi xforms xsd xsi"
+ xmlns="http://www.w3.org/1999/xhtml">
+
+
+ <!-- ************** -->
+ <!-- *** header *** -->
+ <!-- ************** -->
+
+ <xsl:template name="create-header">
+ <xsl:param name="globalData" />
+
+ <xsl:element name="head">
+ <xsl:attribute name="profile">http://dublincore.org/documents/dcmi-terms/</xsl:attribute>
+ <xsl:if test="$debugEnabled"><xsl:message>CSS helper variable will be created....</xsl:message></xsl:if>
+ <xsl:call-template name='xhtml-header-properties'>
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:call-template>
+
+ <xsl:if test="$debugEnabled"><xsl:message>CSS variable ready, header will be created....</xsl:message></xsl:if>
+ <!-- constructing the css header simulating inheritance of style-families by style order -->
+ <xsl:call-template name='create-css-styleheader'>
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:call-template>
+ <xsl:if test="$debugEnabled"><xsl:message>CSS header creation finished!</xsl:message></xsl:if>
+ </xsl:element>
+
+ </xsl:template>
+
+
+ <!-- Creating a CSS style header from the collected styles of the 'globalData' parameter -->
+ <xsl:template name='create-css-styleheader'>
+ <xsl:param name="globalData" />
+
+ <xsl:element name="style">
+ <xsl:attribute name="type">text/css</xsl:attribute>
+<xsl:text>
+ </xsl:text>
+ <xsl:call-template name='create-page-layout'>
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:call-template>
+<xsl:text>table { border-collapse:collapse; border-spacing:0; empty-cells:show }
+ </xsl:text>
+ <xsl:choose>
+ <xsl:when test="/*/office:body/office:spreadsheet"><xsl:text>td, th { vertical-align:top; font-size:10pt;}
+ </xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>td, th { vertical-align:top; font-size:12pt;}
+ </xsl:text></xsl:otherwise>
+ </xsl:choose>
+<xsl:text>h1, h2, h3, h4, h5, h6 { clear:both }
+ </xsl:text>
+<xsl:text>ol, ul { margin:0; padding:0;}
+ </xsl:text>
+<xsl:text>li { list-style: none; margin:0; padding:0;}
+ </xsl:text>
+<xsl:comment> "li span.odfLiEnd" - IE 7 issue</xsl:comment>
+<xsl:text>
+ </xsl:text>
+<xsl:text>li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
+ </xsl:text>
+<xsl:text>span.footnodeNumber { padding-right:1em; }
+ </xsl:text>
+<xsl:text>span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; }
+ </xsl:text>
+<xsl:text>* { margin:0;}
+ </xsl:text>
+ <xsl:call-template name="write-mapped-CSS-styles">
+ <xsl:with-param name="globalData" select="$globalData" />
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="write-mapped-CSS-styles">
+ <xsl:param name="globalData" />
+ <xsl:param name="styleNo" select="1"/>
+ <xsl:param name="emptyStyles"/>
+
+ <xsl:choose>
+ <xsl:when test="$globalData/all-styles/style[$styleNo]">
+ <!-- If there is still a style to be written -->
+ <!-- setting the context -->
+ <xsl:for-each select="$globalData/all-styles/style[$styleNo]">
+ <xsl:choose>
+ <xsl:when test="final-properties != ''">
+ <!-- NOTE: easy process, as only the style family in conjunction with the style name, makes the style unambigous -->
+ <xsl:text>.</xsl:text><!--<xsl:value-of select="@style:family" /><xsl:text>:</xsl:text>--><xsl:value-of select="translate(@style:name, '.,;: %()[]/\+', '_____________')"/><xsl:text> { </xsl:text> <xsl:value-of select="final-properties" /><xsl:text>}
+ </xsl:text>
+ <xsl:call-template name="write-mapped-CSS-styles">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="emptyStyles" select="$emptyStyles"/>
+ <xsl:with-param name="styleNo" select="$styleNo + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="write-mapped-CSS-styles">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="emptyStyles" select="concat($emptyStyles, '.', @style:name, ' ')"/>
+ <xsl:with-param name="styleNo" select="$styleNo + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Otherwise all styles have been processed and the empty styles have to be given out -->
+ <xsl:comment> ODF styles with no properties representable as CSS </xsl:comment><xsl:text>
+ </xsl:text><xsl:value-of select="$emptyStyles"/><xsl:text>{ }
+ </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- Creating CSS page layout based on first office master style -->
+ <xsl:template name='create-page-layout'>
+ <xsl:param name="globalData" />
+
+ <!-- approximation to find the correct master page style (with page dimensions) -->
+ <xsl:variable name="masterPageNames">
+ <!-- set context to styles.xml -->
+ <xsl:for-each select="$globalData/all-doc-styles/style">
+ <!-- Loop over every style:style containing a @style:master-page-name attribute -->
+ <xsl:for-each select="key('masterPage','count')">
+ <!-- set context to styles.xml -->
+ <xsl:for-each select="/*/office:body">
+ <!-- Check if this style is being used in the body -->
+ <xsl:if test="key('elementUsingStyle', ../@style:name)">
+ <!-- Check every master-page-name if it is not emtpy and return as ';' separated list -->
+ <xsl:if test="string-length(../@style:master-page-name) &gt; 0"><xsl:value-of select="../@style:master-page-name"/>;</xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:variable>
+ <!-- Take the first of the masterpage list and get the according style:master-page element and find the @style:page-layout-name -->
+ <xsl:variable name="pageLayoutName" select="key('masterPageElements', substring-before($masterPageNames,';'))/@style:page-layout-name"/>
+ <!-- Find the according style:page-layout and store the properties in a variable -->
+ <xsl:variable name="pageProperties" select="key('pageLayoutElements', $pageLayoutName)/style:page-layout-properties"/>
+
+<xsl:text>@page { </xsl:text>
+
+ <xsl:call-template name="page-size">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="pageProperties" select="$pageProperties" />
+ </xsl:call-template>
+ <xsl:call-template name="page-margin">
+ <xsl:with-param name="globalData" select="$globalData" />
+ <xsl:with-param name="pageProperties" select="$pageProperties" />
+ </xsl:call-template>
+
+<xsl:text> }
+ </xsl:text>
+
+ </xsl:template>
+
+
+ <xsl:template name="page-size">
+ <xsl:param name="globalData" />
+ <xsl:param name="pageProperties" />
+
+ <xsl:variable name="printOrientation" select="$pageProperties/@style:print-orientation" />
+ <xsl:variable name="pageWidth" select="$pageProperties/@fo:page-width" />
+ <xsl:variable name="pageHeight" select="$pageProperties/@fo:page-height" />
+ <xsl:choose>
+ <xsl:when test="$pageWidth and $pageHeight">
+ <xsl:text>size: </xsl:text>
+ <xsl:value-of select="$pageWidth" />
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$pageHeight" />
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when test="$printOrientation">
+ <xsl:text>size: </xsl:text>
+ <xsl:value-of select="$printOrientation" />
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+
+
+ <xsl:template name="page-margin">
+ <xsl:param name="globalData" />
+ <xsl:param name="pageProperties" />
+
+ <xsl:variable name="marginTop" select="$pageProperties/@fo:margin-top" />
+ <xsl:if test="$marginTop">
+ <xsl:text>margin-top: </xsl:text>
+ <xsl:value-of select="$marginTop" />
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ <xsl:variable name="marginBottom" select="$pageProperties/@fo:margin-bottom" />
+ <xsl:if test="$marginBottom">
+ <xsl:text>margin-bottom: </xsl:text>
+ <xsl:value-of select="$marginBottom" />
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ <xsl:variable name="marginLeft" select="$pageProperties/@fo:margin-left" />
+ <xsl:if test="$marginLeft">
+ <xsl:text>margin-left: </xsl:text>
+ <xsl:value-of select="$marginLeft" />
+ <xsl:text>; </xsl:text>
+ </xsl:if>
+ <xsl:variable name="marginRight" select="$pageProperties/@fo:margin-right" />
+ <xsl:if test="$marginRight">
+ <xsl:text>margin-right: </xsl:text>
+ <xsl:value-of select="$marginRight" />
+ </xsl:if>
+ </xsl:template>
+
+
+ <!-- *************************** -->
+ <!-- *** Common XHTML header *** -->
+ <!-- *************************** -->
+
+ <xsl:template name='xhtml-header-properties'>
+ <xsl:param name="globalData" />
+
+ <xsl:variable name="netloc">
+ <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined">
+ <xsl:if test="./@meta:name='ODF.base'">
+ <xsl:value-of select="." />
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined">
+ <xsl:if test="./@meta:name='ODF.filename'">
+ <xsl:value-of select="." />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="lang">
+ <xsl:choose>
+ <xsl:when test="$globalData/meta-file/*/office:meta/dc:language">
+ <xsl:value-of select="$globalData/meta-file/*/office:meta/dc:language" />
+ </xsl:when>
+ <xsl:otherwise>en-US</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="prov">
+ <xsl:choose>
+ <xsl:when test="$globalData/meta-file/*/office:meta/meta:printed-by">
+ <xsl:value-of select="concat('Printed by &quot;',$globalData/meta-file/*/office:meta/meta:printed-by,'&quot;[dc:publisher] on &quot;',$globalData/meta-file/*/office:meta/meta:print-date,'&quot;[dc:date] in &quot;',$lang,'&quot;[dc:language]')" />
+ </xsl:when>
+ <xsl:otherwise />
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="keywords">
+ <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:keyword">
+ <xsl:value-of select="." />
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- explicit output content-type for low-tech browser (e.g. IE6) -->
+ <xsl:element name="meta">
+ <xsl:attribute name="http-equiv">Content-Type</xsl:attribute>
+ <xsl:attribute name="content">application/xhtml+xml; charset=utf-8</xsl:attribute>
+ </xsl:element>
+
+ <!-- title of document for browser frame title -->
+ <xsl:element name="title">
+ <xsl:attribute name="lang" namespace="http://www.w3.org/XML/1998/namespace">
+ <xsl:value-of select="$lang" />
+ </xsl:attribute>
+
+ <xsl:choose>
+ <xsl:when test="$globalData/meta-file/*/office:meta/dc:title">
+ <xsl:value-of select="$globalData/meta-file/*/office:meta/dc:title" />
+ </xsl:when>
+ <!-- providing the mandatory title is a workaround for an IE bug-->
+ <xsl:otherwise>
+ <xsl:text>- no title specified</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+
+ <!-- title, in DC syntax -->
+ <xsl:element name="meta">
+ <xsl:attribute name="name">DCTERMS.title</xsl:attribute>
+ <xsl:attribute name="content">
+ <xsl:value-of select="$globalData/meta-file/*/office:meta/dc:title" />
+ </xsl:attribute>
+ <xsl:attribute name="lang" namespace="http://www.w3.org/XML/1998/namespace">
+ <xsl:value-of select="$lang" />
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- the identifier for source (identifier) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.identifier'" />
+ <xsl:with-param name="meta-data" select="translate($netloc, ' ','')" />
+ <xsl:with-param name="meta-enc" select="'DCTERMS.URI'" />
+ </xsl:call-template>
+
+ <!-- the language for source (language) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.language'" />
+ <xsl:with-param name="meta-data" select="$lang" />
+ <xsl:with-param name="meta-enc" select="'DCTERMS.RFC4646'" />
+ </xsl:call-template>
+
+ <!-- a bit commercial (generator) -->
+ <xsl:element name="meta">
+ <xsl:attribute name="name">DCTERMS.source</xsl:attribute>
+ <xsl:attribute name="content">http://xml.openoffice.org/odf2xhtml</xsl:attribute>
+ </xsl:element>
+
+ <!-- the author of the input source (author) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.creator'" />
+ <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/meta:initial-creator" />
+ </xsl:call-template>
+
+ <!-- creation-date of the input source (issued) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.issued'" />
+ <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/meta:creation-date" />
+ <xsl:with-param name="meta-enc" select="'DCTERMS.W3CDTF'" />
+ </xsl:call-template>
+
+ <!-- name of last changing person of the input source (changedby) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.contributor'" />
+ <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/dc:creator" />
+ </xsl:call-template>
+
+ <!-- last changing date of the input source (changed) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.modified'" />
+ <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/dc:date" />
+ <xsl:with-param name="meta-enc" select="'DCTERMS.W3CDTF'" />
+ </xsl:call-template>
+
+ <!-- Last print, as provenance -->
+ <xsl:if test="$prov">
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.provenance'" />
+ <xsl:with-param name="meta-data" select="$prov" />
+ <xsl:with-param name="meta-lang" select="$lang" />
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- keywords about the input source (keywords) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.subject'" />
+ <xsl:with-param name="meta-data" select="normalize-space(concat($globalData/meta-file/*/office:meta/dc:subject,', ',$keywords))" />
+ <xsl:with-param name="meta-lang" select="$lang" />
+ </xsl:call-template>
+
+ <!-- detailed description about the input source (description) -->
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="'DCTERMS.description'" />
+ <xsl:with-param name="meta-data" select="$globalData/meta-file/*/office:meta/dc:description" />
+ <xsl:with-param name="meta-lang" select="$lang" />
+ </xsl:call-template>
+
+
+ <!-- user defined use of DCTERM tags -->
+ <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined[starts-with(@meta:name,'DCTERMS.')][not(.='')]">
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="@meta:name" />
+ <xsl:with-param name="meta-data" select="." />
+ <!-- <xsl:with-param name="meta-lang" select="$lang" /> -->
+ </xsl:call-template>
+ </xsl:for-each>
+ <!-- user defined use of DC tags (legacy) -->
+ <xsl:for-each select="$globalData/meta-file/*/office:meta/meta:user-defined[starts-with(@meta:name,'DC.')][not(.='')]">
+ <xsl:call-template name="add-meta-tag">
+ <xsl:with-param name="meta-name" select="@meta:name" />
+ <xsl:with-param name="meta-data" select="." />
+ <!-- <xsl:with-param name="meta-lang" select="$lang" /> -->
+ </xsl:call-template>
+ </xsl:for-each>
+
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en" />
+ <link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en" />
+ <link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en" />
+ <!-- W3C GRDDL Profile -->
+ <!--
+ <link rel="transformation" href="http://xml.openoffice.org/odf2xhtml/rdf-extract.xsl" />
+ -->
+
+ <!-- base URL of document for resolving relative links -->
+ <xsl:element name="base">
+ <xsl:attribute name="href">
+ <!-- earlier 'targetURL' was used for an absoulte reference of base provided by the Office (file URL)
+ <xsl:value-of select="$targetURL" />
+ now '.' let relative links work, even if document has been moved -->
+ <xsl:text>.</xsl:text>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- generic template for adding common meta tags -->
+ <xsl:template name="add-meta-tag">
+ <xsl:param name="meta-name" />
+ <xsl:param name="meta-data" />
+ <xsl:param name="meta-enc" />
+ <xsl:param name="meta-lang" />
+
+ <xsl:if test="$meta-data">
+ <xsl:element name="meta">
+ <xsl:attribute name="name">
+ <xsl:value-of select="$meta-name" />
+ </xsl:attribute>
+ <xsl:attribute name="content">
+ <xsl:value-of select="$meta-data" />
+ </xsl:attribute>
+ <xsl:if test="$meta-enc">
+ <xsl:attribute name="scheme">
+ <xsl:value-of select="$meta-enc" />
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$meta-lang">
+ <xsl:attribute name="lang" namespace="http://www.w3.org/XML/1998/namespace">
+ <xsl:value-of select="$meta-lang" />
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/filter/source/xslt/odf2xhtml/export/xhtml/opendoc2xhtml.xsl b/filter/source/xslt/odf2xhtml/export/xhtml/opendoc2xhtml.xsl
index 7d364cffee95..f0ac642a00eb 100644
--- a/filter/source/xslt/odf2xhtml/export/xhtml/opendoc2xhtml.xsl
+++ b/filter/source/xslt/odf2xhtml/export/xhtml/opendoc2xhtml.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: opendoc2xhtml.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xslt/odf2xhtml/export/xhtml/table.xsl b/filter/source/xslt/odf2xhtml/export/xhtml/table.xsl
index 9c82a8743aba..a63c6d1af3ce 100644
--- a/filter/source/xslt/odf2xhtml/export/xhtml/table.xsl
+++ b/filter/source/xslt/odf2xhtml/export/xhtml/table.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!--
For further documentation and updates visit http://xml.openoffice.org/odf2xhtml
diff --git a/filter/source/xsltdialog/hidother.src b/filter/source/xsltdialog/hidother.src
index dd7c14b367b3..efac7d4451be 100644
--- a/filter/source/xsltdialog/hidother.src
+++ b/filter/source/xsltdialog/hidother.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hidother.src,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/makefile.mk b/filter/source/xsltdialog/makefile.mk
index f7d2a12a80c3..728a94bf0d36 100644
--- a/filter/source/xsltdialog/makefile.mk
+++ b/filter/source/xsltdialog/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.9 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/typedetectionexport.cxx b/filter/source/xsltdialog/typedetectionexport.cxx
index 1a7b900cd03e..e3cccd8dd6c1 100644
--- a/filter/source/xsltdialog/typedetectionexport.cxx
+++ b/filter/source/xsltdialog/typedetectionexport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typedetectionexport.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/typedetectionexport.hxx b/filter/source/xsltdialog/typedetectionexport.hxx
index 083134fafa61..09dfb5d12d4d 100644
--- a/filter/source/xsltdialog/typedetectionexport.hxx
+++ b/filter/source/xsltdialog/typedetectionexport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typedetectionexport.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/typedetectionimport.cxx b/filter/source/xsltdialog/typedetectionimport.cxx
index 23b1ceaad6ce..392e034ceae3 100644
--- a/filter/source/xsltdialog/typedetectionimport.cxx
+++ b/filter/source/xsltdialog/typedetectionimport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typedetectionimport.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/typedetectionimport.hxx b/filter/source/xsltdialog/typedetectionimport.hxx
index 3cac04d5200a..b4c13ff44a9c 100644
--- a/filter/source/xsltdialog/typedetectionimport.hxx
+++ b/filter/source/xsltdialog/typedetectionimport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typedetectionimport.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfileview.cxx b/filter/source/xsltdialog/xmlfileview.cxx
index 3c9efd08b24e..a9cb18bed8d2 100644
--- a/filter/source/xsltdialog/xmlfileview.cxx
+++ b/filter/source/xsltdialog/xmlfileview.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfileview.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfileview.hrc b/filter/source/xsltdialog/xmlfileview.hrc
index 0e62ffa80f4c..7d4216fa9d27 100644
--- a/filter/source/xsltdialog/xmlfileview.hrc
+++ b/filter/source/xsltdialog/xmlfileview.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfileview.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfileview.hxx b/filter/source/xsltdialog/xmlfileview.hxx
index c79bf6dfd86f..190c52254374 100644
--- a/filter/source/xsltdialog/xmlfileview.hxx
+++ b/filter/source/xsltdialog/xmlfileview.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfileview.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -31,7 +28,7 @@
#define _XMLFILEVIEW_HXX
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <svtools/lstner.hxx>
+#include <svl/lstner.hxx>
#include <vcl/timer.hxx>
#ifndef _TABLE_HXX //autogen
diff --git a/filter/source/xsltdialog/xmlfileview.src b/filter/source/xsltdialog/xmlfileview.src
index 38215dd09f5c..588c3dd47883 100644
--- a/filter/source/xsltdialog/xmlfileview.src
+++ b/filter/source/xsltdialog/xmlfileview.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfileview.src,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hrc b/filter/source/xsltdialog/xmlfiltercommon.hrc
index 078ad70453a9..e3e51bf250dd 100644
--- a/filter/source/xsltdialog/xmlfiltercommon.hrc
+++ b/filter/source/xsltdialog/xmlfiltercommon.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltercommon.hrc,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hxx b/filter/source/xsltdialog/xmlfiltercommon.hxx
index a07dab9dd69b..91e11bdad79a 100644
--- a/filter/source/xsltdialog/xmlfiltercommon.hxx
+++ b/filter/source/xsltdialog/xmlfiltercommon.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltercommon.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
index f8ec267a75f5..c744a65fc274 100644
--- a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
+++ b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterdialogcomponent.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -51,7 +48,7 @@
#include <tools/resmgr.hxx>
#include <vcl/svapp.hxx>
-#include <svtools/solar.hrc>
+#include <svl/solar.hrc>
#include "xmlfiltersettingsdialog.hxx"
diff --git a/filter/source/xsltdialog/xmlfilterdialogstrings.hrc b/filter/source/xsltdialog/xmlfilterdialogstrings.hrc
index 251d339922db..a70b5d503df5 100644
--- a/filter/source/xsltdialog/xmlfilterdialogstrings.hrc
+++ b/filter/source/xsltdialog/xmlfilterdialogstrings.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterdialogstrings.hrc,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfilterdialogstrings.src b/filter/source/xsltdialog/xmlfilterdialogstrings.src
index fdd9ab034571..ee47ea279db6 100644
--- a/filter/source/xsltdialog/xmlfilterdialogstrings.src
+++ b/filter/source/xsltdialog/xmlfilterdialogstrings.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterdialogstrings.src,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfilterhelpids.hrc b/filter/source/xsltdialog/xmlfilterhelpids.hrc
index a1e1444b0cc3..9c49d0537723 100644
--- a/filter/source/xsltdialog/xmlfilterhelpids.hrc
+++ b/filter/source/xsltdialog/xmlfilterhelpids.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterhelpids.hrc,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfilterjar.cxx b/filter/source/xsltdialog/xmlfilterjar.cxx
index 9f21a840cc1c..5592c331713f 100644
--- a/filter/source/xsltdialog/xmlfilterjar.cxx
+++ b/filter/source/xsltdialog/xmlfilterjar.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterjar.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -48,7 +45,7 @@
#include <tools/stream.hxx>
#include <tools/urlobj.hxx>
#include <unotools/tempfile.hxx>
-#include <svtools/urihelper.hxx>
+#include <svl/urihelper.hxx>
#include <osl/file.hxx>
#include <rtl/uri.hxx>
diff --git a/filter/source/xsltdialog/xmlfilterjar.hxx b/filter/source/xsltdialog/xmlfilterjar.hxx
index 36a0a20d89db..a196905edabf 100644
--- a/filter/source/xsltdialog/xmlfilterjar.hxx
+++ b/filter/source/xsltdialog/xmlfilterjar.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterjar.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index 6e46fff1d96e..46cab18f6c77 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltersettingsdialog.cxx,v $
- * $Revision: 1.24 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.hrc b/filter/source/xsltdialog/xmlfiltersettingsdialog.hrc
index be31fc07323e..48ed1a2a4ee7 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.hrc
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltersettingsdialog.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
index 14974dd6609e..5abf2bba0df3 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltersettingsdialog.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -40,8 +37,8 @@
#include <vcl/button.hxx>
#endif
#include <svtools/svtabbx.hxx>
-#include <svtools/poolitem.hxx>
-#include <svtools/moduleoptions.hxx>
+#include <svl/poolitem.hxx>
+#include <unotools/moduleoptions.hxx>
#include "xmlfiltercommon.hxx"
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.src b/filter/source/xsltdialog/xmlfiltersettingsdialog.src
index e2f72ddea174..b80dff3bfe50 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.src
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltersettingsdialog.src,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabdialog.cxx b/filter/source/xsltdialog/xmlfiltertabdialog.cxx
index 520357385fe1..63c369610295 100644
--- a/filter/source/xsltdialog/xmlfiltertabdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltertabdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabdialog.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabdialog.hrc b/filter/source/xsltdialog/xmlfiltertabdialog.hrc
index 5b04c6c4ec6e..a4b9844895e3 100644
--- a/filter/source/xsltdialog/xmlfiltertabdialog.hrc
+++ b/filter/source/xsltdialog/xmlfiltertabdialog.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabdialog.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabdialog.hxx b/filter/source/xsltdialog/xmlfiltertabdialog.hxx
index 053818677cb1..5e514353e11a 100644
--- a/filter/source/xsltdialog/xmlfiltertabdialog.hxx
+++ b/filter/source/xsltdialog/xmlfiltertabdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabdialog.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabdialog.src b/filter/source/xsltdialog/xmlfiltertabdialog.src
index b96af85ba048..7bfed35d0b87 100644
--- a/filter/source/xsltdialog/xmlfiltertabdialog.src
+++ b/filter/source/xsltdialog/xmlfiltertabdialog.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabdialog.src,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx b/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx
index 9d3e8bedb528..b88e9ff802a4 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagebasic.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagebasic.hrc b/filter/source/xsltdialog/xmlfiltertabpagebasic.hrc
index 830c410856ca..eea4f91e1698 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagebasic.hrc
+++ b/filter/source/xsltdialog/xmlfiltertabpagebasic.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagebasic.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagebasic.hxx b/filter/source/xsltdialog/xmlfiltertabpagebasic.hxx
index e0a4c9178128..0fd1fcda3cd5 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagebasic.hxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagebasic.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagebasic.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagebasic.src b/filter/source/xsltdialog/xmlfiltertabpagebasic.src
index d9d8d92bf9a1..e2c3ffb15213 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagebasic.src
+++ b/filter/source/xsltdialog/xmlfiltertabpagebasic.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagebasic.src,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
index 8b5ff0435d19..17743a09d321 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagexslt.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -36,7 +33,7 @@
#include <sfx2/filedlghelper.hxx>
#include <unotools/localfilehelper.hxx>
#include <osl/file.hxx>
-#include <svtools/urihelper.hxx>
+#include <svl/urihelper.hxx>
#include "xmlfiltertabpagexslt.hxx"
#include "xmlfiltertabpagexslt.hrc"
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
index 37ca70532c41..e5b768da6846 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagexslt.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
index 927093c84c23..9aa131e228db 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagexslt.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.src b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
index 7a6be993ee01..43a5bb1a6f39 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.src
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertabpagexslt.src,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertestdialog.cxx b/filter/source/xsltdialog/xmlfiltertestdialog.cxx
index 0be583637e88..30238b08c1b5 100644
--- a/filter/source/xsltdialog/xmlfiltertestdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltertestdialog.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertestdialog.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertestdialog.hrc b/filter/source/xsltdialog/xmlfiltertestdialog.hrc
index 68403dad4ec5..49a2faeb5479 100644
--- a/filter/source/xsltdialog/xmlfiltertestdialog.hrc
+++ b/filter/source/xsltdialog/xmlfiltertestdialog.hrc
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertestdialog.hrc,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltdialog/xmlfiltertestdialog.hxx b/filter/source/xsltdialog/xmlfiltertestdialog.hxx
index 3e07f02d8ab4..a287447937f2 100644
--- a/filter/source/xsltdialog/xmlfiltertestdialog.hxx
+++ b/filter/source/xsltdialog/xmlfiltertestdialog.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertestdialog.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -39,7 +36,7 @@
#include <vcl/button.hxx>
#endif
#include <vcl/fixed.hxx>
-#include <svtools/poolitem.hxx>
+#include <svl/poolitem.hxx>
class filter_info_impl;
class XMLSourceFileDialog;
diff --git a/filter/source/xsltdialog/xmlfiltertestdialog.src b/filter/source/xsltdialog/xmlfiltertestdialog.src
index 1302e2ddf5bf..94127275c9bb 100644
--- a/filter/source/xsltdialog/xmlfiltertestdialog.src
+++ b/filter/source/xsltdialog/xmlfiltertestdialog.src
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfiltertestdialog.src,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltfilter/Base64.java b/filter/source/xsltfilter/Base64.java
index 234ebb92c6a7..1032282ea8a6 100644
--- a/filter/source/xsltfilter/Base64.java
+++ b/filter/source/xsltfilter/Base64.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Base64.java,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltfilter/XSLTFilter.cxx b/filter/source/xsltfilter/XSLTFilter.cxx
index 3d15fc17119e..2ee532086ef5 100644
--- a/filter/source/xsltfilter/XSLTFilter.cxx
+++ b/filter/source/xsltfilter/XSLTFilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XSLTFilter.cxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltfilter/XSLTFilterOLEExtracter.java b/filter/source/xsltfilter/XSLTFilterOLEExtracter.java
index 60de16a7070c..f91146b45bb9 100644
--- a/filter/source/xsltfilter/XSLTFilterOLEExtracter.java
+++ b/filter/source/xsltfilter/XSLTFilterOLEExtracter.java
@@ -1,15 +1,11 @@
-
/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XSLTFilterOLEExtracter.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,9 @@
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
- ************************************************************************///Standard Java classes
+ ************************************************************************/
+
+//Standard Java classes
import java.io.FileWriter;
import java.util.zip.Inflater;
import java.util.zip.Deflater;
diff --git a/filter/source/xsltfilter/XSLTransformer.java b/filter/source/xsltfilter/XSLTransformer.java
index 8b783c5eb72e..86d13cbc23e5 100644
--- a/filter/source/xsltfilter/XSLTransformer.java
+++ b/filter/source/xsltfilter/XSLTransformer.java
@@ -1,15 +1,11 @@
-
/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XSLTransformer.java,v $
- * $Revision: 1.20 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,9 @@
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
- ************************************************************************///Standard Java classes
+ ************************************************************************/
+
+//Standard Java classes
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
diff --git a/filter/source/xsltfilter/fla.cxx b/filter/source/xsltfilter/fla.cxx
index 094413f0b711..d375f008607d 100644
--- a/filter/source/xsltfilter/fla.cxx
+++ b/filter/source/xsltfilter/fla.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fla.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltfilter/fla.hxx b/filter/source/xsltfilter/fla.hxx
index faf328cfa0d3..f7e3e21ac07f 100644
--- a/filter/source/xsltfilter/fla.hxx
+++ b/filter/source/xsltfilter/fla.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fla.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltfilter/makefile.mk b/filter/source/xsltfilter/makefile.mk
index 1746abe0431d..af9476224c63 100644
--- a/filter/source/xsltfilter/makefile.mk
+++ b/filter/source/xsltfilter/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.21 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltvalidate/XSLTValidate.java b/filter/source/xsltvalidate/XSLTValidate.java
index 9ccfadbed1a3..6dba438f4e47 100644
--- a/filter/source/xsltvalidate/XSLTValidate.java
+++ b/filter/source/xsltvalidate/XSLTValidate.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XSLTValidate.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/filter/source/xsltvalidate/makefile.mk b/filter/source/xsltvalidate/makefile.mk
index 1388386a76ff..45e46cca459b 100644
--- a/filter/source/xsltvalidate/makefile.mk
+++ b/filter/source/xsltvalidate/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/inc/makefile.mk b/hwpfilter/inc/makefile.mk
index 875db5a7fafd..12bc00212154 100644
--- a/hwpfilter/inc/makefile.mk
+++ b/hwpfilter/inc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/inc/pch/precompiled_hwpfilter.cxx b/hwpfilter/inc/pch/precompiled_hwpfilter.cxx
index fb2bc7bdc2f5..4ca4f5e0040a 100644
--- a/hwpfilter/inc/pch/precompiled_hwpfilter.cxx
+++ b/hwpfilter/inc/pch/precompiled_hwpfilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompiled_hwpfilter.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/inc/pch/precompiled_hwpfilter.hxx b/hwpfilter/inc/pch/precompiled_hwpfilter.hxx
index d935b2e124e8..1f60640c85c2 100644
--- a/hwpfilter/inc/pch/precompiled_hwpfilter.hxx
+++ b/hwpfilter/inc/pch/precompiled_hwpfilter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompiled_hwpfilter.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/attributes.cxx b/hwpfilter/source/attributes.cxx
index 61ddeee53643..46f8d85c6118 100644
--- a/hwpfilter/source/attributes.cxx
+++ b/hwpfilter/source/attributes.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attributes.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/attributes.hxx b/hwpfilter/source/attributes.hxx
index 29aef9bf1ee3..ad51c02283a0 100644
--- a/hwpfilter/source/attributes.hxx
+++ b/hwpfilter/source/attributes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attributes.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/cspline.cpp b/hwpfilter/source/cspline.cpp
index ba1f5330bfb3..7a07c23d5f84 100644
--- a/hwpfilter/source/cspline.cpp
+++ b/hwpfilter/source/cspline.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cspline.cpp,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/cspline.h b/hwpfilter/source/cspline.h
index b3375030568c..d887dcfc2a82 100644
--- a/hwpfilter/source/cspline.h
+++ b/hwpfilter/source/cspline.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cspline.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/datecode.h b/hwpfilter/source/datecode.h
index c8aa7b9e4f49..429d1d1c913e 100644
--- a/hwpfilter/source/datecode.h
+++ b/hwpfilter/source/datecode.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datecode.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/drawdef.h b/hwpfilter/source/drawdef.h
index 29dd22934793..3f19cfd340a5 100644
--- a/hwpfilter/source/drawdef.h
+++ b/hwpfilter/source/drawdef.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: drawdef.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/drawing.h b/hwpfilter/source/drawing.h
index fce1a91872e0..f667c3745057 100644
--- a/hwpfilter/source/drawing.h
+++ b/hwpfilter/source/drawing.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: drawing.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/fontmap.cpp b/hwpfilter/source/fontmap.cpp
index 981bf45bf311..800637018a82 100644
--- a/hwpfilter/source/fontmap.cpp
+++ b/hwpfilter/source/fontmap.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fontmap.cpp,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/formula.cpp b/hwpfilter/source/formula.cpp
index 6cdf16cf7953..ec37e0fd57c9 100644
--- a/hwpfilter/source/formula.cpp
+++ b/hwpfilter/source/formula.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: formula.cpp,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/formula.h b/hwpfilter/source/formula.h
index ec04f8ab7684..3cdff4bcaad9 100644
--- a/hwpfilter/source/formula.h
+++ b/hwpfilter/source/formula.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: formula.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/grammar.cpp b/hwpfilter/source/grammar.cpp
index 74687051e582..e7feb7f773cd 100644
--- a/hwpfilter/source/grammar.cpp
+++ b/hwpfilter/source/grammar.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: grammar.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/grammar.h b/hwpfilter/source/grammar.h
index 6c42fb100123..5fe812febf42 100644
--- a/hwpfilter/source/grammar.h
+++ b/hwpfilter/source/grammar.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: grammar.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hbox.cpp b/hwpfilter/source/hbox.cpp
index 97c5d520df05..8051f71e4637 100644
--- a/hwpfilter/source/hbox.cpp
+++ b/hwpfilter/source/hbox.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hbox.cpp,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hbox.h b/hwpfilter/source/hbox.h
index b36609da9075..2b49b3976d74 100644
--- a/hwpfilter/source/hbox.h
+++ b/hwpfilter/source/hbox.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hbox.h,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hcode.cpp b/hwpfilter/source/hcode.cpp
index 322909a30538..39c1cf63bf55 100644
--- a/hwpfilter/source/hcode.cpp
+++ b/hwpfilter/source/hcode.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hcode.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hcode.h b/hwpfilter/source/hcode.h
index cb984754a3e0..75b411dff3e4 100644
--- a/hwpfilter/source/hcode.h
+++ b/hwpfilter/source/hcode.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hcode.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hfont.cpp b/hwpfilter/source/hfont.cpp
index d90c93647c68..c1ec55016cc2 100644
--- a/hwpfilter/source/hfont.cpp
+++ b/hwpfilter/source/hfont.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hfont.cpp,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hfont.h b/hwpfilter/source/hfont.h
index 1944b82536de..87fed5b71a5e 100644
--- a/hwpfilter/source/hfont.h
+++ b/hwpfilter/source/hfont.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hfont.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hgzip.cpp b/hwpfilter/source/hgzip.cpp
index e504ecadd737..93aa889cfcaa 100644
--- a/hwpfilter/source/hgzip.cpp
+++ b/hwpfilter/source/hgzip.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hgzip.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hgzip.h b/hwpfilter/source/hgzip.h
index e442b266cfe2..74e8059246f2 100644
--- a/hwpfilter/source/hgzip.h
+++ b/hwpfilter/source/hgzip.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hgzip.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/himgutil.cpp b/hwpfilter/source/himgutil.cpp
index cdb0c3b99bd9..92892be00a59 100644
--- a/hwpfilter/source/himgutil.cpp
+++ b/hwpfilter/source/himgutil.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: himgutil.cpp,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/himgutil.h b/hwpfilter/source/himgutil.h
index b144f3968d25..4a60e1b99992 100644
--- a/hwpfilter/source/himgutil.h
+++ b/hwpfilter/source/himgutil.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: himgutil.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hinfo.cpp b/hwpfilter/source/hinfo.cpp
index 3db8d616b872..773fbf05ca1d 100644
--- a/hwpfilter/source/hinfo.cpp
+++ b/hwpfilter/source/hinfo.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hinfo.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hinfo.h b/hwpfilter/source/hinfo.h
index d2ff7a1e5014..62f90ef92ae5 100644
--- a/hwpfilter/source/hinfo.h
+++ b/hwpfilter/source/hinfo.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hinfo.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hiodev.cpp b/hwpfilter/source/hiodev.cpp
index 06e93a4dd6b8..183f8eef1c99 100644
--- a/hwpfilter/source/hiodev.cpp
+++ b/hwpfilter/source/hiodev.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hiodev.cpp,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hiodev.h b/hwpfilter/source/hiodev.h
index ce4c9e39f432..994bb3383397 100644
--- a/hwpfilter/source/hiodev.h
+++ b/hwpfilter/source/hiodev.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hiodev.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hpara.cpp b/hwpfilter/source/hpara.cpp
index 9790e135c709..885fa53799ae 100644
--- a/hwpfilter/source/hpara.cpp
+++ b/hwpfilter/source/hpara.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hpara.cpp,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hpara.h b/hwpfilter/source/hpara.h
index cac8bffba5a0..df8e57b8121a 100644
--- a/hwpfilter/source/hpara.h
+++ b/hwpfilter/source/hpara.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hpara.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hstream.cpp b/hwpfilter/source/hstream.cpp
index 238d0be7ca9f..7d657850beff 100644
--- a/hwpfilter/source/hstream.cpp
+++ b/hwpfilter/source/hstream.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hstream.cpp,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hstream.h b/hwpfilter/source/hstream.h
index 618107c00df0..025ef085b661 100644
--- a/hwpfilter/source/hstream.h
+++ b/hwpfilter/source/hstream.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hstream.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hstyle.cpp b/hwpfilter/source/hstyle.cpp
index 3a52dc504ae3..704f4fd03450 100644
--- a/hwpfilter/source/hstyle.cpp
+++ b/hwpfilter/source/hstyle.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hstyle.cpp,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hstyle.h b/hwpfilter/source/hstyle.h
index 9f67ed558f0d..678414f9b2ce 100644
--- a/hwpfilter/source/hstyle.h
+++ b/hwpfilter/source/hstyle.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hstyle.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/htags.cpp b/hwpfilter/source/htags.cpp
index 60b06f28738b..7a4bace0dd68 100644
--- a/hwpfilter/source/htags.cpp
+++ b/hwpfilter/source/htags.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: htags.cpp,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/htags.h b/hwpfilter/source/htags.h
index 7c4bc66a3df6..cf0f54b97d93 100644
--- a/hwpfilter/source/htags.h
+++ b/hwpfilter/source/htags.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: htags.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hutil.cpp b/hwpfilter/source/hutil.cpp
index 2e8ec0718978..229b8e453b51 100644
--- a/hwpfilter/source/hutil.cpp
+++ b/hwpfilter/source/hutil.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hutil.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hutil.h b/hwpfilter/source/hutil.h
index 5b61cd4df009..c8d80698d1d5 100644
--- a/hwpfilter/source/hutil.h
+++ b/hwpfilter/source/hutil.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hutil.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpeq.cpp b/hwpfilter/source/hwpeq.cpp
index d2df6fcf6f82..350a3cef0958 100644
--- a/hwpfilter/source/hwpeq.cpp
+++ b/hwpfilter/source/hwpeq.cpp
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpeq.cpp,v $
- *
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpeq.h b/hwpfilter/source/hwpeq.h
index 8f427d28a7be..938f9f9246fe 100644
--- a/hwpfilter/source/hwpeq.h
+++ b/hwpfilter/source/hwpeq.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpeq.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpfile.cpp b/hwpfilter/source/hwpfile.cpp
index 84c093a8c825..54f35a206ab0 100644
--- a/hwpfilter/source/hwpfile.cpp
+++ b/hwpfilter/source/hwpfile.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpfile.cpp,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpfile.h b/hwpfilter/source/hwpfile.h
index d4ce8fc303a1..a0d934de827c 100644
--- a/hwpfilter/source/hwpfile.h
+++ b/hwpfilter/source/hwpfile.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpfile.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwplib.h b/hwpfilter/source/hwplib.h
index 7d1cd9c5a609..6fc8ff3dc45b 100644
--- a/hwpfilter/source/hwplib.h
+++ b/hwpfilter/source/hwplib.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwplib.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpread.cpp b/hwpfilter/source/hwpread.cpp
index c62d37ef4429..faef616a5755 100644
--- a/hwpfilter/source/hwpread.cpp
+++ b/hwpfilter/source/hwpread.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpread.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpreader.cxx b/hwpfilter/source/hwpreader.cxx
index f971bedc498a..0701e6ec72f6 100644
--- a/hwpfilter/source/hwpreader.cxx
+++ b/hwpfilter/source/hwpreader.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpreader.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/hwpreader.hxx b/hwpfilter/source/hwpreader.hxx
index d1d8bc686cc9..c5fdb180f776 100644
--- a/hwpfilter/source/hwpreader.hxx
+++ b/hwpfilter/source/hwpreader.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hwpreader.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/list.hxx b/hwpfilter/source/list.hxx
index 4921a3bb95ee..70677d6a4b31 100644
--- a/hwpfilter/source/list.hxx
+++ b/hwpfilter/source/list.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: list.hxx,v $
- * $Revision: 1.6.10.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/makefile.mk b/hwpfilter/source/makefile.mk
index 91dcc3d6b4ca..c059c1ae2ed4 100644
--- a/hwpfilter/source/makefile.mk
+++ b/hwpfilter/source/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/mapping.h b/hwpfilter/source/mapping.h
index a32628a9d47e..7c7ceb086bf3 100644
--- a/hwpfilter/source/mapping.h
+++ b/hwpfilter/source/mapping.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: mapping.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/mzstring.cpp b/hwpfilter/source/mzstring.cpp
index 65600addc1cd..cf64b4f9c33f 100644
--- a/hwpfilter/source/mzstring.cpp
+++ b/hwpfilter/source/mzstring.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: mzstring.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/mzstring.h b/hwpfilter/source/mzstring.h
index 729cd21a6877..f0a847085138 100644
--- a/hwpfilter/source/mzstring.h
+++ b/hwpfilter/source/mzstring.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: mzstring.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/nodes.h b/hwpfilter/source/nodes.h
index 5ff837c46336..681af19cf302 100644
--- a/hwpfilter/source/nodes.h
+++ b/hwpfilter/source/nodes.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: nodes.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/precompile.h b/hwpfilter/source/precompile.h
index b374a54f7751..7a85945f262a 100644
--- a/hwpfilter/source/precompile.h
+++ b/hwpfilter/source/precompile.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompile.h,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/solver.cpp b/hwpfilter/source/solver.cpp
index b6f268ce8873..e21d9b310deb 100644
--- a/hwpfilter/source/solver.cpp
+++ b/hwpfilter/source/solver.cpp
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: solver.cpp,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/hwpfilter/source/solver.h b/hwpfilter/source/solver.h
index acdaaf430795..a0c4ca403fe6 100644
--- a/hwpfilter/source/solver.h
+++ b/hwpfilter/source/solver.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: solver.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/binarycodec.hxx b/oox/inc/oox/core/binarycodec.hxx
index 767b9c2be936..8abafffa2481 100644
--- a/oox/inc/oox/core/binarycodec.hxx
+++ b/oox/inc/oox/core/binarycodec.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binarycodec.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/binaryfilterbase.hxx b/oox/inc/oox/core/binaryfilterbase.hxx
index c051934f550c..bf249cdfab9b 100644
--- a/oox/inc/oox/core/binaryfilterbase.hxx
+++ b/oox/inc/oox/core/binaryfilterbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binaryfilterbase.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/contexthandler.hxx b/oox/inc/oox/core/contexthandler.hxx
index c44501403837..dd9ac686ff46 100644
--- a/oox/inc/oox/core/contexthandler.hxx
+++ b/oox/inc/oox/core/contexthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contexthandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/contexthandler2.hxx b/oox/inc/oox/core/contexthandler2.hxx
index 74bb33a8231e..48f11c962e38 100644
--- a/oox/inc/oox/core/contexthandler2.hxx
+++ b/oox/inc/oox/core/contexthandler2.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contexthandler2.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/fasttokenhandler.hxx b/oox/inc/oox/core/fasttokenhandler.hxx
index 45709f9da401..84baccabdc67 100644
--- a/oox/inc/oox/core/fasttokenhandler.hxx
+++ b/oox/inc/oox/core/fasttokenhandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fasttokenhandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/filterbase.hxx b/oox/inc/oox/core/filterbase.hxx
index adfb8d6d0941..b086538db73e 100644
--- a/oox/inc/oox/core/filterbase.hxx
+++ b/oox/inc/oox/core/filterbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterbase.hxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/filterdetect.hxx b/oox/inc/oox/core/filterdetect.hxx
index bd9e3a84ff3a..e38008305d71 100644
--- a/oox/inc/oox/core/filterdetect.hxx
+++ b/oox/inc/oox/core/filterdetect.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterdetect.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/fragmenthandler.hxx b/oox/inc/oox/core/fragmenthandler.hxx
index e2c3a523c0d5..26d2ac540a7a 100644
--- a/oox/inc/oox/core/fragmenthandler.hxx
+++ b/oox/inc/oox/core/fragmenthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fragmenthandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/fragmenthandler2.hxx b/oox/inc/oox/core/fragmenthandler2.hxx
index 1e32d1049a1e..9b864260b853 100644
--- a/oox/inc/oox/core/fragmenthandler2.hxx
+++ b/oox/inc/oox/core/fragmenthandler2.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fragmenthandler2.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/recordparser.hxx b/oox/inc/oox/core/recordparser.hxx
index aabdd4ad3152..e499195c52f8 100644
--- a/oox/inc/oox/core/recordparser.hxx
+++ b/oox/inc/oox/core/recordparser.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: recordparser.hxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/relations.hxx b/oox/inc/oox/core/relations.hxx
index 6e11027383b3..4ca8ca3899e7 100644
--- a/oox/inc/oox/core/relations.hxx
+++ b/oox/inc/oox/core/relations.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: relations.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/relationshandler.hxx b/oox/inc/oox/core/relationshandler.hxx
index 13e5226007b6..3211888ecc9f 100644
--- a/oox/inc/oox/core/relationshandler.hxx
+++ b/oox/inc/oox/core/relationshandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: relationshandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/core/xmlfilterbase.hxx b/oox/inc/oox/core/xmlfilterbase.hxx
index 510b00ea81fc..30efeb0e9440 100644
--- a/oox/inc/oox/core/xmlfilterbase.hxx
+++ b/oox/inc/oox/core/xmlfilterbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterbase.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/dllapi.h b/oox/inc/oox/dllapi.h
index b342ec9e0b5e..035f11fcf426 100644
--- a/oox/inc/oox/dllapi.h
+++ b/oox/inc/oox/dllapi.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dllapi.h,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/axiscontext.hxx b/oox/inc/oox/drawingml/chart/axiscontext.hxx
index 4bbec01163a7..b80dd2e6f9ef 100644
--- a/oox/inc/oox/drawingml/chart/axiscontext.hxx
+++ b/oox/inc/oox/drawingml/chart/axiscontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axiscontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/axisconverter.hxx b/oox/inc/oox/drawingml/chart/axisconverter.hxx
index 94054d8ae0e1..4e8f86279133 100644
--- a/oox/inc/oox/drawingml/chart/axisconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/axisconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axisconverter.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/axismodel.hxx b/oox/inc/oox/drawingml/chart/axismodel.hxx
index 958fd8f50e96..8bab84257eee 100644
--- a/oox/inc/oox/drawingml/chart/axismodel.hxx
+++ b/oox/inc/oox/drawingml/chart/axismodel.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axismodel.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/chartcontextbase.hxx b/oox/inc/oox/drawingml/chart/chartcontextbase.hxx
index d1f61bcb3827..470596a5228e 100644
--- a/oox/inc/oox/drawingml/chart/chartcontextbase.hxx
+++ b/oox/inc/oox/drawingml/chart/chartcontextbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartcontextbase.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/chartconverter.hxx b/oox/inc/oox/drawingml/chart/chartconverter.hxx
index 6ff165216d23..f9d10388ce13 100644
--- a/oox/inc/oox/drawingml/chart/chartconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/chartconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartconverter.hxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/chartspaceconverter.hxx b/oox/inc/oox/drawingml/chart/chartspaceconverter.hxx
index f7b357382142..b4c40015f825 100644
--- a/oox/inc/oox/drawingml/chart/chartspaceconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/chartspaceconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartspaceconverter.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/chartspacefragment.hxx b/oox/inc/oox/drawingml/chart/chartspacefragment.hxx
index f6a07f1468b3..898bc2ea15e8 100644
--- a/oox/inc/oox/drawingml/chart/chartspacefragment.hxx
+++ b/oox/inc/oox/drawingml/chart/chartspacefragment.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartspacefragment.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/chartspacemodel.hxx b/oox/inc/oox/drawingml/chart/chartspacemodel.hxx
index 53413f2d6d5c..ddfa57fb919c 100644
--- a/oox/inc/oox/drawingml/chart/chartspacemodel.hxx
+++ b/oox/inc/oox/drawingml/chart/chartspacemodel.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartspacemodel.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/converterbase.hxx b/oox/inc/oox/drawingml/chart/converterbase.hxx
index c63d1010e166..23f5a5ff9266 100644
--- a/oox/inc/oox/drawingml/chart/converterbase.hxx
+++ b/oox/inc/oox/drawingml/chart/converterbase.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: converterbase.hxx,v $
- *
- * $Revision: 1.4.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/datasourcecontext.hxx b/oox/inc/oox/drawingml/chart/datasourcecontext.hxx
index dbe9f0c706f8..9b832a0209ab 100644
--- a/oox/inc/oox/drawingml/chart/datasourcecontext.hxx
+++ b/oox/inc/oox/drawingml/chart/datasourcecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datasourcecontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/datasourceconverter.hxx b/oox/inc/oox/drawingml/chart/datasourceconverter.hxx
index 3cd29347c886..7cdd6ab4a175 100644
--- a/oox/inc/oox/drawingml/chart/datasourceconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/datasourceconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datasourceconverter.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/datasourcemodel.hxx b/oox/inc/oox/drawingml/chart/datasourcemodel.hxx
index eeeadbb8183c..3de2278e5a71 100644
--- a/oox/inc/oox/drawingml/chart/datasourcemodel.hxx
+++ b/oox/inc/oox/drawingml/chart/datasourcemodel.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datasourcemodel.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/modelbase.hxx b/oox/inc/oox/drawingml/chart/modelbase.hxx
index b1e5ae088f0d..113d6f686fd1 100644
--- a/oox/inc/oox/drawingml/chart/modelbase.hxx
+++ b/oox/inc/oox/drawingml/chart/modelbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: modelbase.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/objectformatter.hxx b/oox/inc/oox/drawingml/chart/objectformatter.hxx
index fb5ad53d9736..9f83a6bc0391 100644
--- a/oox/inc/oox/drawingml/chart/objectformatter.hxx
+++ b/oox/inc/oox/drawingml/chart/objectformatter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: objectformatter.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/plotareacontext.hxx b/oox/inc/oox/drawingml/chart/plotareacontext.hxx
index d5c448fc4c3a..75ebed545956 100644
--- a/oox/inc/oox/drawingml/chart/plotareacontext.hxx
+++ b/oox/inc/oox/drawingml/chart/plotareacontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: plotareacontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/plotareaconverter.hxx b/oox/inc/oox/drawingml/chart/plotareaconverter.hxx
index 9a52bfa120c6..b2583b2e57a1 100644
--- a/oox/inc/oox/drawingml/chart/plotareaconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/plotareaconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: plotareaconverter.hxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/plotareamodel.hxx b/oox/inc/oox/drawingml/chart/plotareamodel.hxx
index bc8a359ddac6..2dfe1c33f4e3 100644
--- a/oox/inc/oox/drawingml/chart/plotareamodel.hxx
+++ b/oox/inc/oox/drawingml/chart/plotareamodel.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: plotareamodel.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/seriescontext.hxx b/oox/inc/oox/drawingml/chart/seriescontext.hxx
index 8d5aec8f767e..024e9754781c 100644
--- a/oox/inc/oox/drawingml/chart/seriescontext.hxx
+++ b/oox/inc/oox/drawingml/chart/seriescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: seriescontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/seriesconverter.hxx b/oox/inc/oox/drawingml/chart/seriesconverter.hxx
index 28944d45d671..7f6a08655b17 100644
--- a/oox/inc/oox/drawingml/chart/seriesconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/seriesconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: seriesconverter.hxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/seriesmodel.hxx b/oox/inc/oox/drawingml/chart/seriesmodel.hxx
index 2d10b4f2a117..2b72eb0f2bcf 100644
--- a/oox/inc/oox/drawingml/chart/seriesmodel.hxx
+++ b/oox/inc/oox/drawingml/chart/seriesmodel.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: seriesmodel.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/titlecontext.hxx b/oox/inc/oox/drawingml/chart/titlecontext.hxx
index 73238bcad7e6..b5743cc78f42 100644
--- a/oox/inc/oox/drawingml/chart/titlecontext.hxx
+++ b/oox/inc/oox/drawingml/chart/titlecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: titlecontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/titleconverter.hxx b/oox/inc/oox/drawingml/chart/titleconverter.hxx
index 86ee8d15bd65..d1fcfcfcfebc 100644
--- a/oox/inc/oox/drawingml/chart/titleconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/titleconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: titleconverter.hxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/titlemodel.hxx b/oox/inc/oox/drawingml/chart/titlemodel.hxx
index ee66a655fa70..f5d46957b450 100644
--- a/oox/inc/oox/drawingml/chart/titlemodel.hxx
+++ b/oox/inc/oox/drawingml/chart/titlemodel.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: titlemodel.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/typegroupcontext.hxx b/oox/inc/oox/drawingml/chart/typegroupcontext.hxx
index bd8cf4ff26d1..aa5f2a47c4a0 100644
--- a/oox/inc/oox/drawingml/chart/typegroupcontext.hxx
+++ b/oox/inc/oox/drawingml/chart/typegroupcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typegroupcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/typegroupconverter.hxx b/oox/inc/oox/drawingml/chart/typegroupconverter.hxx
index aa501ca77a0e..46018696baef 100644
--- a/oox/inc/oox/drawingml/chart/typegroupconverter.hxx
+++ b/oox/inc/oox/drawingml/chart/typegroupconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typegroupconverter.hxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/chart/typegroupmodel.hxx b/oox/inc/oox/drawingml/chart/typegroupmodel.hxx
index 0fafda699b4b..b51b8e5d4a7c 100644
--- a/oox/inc/oox/drawingml/chart/typegroupmodel.hxx
+++ b/oox/inc/oox/drawingml/chart/typegroupmodel.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typegroupmodel.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/clrscheme.hxx b/oox/inc/oox/drawingml/clrscheme.hxx
index 3479c895311e..22eab1a892a1 100644
--- a/oox/inc/oox/drawingml/clrscheme.hxx
+++ b/oox/inc/oox/drawingml/clrscheme.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: clrscheme.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/clrschemecontext.hxx b/oox/inc/oox/drawingml/clrschemecontext.hxx
index a60e6079eebf..2ecc588716e0 100644
--- a/oox/inc/oox/drawingml/clrschemecontext.hxx
+++ b/oox/inc/oox/drawingml/clrschemecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: clrschemecontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/color.hxx b/oox/inc/oox/drawingml/color.hxx
index b1de124adad5..830959b77db9 100644
--- a/oox/inc/oox/drawingml/color.hxx
+++ b/oox/inc/oox/drawingml/color.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: color.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/colorchoicecontext.hxx b/oox/inc/oox/drawingml/colorchoicecontext.hxx
index 3a2653341c6c..8b42a2e74c15 100644
--- a/oox/inc/oox/drawingml/colorchoicecontext.hxx
+++ b/oox/inc/oox/drawingml/colorchoicecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: colorchoicecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/connectorshapecontext.hxx b/oox/inc/oox/drawingml/connectorshapecontext.hxx
index 1f56123f1f07..f20624c55efc 100644
--- a/oox/inc/oox/drawingml/connectorshapecontext.hxx
+++ b/oox/inc/oox/drawingml/connectorshapecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: connectorshapecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/customshapegeometry.hxx b/oox/inc/oox/drawingml/customshapegeometry.hxx
index 67aa4ffe7a62..4fec38cf09eb 100644
--- a/oox/inc/oox/drawingml/customshapegeometry.hxx
+++ b/oox/inc/oox/drawingml/customshapegeometry.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: customshapegeometry.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/customshapeproperties.hxx b/oox/inc/oox/drawingml/customshapeproperties.hxx
index 9857a75e4836..4e4b82cd5acd 100644
--- a/oox/inc/oox/drawingml/customshapeproperties.hxx
+++ b/oox/inc/oox/drawingml/customshapeproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: customshapeproperties.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/diagram/datamodelcontext.hxx b/oox/inc/oox/drawingml/diagram/datamodelcontext.hxx
index 8e4fcfda4fac..a09f7b100e2e 100644
--- a/oox/inc/oox/drawingml/diagram/datamodelcontext.hxx
+++ b/oox/inc/oox/drawingml/diagram/datamodelcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datamodelcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/diagram/diagram.hxx b/oox/inc/oox/drawingml/diagram/diagram.hxx
index e26a2ded9aa4..f9c74246e558 100644
--- a/oox/inc/oox/drawingml/diagram/diagram.hxx
+++ b/oox/inc/oox/drawingml/diagram/diagram.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagram.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx b/oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx
index 09c62f34d5f6..f9fd32dc71d6 100644
--- a/oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx
+++ b/oox/inc/oox/drawingml/diagram/diagramfragmenthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagramfragmenthandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx b/oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx
index 1e71cecdf11a..7df2deddfa83 100644
--- a/oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx
+++ b/oox/inc/oox/drawingml/diagram/diagramlayoutatoms.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagramlayoutatoms.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/drawingmltypes.hxx b/oox/inc/oox/drawingml/drawingmltypes.hxx
index 77c9e535e3b7..ed4367e63857 100644
--- a/oox/inc/oox/drawingml/drawingmltypes.hxx
+++ b/oox/inc/oox/drawingml/drawingmltypes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: drawingmltypes.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/embeddedwavaudiofile.hxx b/oox/inc/oox/drawingml/embeddedwavaudiofile.hxx
index e6b9ad2f687e..d724254b4263 100644
--- a/oox/inc/oox/drawingml/embeddedwavaudiofile.hxx
+++ b/oox/inc/oox/drawingml/embeddedwavaudiofile.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: embeddedwavaudiofile.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/fillproperties.hxx b/oox/inc/oox/drawingml/fillproperties.hxx
index 9504da617083..be6561c970d3 100644
--- a/oox/inc/oox/drawingml/fillproperties.hxx
+++ b/oox/inc/oox/drawingml/fillproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fillproperties.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/fillpropertiesgroupcontext.hxx b/oox/inc/oox/drawingml/fillpropertiesgroupcontext.hxx
index ab4c1b3e3a9a..86c790795f25 100644
--- a/oox/inc/oox/drawingml/fillpropertiesgroupcontext.hxx
+++ b/oox/inc/oox/drawingml/fillpropertiesgroupcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fillpropertiesgroupcontext.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/graphicshapecontext.hxx b/oox/inc/oox/drawingml/graphicshapecontext.hxx
index 82d801fe6cdd..d515a4553936 100644
--- a/oox/inc/oox/drawingml/graphicshapecontext.hxx
+++ b/oox/inc/oox/drawingml/graphicshapecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: graphicshapecontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/guidcontext.hxx b/oox/inc/oox/drawingml/guidcontext.hxx
index 25c645b75a1b..20dff63fc373 100644
--- a/oox/inc/oox/drawingml/guidcontext.hxx
+++ b/oox/inc/oox/drawingml/guidcontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: guidcontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/lineproperties.hxx b/oox/inc/oox/drawingml/lineproperties.hxx
index db337c520092..9a538db30156 100644
--- a/oox/inc/oox/drawingml/lineproperties.hxx
+++ b/oox/inc/oox/drawingml/lineproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: lineproperties.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/linepropertiescontext.hxx b/oox/inc/oox/drawingml/linepropertiescontext.hxx
index 94448eedaa27..617e3fa67c93 100644
--- a/oox/inc/oox/drawingml/linepropertiescontext.hxx
+++ b/oox/inc/oox/drawingml/linepropertiescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: linepropertiescontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/objectdefaultcontext.hxx b/oox/inc/oox/drawingml/objectdefaultcontext.hxx
index 5fde09e36a8b..b572637ec047 100644
--- a/oox/inc/oox/drawingml/objectdefaultcontext.hxx
+++ b/oox/inc/oox/drawingml/objectdefaultcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: objectdefaultcontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/shape.hxx b/oox/inc/oox/drawingml/shape.hxx
index 35212c834c64..7dad1be76635 100644
--- a/oox/inc/oox/drawingml/shape.hxx
+++ b/oox/inc/oox/drawingml/shape.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shape.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/shapecontext.hxx b/oox/inc/oox/drawingml/shapecontext.hxx
index 97bacc079966..68ef45ac92cc 100644
--- a/oox/inc/oox/drawingml/shapecontext.hxx
+++ b/oox/inc/oox/drawingml/shapecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/shapegroupcontext.hxx b/oox/inc/oox/drawingml/shapegroupcontext.hxx
index 49080c6c07e5..681c527c0635 100644
--- a/oox/inc/oox/drawingml/shapegroupcontext.hxx
+++ b/oox/inc/oox/drawingml/shapegroupcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapegroupcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/shapepropertiescontext.hxx b/oox/inc/oox/drawingml/shapepropertiescontext.hxx
index 5c0898fb52e9..8cb4a3276918 100644
--- a/oox/inc/oox/drawingml/shapepropertiescontext.hxx
+++ b/oox/inc/oox/drawingml/shapepropertiescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapepropertiescontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/shapestylecontext.hxx b/oox/inc/oox/drawingml/shapestylecontext.hxx
index 001098bdc613..71fc8b33b7c6 100644
--- a/oox/inc/oox/drawingml/shapestylecontext.hxx
+++ b/oox/inc/oox/drawingml/shapestylecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapestylecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/spdefcontext.hxx b/oox/inc/oox/drawingml/spdefcontext.hxx
index 10e217e5110c..dced46eaa700 100644
--- a/oox/inc/oox/drawingml/spdefcontext.hxx
+++ b/oox/inc/oox/drawingml/spdefcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: spdefcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablebackgroundstylecontext.hxx b/oox/inc/oox/drawingml/table/tablebackgroundstylecontext.hxx
index b3ea4c0cbba3..541fc2333234 100644
--- a/oox/inc/oox/drawingml/table/tablebackgroundstylecontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablebackgroundstylecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablebackgroundstylecontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablecell.hxx b/oox/inc/oox/drawingml/table/tablecell.hxx
index 2cffb2b7b1e3..cf70e1d155c0 100644
--- a/oox/inc/oox/drawingml/table/tablecell.hxx
+++ b/oox/inc/oox/drawingml/table/tablecell.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablecell.hxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablecellcontext.hxx b/oox/inc/oox/drawingml/table/tablecellcontext.hxx
index 91e1da6c55b8..02ab8d93ff76 100644
--- a/oox/inc/oox/drawingml/table/tablecellcontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablecellcontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablecellcontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablecontext.hxx b/oox/inc/oox/drawingml/table/tablecontext.hxx
index 87a073114dde..727bf66b4185 100644
--- a/oox/inc/oox/drawingml/table/tablecontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablecontext.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablepartstylecontext.hxx b/oox/inc/oox/drawingml/table/tablepartstylecontext.hxx
index b0dbeca71209..902e1ad79f89 100644
--- a/oox/inc/oox/drawingml/table/tablepartstylecontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablepartstylecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablepartstylecontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tableproperties.hxx b/oox/inc/oox/drawingml/table/tableproperties.hxx
index fcd4b832cf4a..83793709da7c 100644
--- a/oox/inc/oox/drawingml/table/tableproperties.hxx
+++ b/oox/inc/oox/drawingml/table/tableproperties.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tableproperties.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablerow.hxx b/oox/inc/oox/drawingml/table/tablerow.hxx
index cb8e674dd16e..4ef12f3002ea 100644
--- a/oox/inc/oox/drawingml/table/tablerow.hxx
+++ b/oox/inc/oox/drawingml/table/tablerow.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablerow.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablerowcontext.hxx b/oox/inc/oox/drawingml/table/tablerowcontext.hxx
index 892f28ccbd39..f6cd981ddaed 100644
--- a/oox/inc/oox/drawingml/table/tablerowcontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablerowcontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablerowcontext.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestyle.hxx b/oox/inc/oox/drawingml/table/tablestyle.hxx
index 89a42103348e..4fb71d6ad5e0 100644
--- a/oox/inc/oox/drawingml/table/tablestyle.hxx
+++ b/oox/inc/oox/drawingml/table/tablestyle.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestyle.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestylecellstylecontext.hxx b/oox/inc/oox/drawingml/table/tablestylecellstylecontext.hxx
index a26a2fdbac94..e63a7754845e 100644
--- a/oox/inc/oox/drawingml/table/tablestylecellstylecontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablestylecellstylecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylecellstylecontext.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestylecontext.hxx b/oox/inc/oox/drawingml/table/tablestylecontext.hxx
index b41eb5876e6e..8e464b2b2744 100644
--- a/oox/inc/oox/drawingml/table/tablestylecontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablestylecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylecontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestylelist.hxx b/oox/inc/oox/drawingml/table/tablestylelist.hxx
index 6f5fc55550e9..ea82fcdc4b28 100644
--- a/oox/inc/oox/drawingml/table/tablestylelist.hxx
+++ b/oox/inc/oox/drawingml/table/tablestylelist.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylelist.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestylelistfragmenthandler.hxx b/oox/inc/oox/drawingml/table/tablestylelistfragmenthandler.hxx
index 9a41319de481..7142f395d041 100644
--- a/oox/inc/oox/drawingml/table/tablestylelistfragmenthandler.hxx
+++ b/oox/inc/oox/drawingml/table/tablestylelistfragmenthandler.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylelistfragmenthandler.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestylepart.hxx b/oox/inc/oox/drawingml/table/tablestylepart.hxx
index f682802271f1..aebdd0245516 100644
--- a/oox/inc/oox/drawingml/table/tablestylepart.hxx
+++ b/oox/inc/oox/drawingml/table/tablestylepart.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylepart.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/table/tablestyletextstylecontext.hxx b/oox/inc/oox/drawingml/table/tablestyletextstylecontext.hxx
index 9a23e16c32c1..cf66d93c8738 100644
--- a/oox/inc/oox/drawingml/table/tablestyletextstylecontext.hxx
+++ b/oox/inc/oox/drawingml/table/tablestyletextstylecontext.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestyletextstylecontext.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textbody.hxx b/oox/inc/oox/drawingml/textbody.hxx
index 25dad777c9a1..a2eb6106e651 100644
--- a/oox/inc/oox/drawingml/textbody.hxx
+++ b/oox/inc/oox/drawingml/textbody.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbody.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textbodycontext.hxx b/oox/inc/oox/drawingml/textbodycontext.hxx
index f0fc972b3406..acb12bffdac7 100644
--- a/oox/inc/oox/drawingml/textbodycontext.hxx
+++ b/oox/inc/oox/drawingml/textbodycontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbodycontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textbodyproperties.hxx b/oox/inc/oox/drawingml/textbodyproperties.hxx
index f0824843b420..7b17c561e286 100644
--- a/oox/inc/oox/drawingml/textbodyproperties.hxx
+++ b/oox/inc/oox/drawingml/textbodyproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbodyproperties.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textbodypropertiescontext.hxx b/oox/inc/oox/drawingml/textbodypropertiescontext.hxx
index d1cc85aa7a52..ec51d6da2b2f 100644
--- a/oox/inc/oox/drawingml/textbodypropertiescontext.hxx
+++ b/oox/inc/oox/drawingml/textbodypropertiescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbodypropertiescontext.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textcharacterproperties.hxx b/oox/inc/oox/drawingml/textcharacterproperties.hxx
index 5231add005a3..81cd95dddff2 100644
--- a/oox/inc/oox/drawingml/textcharacterproperties.hxx
+++ b/oox/inc/oox/drawingml/textcharacterproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textcharacterproperties.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textcharacterpropertiescontext.hxx b/oox/inc/oox/drawingml/textcharacterpropertiescontext.hxx
index a57fc7cd8a1d..0d45c7c19f2b 100644
--- a/oox/inc/oox/drawingml/textcharacterpropertiescontext.hxx
+++ b/oox/inc/oox/drawingml/textcharacterpropertiescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textcharacterpropertiescontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textfield.hxx b/oox/inc/oox/drawingml/textfield.hxx
index b84f273ae1ea..a1a0ab49c141 100644
--- a/oox/inc/oox/drawingml/textfield.hxx
+++ b/oox/inc/oox/drawingml/textfield.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textfield.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textfieldcontext.hxx b/oox/inc/oox/drawingml/textfieldcontext.hxx
index 819df3ea4761..b81265c9e923 100644
--- a/oox/inc/oox/drawingml/textfieldcontext.hxx
+++ b/oox/inc/oox/drawingml/textfieldcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textfieldcontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textfont.hxx b/oox/inc/oox/drawingml/textfont.hxx
index 658ba8f0e22a..b8fd1d6f653b 100644
--- a/oox/inc/oox/drawingml/textfont.hxx
+++ b/oox/inc/oox/drawingml/textfont.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textfont.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textliststyle.hxx b/oox/inc/oox/drawingml/textliststyle.hxx
index a30c6b7361d4..6ba4cdf1d62a 100644
--- a/oox/inc/oox/drawingml/textliststyle.hxx
+++ b/oox/inc/oox/drawingml/textliststyle.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textliststyle.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textliststylecontext.hxx b/oox/inc/oox/drawingml/textliststylecontext.hxx
index eb555ebc9def..225bb83bf67f 100644
--- a/oox/inc/oox/drawingml/textliststylecontext.hxx
+++ b/oox/inc/oox/drawingml/textliststylecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textliststylecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textparagraph.hxx b/oox/inc/oox/drawingml/textparagraph.hxx
index 48993a651c3d..e98232477f3b 100644
--- a/oox/inc/oox/drawingml/textparagraph.hxx
+++ b/oox/inc/oox/drawingml/textparagraph.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textparagraph.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textparagraphproperties.hxx b/oox/inc/oox/drawingml/textparagraphproperties.hxx
index 770386c4b313..ef80af2d1c11 100644
--- a/oox/inc/oox/drawingml/textparagraphproperties.hxx
+++ b/oox/inc/oox/drawingml/textparagraphproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textparagraphproperties.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textparagraphpropertiescontext.hxx b/oox/inc/oox/drawingml/textparagraphpropertiescontext.hxx
index 812bb8b8cfb6..de369c622e69 100644
--- a/oox/inc/oox/drawingml/textparagraphpropertiescontext.hxx
+++ b/oox/inc/oox/drawingml/textparagraphpropertiescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textparagraphpropertiescontext.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textrun.hxx b/oox/inc/oox/drawingml/textrun.hxx
index 33de26221384..2704b8e92621 100644
--- a/oox/inc/oox/drawingml/textrun.hxx
+++ b/oox/inc/oox/drawingml/textrun.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textrun.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/textspacing.hxx b/oox/inc/oox/drawingml/textspacing.hxx
index e5eda81aaf8e..80c172c125ee 100644
--- a/oox/inc/oox/drawingml/textspacing.hxx
+++ b/oox/inc/oox/drawingml/textspacing.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textspacing.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/theme.hxx b/oox/inc/oox/drawingml/theme.hxx
index 17f23e533a7b..15f5ce82ce12 100644
--- a/oox/inc/oox/drawingml/theme.hxx
+++ b/oox/inc/oox/drawingml/theme.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: theme.hxx,v $
- * $Revision: 1.6.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/themeelementscontext.hxx b/oox/inc/oox/drawingml/themeelementscontext.hxx
index 3d7316044fb7..1dfc76b6957d 100644
--- a/oox/inc/oox/drawingml/themeelementscontext.hxx
+++ b/oox/inc/oox/drawingml/themeelementscontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: themeelementscontext.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/themefragmenthandler.hxx b/oox/inc/oox/drawingml/themefragmenthandler.hxx
index 9091bd92d861..aeaaa5378bd8 100644
--- a/oox/inc/oox/drawingml/themefragmenthandler.hxx
+++ b/oox/inc/oox/drawingml/themefragmenthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: themefragmenthandler.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/drawingml/transform2dcontext.hxx b/oox/inc/oox/drawingml/transform2dcontext.hxx
index ff04dadd6041..022f1dbe47c2 100644
--- a/oox/inc/oox/drawingml/transform2dcontext.hxx
+++ b/oox/inc/oox/drawingml/transform2dcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: transform2dcontext.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/dump/biffdumper.hxx b/oox/inc/oox/dump/biffdumper.hxx
index a7f021ed5244..5a7e390d19a4 100644
--- a/oox/inc/oox/dump/biffdumper.hxx
+++ b/oox/inc/oox/dump/biffdumper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffdumper.hxx,v $
- * $Revision: 1.4.20.20 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -415,12 +412,25 @@ private:
sal_uInt16 dumpFormatIdx( const String& rName = EMPTY_STRING );
sal_uInt16 dumpXfIdx( const String& rName = EMPTY_STRING, bool bBiff2Style = false );
+ template< typename Type >
+ inline Type dumpExtColorType() { return dumpDec< Type >( "color-type", "EXTCOLOR-TYPE" ); }
+ void dumpExtColorValue( sal_uInt32 nColorType );
+ void dumpExtColor( const String& rName = EMPTY_STRING );
+ void dumpExtCfColor( const String& rName = EMPTY_STRING );
+ void dumpExtGradientHead();
+
::rtl::OUString dumpPivotString( const String& rName, sal_uInt16 nStrLen );
::rtl::OUString dumpPivotString( const String& rName );
sal_uInt16 dumpCellHeader( bool bBiff2Style = false );
void dumpBoolErr();
+ void dumpCfRuleProp();
+ void dumpXfExtProp();
+ void dumpDxfProp();
+ void dumpDxf12Prop();
+ void dumpCfRule12Param( sal_uInt16 nSubType );
+
void dumpFontRec();
void dumpFormatRec();
void dumpXfRec();
diff --git a/oox/inc/oox/dump/dffdumper.hxx b/oox/inc/oox/dump/dffdumper.hxx
index 1cdf35d167df..f229c19eff8c 100644
--- a/oox/inc/oox/dump/dffdumper.hxx
+++ b/oox/inc/oox/dump/dffdumper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dffdumper.hxx,v $
- * $Revision: 1.3.22.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/dump/dumperbase.hxx b/oox/inc/oox/dump/dumperbase.hxx
index b4f88a21638d..ecca5751c16c 100644
--- a/oox/inc/oox/dump/dumperbase.hxx
+++ b/oox/inc/oox/dump/dumperbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dumperbase.hxx,v $
- * $Revision: 1.4.20.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1926,19 +1923,6 @@ protected:
const ObjectBase& rParent,
const BinaryInputStreamRef& rxBaseStrm,
const ::rtl::OUString& rSysFileName,
- const BinaryInputStreamRef& rxRecStrm,
- const String& rRecNames,
- const String& rSimpleRecs = EMPTY_STRING );
- void construct(
- const OutputObjectBase& rParent,
- const BinaryInputStreamRef& rxBaseStrm,
- const BinaryInputStreamRef& rxRecStrm,
- const String& rRecNames,
- const String& rSimpleRecs = EMPTY_STRING );
- void construct(
- const ObjectBase& rParent,
- const BinaryInputStreamRef& rxBaseStrm,
- const ::rtl::OUString& rSysFileName,
const String& rRecNames,
const String& rSimpleRecs = EMPTY_STRING );
void construct(
diff --git a/oox/inc/oox/dump/oledumper.hxx b/oox/inc/oox/dump/oledumper.hxx
index 631dc9425442..539ca2a412d1 100644
--- a/oox/inc/oox/dump/oledumper.hxx
+++ b/oox/inc/oox/dump/oledumper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: oledumper.hxx,v $
- * $Revision: 1.1.2.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/dump/pptxdumper.hxx b/oox/inc/oox/dump/pptxdumper.hxx
index a136a6333dfc..535c7ceadc36 100644
--- a/oox/inc/oox/dump/pptxdumper.hxx
+++ b/oox/inc/oox/dump/pptxdumper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptxdumper.hxx,v $
- * $Revision: 1.3.20.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/dump/xlsbdumper.hxx b/oox/inc/oox/dump/xlsbdumper.hxx
index dafa3901ea6e..95723f6b8d4e 100644
--- a/oox/inc/oox/dump/xlsbdumper.hxx
+++ b/oox/inc/oox/dump/xlsbdumper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xlsbdumper.hxx,v $
- * $Revision: 1.4.20.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -211,6 +208,7 @@ protected:
virtual void implDumpRecordBody();
private:
+ void dumpGradientHead();
void dumpCellHeader( bool bWithColumn );
private:
diff --git a/oox/inc/oox/export/shapes.hxx b/oox/inc/oox/export/shapes.hxx
index 40b87c43316a..ed9cf5b32970 100644
--- a/oox/inc/oox/export/shapes.hxx
+++ b/oox/inc/oox/export/shapes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile$
- * $Revision$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/export/utils.hxx b/oox/inc/oox/export/utils.hxx
index 50631053dc8d..ab0d2d23ab9d 100644
--- a/oox/inc/oox/export/utils.hxx
+++ b/oox/inc/oox/export/utils.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile$
- * $Revision$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/export/vmlexport.hxx b/oox/inc/oox/export/vmlexport.hxx
index f349b99f466f..544074b7b18a 100644
--- a/oox/inc/oox/export/vmlexport.hxx
+++ b/oox/inc/oox/export/vmlexport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile$
- * $Revision$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/attributelist.hxx b/oox/inc/oox/helper/attributelist.hxx
index 73b15b30e3c6..89981160b699 100644
--- a/oox/inc/oox/helper/attributelist.hxx
+++ b/oox/inc/oox/helper/attributelist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attributelist.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/binaryinputstream.hxx b/oox/inc/oox/helper/binaryinputstream.hxx
index b6c195ad5eed..19933ca03c04 100644
--- a/oox/inc/oox/helper/binaryinputstream.hxx
+++ b/oox/inc/oox/helper/binaryinputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binaryinputstream.hxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/binaryoutputstream.hxx b/oox/inc/oox/helper/binaryoutputstream.hxx
index 5a77508128cf..b229dbd18901 100644
--- a/oox/inc/oox/helper/binaryoutputstream.hxx
+++ b/oox/inc/oox/helper/binaryoutputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binaryoutputstream.hxx,v $
- * $Revision: 1.3.22.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/binarystreambase.hxx b/oox/inc/oox/helper/binarystreambase.hxx
index d23b1e43ec12..18d868660faa 100644
--- a/oox/inc/oox/helper/binarystreambase.hxx
+++ b/oox/inc/oox/helper/binarystreambase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binarystreambase.hxx,v $
- * $Revision: 1.3.22.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/containerhelper.hxx b/oox/inc/oox/helper/containerhelper.hxx
index b79d243bef01..a077c667ae4c 100644
--- a/oox/inc/oox/helper/containerhelper.hxx
+++ b/oox/inc/oox/helper/containerhelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: containerhelper.hxx,v $
- * $Revision: 1.4.6.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/graphichelper.hxx b/oox/inc/oox/helper/graphichelper.hxx
index 8a608ec79a7a..d6e01d0fff6b 100644
--- a/oox/inc/oox/helper/graphichelper.hxx
+++ b/oox/inc/oox/helper/graphichelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: graphichelper.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/helper.hxx b/oox/inc/oox/helper/helper.hxx
index f08f807da2a2..5884855bc50d 100644
--- a/oox/inc/oox/helper/helper.hxx
+++ b/oox/inc/oox/helper/helper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: helper.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/modelobjecthelper.hxx b/oox/inc/oox/helper/modelobjecthelper.hxx
index eb06703bca7a..cead2ad74fb1 100644
--- a/oox/inc/oox/helper/modelobjecthelper.hxx
+++ b/oox/inc/oox/helper/modelobjecthelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: modelobjecthelper.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/olestorage.hxx b/oox/inc/oox/helper/olestorage.hxx
index c2b48f931bbb..a8174a167729 100644
--- a/oox/inc/oox/helper/olestorage.hxx
+++ b/oox/inc/oox/helper/olestorage.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olestorage.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/progressbar.hxx b/oox/inc/oox/helper/progressbar.hxx
index c55a6eb5da67..f5ea98816915 100644
--- a/oox/inc/oox/helper/progressbar.hxx
+++ b/oox/inc/oox/helper/progressbar.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: progressbar.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/propertymap.hxx b/oox/inc/oox/helper/propertymap.hxx
index 58a769adbb48..30df15d7e5c6 100644
--- a/oox/inc/oox/helper/propertymap.hxx
+++ b/oox/inc/oox/helper/propertymap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: propertymap.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/propertyset.hxx b/oox/inc/oox/helper/propertyset.hxx
index 7d18c87a9e85..bdb81c6c3e83 100644
--- a/oox/inc/oox/helper/propertyset.hxx
+++ b/oox/inc/oox/helper/propertyset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: propertyset.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/recordinputstream.hxx b/oox/inc/oox/helper/recordinputstream.hxx
index 34103d7b3ece..ee05ce480a75 100644
--- a/oox/inc/oox/helper/recordinputstream.hxx
+++ b/oox/inc/oox/helper/recordinputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: recordinputstream.hxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/storagebase.hxx b/oox/inc/oox/helper/storagebase.hxx
index b5f1683ed276..b23032fe2ac0 100644
--- a/oox/inc/oox/helper/storagebase.hxx
+++ b/oox/inc/oox/helper/storagebase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: storagebase.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/helper/zipstorage.hxx b/oox/inc/oox/helper/zipstorage.hxx
index b787f3c4eee5..b6eef63b47de 100644
--- a/oox/inc/oox/helper/zipstorage.hxx
+++ b/oox/inc/oox/helper/zipstorage.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: zipstorage.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ole/axbinaryreader.hxx b/oox/inc/oox/ole/axbinaryreader.hxx
new file mode 100644
index 000000000000..3db0bae7cee4
--- /dev/null
+++ b/oox/inc/oox/ole/axbinaryreader.hxx
@@ -0,0 +1,185 @@
+/*************************************************************************
+ *
+ * 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 OOX_OLE_AXBINARYREADER_HXX
+#define OOX_OLE_AXBINARYREADER_HXX
+
+#include "oox/helper/binaryinputstream.hxx"
+#include "oox/helper/containerhelper.hxx"
+
+namespace oox {
+namespace ole {
+
+// ============================================================================
+
+/** A wrapper for an unseekable binary input stream. */
+class AxAlignedInputStream : public BinaryInputStream
+{
+public:
+ explicit AxAlignedInputStream( BinaryInputStream& rInStrm );
+
+ /** Return the current stream position (relative to position at construction time). */
+ virtual sal_Int64 tell() const;
+ /** Seeks the stream to the passed position, if it is behind the current position. */
+ virtual void seek( sal_Int64 nPos );
+
+ /** Reads nBytes bytes to the passed sequence.
+ @return Number of bytes really read. */
+ virtual sal_Int32 readData( StreamDataSequence& orData, sal_Int32 nBytes );
+ /** Reads nBytes bytes to the (existing) buffer opMem.
+ @return Number of bytes really read. */
+ virtual sal_Int32 readMemory( void* opMem, sal_Int32 nBytes );
+ /** Seeks the stream forward by the passed number of bytes. */
+ virtual void skip( sal_Int32 nBytes );
+
+ /** Aligns the stream to a multiple of the passed size. */
+ void align( size_t nSize );
+
+ /** Aligns the stream according to the passed type and reads an atomar value. */
+ template< typename Type >
+ inline Type readAligned() { align( sizeof( Type ) ); return readValue< Type >(); }
+ /** Aligns the stream according to the passed type and skips the size of the type. */
+ template< typename Type >
+ inline void skipAligned() { align( sizeof( Type ) ); skip( sizeof( Type ) ); }
+
+private:
+ BinaryInputStream& mrInStrm; /// The wrapped input stream.
+ sal_Int64 mnStrmPos; /// Tracks relative position in the stream.
+};
+
+// ============================================================================
+
+/** Import helper to read simple and complex ActiveX form control properties
+ from a binary input stream. */
+class AxBinaryPropertyReader
+{
+public:
+ explicit AxBinaryPropertyReader( BinaryInputStream& rInStrm, bool b64BitPropFlags = false );
+
+ /** Reads the next integer property value from the stream, if the
+ respective flag in the property mask is set. */
+ template< typename StreamType, typename DataType >
+ inline void readIntProperty( DataType& ornValue )
+ { if( startNextProperty() ) ornValue = maInStrm.readAligned< StreamType >(); }
+ /** Reads the next boolean property value from the stream, if the
+ respective flag in the property mask is set. */
+ void readBoolProperty( bool& orbValue, bool bReverse = false );
+ /** Reads the next pair property from the stream, if the respective flag in
+ the property mask is set. */
+ void readPairProperty( sal_Int32& ornValue1, sal_Int32& ornValue2 );
+ /** Reads the next string property from the stream, if the respective flag
+ in the property mask is set. */
+ void readStringProperty( ::rtl::OUString& orValue );
+ /** Reads the next picture property from the stream, if the respective flag
+ in the property mask is set. */
+ void readPictureProperty( StreamDataSequence& orPicData );
+
+ /** Skips the next integer property value in the stream, if the respective
+ flag in the property mask is set. */
+ template< typename StreamType >
+ inline void skipIntProperty() { if( startNextProperty() ) maInStrm.skipAligned< StreamType >(); }
+ /** Skips the next boolean property value in the stream, if the respective
+ flag in the property mask is set. */
+ inline void skipBoolProperty() { startNextProperty(); }
+ /** Skips the next string property in the stream, if the respective flag in
+ the property mask is set. */
+ inline void skipStringProperty() { readStringProperty( maDummyString ); }
+ /** Skips the next picture property in the stream, if the respective flag
+ in the property mask is set. */
+ inline void skipPictureProperty() { readPictureProperty( maDummyPicData ); }
+ /** Has to be called for undefined properties. If the respective flag in
+ the mask is set, the property import cannot be finished successfully. */
+ inline void skipUndefinedProperty() { ensureValid( !startNextProperty() ); }
+
+ /** Final processing, reads contents of all complex properties. */
+ bool finalizeImport();
+
+private:
+ bool ensureValid( bool bCondition = true );
+ bool startNextProperty();
+
+private:
+ /** Base class for complex properties such as string, point, size, GUID, picture. */
+ struct ComplexProperty
+ {
+ virtual ~ComplexProperty();
+ virtual bool readProperty( AxAlignedInputStream& rInStrm ) = 0;
+ };
+
+ /** Complex property for a 32-bit value pair, e.g. point or size. */
+ struct PairProperty : public ComplexProperty
+ {
+ sal_Int32& mrnValue1;
+ sal_Int32& mrnValue2;
+
+ inline explicit PairProperty( sal_Int32& rnValue1, sal_Int32& rnValue2 ) :
+ mrnValue1( rnValue1 ), mrnValue2( rnValue2 ) {}
+ virtual bool readProperty( AxAlignedInputStream& rInStrm );
+ };
+
+ /** Complex property for a string value. */
+ struct StringProperty : public ComplexProperty
+ {
+ ::rtl::OUString& mrValue;
+ sal_uInt32 mnSize;
+
+ inline explicit StringProperty( ::rtl::OUString& rValue, sal_uInt32 nSize ) :
+ mrValue( rValue ), mnSize( nSize ) {}
+ virtual bool readProperty( AxAlignedInputStream& rInStrm );
+ };
+
+ /** Stream property for a picture or mouse icon. */
+ struct PictureProperty : public ComplexProperty
+ {
+ StreamDataSequence& mrPicData;
+
+ inline explicit PictureProperty( StreamDataSequence& rPicData ) :
+ mrPicData( rPicData ) {}
+ virtual bool readProperty( AxAlignedInputStream& rInStrm );
+ };
+
+ typedef RefVector< ComplexProperty > ComplexPropVector;
+
+private:
+ AxAlignedInputStream maInStrm; /// The input stream to read from.
+ ComplexPropVector maLargeProps; /// Stores info for all used large properties.
+ ComplexPropVector maStreamProps; /// Stores info for all used stream data properties.
+ StreamDataSequence maDummyPicData; /// Dummy picture for unsupported properties.
+ ::rtl::OUString maDummyString; /// Dummy string for unsupported properties.
+ sal_Int64 mnPropFlags; /// Flags specifying existing properties.
+ sal_Int64 mnNextProp; /// Next property to read.
+ sal_Int64 mnPropsEnd; /// End position of simple/large properties.
+ bool mbValid; /// True = stream still valid.
+};
+
+// ============================================================================
+
+} // namespace ole
+} // namespace oox
+
+#endif
+
diff --git a/oox/inc/oox/ole/axcontrol.hxx b/oox/inc/oox/ole/axcontrol.hxx
index 4c34b5447bff..b5a5741d134d 100644
--- a/oox/inc/oox/ole/axcontrol.hxx
+++ b/oox/inc/oox/ole/axcontrol.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axcontrol.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -32,15 +29,16 @@
#define OOX_OLE_AXCONTROL_HXX
#include <memory>
-#include <rtl/ustring.hxx>
-#include <com/sun/star/uno/Reference.hxx>
#include "oox/helper/binarystreambase.hxx"
namespace com { namespace sun { namespace star {
namespace awt { class XControlModel; }
} } }
-namespace oox { class PropertyMap; }
+namespace oox {
+ class BinaryInputStream;
+ class PropertyMap;
+}
namespace oox {
namespace ole {
@@ -58,7 +56,9 @@ public:
/** Derived classes set specific OOXML properties at the model structure. */
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
/** Derived classes set binary data (picture, mouse icon) at the model structure. */
- virtual void importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq );
+ virtual void importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm );
+ /** Derived classes import a form control model from the passed input stream. */
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
/** Derived classes return the UNO service name used to construct the control component. */
virtual ::rtl::OUString getServiceName() const = 0;
@@ -81,6 +81,7 @@ public:
explicit AxFontDataModel();
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
private:
@@ -100,7 +101,8 @@ public:
virtual ::rtl::OUString getServiceName() const;
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
- virtual void importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq );
+ virtual void importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
private:
@@ -122,6 +124,7 @@ public:
virtual ::rtl::OUString getServiceName() const;
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
private:
@@ -143,7 +146,8 @@ public:
virtual ::rtl::OUString getServiceName() const;
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
- virtual void importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq );
+ virtual void importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
private:
@@ -166,7 +170,8 @@ public:
explicit AxMorphDataModel();
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
- virtual void importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq );
+ virtual void importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
protected:
@@ -266,6 +271,7 @@ public:
virtual ::rtl::OUString getServiceName() const;
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
private:
@@ -289,6 +295,7 @@ public:
virtual ::rtl::OUString getServiceName() const;
virtual void importProperty( sal_Int32 nPropId, const ::rtl::OUString& rValue );
+ virtual void importBinaryModel( BinaryInputStream& rInStrm );
virtual void convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const;
private:
@@ -317,6 +324,13 @@ public:
/** Creates and returns the internal control model according to the passed
MS class identifier. */
AxControlModelBase* createModel( const ::rtl::OUString& rClassId );
+ /** Imports a form control model from the passed input stream. */
+ void importBinaryModel( BinaryInputStream& rInStrm );
+
+ /** Returns the internal control model. */
+ inline const AxControlModelBase* getModel() const { return mxModel.get(); }
+ /** Returns the MS class identifier used to create the internal control model. */
+ inline const ::rtl::OUString& getClassId() const { return maClassId; }
/** Creates and returns the UNO form component object for this control and
inserts it into the form wrapped by the passed helper. */
@@ -325,7 +339,8 @@ public:
private:
::std::auto_ptr< AxControlModelBase > mxModel;
- ::rtl::OUString maName;
+ ::rtl::OUString maClassId; /// Class identifier of the control model.
+ ::rtl::OUString maName; /// Name of the control.
};
// ============================================================================
diff --git a/oox/inc/oox/ole/axcontrolfragment.hxx b/oox/inc/oox/ole/axcontrolfragment.hxx
index d97691e67d64..9bccbd11a0de 100644
--- a/oox/inc/oox/ole/axcontrolfragment.hxx
+++ b/oox/inc/oox/ole/axcontrolfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axcontrolfragment.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -45,7 +42,9 @@ class AxControlModelBase;
class AxControlPropertyContext : public ::oox::core::ContextHandler2
{
public:
- explicit AxControlPropertyContext( ::oox::core::FragmentHandler2& rFragment, AxControlModelBase& rModel );
+ explicit AxControlPropertyContext(
+ ::oox::core::FragmentHandler2& rFragment,
+ AxControlModelBase& rModel );
virtual ::oox::core::ContextHandlerRef
onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs );
diff --git a/oox/inc/oox/ole/axcontrolhelper.hxx b/oox/inc/oox/ole/axcontrolhelper.hxx
index 713cbcae362e..d34cf45f3654 100644
--- a/oox/inc/oox/ole/axcontrolhelper.hxx
+++ b/oox/inc/oox/ole/axcontrolhelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axcontrolhelper.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ole/olehelper.hxx b/oox/inc/oox/ole/olehelper.hxx
index b4bb3168a5db..91ca73a38a67 100644
--- a/oox/inc/oox/ole/olehelper.hxx
+++ b/oox/inc/oox/ole/olehelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olehelper.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ole/oleobjecthelper.hxx b/oox/inc/oox/ole/oleobjecthelper.hxx
index 57700155704a..ef3570c4fa20 100644
--- a/oox/inc/oox/ole/oleobjecthelper.hxx
+++ b/oox/inc/oox/ole/oleobjecthelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olehelper.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ole/vbainputstream.hxx b/oox/inc/oox/ole/vbainputstream.hxx
index c2d6d649d3ef..4de0a91a622f 100644
--- a/oox/inc/oox/ole/vbainputstream.hxx
+++ b/oox/inc/oox/ole/vbainputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vbainputstream.hxx,v $
- * $Revision: 1.1.2.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/animationspersist.hxx b/oox/inc/oox/ppt/animationspersist.hxx
index b3920a983b86..0ff930bfa080 100644
--- a/oox/inc/oox/ppt/animationspersist.hxx
+++ b/oox/inc/oox/ppt/animationspersist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: animationspersist.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/backgroundproperties.hxx b/oox/inc/oox/ppt/backgroundproperties.hxx
index 8a039ef57504..7972d20844e1 100644
--- a/oox/inc/oox/ppt/backgroundproperties.hxx
+++ b/oox/inc/oox/ppt/backgroundproperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: backgroundproperties.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/headerfooter.hxx b/oox/inc/oox/ppt/headerfooter.hxx
index afb5da3ac32c..f29124240cb7 100644
--- a/oox/inc/oox/ppt/headerfooter.hxx
+++ b/oox/inc/oox/ppt/headerfooter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile:$
- * $Revision:$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/layoutfragmenthandler.hxx b/oox/inc/oox/ppt/layoutfragmenthandler.hxx
index fc3090e0e02c..bde8a46b0a94 100644
--- a/oox/inc/oox/ppt/layoutfragmenthandler.hxx
+++ b/oox/inc/oox/ppt/layoutfragmenthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: layoutfragmenthandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/pptimport.hxx b/oox/inc/oox/ppt/pptimport.hxx
index d6c1d899ac35..7d04e1c492fa 100644
--- a/oox/inc/oox/ppt/pptimport.hxx
+++ b/oox/inc/oox/ppt/pptimport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptimport.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/pptshape.hxx b/oox/inc/oox/ppt/pptshape.hxx
index 47397a00ca76..59f1beb39677 100644
--- a/oox/inc/oox/ppt/pptshape.hxx
+++ b/oox/inc/oox/ppt/pptshape.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshape.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/pptshapecontext.hxx b/oox/inc/oox/ppt/pptshapecontext.hxx
index 3e8f8e2e80c6..aff410db7fb7 100644
--- a/oox/inc/oox/ppt/pptshapecontext.hxx
+++ b/oox/inc/oox/ppt/pptshapecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshapecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/pptshapegroupcontext.hxx b/oox/inc/oox/ppt/pptshapegroupcontext.hxx
index e14596424b81..c69a6de78155 100644
--- a/oox/inc/oox/ppt/pptshapegroupcontext.hxx
+++ b/oox/inc/oox/ppt/pptshapegroupcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshapegroupcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/pptshapepropertiescontext.hxx b/oox/inc/oox/ppt/pptshapepropertiescontext.hxx
index da75f0ac1b60..9cbab5755b51 100644
--- a/oox/inc/oox/ppt/pptshapepropertiescontext.hxx
+++ b/oox/inc/oox/ppt/pptshapepropertiescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshapepropertiescontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/presentationfragmenthandler.hxx b/oox/inc/oox/ppt/presentationfragmenthandler.hxx
index f920f87eac89..281b3d333d56 100644
--- a/oox/inc/oox/ppt/presentationfragmenthandler.hxx
+++ b/oox/inc/oox/ppt/presentationfragmenthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: presentationfragmenthandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/slidefragmenthandler.hxx b/oox/inc/oox/ppt/slidefragmenthandler.hxx
index 2fe49a68dd4f..4fe0e3f6a30f 100644
--- a/oox/inc/oox/ppt/slidefragmenthandler.hxx
+++ b/oox/inc/oox/ppt/slidefragmenthandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidefragmenthandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/slidemastertextstylescontext.hxx b/oox/inc/oox/ppt/slidemastertextstylescontext.hxx
index 0fc7cfa08f80..03b7a51faa2e 100644
--- a/oox/inc/oox/ppt/slidemastertextstylescontext.hxx
+++ b/oox/inc/oox/ppt/slidemastertextstylescontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidemastertextstylescontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/slidepersist.hxx b/oox/inc/oox/ppt/slidepersist.hxx
index a9a64f74a369..31156a56ee84 100644
--- a/oox/inc/oox/ppt/slidepersist.hxx
+++ b/oox/inc/oox/ppt/slidepersist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidepersist.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/slidetimingcontext.hxx b/oox/inc/oox/ppt/slidetimingcontext.hxx
index 386640c6cd88..911b6cbcdfb4 100644
--- a/oox/inc/oox/ppt/slidetimingcontext.hxx
+++ b/oox/inc/oox/ppt/slidetimingcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidetimingcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/slidetransition.hxx b/oox/inc/oox/ppt/slidetransition.hxx
index 3879b2c1e467..5427d90a5e35 100644
--- a/oox/inc/oox/ppt/slidetransition.hxx
+++ b/oox/inc/oox/ppt/slidetransition.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidetransition.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/slidetransitioncontext.hxx b/oox/inc/oox/ppt/slidetransitioncontext.hxx
index 21627f024ba3..047c417936e7 100644
--- a/oox/inc/oox/ppt/slidetransitioncontext.hxx
+++ b/oox/inc/oox/ppt/slidetransitioncontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidetransitioncontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/soundactioncontext.hxx b/oox/inc/oox/ppt/soundactioncontext.hxx
index 03db5001416d..48cfb072be78 100644
--- a/oox/inc/oox/ppt/soundactioncontext.hxx
+++ b/oox/inc/oox/ppt/soundactioncontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: soundactioncontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/timenode.hxx b/oox/inc/oox/ppt/timenode.hxx
index c1485c591c88..117d9ee7161c 100644
--- a/oox/inc/oox/ppt/timenode.hxx
+++ b/oox/inc/oox/ppt/timenode.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timenode.hxx,v $
- * $Revision: 1.4.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/ppt/timenodelistcontext.hxx b/oox/inc/oox/ppt/timenodelistcontext.hxx
index e0a18642a52a..8dbe54425125 100644
--- a/oox/inc/oox/ppt/timenodelistcontext.hxx
+++ b/oox/inc/oox/ppt/timenodelistcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timenodelistcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/token/propertylist.hxx b/oox/inc/oox/token/propertylist.hxx
index abc776c348f6..5f75b13e10c4 100644
--- a/oox/inc/oox/token/propertylist.hxx
+++ b/oox/inc/oox/token/propertylist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: propertylist.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/token/tokenmap.hxx b/oox/inc/oox/token/tokenmap.hxx
index e4dd0be121ce..108feee9a2e8 100644
--- a/oox/inc/oox/token/tokenmap.hxx
+++ b/oox/inc/oox/token/tokenmap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fasttokenhandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/vml/vmldrawing.hxx b/oox/inc/oox/vml/vmldrawing.hxx
index f0bd75046c37..1af14903793b 100644
--- a/oox/inc/oox/vml/vmldrawing.hxx
+++ b/oox/inc/oox/vml/vmldrawing.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawing.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -146,7 +143,7 @@ public:
/** Derived classes may convert additional form control properties from the
passed VML shape client data. */
virtual void convertControlClientData(
- const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& rxCtrlModel,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& rxCtrlModel,
const ShapeClientData& rClientData ) const;
protected:
diff --git a/oox/inc/oox/vml/vmldrawingfragment.hxx b/oox/inc/oox/vml/vmldrawingfragment.hxx
index 21fb0eda4fe8..e0ffcd9c5203 100644
--- a/oox/inc/oox/vml/vmldrawingfragment.hxx
+++ b/oox/inc/oox/vml/vmldrawingfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawingfragment.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/vml/vmlformatting.hxx b/oox/inc/oox/vml/vmlformatting.hxx
index b37da4daa28c..b997c7451fe4 100644
--- a/oox/inc/oox/vml/vmlformatting.hxx
+++ b/oox/inc/oox/vml/vmlformatting.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmlformatting.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/vml/vmlinputstream.hxx b/oox/inc/oox/vml/vmlinputstream.hxx
index 6b5bd3cb86d7..311fc17df960 100644
--- a/oox/inc/oox/vml/vmlinputstream.hxx
+++ b/oox/inc/oox/vml/vmlinputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawing.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/vml/vmlshape.hxx b/oox/inc/oox/vml/vmlshape.hxx
index 323e643cee50..18eaa7513fc5 100644
--- a/oox/inc/oox/vml/vmlshape.hxx
+++ b/oox/inc/oox/vml/vmlshape.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmlshape.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -295,7 +292,7 @@ protected:
/** A group shape that extends the basic shape by a container of child shapes. */
class GroupShape : public ShapeBase
{
-public:
+public:
explicit GroupShape( const Drawing& rDrawing );
virtual ~GroupShape();
diff --git a/oox/inc/oox/vml/vmlshapecontainer.hxx b/oox/inc/oox/vml/vmlshapecontainer.hxx
index caa8a1a59c6d..d2682c89fd6c 100644
--- a/oox/inc/oox/vml/vmlshapecontainer.hxx
+++ b/oox/inc/oox/vml/vmlshapecontainer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmlshapecoontainer.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/vml/vmlshapecontext.hxx b/oox/inc/oox/vml/vmlshapecontext.hxx
index dbc5e1aa611d..a72d3fd09039 100644
--- a/oox/inc/oox/vml/vmlshapecontext.hxx
+++ b/oox/inc/oox/vml/vmlshapecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawingfragment.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/addressconverter.hxx b/oox/inc/oox/xls/addressconverter.hxx
index f6f0a347c3f9..c11bd31bbf22 100644
--- a/oox/inc/oox/xls/addressconverter.hxx
+++ b/oox/inc/oox/xls/addressconverter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: addressconverter.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/autofiltercontext.hxx b/oox/inc/oox/xls/autofiltercontext.hxx
index 7b4d65ba9120..ccef6972e871 100644
--- a/oox/inc/oox/xls/autofiltercontext.hxx
+++ b/oox/inc/oox/xls/autofiltercontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: autofiltercontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/biffcodec.hxx b/oox/inc/oox/xls/biffcodec.hxx
index 3fc5d77b474e..21b3e82006fd 100644
--- a/oox/inc/oox/xls/biffcodec.hxx
+++ b/oox/inc/oox/xls/biffcodec.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffcodec.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/biffdetector.hxx b/oox/inc/oox/xls/biffdetector.hxx
index 6e92a2893f6f..9ce5d19af3fe 100644
--- a/oox/inc/oox/xls/biffdetector.hxx
+++ b/oox/inc/oox/xls/biffdetector.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffdetector.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/biffhelper.hxx b/oox/inc/oox/xls/biffhelper.hxx
index 60efb9e856a6..f425b983ada2 100644
--- a/oox/inc/oox/xls/biffhelper.hxx
+++ b/oox/inc/oox/xls/biffhelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffhelper.hxx,v $
- * $Revision: 1.4.20.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -269,11 +266,16 @@ const sal_uInt16 BIFF3_ID_BOF = 0x0209;
const sal_uInt16 BIFF4_ID_BOF = 0x0409;
const sal_uInt16 BIFF5_ID_BOF = 0x0809;
const sal_uInt16 BIFF_ID_BOOKBOOL = 0x00DA;
+const sal_uInt16 BIFF_ID_BOOKEXT = 0x0863;
const sal_uInt16 BIFF2_ID_BOOLERR = 0x0005;
const sal_uInt16 BIFF3_ID_BOOLERR = 0x0205;
const sal_uInt16 BIFF_ID_BOTTOMMARGIN = 0x0029;
const sal_uInt16 BIFF_ID_CALCCOUNT = 0x000C;
const sal_uInt16 BIFF_ID_CALCMODE = 0x000D;
+const sal_uInt16 BIFF_ID_CFHEADER = 0x01B0;
+const sal_uInt16 BIFF_ID_CFRULE = 0x01B1;
+const sal_uInt16 BIFF_ID_CFRULE12 = 0x087A;
+const sal_uInt16 BIFF_ID_CFRULEEXT = 0x087B;
const sal_uInt16 BIFF_ID_CH3DDATAFORMAT = 0x105F;
const sal_uInt16 BIFF_ID_CHAREA = 0x101A;
const sal_uInt16 BIFF_ID_CHAREAFORMAT = 0x100A;
@@ -289,6 +291,7 @@ const sal_uInt16 BIFF_ID_CHCHARTLINE = 0x101C;
const sal_uInt16 BIFF_ID_CHDATAFORMAT = 0x1006;
const sal_uInt16 BIFF_ID_CHDEFAULTTEXT = 0x1024;
const sal_uInt16 BIFF_ID_CHDROPBAR = 0x103D;
+const sal_uInt16 BIFF_ID_CHECKCOMPAT = 0x088C;
const sal_uInt16 BIFF_ID_CHEND = 0x1034;
const sal_uInt16 BIFF_ID_CHESCHERFORMAT = 0x1066;
const sal_uInt16 BIFF_ID_CHFONT = 0x1026;
@@ -335,15 +338,15 @@ const sal_uInt16 BIFF_ID_CHTEXT = 0x1025;
const sal_uInt16 BIFF_ID_CHTICK = 0x101E;
const sal_uInt16 BIFF_ID_CHTYPEGROUP = 0x1014;
const sal_uInt16 BIFF_ID_CHVALUERANGE = 0x101F;
-const sal_uInt16 BIFF_ID_CFHEADER = 0x01B0;
-const sal_uInt16 BIFF_ID_CFRULE = 0x01B1;
const sal_uInt16 BIFF_ID_CODENAME = 0x01BA;
const sal_uInt16 BIFF_ID_CODEPAGE = 0x0042;
const sal_uInt16 BIFF_ID_COLINFO = 0x007D;
const sal_uInt16 BIFF_ID_COLUMNDEFAULT = 0x0020;
const sal_uInt16 BIFF_ID_COLWIDTH = 0x0024;
+const sal_uInt16 BIFF_ID_COMPRESSPICS = 0x089B;
const sal_uInt16 BIFF_ID_CONT = 0x003C;
const sal_uInt16 BIFF_ID_COORDLIST = 0x00A9;
+const sal_uInt16 BIFF_ID_COUNTRY = 0x008C;
const sal_uInt16 BIFF_ID_CRN = 0x005A;
const sal_uInt16 BIFF2_ID_DATATABLE = 0x0036;
const sal_uInt16 BIFF3_ID_DATATABLE = 0x0236;
@@ -351,6 +354,7 @@ const sal_uInt16 BIFF2_ID_DATATABLE2 = 0x0037;
const sal_uInt16 BIFF_ID_DATAVALIDATION = 0x01BE;
const sal_uInt16 BIFF_ID_DATAVALIDATIONS = 0x01B2;
const sal_uInt16 BIFF_ID_DATEMODE = 0x0022;
+const sal_uInt16 BIFF_ID_DBCELL = 0x00D7;
const sal_uInt16 BIFF_ID_DCONBINAME = 0x01B5;
const sal_uInt16 BIFF_ID_DCONNAME = 0x0052;
const sal_uInt16 BIFF_ID_DCONREF = 0x0051;
@@ -363,6 +367,7 @@ const sal_uInt16 BIFF3_ID_DEFROWHEIGHT = 0x0225;
const sal_uInt16 BIFF_ID_DELTA = 0x0010;
const sal_uInt16 BIFF2_ID_DIMENSION = 0x0000;
const sal_uInt16 BIFF3_ID_DIMENSION = 0x0200;
+const sal_uInt16 BIFF_ID_DXF = 0x088D;
const sal_uInt16 BIFF_ID_EOF = 0x000A;
const sal_uInt16 BIFF_ID_EXTERNALBOOK = 0x01AE;
const sal_uInt16 BIFF2_ID_EXTERNALNAME = 0x0023;
@@ -377,19 +382,24 @@ const sal_uInt16 BIFF3_ID_FONT = 0x0231;
const sal_uInt16 BIFF5_ID_FONT = 0x0031;
const sal_uInt16 BIFF_ID_FONTCOLOR = 0x0045;
const sal_uInt16 BIFF_ID_FOOTER = 0x0015;
+const sal_uInt16 BIFF_ID_FORCEFULLCALC = 0x08A3;
const sal_uInt16 BIFF2_ID_FORMAT = 0x001E;
const sal_uInt16 BIFF4_ID_FORMAT = 0x041E;
const sal_uInt16 BIFF2_ID_FORMULA = 0x0006;
const sal_uInt16 BIFF3_ID_FORMULA = 0x0206;
const sal_uInt16 BIFF4_ID_FORMULA = 0x0406;
const sal_uInt16 BIFF5_ID_FORMULA = 0x0006;
+const sal_uInt16 BIFF_ID_GUTS = 0x0080;
const sal_uInt16 BIFF_ID_HCENTER = 0x0083;
const sal_uInt16 BIFF_ID_HEADER = 0x0014;
+const sal_uInt16 BIFF_ID_HEADERFOOTER = 0x089C;
const sal_uInt16 BIFF_ID_HIDEOBJ = 0x008D;
const sal_uInt16 BIFF_ID_HORPAGEBREAKS = 0x001B;
const sal_uInt16 BIFF_ID_HYPERLINK = 0x01B8;
const sal_uInt16 BIFF3_ID_IMGDATA = 0x007F;
const sal_uInt16 BIFF8_ID_IMGDATA = 0x00E9;
+const sal_uInt16 BIFF2_ID_INDEX = 0x000B;
+const sal_uInt16 BIFF3_ID_INDEX = 0x020B;
const sal_uInt16 BIFF2_ID_INTEGER = 0x0002;
const sal_uInt16 BIFF_ID_INTERFACEHDR = 0x00E1;
const sal_uInt16 BIFF_ID_ITERATION = 0x0011;
@@ -403,6 +413,7 @@ const sal_uInt16 BIFF_ID_MERGEDCELLS = 0x00E5;
const sal_uInt16 BIFF_ID_MSODRAWING = 0x00EC;
const sal_uInt16 BIFF_ID_MSODRAWINGGROUP = 0x00EB;
const sal_uInt16 BIFF_ID_MSODRAWINGSEL = 0x00ED;
+const sal_uInt16 BIFF_ID_MTHREADSETTINGS = 0x089A;
const sal_uInt16 BIFF_ID_MULTBLANK = 0x00BE;
const sal_uInt16 BIFF_ID_MULTRK = 0x00BD;
const sal_uInt16 BIFF_ID_NOTE = 0x001C;
@@ -410,6 +421,7 @@ const sal_uInt16 BIFF2_ID_NUMBER = 0x0003;
const sal_uInt16 BIFF3_ID_NUMBER = 0x0203;
const sal_uInt16 BIFF_ID_OBJ = 0x005D;
const sal_uInt16 BIFF_ID_OBJECTPROTECT = 0x0063;
+const sal_uInt16 BIFF_ID_PAGELAYOUTVIEW = 0x088B;
const sal_uInt16 BIFF_ID_PAGESETUP = 0x00A1;
const sal_uInt16 BIFF_ID_PALETTE = 0x0092;
const sal_uInt16 BIFF_ID_PANE = 0x0041;
@@ -448,6 +460,7 @@ const sal_uInt16 BIFF_ID_PTFITEM = 0x00B2;
const sal_uInt16 BIFF_ID_PTPAGEFIELDS = 0x00B6;
const sal_uInt16 BIFF_ID_PTROWCOLFIELDS = 0x00B4;
const sal_uInt16 BIFF_ID_PTROWCOLITEMS = 0x00B5;
+const sal_uInt16 BIFF_ID_RECALCID = 0x01C1;
const sal_uInt16 BIFF_ID_REFMODE = 0x000F;
const sal_uInt16 BIFF_ID_RIGHTMARGIN = 0x0027;
const sal_uInt16 BIFF_ID_RK = 0x027E;
@@ -461,11 +474,12 @@ const sal_uInt16 BIFF_ID_SCL = 0x00A0;
const sal_uInt16 BIFF_ID_SCENPROTECT = 0x00DD;
const sal_uInt16 BIFF_ID_SCREENTIP = 0x0800;
const sal_uInt16 BIFF_ID_SELECTION = 0x001D;
+const sal_uInt16 BIFF_ID_SHAREDFEATHEAD = 0x0867;
const sal_uInt16 BIFF_ID_SHAREDFMLA = 0x04BC;
const sal_uInt16 BIFF_ID_SHEET = 0x0085;
+const sal_uInt16 BIFF_ID_SHEETEXT = 0x0862;
const sal_uInt16 BIFF_ID_SHEETHEADER = 0x008F;
const sal_uInt16 BIFF_ID_SHEETPR = 0x0081;
-const sal_uInt16 BIFF_ID_SHEETPROTECTION = 0x0867;
const sal_uInt16 BIFF_ID_SST = 0x00FC;
const sal_uInt16 BIFF_ID_STANDARDWIDTH = 0x0099;
const sal_uInt16 BIFF2_ID_STRING = 0x0007;
@@ -473,6 +487,8 @@ const sal_uInt16 BIFF3_ID_STRING = 0x0207;
const sal_uInt16 BIFF_ID_STYLE = 0x0293;
const sal_uInt16 BIFF_ID_STYLEEXT = 0x0892;
const sal_uInt16 BIFF_ID_SXEXT = 0x00DC;
+const sal_uInt16 BIFF_ID_TABLESTYLES = 0x088E;
+const sal_uInt16 BIFF_ID_THEME = 0x0896;
const sal_uInt16 BIFF_ID_TOPMARGIN = 0x0028;
const sal_uInt16 BIFF_ID_TXO = 0x01B6;
const sal_uInt16 BIFF_ID_UNCALCED = 0x005E;
@@ -488,6 +504,8 @@ const sal_uInt16 BIFF2_ID_XF = 0x0043;
const sal_uInt16 BIFF3_ID_XF = 0x0243;
const sal_uInt16 BIFF4_ID_XF = 0x0443;
const sal_uInt16 BIFF5_ID_XF = 0x00E0;
+const sal_uInt16 BIFF_ID_XFCRC = 0x087C;
+const sal_uInt16 BIFF_ID_XFEXT = 0x087D;
const sal_uInt16 BIFF_ID_UNKNOWN = SAL_MAX_UINT16;
diff --git a/oox/inc/oox/xls/biffinputstream.hxx b/oox/inc/oox/xls/biffinputstream.hxx
index a829bcec6e23..c804d2c9c6e0 100644
--- a/oox/inc/oox/xls/biffinputstream.hxx
+++ b/oox/inc/oox/xls/biffinputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffinputstream.hxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/biffoutputstream.hxx b/oox/inc/oox/xls/biffoutputstream.hxx
index abf990719d92..6e36b08d3592 100644
--- a/oox/inc/oox/xls/biffoutputstream.hxx
+++ b/oox/inc/oox/xls/biffoutputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffoutputstream.hxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/chartsheetfragment.hxx b/oox/inc/oox/xls/chartsheetfragment.hxx
index 3e6f5d9d7a6d..dc8e0f85fd13 100644
--- a/oox/inc/oox/xls/chartsheetfragment.hxx
+++ b/oox/inc/oox/xls/chartsheetfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartsheetfragment.hxx,v $
- * $Revision: 1.3.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/commentsbuffer.hxx b/oox/inc/oox/xls/commentsbuffer.hxx
index 663f94878a6d..8a43eb7fe9fe 100644
--- a/oox/inc/oox/xls/commentsbuffer.hxx
+++ b/oox/inc/oox/xls/commentsbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commentsbuffer.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/commentsfragment.hxx b/oox/inc/oox/xls/commentsfragment.hxx
index e23369e9909c..584c6a2bb340 100644
--- a/oox/inc/oox/xls/commentsfragment.hxx
+++ b/oox/inc/oox/xls/commentsfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commentsfragment.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/condformatbuffer.hxx b/oox/inc/oox/xls/condformatbuffer.hxx
index fad078942da2..25259ce04295 100644
--- a/oox/inc/oox/xls/condformatbuffer.hxx
+++ b/oox/inc/oox/xls/condformatbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: condformatbuffer.hxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/condformatcontext.hxx b/oox/inc/oox/xls/condformatcontext.hxx
index be17451dd8b7..799e3127b7a3 100644
--- a/oox/inc/oox/xls/condformatcontext.hxx
+++ b/oox/inc/oox/xls/condformatcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: condformatcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/connectionsfragment.hxx b/oox/inc/oox/xls/connectionsfragment.hxx
index 111cd151a6ca..85951a5bbfc7 100644
--- a/oox/inc/oox/xls/connectionsfragment.hxx
+++ b/oox/inc/oox/xls/connectionsfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: connectionsfragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/defnamesbuffer.hxx b/oox/inc/oox/xls/defnamesbuffer.hxx
index 88c83c0491b3..45208f0ac344 100644
--- a/oox/inc/oox/xls/defnamesbuffer.hxx
+++ b/oox/inc/oox/xls/defnamesbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: defnamesbuffer.hxx,v $
- * $Revision: 1.4.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/drawingfragment.hxx b/oox/inc/oox/xls/drawingfragment.hxx
index 2ee1622dd08b..22fddd373a86 100644
--- a/oox/inc/oox/xls/drawingfragment.hxx
+++ b/oox/inc/oox/xls/drawingfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: drawingfragment.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -178,7 +175,7 @@ public:
/** Converts additional form control properties from the passed VML shape
client data. */
virtual void convertControlClientData(
- const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& rxCtrlModel,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& rxCtrlModel,
const ::oox::vml::ShapeClientData& rClientData ) const;
};
diff --git a/oox/inc/oox/xls/excelchartconverter.hxx b/oox/inc/oox/xls/excelchartconverter.hxx
index ae2bc8536f21..08c3398a5718 100644
--- a/oox/inc/oox/xls/excelchartconverter.hxx
+++ b/oox/inc/oox/xls/excelchartconverter.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: excelchartconverter.hxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/excelfilter.hxx b/oox/inc/oox/xls/excelfilter.hxx
index 28059fe30ce7..5da8b50d7f92 100644
--- a/oox/inc/oox/xls/excelfilter.hxx
+++ b/oox/inc/oox/xls/excelfilter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: excelfilter.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/excelhandlers.hxx b/oox/inc/oox/xls/excelhandlers.hxx
index a6619aa242c4..986f42aadba4 100644
--- a/oox/inc/oox/xls/excelhandlers.hxx
+++ b/oox/inc/oox/xls/excelhandlers.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: excelhandlers.hxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/externallinkbuffer.hxx b/oox/inc/oox/xls/externallinkbuffer.hxx
index a4ede4403fe3..b9980cc21e2f 100644
--- a/oox/inc/oox/xls/externallinkbuffer.hxx
+++ b/oox/inc/oox/xls/externallinkbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: externallinkbuffer.hxx,v $
- * $Revision: 1.4.26.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/externallinkfragment.hxx b/oox/inc/oox/xls/externallinkfragment.hxx
index 62996b55531a..ec310974818a 100644
--- a/oox/inc/oox/xls/externallinkfragment.hxx
+++ b/oox/inc/oox/xls/externallinkfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: externallinkfragment.hxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/formulabase.hxx b/oox/inc/oox/xls/formulabase.hxx
index 11a0be44600a..510404d2b662 100644
--- a/oox/inc/oox/xls/formulabase.hxx
+++ b/oox/inc/oox/xls/formulabase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: formulabase.hxx,v $
- * $Revision: 1.5.20.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/formulaparser.hxx b/oox/inc/oox/xls/formulaparser.hxx
index f992dc00516d..0227e8efee6d 100644
--- a/oox/inc/oox/xls/formulaparser.hxx
+++ b/oox/inc/oox/xls/formulaparser.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: formulaparser.hxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/numberformatsbuffer.hxx b/oox/inc/oox/xls/numberformatsbuffer.hxx
index 0ff2b973df7b..59a2c4e9324e 100644
--- a/oox/inc/oox/xls/numberformatsbuffer.hxx
+++ b/oox/inc/oox/xls/numberformatsbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: numberformatsbuffer.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/ooxformulaparser.hxx b/oox/inc/oox/xls/ooxformulaparser.hxx
index 97bad7e61395..1c20febf5f43 100644
--- a/oox/inc/oox/xls/ooxformulaparser.hxx
+++ b/oox/inc/oox/xls/ooxformulaparser.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ooxformulaparser.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/pagesettings.hxx b/oox/inc/oox/xls/pagesettings.hxx
index 6d02cfd61800..eb163daf94c8 100644
--- a/oox/inc/oox/xls/pagesettings.hxx
+++ b/oox/inc/oox/xls/pagesettings.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pagesettings.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/pivotcachebuffer.hxx b/oox/inc/oox/xls/pivotcachebuffer.hxx
index c12b33eec25f..8f79ab0685b3 100644
--- a/oox/inc/oox/xls/pivotcachebuffer.hxx
+++ b/oox/inc/oox/xls/pivotcachebuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivottablebuffer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/pivotcachefragment.hxx b/oox/inc/oox/xls/pivotcachefragment.hxx
index dff1868db438..745208f485e6 100644
--- a/oox/inc/oox/xls/pivotcachefragment.hxx
+++ b/oox/inc/oox/xls/pivotcachefragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivotcachefragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/pivottablebuffer.hxx b/oox/inc/oox/xls/pivottablebuffer.hxx
index 55a120dc75e8..6fde212f0018 100644
--- a/oox/inc/oox/xls/pivottablebuffer.hxx
+++ b/oox/inc/oox/xls/pivottablebuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivottablebuffer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/pivottablefragment.hxx b/oox/inc/oox/xls/pivottablefragment.hxx
index d83723d0a5f8..59c86b4ba3cb 100644
--- a/oox/inc/oox/xls/pivottablefragment.hxx
+++ b/oox/inc/oox/xls/pivottablefragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivottablefragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/querytablefragment.hxx b/oox/inc/oox/xls/querytablefragment.hxx
index 45e99b040f4b..3702069b4859 100644
--- a/oox/inc/oox/xls/querytablefragment.hxx
+++ b/oox/inc/oox/xls/querytablefragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: querytablefragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/richstring.hxx b/oox/inc/oox/xls/richstring.hxx
index 47a55e92c350..6293aac4d340 100644
--- a/oox/inc/oox/xls/richstring.hxx
+++ b/oox/inc/oox/xls/richstring.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: richstring.hxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/richstringcontext.hxx b/oox/inc/oox/xls/richstringcontext.hxx
index 30f304b47630..53882641df7e 100644
--- a/oox/inc/oox/xls/richstringcontext.hxx
+++ b/oox/inc/oox/xls/richstringcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: richstringcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/scenariobuffer.hxx b/oox/inc/oox/xls/scenariobuffer.hxx
index 37a9a96d32c5..8c2e0b0f1065 100644
--- a/oox/inc/oox/xls/scenariobuffer.hxx
+++ b/oox/inc/oox/xls/scenariobuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: scenariobuffer.hxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/scenariocontext.hxx b/oox/inc/oox/xls/scenariocontext.hxx
index 75a1b6acbacd..f3286f144656 100644
--- a/oox/inc/oox/xls/scenariocontext.hxx
+++ b/oox/inc/oox/xls/scenariocontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablefragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/sharedformulabuffer.hxx b/oox/inc/oox/xls/sharedformulabuffer.hxx
index 2a0d2bc2b5db..0f9fb0bb093e 100644
--- a/oox/inc/oox/xls/sharedformulabuffer.hxx
+++ b/oox/inc/oox/xls/sharedformulabuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sharedformulabuffer.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/sharedstringsbuffer.hxx b/oox/inc/oox/xls/sharedstringsbuffer.hxx
index bcc3746966d5..27827ec215ed 100644
--- a/oox/inc/oox/xls/sharedstringsbuffer.hxx
+++ b/oox/inc/oox/xls/sharedstringsbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sharedstringsbuffer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/sharedstringsfragment.hxx b/oox/inc/oox/xls/sharedstringsfragment.hxx
index cb276ba60fb6..7294643b7df5 100644
--- a/oox/inc/oox/xls/sharedstringsfragment.hxx
+++ b/oox/inc/oox/xls/sharedstringsfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sharedstringsfragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/sheetdatacontext.hxx b/oox/inc/oox/xls/sheetdatacontext.hxx
index 200486b03d87..a77f4b285fa4 100644
--- a/oox/inc/oox/xls/sheetdatacontext.hxx
+++ b/oox/inc/oox/xls/sheetdatacontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sheetdatacontext.hxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/stylesbuffer.hxx b/oox/inc/oox/xls/stylesbuffer.hxx
index c79ef46e5859..8af5127143de 100644
--- a/oox/inc/oox/xls/stylesbuffer.hxx
+++ b/oox/inc/oox/xls/stylesbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: stylesbuffer.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/stylesfragment.hxx b/oox/inc/oox/xls/stylesfragment.hxx
index a66ccf86017c..b3dc63fe6e31 100644
--- a/oox/inc/oox/xls/stylesfragment.hxx
+++ b/oox/inc/oox/xls/stylesfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: stylesfragment.hxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/tablebuffer.hxx b/oox/inc/oox/xls/tablebuffer.hxx
index 6844a39f2fb6..993b4305d03a 100644
--- a/oox/inc/oox/xls/tablebuffer.hxx
+++ b/oox/inc/oox/xls/tablebuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablebuffer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/tablefragment.hxx b/oox/inc/oox/xls/tablefragment.hxx
index e74843e52dbf..e30eb1e2f9e8 100644
--- a/oox/inc/oox/xls/tablefragment.hxx
+++ b/oox/inc/oox/xls/tablefragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablefragment.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/themebuffer.hxx b/oox/inc/oox/xls/themebuffer.hxx
index b1ee4b4ebc66..338837e40427 100644
--- a/oox/inc/oox/xls/themebuffer.hxx
+++ b/oox/inc/oox/xls/themebuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: themebuffer.hxx,v $
- * $Revision: 1.5.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/unitconverter.hxx b/oox/inc/oox/xls/unitconverter.hxx
index c3bdfbddbdcb..36a70a7f4067 100644
--- a/oox/inc/oox/xls/unitconverter.hxx
+++ b/oox/inc/oox/xls/unitconverter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: unitconverter.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/viewsettings.hxx b/oox/inc/oox/xls/viewsettings.hxx
index f18d0371c6c2..9715644cd54c 100644
--- a/oox/inc/oox/xls/viewsettings.hxx
+++ b/oox/inc/oox/xls/viewsettings.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: viewsettings.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/webquerybuffer.hxx b/oox/inc/oox/xls/webquerybuffer.hxx
index ffc9ef1f98d4..22c91bc15d1f 100644
--- a/oox/inc/oox/xls/webquerybuffer.hxx
+++ b/oox/inc/oox/xls/webquerybuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webquerybuffer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/workbookfragment.hxx b/oox/inc/oox/xls/workbookfragment.hxx
index d3925f9113d8..f9f0bb25c78f 100644
--- a/oox/inc/oox/xls/workbookfragment.hxx
+++ b/oox/inc/oox/xls/workbookfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: workbookfragment.hxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/workbookhelper.hxx b/oox/inc/oox/xls/workbookhelper.hxx
index c42afce36945..90c0f33c3c50 100644
--- a/oox/inc/oox/xls/workbookhelper.hxx
+++ b/oox/inc/oox/xls/workbookhelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: workbookhelper.hxx,v $
- * $Revision: 1.5.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/workbooksettings.hxx b/oox/inc/oox/xls/workbooksettings.hxx
index 81712bd5c5a1..d0f4ca17e73e 100644
--- a/oox/inc/oox/xls/workbooksettings.hxx
+++ b/oox/inc/oox/xls/workbooksettings.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: workbooksettings.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/worksheetbuffer.hxx b/oox/inc/oox/xls/worksheetbuffer.hxx
index c1f977f802ca..2f9359b38370 100644
--- a/oox/inc/oox/xls/worksheetbuffer.hxx
+++ b/oox/inc/oox/xls/worksheetbuffer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheetbuffer.hxx,v $
- * $Revision: 1.4.10.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/worksheetfragment.hxx b/oox/inc/oox/xls/worksheetfragment.hxx
index 110851ea9521..7234153d7dd3 100644
--- a/oox/inc/oox/xls/worksheetfragment.hxx
+++ b/oox/inc/oox/xls/worksheetfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheetfragment.hxx,v $
- * $Revision: 1.4.20.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -182,6 +179,8 @@ private:
void importPTDefinition();
/** Imports the SCENARIOS record and the following scenarios. */
void importScenarios();
+ /** Imports the SHAREDFEATHEAD record. */
+ void importSharedFeatHead();
/** Imports the STANDARDWIDTH record and sets standard column width. */
void importStandardWidth();
diff --git a/oox/inc/oox/xls/worksheethelper.hxx b/oox/inc/oox/xls/worksheethelper.hxx
index 7bb9b52ff117..4fdd827ff648 100644
--- a/oox/inc/oox/xls/worksheethelper.hxx
+++ b/oox/inc/oox/xls/worksheethelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheethelper.hxx,v $
- * $Revision: 1.4.20.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/inc/oox/xls/worksheetsettings.hxx b/oox/inc/oox/xls/worksheetsettings.hxx
index 717ea9dd8865..c96f12605911 100644
--- a/oox/inc/oox/xls/worksheetsettings.hxx
+++ b/oox/inc/oox/xls/worksheetsettings.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheetsettings.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/binarycodec.cxx b/oox/source/core/binarycodec.cxx
index b6a7e92986b6..6127524c2aae 100644
--- a/oox/source/core/binarycodec.cxx
+++ b/oox/source/core/binarycodec.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binarycodec.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/binaryfilterbase.cxx b/oox/source/core/binaryfilterbase.cxx
index c883284de664..1dd2e0e9086c 100644
--- a/oox/source/core/binaryfilterbase.cxx
+++ b/oox/source/core/binaryfilterbase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binaryfilterbase.cxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/contexthandler.cxx b/oox/source/core/contexthandler.cxx
index ea463f4fcc5f..b9c7cb48377e 100644
--- a/oox/source/core/contexthandler.cxx
+++ b/oox/source/core/contexthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contexthandler.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/contexthandler2.cxx b/oox/source/core/contexthandler2.cxx
index f31c080fd0f6..0f39ba313e6b 100644
--- a/oox/source/core/contexthandler2.cxx
+++ b/oox/source/core/contexthandler2.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contexthandler2.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/facreg.cxx b/oox/source/core/facreg.cxx
index 5ffd585e47ff..de6212984093 100644
--- a/oox/source/core/facreg.cxx
+++ b/oox/source/core/facreg.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: facreg.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/fasttokenhandler.cxx b/oox/source/core/fasttokenhandler.cxx
index cb8841b7dc9f..c662828bc583 100644
--- a/oox/source/core/fasttokenhandler.cxx
+++ b/oox/source/core/fasttokenhandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tokenmap.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/filterbase.cxx b/oox/source/core/filterbase.cxx
index f2f9ef09b9e5..07c31736e9e7 100644
--- a/oox/source/core/filterbase.cxx
+++ b/oox/source/core/filterbase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterbase.cxx,v $
- * $Revision: 1.5.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/filterdetect.cxx b/oox/source/core/filterdetect.cxx
index 434adb9576dd..3997d0b9af6d 100644
--- a/oox/source/core/filterdetect.cxx
+++ b/oox/source/core/filterdetect.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filterdetect.cxx,v $
- * $Revision: 1.5.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/fragmenthandler.cxx b/oox/source/core/fragmenthandler.cxx
index 6fc97bdfe372..66c7bf5e136b 100644
--- a/oox/source/core/fragmenthandler.cxx
+++ b/oox/source/core/fragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fragmenthandler.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/fragmenthandler2.cxx b/oox/source/core/fragmenthandler2.cxx
index f808340c68f1..531f43d76d28 100644
--- a/oox/source/core/fragmenthandler2.cxx
+++ b/oox/source/core/fragmenthandler2.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fragmenthandler2.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/makefile.mk b/oox/source/core/makefile.mk
index 84d12776eadd..2e29cf01543a 100644
--- a/oox/source/core/makefile.mk
+++ b/oox/source/core/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/recordparser.cxx b/oox/source/core/recordparser.cxx
index 2d24ed40cc91..b1749ae7be07 100644
--- a/oox/source/core/recordparser.cxx
+++ b/oox/source/core/recordparser.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: recordparser.cxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/relations.cxx b/oox/source/core/relations.cxx
index 12f880f9f7f7..c8d17cce3b9b 100644
--- a/oox/source/core/relations.cxx
+++ b/oox/source/core/relations.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: relations.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/relationshandler.cxx b/oox/source/core/relationshandler.cxx
index 9ca0378cd95f..e0d7acda81e0 100644
--- a/oox/source/core/relationshandler.cxx
+++ b/oox/source/core/relationshandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: relationshandler.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index fade52d2a743..ded047f2436b 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xmlfilterbase.cxx,v $
- * $Revision: 1.5.6.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/docprop/docprophandler.cxx b/oox/source/docprop/docprophandler.cxx
index 3e5a4830b691..da7daa9a058e 100644
--- a/oox/source/docprop/docprophandler.cxx
+++ b/oox/source/docprop/docprophandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: docprophandler.cxx,v $
- * $Revision: 1.2.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/docprop/docprophandler.hxx b/oox/source/docprop/docprophandler.hxx
index 3ea2f99e0bd4..bb2cff323159 100644
--- a/oox/source/docprop/docprophandler.hxx
+++ b/oox/source/docprop/docprophandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: docprophandler.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/docprop/makefile.mk b/oox/source/docprop/makefile.mk
index 77fcda5d0070..5687178da9e0 100644
--- a/oox/source/docprop/makefile.mk
+++ b/oox/source/docprop/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/docprop/ooxmldocpropimport.cxx b/oox/source/docprop/ooxmldocpropimport.cxx
index 61335749d928..de34f592e98a 100644
--- a/oox/source/docprop/ooxmldocpropimport.cxx
+++ b/oox/source/docprop/ooxmldocpropimport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ooxmldocpropimport.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/docprop/ooxmldocpropimport.hxx b/oox/source/docprop/ooxmldocpropimport.hxx
index 982f19b42016..a10eafbe1eb4 100644
--- a/oox/source/docprop/ooxmldocpropimport.hxx
+++ b/oox/source/docprop/ooxmldocpropimport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ooxmldocpropimport.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/axiscontext.cxx b/oox/source/drawingml/chart/axiscontext.cxx
index 00ca3d740bb7..1066f91c0e19 100644
--- a/oox/source/drawingml/chart/axiscontext.cxx
+++ b/oox/source/drawingml/chart/axiscontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axiscontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/axisconverter.cxx b/oox/source/drawingml/chart/axisconverter.cxx
index 1fd8dbd61f31..3ad1c0023ebe 100644
--- a/oox/source/drawingml/chart/axisconverter.cxx
+++ b/oox/source/drawingml/chart/axisconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axisconverter.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/axismodel.cxx b/oox/source/drawingml/chart/axismodel.cxx
index 843978a6c474..9f1d52adc0d2 100644
--- a/oox/source/drawingml/chart/axismodel.cxx
+++ b/oox/source/drawingml/chart/axismodel.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axismodel.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/chartcontextbase.cxx b/oox/source/drawingml/chart/chartcontextbase.cxx
index a65f56dbfc5f..2666d22ccbe0 100644
--- a/oox/source/drawingml/chart/chartcontextbase.cxx
+++ b/oox/source/drawingml/chart/chartcontextbase.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartcontextbase.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/chartconverter.cxx b/oox/source/drawingml/chart/chartconverter.cxx
index 53c301dab7f8..efd8e6d021e1 100644
--- a/oox/source/drawingml/chart/chartconverter.cxx
+++ b/oox/source/drawingml/chart/chartconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartconverter.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/chartspaceconverter.cxx b/oox/source/drawingml/chart/chartspaceconverter.cxx
index 100a503674f1..6460e94a4f3b 100644
--- a/oox/source/drawingml/chart/chartspaceconverter.cxx
+++ b/oox/source/drawingml/chart/chartspaceconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartspaceconverter.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/chartspacefragment.cxx b/oox/source/drawingml/chart/chartspacefragment.cxx
index 10e3128753e0..75df94e95de7 100644
--- a/oox/source/drawingml/chart/chartspacefragment.cxx
+++ b/oox/source/drawingml/chart/chartspacefragment.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartspacefragment.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/chartspacemodel.cxx b/oox/source/drawingml/chart/chartspacemodel.cxx
index d969030751d1..e386334160a8 100644
--- a/oox/source/drawingml/chart/chartspacemodel.cxx
+++ b/oox/source/drawingml/chart/chartspacemodel.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartspacemodel.cxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/converterbase.cxx b/oox/source/drawingml/chart/converterbase.cxx
index 82297611fe2b..534ce48e0278 100644
--- a/oox/source/drawingml/chart/converterbase.cxx
+++ b/oox/source/drawingml/chart/converterbase.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: converterbase.cxx,v $
- *
- * $Revision: 1.4.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/datasourcecontext.cxx b/oox/source/drawingml/chart/datasourcecontext.cxx
index 56d35992892c..d55b955d6e0d 100644
--- a/oox/source/drawingml/chart/datasourcecontext.cxx
+++ b/oox/source/drawingml/chart/datasourcecontext.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datasourcecontext.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/datasourceconverter.cxx b/oox/source/drawingml/chart/datasourceconverter.cxx
index 56a0cda06386..2409f8e89962 100644
--- a/oox/source/drawingml/chart/datasourceconverter.cxx
+++ b/oox/source/drawingml/chart/datasourceconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datasourceconverter.cxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/datasourcemodel.cxx b/oox/source/drawingml/chart/datasourcemodel.cxx
index f276a3c0a5de..1f5b15f3e809 100644
--- a/oox/source/drawingml/chart/datasourcemodel.cxx
+++ b/oox/source/drawingml/chart/datasourcemodel.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datasourcemodel.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/makefile.mk b/oox/source/drawingml/chart/makefile.mk
index a02d0d5cc4bd..84762e6a2540 100644
--- a/oox/source/drawingml/chart/makefile.mk
+++ b/oox/source/drawingml/chart/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/modelbase.cxx b/oox/source/drawingml/chart/modelbase.cxx
index a7ff9c2641b0..3aa6b1f0047f 100644
--- a/oox/source/drawingml/chart/modelbase.cxx
+++ b/oox/source/drawingml/chart/modelbase.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: modelbase.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx
index 46253e92dd68..08ca5f44bec3 100644
--- a/oox/source/drawingml/chart/objectformatter.cxx
+++ b/oox/source/drawingml/chart/objectformatter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: objectformatter.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/plotareacontext.cxx b/oox/source/drawingml/chart/plotareacontext.cxx
index 954b7e1e448b..4f8268f06d66 100644
--- a/oox/source/drawingml/chart/plotareacontext.cxx
+++ b/oox/source/drawingml/chart/plotareacontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: plotareacontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/plotareaconverter.cxx b/oox/source/drawingml/chart/plotareaconverter.cxx
index b4345af3f088..82a22213b713 100644
--- a/oox/source/drawingml/chart/plotareaconverter.cxx
+++ b/oox/source/drawingml/chart/plotareaconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: plotareaconverter.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/plotareamodel.cxx b/oox/source/drawingml/chart/plotareamodel.cxx
index de29bba26002..324186526cc6 100644
--- a/oox/source/drawingml/chart/plotareamodel.cxx
+++ b/oox/source/drawingml/chart/plotareamodel.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: plotareamodel.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/seriescontext.cxx b/oox/source/drawingml/chart/seriescontext.cxx
index a52c5fb4182c..d06ca9716944 100644
--- a/oox/source/drawingml/chart/seriescontext.cxx
+++ b/oox/source/drawingml/chart/seriescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: seriescontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/seriesconverter.cxx b/oox/source/drawingml/chart/seriesconverter.cxx
index 1c9931ae6177..a4cf7c1f3eb2 100644
--- a/oox/source/drawingml/chart/seriesconverter.cxx
+++ b/oox/source/drawingml/chart/seriesconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: seriesconverter.cxx,v $
- *
- * $Revision: 1.4.6.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/seriesmodel.cxx b/oox/source/drawingml/chart/seriesmodel.cxx
index 224587b49025..01fff8e8d385 100644
--- a/oox/source/drawingml/chart/seriesmodel.cxx
+++ b/oox/source/drawingml/chart/seriesmodel.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: seriesmodel.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/titlecontext.cxx b/oox/source/drawingml/chart/titlecontext.cxx
index 05006ce2f8fd..e9007e4d53d7 100644
--- a/oox/source/drawingml/chart/titlecontext.cxx
+++ b/oox/source/drawingml/chart/titlecontext.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: titlecontext.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/titleconverter.cxx b/oox/source/drawingml/chart/titleconverter.cxx
index 7c866666c844..6316ee5f7ee4 100644
--- a/oox/source/drawingml/chart/titleconverter.cxx
+++ b/oox/source/drawingml/chart/titleconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: titleconverter.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/titlemodel.cxx b/oox/source/drawingml/chart/titlemodel.cxx
index 0a317396bb0b..51c51a62c4b7 100644
--- a/oox/source/drawingml/chart/titlemodel.cxx
+++ b/oox/source/drawingml/chart/titlemodel.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: titlemodel.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/typegroupcontext.cxx b/oox/source/drawingml/chart/typegroupcontext.cxx
index b2367dc87b8b..972295304593 100644
--- a/oox/source/drawingml/chart/typegroupcontext.cxx
+++ b/oox/source/drawingml/chart/typegroupcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typegroupcontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/typegroupconverter.cxx b/oox/source/drawingml/chart/typegroupconverter.cxx
index 91b32d5d2200..3746048074e9 100644
--- a/oox/source/drawingml/chart/typegroupconverter.cxx
+++ b/oox/source/drawingml/chart/typegroupconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typegroupconverter.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/chart/typegroupmodel.cxx b/oox/source/drawingml/chart/typegroupmodel.cxx
index 9ad254ddf6aa..24f5420644e4 100644
--- a/oox/source/drawingml/chart/typegroupmodel.cxx
+++ b/oox/source/drawingml/chart/typegroupmodel.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: typegroupmodel.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/clrscheme.cxx b/oox/source/drawingml/clrscheme.cxx
index cc7e43d55a15..fdeb28a27ef0 100644
--- a/oox/source/drawingml/clrscheme.cxx
+++ b/oox/source/drawingml/clrscheme.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: clrscheme.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/clrschemecontext.cxx b/oox/source/drawingml/clrschemecontext.cxx
index a8fa5d737c63..d91f15c56e18 100644
--- a/oox/source/drawingml/clrschemecontext.cxx
+++ b/oox/source/drawingml/clrschemecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: clrschemecontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx
index 009be55424f3..ebf62f17a01e 100644
--- a/oox/source/drawingml/color.cxx
+++ b/oox/source/drawingml/color.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: color.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/colorchoicecontext.cxx b/oox/source/drawingml/colorchoicecontext.cxx
index 3dff6aac52a7..2bc01e049a8e 100644
--- a/oox/source/drawingml/colorchoicecontext.cxx
+++ b/oox/source/drawingml/colorchoicecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: colorchoicecontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/connectorshapecontext.cxx b/oox/source/drawingml/connectorshapecontext.cxx
index 96324f6f1e5a..3327d627af6d 100644
--- a/oox/source/drawingml/connectorshapecontext.cxx
+++ b/oox/source/drawingml/connectorshapecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: connectorshapecontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/customshapegeometry.cxx b/oox/source/drawingml/customshapegeometry.cxx
index 2e9be5e987ff..decb759579f3 100644
--- a/oox/source/drawingml/customshapegeometry.cxx
+++ b/oox/source/drawingml/customshapegeometry.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: customshapegeometry.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx
index fdede72a7e8e..28e84e72e2cc 100644
--- a/oox/source/drawingml/customshapeproperties.cxx
+++ b/oox/source/drawingml/customshapeproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: customshapeproperties.cxx,v $
- * $Revision: 1.6.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/datamodelcontext.cxx b/oox/source/drawingml/diagram/datamodelcontext.cxx
index c4260b5eea9c..901b9267df36 100644
--- a/oox/source/drawingml/diagram/datamodelcontext.cxx
+++ b/oox/source/drawingml/diagram/datamodelcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: datamodelcontext.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/diagram.cxx b/oox/source/drawingml/diagram/diagram.cxx
index 6fcf92162bc1..516d6bfb231c 100644
--- a/oox/source/drawingml/diagram/diagram.cxx
+++ b/oox/source/drawingml/diagram/diagram.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagram.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx b/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx
index b49a39aa889c..81c0d597afe2 100644
--- a/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx
+++ b/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagramdefinitioncontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx b/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx
index 86aaf0af6b25..99407aed80d3 100644
--- a/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx
+++ b/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagramdefinitioncontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
index 3921b6faf721..0cad22660ab6 100644
--- a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
+++ b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagramfragmenthandler.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
index d72419a1fb99..a351189f3067 100644
--- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: diagramlayoutatoms.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/layoutnodecontext.cxx b/oox/source/drawingml/diagram/layoutnodecontext.cxx
index 71c6ab9dbafe..4d430bb6ba36 100644
--- a/oox/source/drawingml/diagram/layoutnodecontext.cxx
+++ b/oox/source/drawingml/diagram/layoutnodecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: layoutnodecontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/layoutnodecontext.hxx b/oox/source/drawingml/diagram/layoutnodecontext.hxx
index 2c00443a4c09..19cb19aa602d 100644
--- a/oox/source/drawingml/diagram/layoutnodecontext.hxx
+++ b/oox/source/drawingml/diagram/layoutnodecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: layoutnodecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/diagram/makefile.mk b/oox/source/drawingml/diagram/makefile.mk
index bf8c6f9c4f10..9d526ed3d3fb 100644
--- a/oox/source/drawingml/diagram/makefile.mk
+++ b/oox/source/drawingml/diagram/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/drawingmltypes.cxx b/oox/source/drawingml/drawingmltypes.cxx
index 86231ffda98d..6773c5d6149b 100644
--- a/oox/source/drawingml/drawingmltypes.cxx
+++ b/oox/source/drawingml/drawingmltypes.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: drawingmltypes.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/embeddedwavaudiofile.cxx b/oox/source/drawingml/embeddedwavaudiofile.cxx
index a4933cf9d5e2..02cad5ce9f05 100644
--- a/oox/source/drawingml/embeddedwavaudiofile.cxx
+++ b/oox/source/drawingml/embeddedwavaudiofile.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: embeddedwavaudiofile.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index f6a72c3aafce..0e4d56a6634b 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fillproperties.cxx,v $
- * $Revision: 1.7.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/fillpropertiesgroupcontext.cxx b/oox/source/drawingml/fillpropertiesgroupcontext.cxx
index dfe395ec8f34..454222bc52e6 100644
--- a/oox/source/drawingml/fillpropertiesgroupcontext.cxx
+++ b/oox/source/drawingml/fillpropertiesgroupcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: fillpropertiesgroupcontext.cxx,v $
- * $Revision: 1.8.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/graphicshapecontext.cxx b/oox/source/drawingml/graphicshapecontext.cxx
index 7d0207d3fb6a..a0335fe68ee2 100644
--- a/oox/source/drawingml/graphicshapecontext.cxx
+++ b/oox/source/drawingml/graphicshapecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: graphicshapecontext.cxx,v $
- * $Revision: 1.8.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/guidcontext.cxx b/oox/source/drawingml/guidcontext.cxx
index 472cb784905d..b53e33fcb746 100644
--- a/oox/source/drawingml/guidcontext.cxx
+++ b/oox/source/drawingml/guidcontext.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: guidcontext.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/hyperlinkcontext.cxx b/oox/source/drawingml/hyperlinkcontext.cxx
index 7335f2cc4dfd..280077eb0b5b 100644
--- a/oox/source/drawingml/hyperlinkcontext.cxx
+++ b/oox/source/drawingml/hyperlinkcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hyperlinkcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/hyperlinkcontext.hxx b/oox/source/drawingml/hyperlinkcontext.hxx
index 7adf8a215d3a..aa5b5f0a19ec 100644
--- a/oox/source/drawingml/hyperlinkcontext.hxx
+++ b/oox/source/drawingml/hyperlinkcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hyperlinkcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/lineproperties.cxx b/oox/source/drawingml/lineproperties.cxx
index 6cee420c167d..4a9a0d04e1e5 100644
--- a/oox/source/drawingml/lineproperties.cxx
+++ b/oox/source/drawingml/lineproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: lineproperties.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/linepropertiescontext.cxx b/oox/source/drawingml/linepropertiescontext.cxx
index e6c6f76d5585..200af2eb6fb5 100644
--- a/oox/source/drawingml/linepropertiescontext.cxx
+++ b/oox/source/drawingml/linepropertiescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: linepropertiescontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/makefile.mk b/oox/source/drawingml/makefile.mk
index 329d748288b1..443c30bb16a9 100644
--- a/oox/source/drawingml/makefile.mk
+++ b/oox/source/drawingml/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/objectdefaultcontext.cxx b/oox/source/drawingml/objectdefaultcontext.cxx
index a083eba0f822..69b9423a4abc 100644
--- a/oox/source/drawingml/objectdefaultcontext.cxx
+++ b/oox/source/drawingml/objectdefaultcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: objectdefaultcontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index ae9faaa9c4d6..cab64f11c166 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shape.cxx,v $
- * $Revision: 1.8.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/shapecontext.cxx b/oox/source/drawingml/shapecontext.cxx
index e2a76345f1e7..4ee664b1c66c 100644
--- a/oox/source/drawingml/shapecontext.cxx
+++ b/oox/source/drawingml/shapecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapecontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/shapegroupcontext.cxx b/oox/source/drawingml/shapegroupcontext.cxx
index 290d2b3f2958..1b90be3952ab 100644
--- a/oox/source/drawingml/shapegroupcontext.cxx
+++ b/oox/source/drawingml/shapegroupcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapegroupcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/shapepropertiescontext.cxx b/oox/source/drawingml/shapepropertiescontext.cxx
index bfef3bdcf922..68c8ed967159 100644
--- a/oox/source/drawingml/shapepropertiescontext.cxx
+++ b/oox/source/drawingml/shapepropertiescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapepropertiescontext.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/shapestylecontext.cxx b/oox/source/drawingml/shapestylecontext.cxx
index 8b82d2933dc2..13f15783e49b 100644
--- a/oox/source/drawingml/shapestylecontext.cxx
+++ b/oox/source/drawingml/shapestylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shapestylecontext.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/spdefcontext.cxx b/oox/source/drawingml/spdefcontext.cxx
index dc3519ce336c..d85fe2ceb2bb 100644
--- a/oox/source/drawingml/spdefcontext.cxx
+++ b/oox/source/drawingml/spdefcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: spdefcontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/makefile.mk b/oox/source/drawingml/table/makefile.mk
index 9d151a6b39f8..fa71971fc278 100644
--- a/oox/source/drawingml/table/makefile.mk
+++ b/oox/source/drawingml/table/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablebackgroundstylecontext.cxx b/oox/source/drawingml/table/tablebackgroundstylecontext.cxx
index 48c07e348071..c9be0287a7cc 100644
--- a/oox/source/drawingml/table/tablebackgroundstylecontext.cxx
+++ b/oox/source/drawingml/table/tablebackgroundstylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablebackgroundstylecontext.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablecell.cxx b/oox/source/drawingml/table/tablecell.cxx
index 1f0bdad34100..1684414eea2b 100644
--- a/oox/source/drawingml/table/tablecell.cxx
+++ b/oox/source/drawingml/table/tablecell.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablecell.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablecellcontext.cxx b/oox/source/drawingml/table/tablecellcontext.cxx
index 1ebb4294f330..68e3cd3a864a 100644
--- a/oox/source/drawingml/table/tablecellcontext.cxx
+++ b/oox/source/drawingml/table/tablecellcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablecellcontext.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablecontext.cxx b/oox/source/drawingml/table/tablecontext.cxx
index 67d7df030c92..b194fdc9ee26 100644
--- a/oox/source/drawingml/table/tablecontext.cxx
+++ b/oox/source/drawingml/table/tablecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablecontext.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablepartstylecontext.cxx b/oox/source/drawingml/table/tablepartstylecontext.cxx
index c2f57ba1d5d2..92e314d6afa7 100644
--- a/oox/source/drawingml/table/tablepartstylecontext.cxx
+++ b/oox/source/drawingml/table/tablepartstylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablepartstylecontext.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tableproperties.cxx b/oox/source/drawingml/table/tableproperties.cxx
index 2d842fdd6422..136754fbccc3 100644
--- a/oox/source/drawingml/table/tableproperties.cxx
+++ b/oox/source/drawingml/table/tableproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tableproperties.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablerow.cxx b/oox/source/drawingml/table/tablerow.cxx
index c9e4490bc205..8986a6e35d08 100644
--- a/oox/source/drawingml/table/tablerow.cxx
+++ b/oox/source/drawingml/table/tablerow.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablerow.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablerowcontext.cxx b/oox/source/drawingml/table/tablerowcontext.cxx
index f7245c8d8f8a..17881d89639b 100644
--- a/oox/source/drawingml/table/tablerowcontext.cxx
+++ b/oox/source/drawingml/table/tablerowcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablerowcontext.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestyle.cxx b/oox/source/drawingml/table/tablestyle.cxx
index 222eb6a850d3..78a110ebb8cb 100644
--- a/oox/source/drawingml/table/tablestyle.cxx
+++ b/oox/source/drawingml/table/tablestyle.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestyle.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestylecellstylecontext.cxx b/oox/source/drawingml/table/tablestylecellstylecontext.cxx
index fa550d9e66a4..47d747bf8b20 100644
--- a/oox/source/drawingml/table/tablestylecellstylecontext.cxx
+++ b/oox/source/drawingml/table/tablestylecellstylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylecellstylecontext.cxx,v $
- * $Revision: 1.3.14.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestylecontext.cxx b/oox/source/drawingml/table/tablestylecontext.cxx
index 2851d6793184..4d0b945d3d72 100644
--- a/oox/source/drawingml/table/tablestylecontext.cxx
+++ b/oox/source/drawingml/table/tablestylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylecontext.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestylelist.cxx b/oox/source/drawingml/table/tablestylelist.cxx
index dd98499c390c..36ebc56a84a3 100644
--- a/oox/source/drawingml/table/tablestylelist.cxx
+++ b/oox/source/drawingml/table/tablestylelist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylelist.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx b/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx
index b224cc02901e..e90554409d4d 100644
--- a/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx
+++ b/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylelistfragmenthandler.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestylepart.cxx b/oox/source/drawingml/table/tablestylepart.cxx
index 8d9303276f22..f8e700e5fccd 100644
--- a/oox/source/drawingml/table/tablestylepart.cxx
+++ b/oox/source/drawingml/table/tablestylepart.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestylepart.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/table/tablestyletextstylecontext.cxx b/oox/source/drawingml/table/tablestyletextstylecontext.cxx
index 3e46882b459e..ec117f4ac3c1 100644
--- a/oox/source/drawingml/table/tablestyletextstylecontext.cxx
+++ b/oox/source/drawingml/table/tablestyletextstylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablestyletextstylecontext.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textbody.cxx b/oox/source/drawingml/textbody.cxx
index 4a98210e8a25..20c554ef3e64 100644
--- a/oox/source/drawingml/textbody.cxx
+++ b/oox/source/drawingml/textbody.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbody.cxx,v $
- * $Revision: 1.7.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textbodycontext.cxx b/oox/source/drawingml/textbodycontext.cxx
index 4aef69438d3f..9a197ee691bf 100644
--- a/oox/source/drawingml/textbodycontext.cxx
+++ b/oox/source/drawingml/textbodycontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbodycontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx b/oox/source/drawingml/textbodypropertiescontext.cxx
index a68880066665..291af2687149 100644
--- a/oox/source/drawingml/textbodypropertiescontext.cxx
+++ b/oox/source/drawingml/textbodypropertiescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textbodypropertiescontext.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textcharacterproperties.cxx b/oox/source/drawingml/textcharacterproperties.cxx
index 41855170d26b..aa08218053ac 100644
--- a/oox/source/drawingml/textcharacterproperties.cxx
+++ b/oox/source/drawingml/textcharacterproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textcharacterproperties.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textcharacterpropertiescontext.cxx b/oox/source/drawingml/textcharacterpropertiescontext.cxx
index 07c16b02080f..6797b8336c02 100644
--- a/oox/source/drawingml/textcharacterpropertiescontext.cxx
+++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textcharacterpropertiescontext.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textfield.cxx b/oox/source/drawingml/textfield.cxx
index fe5527d0e2d1..c3049415c89a 100644
--- a/oox/source/drawingml/textfield.cxx
+++ b/oox/source/drawingml/textfield.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textfield.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textfieldcontext.cxx b/oox/source/drawingml/textfieldcontext.cxx
index e7044f098f3d..2c993af562bf 100644
--- a/oox/source/drawingml/textfieldcontext.cxx
+++ b/oox/source/drawingml/textfieldcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textfieldcontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textfont.cxx b/oox/source/drawingml/textfont.cxx
index 6c66d7573392..f20c9b53511b 100644
--- a/oox/source/drawingml/textfont.cxx
+++ b/oox/source/drawingml/textfont.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textfont.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textliststyle.cxx b/oox/source/drawingml/textliststyle.cxx
index c554e035f89c..5d01a28c9cfd 100644
--- a/oox/source/drawingml/textliststyle.cxx
+++ b/oox/source/drawingml/textliststyle.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textliststyle.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textliststylecontext.cxx b/oox/source/drawingml/textliststylecontext.cxx
index 2cf0bc320b1d..693957490579 100644
--- a/oox/source/drawingml/textliststylecontext.cxx
+++ b/oox/source/drawingml/textliststylecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textliststylecontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textparagraph.cxx b/oox/source/drawingml/textparagraph.cxx
index df63fad1fde8..1ff78541243e 100644
--- a/oox/source/drawingml/textparagraph.cxx
+++ b/oox/source/drawingml/textparagraph.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textparagraph.cxx,v $
- * $Revision: 1.7.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textparagraphproperties.cxx b/oox/source/drawingml/textparagraphproperties.cxx
index 35fe17716250..3416d4918e7b 100644
--- a/oox/source/drawingml/textparagraphproperties.cxx
+++ b/oox/source/drawingml/textparagraphproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textparagraphproperties.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textparagraphpropertiescontext.cxx b/oox/source/drawingml/textparagraphpropertiescontext.cxx
index 4c4f61e4a822..3c41fef69a76 100644
--- a/oox/source/drawingml/textparagraphpropertiescontext.cxx
+++ b/oox/source/drawingml/textparagraphpropertiescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textparagraphpropertiescontext.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textrun.cxx b/oox/source/drawingml/textrun.cxx
index 04dcb68c053f..aa74d767a7ad 100644
--- a/oox/source/drawingml/textrun.cxx
+++ b/oox/source/drawingml/textrun.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textrun.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textspacingcontext.cxx b/oox/source/drawingml/textspacingcontext.cxx
index 3582405fc748..6bc6b79497d6 100644
--- a/oox/source/drawingml/textspacingcontext.cxx
+++ b/oox/source/drawingml/textspacingcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textspacingcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/textspacingcontext.hxx b/oox/source/drawingml/textspacingcontext.hxx
index d918f21e5d51..5b646c14d240 100644
--- a/oox/source/drawingml/textspacingcontext.hxx
+++ b/oox/source/drawingml/textspacingcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textspacingcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/texttabstoplistcontext.cxx b/oox/source/drawingml/texttabstoplistcontext.cxx
index 8980140313fd..1a8affa898bb 100644
--- a/oox/source/drawingml/texttabstoplistcontext.cxx
+++ b/oox/source/drawingml/texttabstoplistcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: texttabstoplistcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/texttabstoplistcontext.hxx b/oox/source/drawingml/texttabstoplistcontext.hxx
index bd162b3f0105..5545e1231e3d 100644
--- a/oox/source/drawingml/texttabstoplistcontext.hxx
+++ b/oox/source/drawingml/texttabstoplistcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: texttabstoplistcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/theme.cxx b/oox/source/drawingml/theme.cxx
index e1a7f634fa21..b37ccdbaf13c 100644
--- a/oox/source/drawingml/theme.cxx
+++ b/oox/source/drawingml/theme.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: theme.cxx,v $
- * $Revision: 1.5.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/themeelementscontext.cxx b/oox/source/drawingml/themeelementscontext.cxx
index 1b5f72666933..7e8b5177498f 100644
--- a/oox/source/drawingml/themeelementscontext.cxx
+++ b/oox/source/drawingml/themeelementscontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: themeelementscontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/themefragmenthandler.cxx b/oox/source/drawingml/themefragmenthandler.cxx
index aa19fc612a1c..160db1881a25 100644
--- a/oox/source/drawingml/themefragmenthandler.cxx
+++ b/oox/source/drawingml/themefragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: themefragmenthandler.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/drawingml/transform2dcontext.cxx b/oox/source/drawingml/transform2dcontext.cxx
index 44cad6758c11..43748bd1089a 100644
--- a/oox/source/drawingml/transform2dcontext.cxx
+++ b/oox/source/drawingml/transform2dcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: transform2dcontext.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/dump/biffdumper.cxx b/oox/source/dump/biffdumper.cxx
index 2e42d2dc8ca8..21aa341107fa 100644
--- a/oox/source/dump/biffdumper.cxx
+++ b/oox/source/dump/biffdumper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffdumper.cxx,v $
- * $Revision: 1.5.20.26 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -510,8 +507,25 @@ OUString BiffObjectBase::dumpUniString( const String& rName, BiffStringFlags nFl
// #122185# bPhonetic flag may be set, but phonetic data may be missing
if( nPhoneticSize > 0 )
{
+ sal_Int64 nStrmPos = mxBiffStrm->tell();
IndentGuard aIndGuard( out() );
- dumpBinary( "phonetic-data", nPhoneticSize, false );
+ writeEmptyItem( "phonetic-data" );
+ dumpUnused( 2 );
+ dumpDec< sal_uInt16 >( "size" );
+ dumpDec< sal_uInt16 >( "font-idx", "FONTNAMES" );
+ dumpHex< sal_uInt16 >( "flags", "PHONETICPR-FLAGS" );
+ sal_uInt16 nCount = dumpDec< sal_uInt16 >( "portion-count" );
+ sal_uInt16 nLen = dumpDec< sal_uInt16 >( "text-len" );
+ dumpUnicodeArray( "text", mxBiffStrm->readuInt16() );
+ if( nLen == 0 ) dumpUnused( 2 );
+ for( sal_uInt16 nPortion = 0; !mxBiffStrm->isEof() && (nPortion < nCount); ++nPortion )
+ {
+ MultiItemsGuard aMultiGuard( out() );
+ dumpDec< sal_uInt16 >( "first-portion-char" );
+ dumpDec< sal_uInt16 >( "first-main-char" );
+ dumpDec< sal_uInt16 >( "main-char-count" );
+ }
+ dumpRemainingTo( nStrmPos + nPhoneticSize );
}
return aString;
@@ -1604,6 +1618,14 @@ void WorkbookStreamObject::implDumpRecordBody()
initializePerSheet();
break;
+ case BIFF_ID_BOOKEXT:
+ dumpFrHeader( true, true );
+ dumpDec< sal_uInt32 >( "rec-size" );
+ dumpHex< sal_uInt32 >( "flags-1", "BOOKEXT-FLAGS1" );
+ if( rStrm.getRemaining() > 0 ) dumpHex< sal_uInt8 >( "flags-2", "BOOKEXT-FLAGS2" );
+ if( rStrm.getRemaining() > 0 ) dumpHex< sal_uInt8 >( "flags-3", "BOOKEXT-FLAGS3" );
+ break;
+
case BIFF2_ID_BOOLERR:
case BIFF3_ID_BOOLERR:
dumpCellHeader( nRecId == BIFF2_ID_BOOLERR );
@@ -1612,7 +1634,7 @@ void WorkbookStreamObject::implDumpRecordBody()
case BIFF_ID_CFHEADER:
dumpDec< sal_uInt16 >( "rule-count" );
- dumpBool< sal_uInt16 >( "need-update" );
+ dumpHex< sal_uInt16 >( "flags", "CFHEADER-FLAGS" );
dumpRange( "bounding-range" );
dumpRangeList();
break;
@@ -1623,63 +1645,43 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpDec< sal_uInt8 >( "operator", "CFRULE-OPERATOR" );
sal_uInt16 nFmla1Size = dumpDec< sal_uInt16 >( "formula1-size" );
sal_uInt16 nFmla2Size = dumpDec< sal_uInt16 >( "formula2-size" );
- sal_uInt32 nFlags = dumpHex< sal_uInt32 >( "flags", "CFRULE-FLAGS" );
- dumpUnused( 2 );
- if( getFlag< sal_uInt32 >( nFlags, 0x04000000 ) )
- {
- writeEmptyItem( "font-block" );
- IndentGuard aIndGuard( out() );
- sal_Int64 nRecPos = rStrm.tell();
- dumpUniString( "name", BIFF_STR_8BITLENGTH );
- dumpUnused( static_cast< sal_Int32 >( nRecPos + 64 - rStrm.tell() ) );
- dumpDec< sal_Int32 >( "height", "CONV-TWIP-TO-PT" );
- dumpHex< sal_uInt32 >( "flags", "CFRULE-FONTFLAGS" );
- dumpDec< sal_uInt16 >( "weight", "FONT-WEIGHT" );
- dumpDec< sal_uInt16 >( "escapement", "FONT-ESCAPEMENT" );
- dumpDec< sal_uInt8 >( "underline", "FONT-UNDERLINE" );
- dumpUnused( 3 ); // family/charset?
- dumpDec< sal_Int32 >( "color", mxColors );
- dumpUnused( 4 );
- dumpHex< sal_uInt32 >( "used-flags", "CFRULE-FONTUSEDFLAGS" );
- dumpDec< sal_uInt32 >( "escapement-used", "CFRULE-FONTUSED" );
- dumpDec< sal_uInt32 >( "underline-used", "CFRULE-FONTUSED" );
- dumpUnused( 18 );
- }
- if( getFlag< sal_uInt32 >( nFlags, 0x08000000 ) )
- {
- writeEmptyItem( "alignment-block" );
- IndentGuard aIndGuard( out() );
- dumpHex< sal_uInt8 >( "alignent", "CFRULE-ALIGNMENT" );
- dumpHex< sal_uInt8 >( "rotation", "TEXTROTATION" );
- dumpHex< sal_uInt16 >( "indent", "CFRULE-INDENT" );
- dumpDec< sal_uInt16 >( "relative-indent" );
- dumpUnknown( 2 );
- }
- if( getFlag< sal_uInt32 >( nFlags, 0x10000000 ) )
- {
- writeEmptyItem( "border-block" );
- IndentGuard aIndGuard( out() );
- dumpHex< sal_uInt16 >( "border-style", "XF-BORDERSTYLE" );
- dumpHex< sal_uInt16 >( "border-color1", "XF-BORDERCOLOR1" );
- dumpHex< sal_uInt32 >( "border-color2", "CFRULE-BORDERCOLOR2" );
- }
- if( getFlag< sal_uInt32 >( nFlags, 0x20000000 ) )
- {
- writeEmptyItem( "pattern-block" );
- IndentGuard aIndGuard( out() );
- dumpHex< sal_uInt32 >( "pattern", "CFRULE-FILLBLOCK" );
- }
- if( getFlag< sal_uInt32 >( nFlags, 0x40000000 ) )
+ dumpCfRuleProp();
+ if( nFmla1Size > 0 ) getFormulaDumper().dumpNameFormula( "formula1", nFmla1Size );
+ if( nFmla2Size > 0 ) getFormulaDumper().dumpNameFormula( "formula2", nFmla2Size );
+ }
+ break;
+
+ case BIFF_ID_CFRULE12:
+ {
+ dumpFrHeader( true, true );
+ dumpDec< sal_uInt8 >( "type", "CFRULE12-TYPE" );
+ dumpDec< sal_uInt8 >( "operator", "CFRULE-OPERATOR" );
+ sal_uInt16 nFmla1Size = dumpDec< sal_uInt16 >( "formula1-size" );
+ sal_uInt16 nFmla2Size = dumpDec< sal_uInt16 >( "formula2-size" );
+ dumpDxf12Prop();
+ if( nFmla1Size > 0 ) getFormulaDumper().dumpNameFormula( "formula1", nFmla1Size );
+ if( nFmla2Size > 0 ) getFormulaDumper().dumpNameFormula( "formula2", nFmla2Size );
+ getFormulaDumper().dumpNameFormula( "active-formula" );
+ dumpHex< sal_uInt8 >( "flags", "CFRULE12-FLAGS" );
+ dumpDec< sal_uInt16 >( "priority" );
+ dumpCfRule12Param( dumpDec< sal_uInt16 >( "sub-type", "CFRULE12-SUBTYPE" ) );
+ }
+ break;
+
+ case BIFF_ID_CFRULEEXT:
+ dumpFrHeader( true, true );
+ dumpBool< sal_uInt32 >( "cfrule12-follows" );
+ dumpDec< sal_uInt16 >( "cfheader-id" );
+ if( rStrm.getRemaining() >= 25 )
{
- writeEmptyItem( "protection-block" );
- IndentGuard aIndGuard( out() );
- dumpHex< sal_uInt16 >( "flags", "CFRULE-PROTECTION-FLAGS" );
+ dumpDec< sal_uInt16 >( "cfrule-idx" );
+ dumpDec< sal_uInt8 >( "operator", "CFRULE-OPERATOR" );
+ sal_uInt8 nSubType = dumpDec< sal_uInt8 >( "sub-type", "CFRULE12-SUBTYPE" );
+ dumpDec< sal_uInt16 >( "priority" );
+ dumpHex< sal_uInt8 >( "flags", "CFRULEEXT-FLAGS" );
+ if( dumpBoolean( "has-dxf-data" ) ) dumpDxf12Prop();
+ dumpCfRule12Param( nSubType );
}
- if( nFmla1Size > 0 )
- getFormulaDumper().dumpNameFormula( "formula1", nFmla1Size );
- if( nFmla2Size > 0 )
- getFormulaDumper().dumpNameFormula( "formula2", nFmla2Size );
- }
break;
case BIFF_ID_CH3DDATAFORMAT:
@@ -1729,10 +1731,9 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpHex< sal_uInt16 >( "flags", "CHCHART3D-FLAGS" );
break;
- case BIFF_ID_CHTYPEGROUP:
- dumpUnused( 16 );
- dumpHex< sal_uInt16 >( "flags", "CHTYPEGROUP-FLAGS" );
- if( eBiff >= BIFF5 ) dumpDec< sal_uInt16 >( "group-idx" );
+ case BIFF_ID_CHECKCOMPAT:
+ dumpFrHeader( true, true );
+ dumpBool< sal_uInt32 >( "check-compatibility" );
break;
case BIFF_ID_CHDATAFORMAT:
@@ -1961,6 +1962,12 @@ void WorkbookStreamObject::implDumpRecordBody()
if( eBiff == BIFF8 ) dumpDec< sal_uInt16 >( "label-rotation", "TEXTROTATION" );
break;
+ case BIFF_ID_CHTYPEGROUP:
+ dumpUnused( 16 );
+ dumpHex< sal_uInt16 >( "flags", "CHTYPEGROUP-FLAGS" );
+ if( eBiff >= BIFF5 ) dumpDec< sal_uInt16 >( "group-idx" );
+ break;
+
case BIFF_ID_CHVALUERANGE:
dumpDec< double >( "minimum" );
dumpDec< double >( "maximum" );
@@ -1999,6 +2006,11 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpDec< sal_uInt16 >( "col-width", "CONV-COLWIDTH" );
break;
+ case BIFF_ID_COMPRESSPICS:
+ dumpFrHeader( true, true );
+ dumpBool< sal_uInt32 >( "recommend-compress-pics" );
+ break;
+
case BIFF_ID_CONT:
if( (eBiff == BIFF8) && (getLastRecId() == BIFF_ID_OBJ) )
dumpEmbeddedDff();
@@ -2018,6 +2030,11 @@ void WorkbookStreamObject::implDumpRecordBody()
}
break;
+ case BIFF_ID_COUNTRY:
+ dumpDec< sal_uInt16 >( "ui-country", "COUNTRY" );
+ dumpDec< sal_uInt16 >( "sys-country", "COUNTRY" );
+ break;
+
case BIFF_ID_CRN:
{
sal_Int32 nCol2 = dumpColIndex( "last-col-idx", false );
@@ -2098,6 +2115,13 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpDec< sal_Int32 >( "dval-entry-count" );
break;
+ case BIFF_ID_DBCELL:
+ dumpDec< sal_uInt32 >( "reverse-offset-to-row" );
+ out().resetItemIndex();
+ while( rStrm.getRemaining() >= 2 )
+ dumpDec< sal_uInt16 >( "#cell-offset" );
+ break;
+
case BIFF2_ID_DEFINEDNAME:
case BIFF3_ID_DEFINEDNAME:
{
@@ -2143,6 +2167,12 @@ void WorkbookStreamObject::implDumpRecordBody()
if( nRecId == BIFF3_ID_DIMENSION ) dumpUnused( 2 );
break;
+ case BIFF_ID_DXF:
+ dumpFrHeader( true, true );
+ dumpHex< sal_uInt16 >( "flags", "DXF-FLAGS" );
+ dumpDxfProp();
+ break;
+
case BIFF_ID_EXTERNALBOOK:
{
sal_uInt16 nCount = dumpDec< sal_uInt16 >( "sheet-count" );
@@ -2255,6 +2285,11 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpFontRec();
break;
+ case BIFF_ID_FORCEFULLCALC:
+ dumpFrHeader( true, true );
+ dumpBool< sal_Int32 >( "recalc-all-formulas" );
+ break;
+
case BIFF2_ID_FORMAT:
case BIFF4_ID_FORMAT:
dumpFormatRec();
@@ -2275,11 +2310,34 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpString( "footer", BIFF_STR_8BITLENGTH );
break;
+ case BIFF_ID_GUTS:
+ dumpDec< sal_uInt16 >( "row-outlines-width" );
+ dumpDec< sal_uInt16 >( "column-outlines-height" );
+ dumpDec< sal_uInt16 >( "row-levels", "GUTS-LEVELS" );
+ dumpDec< sal_uInt16 >( "column-levels", "GUTS-LEVELS" );
+ break;
+
case BIFF_ID_HEADER:
if( rStrm.getRemaining() > 0 )
dumpString( "header", BIFF_STR_8BITLENGTH );
break;
+ case BIFF_ID_HEADERFOOTER:
+ {
+ dumpFrHeader( true, true );
+ dumpGuid( "view-guid" );
+ dumpHex< sal_uInt16 >( "flags", "HEADERFOOTER-FLAGS" );
+ sal_uInt16 nEvenHLen = dumpDec< sal_uInt16 >( "even-h-len" );
+ sal_uInt16 nEvenFLen = dumpDec< sal_uInt16 >( "even-f-len" );
+ sal_uInt16 nFirstHLen = dumpDec< sal_uInt16 >( "first-h-len" );
+ sal_uInt16 nFirstFLen = dumpDec< sal_uInt16 >( "first-f-len" );
+ if( nEvenHLen > 0 ) dumpUniString( "even-h" );
+ if( nEvenFLen > 0 ) dumpUniString( "even-f" );
+ if( nFirstHLen > 0 ) dumpUniString( "first-h" );
+ if( nFirstFLen > 0 ) dumpUniString( "first-f" );
+ }
+ break;
+
case BIFF_ID_HYPERLINK:
dumpRange();
if( cfg().getStringOption( dumpGuid( "guid" ), OUString() ).equalsAscii( "StdHlink" ) )
@@ -2307,6 +2365,20 @@ void WorkbookStreamObject::implDumpRecordBody()
}
break;
+ case BIFF2_ID_INDEX:
+ case BIFF3_ID_INDEX:
+ if( eBiff <= BIFF4 )
+ dumpHex< sal_uInt32 >( "first-defname-pos", "CONV-DEC" );
+ else
+ dumpUnused( 4 );
+ dumpRowIndex( "first-row-with-cell", eBiff == BIFF8 );
+ dumpRowIndex( "first-free-row", eBiff == BIFF8 );
+ if( nRecId == BIFF3_ID_INDEX ) dumpHex< sal_uInt32 >( (eBiff <= BIFF4) ? "first-xf-pos" : "defcolwidth-pos", "CONV-DEC" );
+ out().resetItemIndex();
+ while( rStrm.getRemaining() >= 4 )
+ dumpHex< sal_uInt32 >( "#first-row-pos-of-block", "CONV-DEC" );
+ break;
+
case BIFF2_ID_INTEGER:
dumpCellHeader( true );
dumpDec< sal_uInt16 >( "value" );
@@ -2341,6 +2413,13 @@ void WorkbookStreamObject::implDumpRecordBody()
mbHasDff = true;
break;
+ case BIFF_ID_MTHREADSETTINGS:
+ dumpFrHeader( true, true );
+ dumpBool< sal_Int32 >( "multi-thread-enabled" );
+ dumpBool< sal_Int32 >( "manual-thread-count" );
+ dumpDec< sal_Int32 >( "thread-count" );
+ break;
+
case BIFF_ID_MULTBLANK:
{
Address aPos = dumpAddress();
@@ -2398,6 +2477,12 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpObjRec();
break;
+ case BIFF_ID_PAGELAYOUTVIEW:
+ dumpFrHeader( true, true );
+ dumpDec< sal_uInt16 >( "scaling", "CONV-PERCENT" );
+ dumpHex< sal_uInt16 >( "flags", "PAGELAYOUTVIEW-FLAGS" );
+ break;
+
case BIFF_ID_PAGESETUP:
dumpDec< sal_uInt16 >( "paper-size", "PAGESETUP-PAPERSIZE" );
dumpDec< sal_uInt16 >( "scaling", "CONV-PERCENT" );
@@ -2570,6 +2655,11 @@ void WorkbookStreamObject::implDumpRecordBody()
}
break;
+ case BIFF_ID_RECALCID:
+ dumpFrHeader( true, false );
+ dumpDec< sal_uInt32 >( "recalc-engine-id" );
+ break;
+
case BIFF_ID_RK:
dumpCellHeader();
dumpRk( "value" );
@@ -2661,6 +2751,20 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpRangeList( "selection", false );
break;
+ case BIFF_ID_SHAREDFEATHEAD:
+ {
+ dumpFrHeader( true, true );
+ sal_uInt16 nType = dumpDec< sal_uInt16 >( "feature-type", "SHAREDFEATHEAD-TYPE" );
+ dumpUnused( 1 );
+ if( dumpBool< sal_Int32 >( "has-data" ) ) switch( nType )
+ {
+ case 2:
+ dumpHex< sal_uInt32 >( "allowed-flags", "SHAREDFEATHEAD-PROT-FLAGS" );
+ break;
+ }
+ }
+ break;
+
case BIFF_ID_SHAREDFMLA:
dumpRange( "formula-range", false );
dumpUnused( 1 );
@@ -2680,18 +2784,22 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpString( "sheet-name", BIFF_STR_8BITLENGTH, BIFF_STR_8BITLENGTH );
break;
+ case BIFF_ID_SHEETEXT:
+ dumpFrHeader( true, true );
+ dumpDec< sal_uInt32 >( "rec-size" );
+ dumpDec< sal_uInt32 >( "flags-1", "SHEETEXT-FLAGS1" );
+ if( rStrm.getRemaining() >= 20 )
+ {
+ dumpDec< sal_uInt32 >( "flags-2", "SHEETEXT-FLAGS2" );
+ dumpExtCfColor( "tab-color" );
+ }
+ break;
+
case BIFF_ID_SHEETHEADER:
dumpHex< sal_uInt32 >( "substream-size", "CONV-DEC" );
dumpByteString( "sheet-name", BIFF_STR_8BITLENGTH );
break;
- case BIFF_ID_SHEETPROTECTION:
- dumpFrHeader( true, true );
- dumpUnused( 7 );
- dumpHex< sal_uInt16 >( "allowed-flags", "SHEETPROTECTION-FLAGS" );
- dumpUnused( 2 );
- break;
-
case BIFF_ID_SST:
dumpDec< sal_uInt32 >( "string-cell-count" );
dumpDec< sal_uInt32 >( "sst-size" );
@@ -2725,6 +2833,7 @@ void WorkbookStreamObject::implDumpRecordBody()
dumpDec< sal_Int8 >( "builtin-idx", "STYLEEXT-BUILTIN" );
dumpDec< sal_Int8 >( "outline-level" );
dumpUnicodeArray( "style-name", rStrm.readuInt16() );
+ dumpDxfProp();
break;
case BIFF_ID_SXEXT:
@@ -2739,6 +2848,22 @@ void WorkbookStreamObject::implDumpRecordBody()
}
break;
+ case BIFF_ID_TABLESTYLES:
+ {
+ dumpFrHeader( true, true );
+ dumpDec< sal_uInt32 >( "table-style-count" );
+ sal_uInt16 nDefTableLen, nDefPivotLen;
+ rStrm >> nDefTableLen >> nDefPivotLen;
+ dumpUnicodeArray( "def-table-style", nDefTableLen );
+ dumpUnicodeArray( "def-pivot-style", nDefPivotLen );
+ }
+ break;
+
+ case BIFF_ID_THEME:
+ dumpFrHeader( true, true );
+ dumpDec< sal_uInt32 >( "theme-version", "THEME-VERSION" );
+ break;
+
case BIFF_ID_TXO:
dumpHex< sal_uInt16 >( "flags", "TXO-FLAGS" );
dumpDec< sal_uInt16 >( "orientation", "TEXTORIENTATION" );
@@ -2813,6 +2938,21 @@ void WorkbookStreamObject::implDumpRecordBody()
case BIFF5_ID_XF:
dumpXfRec();
break;
+
+ case BIFF_ID_XFCRC:
+ dumpFrHeader( true, true );
+ dumpUnused( 2 );
+ dumpDec< sal_uInt16 >( "xf-count" );
+ dumpHex< sal_uInt32 >( "xf-checksum" );
+ break;
+
+ case BIFF_ID_XFEXT:
+ dumpFrHeader( true, true );
+ dumpUnused( 2 );
+ dumpXfIdx( "xf-idx" );
+ dumpUnused( 2 );
+ dumpXfExtProp();
+ break;
}
}
@@ -2851,12 +2991,12 @@ sal_uInt16 WorkbookStreamObject::dumpColorIdx( const String& rName, bool b16Bit
sal_uInt16 WorkbookStreamObject::dumpFontIdx( const String& rName, bool b16Bit )
{
- return dumpDec< sal_uInt16, sal_uInt8 >( b16Bit, rName( "font-idx" ), "FONTNAMES" );
+ return dumpDec< sal_uInt16, sal_uInt8 >( b16Bit, rName( "font-idx" ), mxFontNames );
}
sal_uInt16 WorkbookStreamObject::dumpFormatIdx( const String& rName )
{
- return dumpDec< sal_uInt16, sal_uInt8 >( getBiff() >= BIFF5, rName( "fmt-idx" ), "FORMATS" );
+ return dumpDec< sal_uInt16, sal_uInt8 >( getBiff() >= BIFF5, rName( "fmt-idx" ), mxFormats );
}
sal_uInt16 WorkbookStreamObject::dumpXfIdx( const String& rName, bool bBiff2Style )
@@ -2874,6 +3014,54 @@ sal_uInt16 WorkbookStreamObject::dumpXfIdx( const String& rName, bool bBiff2Styl
return nXfIdx;
}
+void WorkbookStreamObject::dumpExtColorValue( sal_uInt32 nColorType )
+{
+ switch( nColorType )
+ {
+ case 0: dumpUnused( 4 ); break;
+ case 1: dumpDec< sal_uInt32 >( "color-idx", mxColors ); break;
+ case 2: dumpColorABGR(); break;
+ case 3: dumpDec< sal_uInt32 >( "theme-id" ); break;
+ case 4: dumpUnused( 4 ); break;
+ default: dumpUnknown( 4 );
+ }
+}
+
+void WorkbookStreamObject::dumpExtColor( const String& rName )
+{
+ MultiItemsGuard aMultiGuard( out() );
+ writeEmptyItem( rName( "color" ) );
+ switch( extractValue< sal_uInt8 >( dumpDec< sal_uInt8 >( "flags", "EXTCOLOR-FLAGS" ), 1, 7 ) )
+ {
+ case 0: dumpUnused( 1 ); break;
+ case 1: dumpColorIdx( "color-idx", false ); break;
+ case 2: dumpUnused( 1 ); break;
+ case 3: dumpDec< sal_uInt8 >( "theme-id" ); break;
+ case 4: dumpUnused( 1 ); break;
+ default: dumpUnknown( 1 );
+ }
+ dumpDec< sal_Int16 >( "tint", "CONV-TINT" );
+ dumpColorABGR();
+}
+
+void WorkbookStreamObject::dumpExtCfColor( const String& rName )
+{
+ MultiItemsGuard aMultiGuard( out() );
+ writeEmptyItem( rName( "color" ) );
+ dumpExtColorValue( dumpExtColorType< sal_uInt32 >() );
+ dumpDec< double >( "tint", "CONV-FLOAT-TO-PERC" );
+}
+
+void WorkbookStreamObject::dumpExtGradientHead()
+{
+ dumpDec< sal_Int32 >( "gradient-type", "EXTGRADIENT-TYPE" );
+ dumpDec< double >( "linear-angle" );
+ dumpDec< double >( "pos-left" );
+ dumpDec< double >( "pos-right" );
+ dumpDec< double >( "pos-top" );
+ dumpDec< double >( "pos-bottom" );
+}
+
OUString WorkbookStreamObject::dumpPivotString( const String& rName, sal_uInt16 nStrLen )
{
OUString aString;
@@ -2910,6 +3098,285 @@ void WorkbookStreamObject::dumpBoolErr()
writeBooleanItem( "boolean", nValue );
}
+void WorkbookStreamObject::dumpCfRuleProp()
+{
+ BiffInputStream& rStrm = getBiffStream();
+ sal_uInt32 nFlags1 = dumpHex< sal_uInt32 >( "flags-1", "CFRULE-FLAGS1" );
+ sal_uInt16 nFlags2 = dumpHex< sal_uInt16 >( "flags-2", "CFRULE-FLAGS2" );
+ if( getFlag< sal_uInt32 >( nFlags1, 0x02000000 ) )
+ {
+ writeEmptyItem( "numfmt-block" );
+ IndentGuard aIndGuard( out() );
+ if( getFlag< sal_uInt16 >( nFlags2, 0x0001 ) )
+ {
+ dumpDec< sal_uInt16 >( "size" );
+ dumpUniString( "numfmt" );
+ }
+ else
+ {
+ dumpUnused( 1 );
+ dumpDec< sal_uInt8 >( "fmt-idx", mxFormats );
+ }
+ }
+ if( getFlag< sal_uInt32 >( nFlags1, 0x04000000 ) )
+ {
+ writeEmptyItem( "font-block" );
+ IndentGuard aIndGuard( out() );
+ sal_Int64 nRecPos = rStrm.tell();
+ dumpUniString( "name", BIFF_STR_8BITLENGTH );
+ dumpUnused( static_cast< sal_Int32 >( nRecPos + 64 - rStrm.tell() ) );
+ dumpDec< sal_Int32 >( "height", "CONV-TWIP-TO-PT" );
+ dumpHex< sal_uInt32 >( "flags", "CFRULE-FONTFLAGS" );
+ dumpDec< sal_Int16 >( "weight", "CFRULE-FONTWEIGHT" );
+ dumpDec< sal_Int16 >( "escapement", "CFRULE-FONTESCAPEMENT" );
+ dumpDec< sal_Int8 >( "underline", "CFRULE-FONTUNDERLINE" );
+ dumpDec< sal_uInt8 >( "family", "FONT-FAMILY" );
+ dumpDec< sal_uInt8 >( "charset", "CHARSET" );
+ dumpUnused( 1 );
+ dumpDec< sal_Int32 >( "color", "CFRULE-FONTCOLOR" );
+ dumpUnused( 4 );
+ dumpHex< sal_uInt32 >( "used-flags", "CFRULE-FONTUSEDFLAGS" );
+ dumpDec< sal_uInt32 >( "escapement-used", "CFRULE-FONTUSED" );
+ dumpDec< sal_uInt32 >( "underline-used", "CFRULE-FONTUSED" );
+ dumpDec< sal_uInt32 >( "weight-used", "CFRULE-FONTUSED" );
+ dumpUnused( 4 );
+ dumpDec< sal_Int32 >( "first-char" );
+ dumpDec< sal_Int32 >( "char-count" );
+ dumpDec< sal_uInt16 >( "font-idx" );
+ }
+ if( getFlag< sal_uInt32 >( nFlags1, 0x08000000 ) )
+ {
+ writeEmptyItem( "alignment-block" );
+ IndentGuard aIndGuard( out() );
+ dumpHex< sal_uInt8 >( "alignent", "CFRULE-ALIGNMENT" );
+ dumpHex< sal_uInt8 >( "rotation", "TEXTROTATION" );
+ dumpHex< sal_uInt16 >( "indent", "CFRULE-INDENT" );
+ dumpDec< sal_Int32 >( "relative-indent" );
+ }
+ if( getFlag< sal_uInt32 >( nFlags1, 0x10000000 ) )
+ {
+ writeEmptyItem( "border-block" );
+ IndentGuard aIndGuard( out() );
+ dumpHex< sal_uInt16 >( "border-style", "XF-BORDERSTYLE" );
+ dumpHex< sal_uInt16 >( "border-color1", "XF-BORDERCOLOR1" );
+ dumpHex< sal_uInt32 >( "border-color2", "CFRULE-BORDERCOLOR2" );
+ }
+ if( getFlag< sal_uInt32 >( nFlags1, 0x20000000 ) )
+ {
+ writeEmptyItem( "pattern-block" );
+ IndentGuard aIndGuard( out() );
+ dumpHex< sal_uInt32 >( "pattern", "CFRULE-FILLBLOCK" );
+ }
+ if( getFlag< sal_uInt32 >( nFlags1, 0x40000000 ) )
+ {
+ writeEmptyItem( "protection-block" );
+ IndentGuard aIndGuard( out() );
+ dumpHex< sal_uInt16 >( "flags", "CFRULE-PROTECTION-FLAGS" );
+ }
+}
+
+void WorkbookStreamObject::dumpXfExtProp()
+{
+ BiffInputStream& rStrm = getBiffStream();
+ for( sal_uInt16 nIndex = 0, nCount = dumpDec< sal_uInt16 >( "subrec-count" ); !rStrm.isEof() && (nIndex < nCount); ++nIndex )
+ {
+ out().startMultiItems();
+ sal_Int64 nStartPos = rStrm.tell();
+ writeEmptyItem( "SUBREC" );
+ sal_uInt16 nSubRecId = dumpDec< sal_uInt16 >( "id", "XFEXT-SUBREC" );
+ sal_uInt16 nSubRecSize = dumpDec< sal_uInt16 >( "size" );
+ sal_Int64 nEndPos = nStartPos + nSubRecSize;
+ out().endMultiItems();
+ IndentGuard aIndGuard( out() );
+ switch( nSubRecId )
+ {
+ case 4: case 5: case 7: case 8: case 9: case 10: case 11: case 13:
+ {
+ sal_uInt16 nColorType = dumpExtColorType< sal_uInt16 >();
+ dumpDec< sal_Int16 >( "tint", "CONV-TINT" );
+ dumpExtColorValue( nColorType );
+ dumpUnused( 8 );
+ }
+ break;
+ case 6:
+ dumpExtGradientHead();
+ out().resetItemIndex();
+ for( sal_Int32 nStop = 0, nStopCount = dumpDec< sal_Int32 >( "stop-count" ); (nStop < nStopCount) && !in().isEof(); ++nStop )
+ {
+ writeEmptyItem( "#stop" );
+ IndentGuard aIndGuard2( out() );
+ sal_uInt16 nColorType = dumpExtColorType< sal_uInt16 >();
+ dumpExtColorValue( nColorType );
+ dumpDec< double >( "stop-pos" );
+ dumpDec< double >( "tint", "CONV-FLOAT-TO-PERC" );
+ }
+ break;
+ case 14:
+ dumpDec< sal_Int8 >( "font-scheme", "EXTFONT-SCHEME" );
+ break;
+ case 15:
+ dumpDec< sal_uInt16 >( "indent" );
+ break;
+ }
+ dumpRemainingTo( nEndPos );
+ }
+}
+
+void WorkbookStreamObject::dumpDxfProp()
+{
+ BiffInputStream& rStrm = getBiffStream();
+ dumpUnused( 2 );
+ for( sal_uInt16 nIndex = 0, nCount = dumpDec< sal_uInt16 >( "subrec-count" ); !rStrm.isEof() && (nIndex < nCount); ++nIndex )
+ {
+ out().startMultiItems();
+ sal_Int64 nStartPos = rStrm.tell();
+ writeEmptyItem( "SUBREC" );
+ sal_uInt16 nSubRecId = dumpDec< sal_uInt16 >( "id", "DXF-SUBREC" );
+ sal_uInt16 nSubRecSize = dumpDec< sal_uInt16 >( "size" );
+ sal_Int64 nEndPos = nStartPos + nSubRecSize;
+ out().endMultiItems();
+ IndentGuard aIndGuard( out() );
+ switch( nSubRecId )
+ {
+ case 0:
+ dumpDec< sal_uInt8 >( "pattern", mxFillPatterns );
+ break;
+ case 1: case 2: case 5:
+ dumpExtColor();
+ break;
+ case 3:
+ dumpExtGradientHead();
+ break;
+ case 4:
+ dumpDec< sal_uInt16 >( "index" );
+ dumpDec< double >( "stop-position" );
+ dumpExtColor( "stop-color" );
+ break;
+ case 6: case 7: case 8: case 9: case 10: case 11: case 12:
+ dumpExtColor( "color" );
+ dumpDec< sal_uInt16 >( "style", mxBorderStyles );
+ break;
+ case 13: case 14:
+ dumpBoolean( "value" );
+ break;
+ case 15:
+ dumpDec< sal_uInt8 >( "alignment", "XF-HORALIGN" );
+ break;
+ case 16:
+ dumpDec< sal_uInt8 >( "alignment", "XF-VERALIGN" );
+ break;
+ case 17:
+ dumpDec< sal_uInt8 >( "rotation", "TEXTROTATION" );
+ break;
+ case 18:
+ dumpDec< sal_uInt16 >( "indent" );
+ break;
+ case 19:
+ dumpDec< sal_uInt8 >( "text-dir", "XF-TEXTDIRECTION" );
+ break;
+ case 20: case 21: case 22: case 23:
+ dumpBoolean( "value" );
+ break;
+ case 24:
+ dumpUnicodeArray( "name", rStrm.readuInt16() );
+ break;
+ case 25:
+ dumpDec< sal_uInt16 >( "weight", "FONT-WEIGHT" );
+ break;
+ case 26:
+ dumpDec< sal_uInt16 >( "underline", "FONT-UNDERLINE" );
+ break;
+ case 27:
+ dumpDec< sal_uInt16 >( "escapement", "FONT-ESCAPEMENT" );
+ break;
+ case 28: case 29: case 30: case 31: case 32: case 33:
+ dumpBoolean( "value" );
+ break;
+ case 34:
+ dumpDec< sal_uInt8 >( "charset", "CHARSET" );
+ break;
+ case 35:
+ dumpDec< sal_uInt8 >( "family", "FONT-FAMILY" );
+ break;
+ case 36:
+ dumpDec< sal_Int32 >( "height", "CONV-TWIP-TO-PT" );
+ break;
+ case 37:
+ dumpDec< sal_uInt8 >( "scheme", "EXTFONT-SCHEME" );
+ break;
+ case 38:
+ dumpUnicodeArray( "numfmt", rStrm.readuInt16() );
+ break;
+ case 41:
+ dumpDec< sal_uInt16 >( "fmt-idx", mxFormats );
+ break;
+ case 42:
+ dumpDec< sal_Int16 >( "relative-indent" );
+ break;
+ case 43: case 44:
+ dumpBoolean( "value" );
+ break;
+ }
+ dumpRemainingTo( nEndPos );
+ }
+}
+
+void WorkbookStreamObject::dumpDxf12Prop()
+{
+ BiffInputStream& rStrm = getBiffStream();
+ writeEmptyItem( "dxf-data" );
+ IndentGuard aIndGuard( out() );
+ sal_uInt32 nSize = dumpDec< sal_uInt32 >( "dxf-size" );
+ if( nSize == 0 )
+ {
+ dumpUnused( 2 );
+ }
+ else
+ {
+ sal_Int64 nEndPos = rStrm.tell() + nSize;
+ dumpCfRuleProp();
+ if( rStrm.tell() + 8 <= nEndPos )
+ {
+ dumpUnused( 6 );
+ dumpXfExtProp();
+ }
+ dumpRemainingTo( nEndPos );
+ }
+}
+
+void WorkbookStreamObject::dumpCfRule12Param( sal_uInt16 nSubType )
+{
+ sal_uInt8 nSize = dumpDec< sal_uInt8 >( "params-size" );
+ sal_Int64 nEndPos = getBiffStream().tell() + nSize;
+ {
+ writeEmptyItem( "params" );
+ IndentGuard aIndGuard( out() );
+ switch( nSubType )
+ {
+ case 5:
+ dumpHex< sal_uInt8 >( "flags", "CFRULE12-TOP10-FLAGS" );
+ dumpDec< sal_uInt16 >( "rank" );
+ dumpUnused( 13 );
+ break;
+ case 8:
+ dumpDec< sal_uInt16 >( "operator", "CFRULE12-TEXT-OPERATOR" );
+ dumpUnused( 14 );
+ break;
+ case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24:
+ dumpDec< sal_uInt16 >( "operator", "CFRULE12-DATE-OPERATOR" );
+ dumpUnused( 14 );
+ break;
+ case 25: case 26: case 29: case 30:
+ dumpDec< sal_uInt16 >( "std-dev" );
+ dumpUnused( 14 );
+ break;
+ default:
+ dumpUnused( 16 );
+ }
+ }
+ dumpRemainingTo( nEndPos );
+}
+
void WorkbookStreamObject::dumpFontRec()
{
sal_uInt16 nFontId = getBiffData().getFontCount();
diff --git a/oox/source/dump/biffdumper.ini b/oox/source/dump/biffdumper.ini
index 83dfd0d71b68..618e89c996e0 100644
--- a/oox/source/dump/biffdumper.ini
+++ b/oox/source/dump/biffdumper.ini
@@ -29,6 +29,7 @@ merge-continue-record=1
unitconverter=CONV-PERCENT-NEG,-1,%
unitconverter=CONV-COLWIDTH,/256,chars
+unitconverter=CONV-TINT,/327.67,%
shortlist=BIFF,0,biff2,biff3,biff4,biff5,biff8
@@ -42,30 +43,57 @@ constlist=ERRORCODES
0x2A=#N/A
end
-shortlist=EGA-COLORS,0,ega-black,ega-white,ega-red,ega-green,ega-blue,ega-yellow,ega-magenta,ega-cyan
+shortlist=WINDOWS-PALETTE-0,0,black,white,red,green,blue,yellow,magenta,cyan
+shortlist=WINDOWS-PALETTE-8,8,black,white,red,green,blue,yellow,magenta,cyan
+shortlist=WINDOWS-PALETTE-16,16,dark-red,dark-green,dark-blue,dark-yellow,dark-magenta,dark-cyan,light-grey,dark-grey
-constlist=COLORS-BIFF2
- include=EGA-COLORS
- default=
- 24=sys-window-text
- 25=sys-window-bg
+multilist=WINDOWS-SYSCOLORS-BIFF2
+ 24=sys-window-text,sys-window-bg
0x7FFF=sys-window-text
end
-constlist=COLORS-BIFF5
- include=EGA-COLORS
- default=
- 64=sys-window-text
- 65=sys-window-bg
- 67=sys-button-face
- 77=sys-window-text-chart
- 78=sys-window-bg-chart
- 79=auto-border-chart
- 80=sys-tooltip-bg
- 81=sys-tooltip-text
+multilist=WINDOWS-SYSCOLORS-BIFF5
+ 64=sys-window-text,sys-window-bg,,sys-button-face
+ 77=sys-window-text-chart,sys-window-bg-chart,auto-border-chart,sys-tooltip-bg,sys-tooltip-text
0x7FFF=sys-window-text
end
+constlist=COLORS-BIFF2
+ include=WINDOWS-PALETTE-0
+ include=WINDOWS-SYSCOLORS-BIFF2
+end
+
+constlist=COLORS-BIFF3
+ include=WINDOWS-PALETTE-0
+ include=WINDOWS-PALETTE-8
+ include=WINDOWS-PALETTE-16
+ include=WINDOWS-SYSCOLORS-BIFF2
+end
+
+multilist=COLORS-BIFF5
+ include=WINDOWS-PALETTE-0
+ include=WINDOWS-PALETTE-8
+ include=WINDOWS-PALETTE-16
+ 24=0x8080FF,0x802060,0xFFFFC0,0xA0E0E0,0x600080,0xFF8080,0x0080C0,0xC0C0FF
+ 32=0x000080,0xFF00FF,0xFFFF00,0x00FFFF,0x800080,0x800000,0x008080,0x0000FF
+ 40=0x00CFFF,0x69FFFF,0xE0FFE0,0xFFFF80,0xA6CAF0,0xDD9CB3,0xB38FEE,0xE3E3E3
+ 48=0x2A6FF9,0x3FB8CD,0x488436,0x958C41,0x8E5E42,0xA0627A,0x624FAC,0x969696
+ 56=0x1D2FBE,0x286676,0x004500,0x453E01,0x6A2813,0x85396A,0x4A3285,0x424242
+ include=WINDOWS-SYSCOLORS-BIFF5
+end
+
+multilist=COLORS-BIFF8
+ include=WINDOWS-PALETTE-0
+ include=WINDOWS-PALETTE-8
+ include=WINDOWS-PALETTE-16
+ 24=0x9999FF,0x993366,0xFFFFCC,0xCCFFFF,0x660066,0xFF8080,0x0066CC,0xCCCCFF
+ 32=0x000080,0xFF00FF,0xFFFF00,0x00FFFF,0x800080,0x800000,0x008080,0x0000FF
+ 40=0x00CCFF,0xCCFFFF,0xCCFFCC,0xFFFF99,0x99CCFF,0xFF99CC,0xCC99FF,0xFFCC99
+ 48=0x3366FF,0x33CCCC,0x99CC00,0xFFCC00,0xFF9900,0xFF6600,0x666699,0x969696
+ 56=0x003366,0x339966,0x003300,0x333300,0x993300,0x993366,0x333399,0x333333
+ include=WINDOWS-SYSCOLORS-BIFF5
+end
+
shortlist=BORDERSTYLES-BIFF3,0,none,thin,medium,dash,dot,thick,double,hair
multilist=BORDERSTYLES-BIFF8
@@ -130,6 +158,17 @@ flagslist=FR-FLAGS
0x0002=alert-unsupported
end
+shortlist=EXTCOLOR-TYPE,0,auto,indexed,rgb,theme,n/a
+
+combilist=EXTCOLOR-FLAGS
+ 0x01=rgb-valid
+ 0xFE=uint8,dec,type,EXTCOLOR-TYPE
+end
+
+shortlist=EXTGRADIENT-TYPE,0,linear,path
+
+shortlist=EXTFONT-SCHEME,-1,n/a,none,major,minor
+
# DFF ------------------------------------------------------------------------
flagslist=DFF-CLIENTANCHOR-FLAGS
@@ -265,7 +304,7 @@ multilist=RECORD-NAMES-BIFF3
0x0088=EDG,PUB,NOTEOFF,LH,COUNTRY,HIDEOBJ,,
0x0090=SORT,SUB,PALETTE,,LHRECORD,LHNGRAPH,,
0x0200=,,,,,,FORMULA,STRING
- 0x0208=ROW,BOF,,INDEX,,,,
+ 0x0208=ROW,BOF,,,,,,
0x0218=DEFINEDNAME
0x0221=ARRAY
0x0223=EXTERNALNAME
@@ -308,13 +347,14 @@ multilist=RECORD-NAMES-BIFF5
0x0098=,,,FILTERMODE,,AUTOFILTERINFO,AUTOFILTER,
0x00A8=,,,,,,SCENARIOS,SCENARIO
0x00B0=PTDEFINITION,PTFIELD,PTFITEM,,PTROWCOLFIELDS,PTROWCOLITEMS,PTPAGEFIELDS,
- 0x00B8=DOCROUTE,RECIPNAME,,,SHAREDFMLA,MULTRK,MULTBLANK,TOOLBARHDR
+ 0x00B8=DOCROUTE,RECIPNAME,,,,MULTRK,MULTBLANK,TOOLBARHDR
0x00C0=TOOLBAREND,MMS,ADDMENU,DELMENU,,PTDATAFIELD,PCDEFINITION,PCDFIELD
0x00C8=PCITEM_INDEXLIST,PCITEM_DOUBLE,PCITEM_BOOL,PCITEM_ERROR,PCITEM_INTEGER,PCITEM_STRING,PCITEM_DATE,PCITEM_MISSING
0x00D0=SXTBL,SXTBRGITEM,SXTBPG,OBPROJ,,PIVOTCACHE,RSTRING,DBCELL
0x00D8=PCDFRANGEPR,PCDFDISCRETEPR,BOOKBOOL,REVERT,SXEXT|PARAMQRY,SCENPROTECT,OLESIZE,UDDESC
0x00E0=XF,INTERFACEHDR,INTERFACEEND,PCDSOURCE,,,,
0x0206=FORMULA
+ 0x04BC=SHAREDFMLA
# chart records
exclude=0x1004,0x102D,0x102F,0x1036,0x1037,0x1038,0x103B
0x1040=CHRADARAREA,CHAXESSET,,CHLEGENDENTRY,CHPROPERTIES,CHSERGROUP,CHUSEDAXESSETS,
@@ -342,13 +382,17 @@ multilist=RECORD-NAMES-BIFF8
0x01A8=,USERBVIEW,USERSVIEWBEGIN,USERSVIEWEND,,QSI,EXTERNALBOOK,PROT4REV
0x01B0=CFHEADER,CFRULE,DATAVALIDATIONS,,,DCONBINAME,TXO,REFRESHALL
0x01B8=HYPERLINK,NLRDELNAME,CODENAME,PCDFSQLTYPE,PROT4REVPASS,,DATAVALIDATION,
- 0x01C0=XL9FILE,,,,,,,
+ 0x01C0=XL9FILE,RECALCID,INTCACHEDDATA,,,,,
0x0800=SCREENTIP,,,WEBQRYSETTINGS,WEBQRYTABLES,,,
0x0850=CHFRINFO,CHFRWRAPPER,CHFRBLOCKBEGIN,CHFRBLOCKEND,,,,CHFRUNITPROPS
0x0858=CHPIVOTREF,CHPIVOTFLAGS,,,,,,
- 0x0860=,,SHEETLAYOUT,,,,,SHEETPROTECTION
+ 0x0860=,,SHEETEXT,BOOKEXT,,,,SHAREDFEATHEAD
0x0868=,,,CHFRLABELPROPS,,,,
- 0x0890=,,STYLEEXT,,,,,
+ 0x0878=,,CFRULE12,CFRULEEXT,XFCRC,XFEXT,,
+ 0x0888=,,,PAGELAYOUTVIEW,CHECKCOMPAT,DXF,TABLESTYLES,
+ 0x0890=,,STYLEEXT,,,,THEME,
+ 0x0898=,,MTHREADSETTINGS,COMPRESSPICS,HEADERFOOTER,,,
+ 0x08A0=,,,FORCEFULLCALC,,,,
# chart records
0x1058=,,,,,,,CH3DDATAFORMAT
0x1060=CHFONTBASE,CHPIEEXT,CHLABELRANGE2,CHDATATABLE,CHPLOTGROWTH,CHSERINDEX,CHESCHERFORMAT,CHPIEEXTSETT
@@ -476,7 +520,7 @@ constlist=BOF-SHEETTYPE
0x0100=workspace
end
-shortlist=BOF-EXCELVERSION,0,excel-97,excel-2000,excel-2002,excel-2003,excel-2007
+shortlist=BOF-EXCELVERSION,0,excel-97,excel-2000,excel-2002,excel-2003,excel-2007,,excel-2010
shortlist=BOF-LOWESTVERSION-BIFF,6,biff8
combilist=BOF-HISTORY-FLAGS
@@ -499,17 +543,50 @@ combilist=BOF-LOWESTVERSION-FLAGS
0x00000F00=uint8,dec,version-saved,BOF-EXCELVERSION
end
+# BOOKEXT --------------------------------------------------------------------
+
+combilist=BOOKEXT-FLAGS1
+ 0x00000001=no-auto-recover
+ 0x00000002=hide-pivot-list
+ 0x00000004=filter-privacy
+ 0x00000008=embed-smarttags
+ 0x00000030=uint8,dec,display-smarttags,BOOKEXT-DISPLAY-SMARTTAGS
+ 0x00000040=saved-on-recovery
+ 0x00000080=minimal-save
+ 0x00000100=opened-on-recovery
+ 0x00000200=opened-in-save-mode
+end
+
+shortlist=BOOKEXT-DISPLAY-SMARTTAGS,0,button-and-indicator,button,nothing
+
+flagslist=BOOKEXT-FLAGS2
+ 0x01=warn-smart-doc-manifest
+ 0x02=show-inc-annotations
+end
+
+flagslist=BOOKEXT-FLAGS3
+ 0x02=!all-published!selected-items-published
+ 0x04=show-pivot-chart-filter
+end
+
# CALCMODE -------------------------------------------------------------------
shortlist=CALCMODE,-1,automatic-no-table,manual,automatic
+# CFHEADER -------------------------------------------------------------------
+
+combilist=CFHEADER-FLAGS
+ 0x0001=complex
+ 0xFFFE=uint16,dec,id
+end
+
# CFRULE ---------------------------------------------------------------------
shortlist=CFRULE-TYPE,1,value,formula
shortlist=CFRULE-OPERATOR,0,none,between,not-between,equal,not-equal,greater-than,less-than,greater-equal,less-equal
-flagslist=CFRULE-FLAGS
- ignore=0x00380080
+flagslist=CFRULE-FLAGS1
+ ignore=0x00200000
0x00000001=!hor-align-used
0x00000002=!vert-align-used
0x00000004=!text-wrap-used
@@ -517,6 +594,7 @@ flagslist=CFRULE-FLAGS
0x00000010=!justify-lastline-used
0x00000020=!indent-used
0x00000040=!shrinktofit-used
+ 0x00000080=!cell-merged-used
0x00000100=!cell-locked-used
0x00000200=!cell-hidden-used
0x00000400=!left-border-used
@@ -528,6 +606,9 @@ flagslist=CFRULE-FLAGS
0x00010000=!fill-pattern-used
0x00020000=!fg-color-idx-used
0x00040000=!bg-color-idx-used
+ 0x00080000=!fmt-idx-used
+ 0x00100000=!def-font-used
+ 0x02000000=numfmt-block
0x04000000=font-block
0x08000000=alignment-block
0x10000000=border-block
@@ -536,6 +617,13 @@ flagslist=CFRULE-FLAGS
0x80000000=!text-dir-used
end
+flagslist=CFRULE-FLAGS2
+ ignore=0x0002
+ 0x0001=!numfmt-id!numfmt-string
+ 0x0004=outline-border
+ 0x8000=use-text-dir
+end
+
combilist=CFRULE-ALIGNMENT
0x07=uint8,dec,hor-align,XF-HORALIGN
0x08=text-wrap
@@ -546,6 +634,7 @@ end
combilist=CFRULE-INDENT
0x000F=uint8,dec,indent
0x0010=shrink-to-fit
+ 0x0020=cell-merged
0x00C0=uint8,dec,text-dir,XF-TEXTDIRECTION
end
@@ -558,7 +647,28 @@ flagslist=CFRULE-FONTFLAGS
0x00000080=strikeout
end
+constlist=CFRULE-FONTWEIGHT
+ include=FONT-WEIGHT
+ -1=unused
+end
+
+constlist=CFRULE-FONTESCAPEMENT
+ include=FONT-ESCAPEMENT
+ -1=unused
+end
+
+constlist=CFRULE-FONTUNDERLINE
+ include=FONT-UNDERLINE
+ -1=unused
+end
+
+constlist=CFRULE-FONTCOLOR
+ include=COLORS-BIFF8
+ -1=unused
+end
+
flagslist=CFRULE-FONTUSEDFLAGS
+ ignore=0xFFFFFF00
0x00000002=!italic-used
0x00000008=!outline-used
0x00000010=!shadow-used
@@ -590,6 +700,36 @@ flagslist=CFRULE-PROTECTION-FLAGS
0x0002=formula-hidden
end
+# CFRULE12 -------------------------------------------------------------------
+
+shortlist=CFRULE12-TYPE,1,cell-is,expression,color-scale,data-bar,top-ten,icon-set
+
+flagslist=CFRULE12-FLAGS
+ 0x0002=stop-if-true
+end
+
+multilist=CFRULE12-SUBTYPE
+ 0=cell-is,expression,color-scale,data-bar,icon-set,top-ten,,unique-values,contains-text,contains-blanks
+ 10=not-contains-blanks,contains-errors,not-contains-errors,,,today,tomorrow,yesterday,last-7-days,last-month
+ 20=next-month,this-week,next-week,last-week,this-month,above-average,below-average,duplicate-values,,equal-above-average
+ 30=equal-below-average
+end
+
+flagslist=CFRULE12-TOP10-FLAGS
+ 0x01=!bottom!top
+ 0x02=percent
+end
+
+shortlist=CFRULE12-TEXT-OPERATOR,0,contains,not-contains,begins-with,ends-with
+shortlist=CFRULE12-DATE-OPERATOR,0,today,yesterday,last-7-days,this-week,last-week,last-month,tomorrow,next-week,next-month,this-month
+
+# CFRULEEXT ------------------------------------------------------------------
+
+flagslist=CFRULEEXT-FLAGS
+ 0x0001=active
+ 0x0002=stop-if-true
+end
+
# CH3DDATAFORMAT -------------------------------------------------------------
shortlist=CH3DDATAFORMAT-BASE,0,rectangular,circular
@@ -1072,6 +1212,25 @@ flagslist=DEFROWHEIGHT-FLAGS-BIFF3
0x0008=thick-bottom
end
+# DXF ------------------------------------------------------------------------
+
+flagslist=DXF-FLAGS
+ 0x0001=!swap-fg-bg-color
+ 0x0002=use-internal-borders
+end
+
+multilist=DXF-SUBREC
+ 0=FILL-PATTERN,FILL-FGCOLOR,FILL-BGCOLOR,FILL-GRADIENT,FILL-STOP
+ 5=FONT-COLOR,BORDER-TOP,BORDER-BOTTOM,BORDER-LEFT,BORDER-RIGHT
+ 10=BORDER-DIAGONAL,BORDER-VERTICAL,BORDER-HORIZONTAL,BORDER-DIAGUP,BORDER-DIAGDOWN
+ 15=ALIGN-HORIZONTAL,ALIGN-VERTICAL,ALIGN-ROTATION,ALIGN-INDENT,ALIGN-READINGORDER
+ 20=ALIGN-WRAPTEXT,ALIGN-JUSTLASTLINE,ALIGN-SHRINKTOFIT,ALIGN-MERGED,FONT-NAME
+ 25=FONT-WEIGHT,FONT-UNDERLINE,FONT-ESCAPEMENT,FONT-ITALIC,FONT-STRIKE
+ 30=FONT-OUTLINE,FONT-SHADOW,FONT-CONDENSE,FONT-EXTEND,FONT-CHARSET
+ 35=FONT-PITCHFAMILY,FONT-HEIGHT,FONT-SCHEME,NUMFMT-CODE,
+ 40=,NUMFMT-ID,ALIGN-RELINDENT,PROT-LOCKED,PROT-HIDDEN
+end
+
# EXTERNALBOOK ---------------------------------------------------------------
constlist=EXTERNALBOOK-KEY
@@ -1146,6 +1305,20 @@ end
shortlist=FORMULA-RESULTTYPE,0,string,boolean,error,empty
+# GUTS -----------------------------------------------------------------------
+
+shortlist=GUTS-LEVELS,0,none,,1-level,2-levels,3-levels,4-levels,5-levels,6-levels,7-levels
+
+# HEADERFOOTER ---------------------------------------------------------------
+
+flagslist=HEADERFOOTER-FLAGS
+ ignore=0xFFF0
+ 0x0001=has-even-hf
+ 0x0002=has-first-hf
+ 0x0004=scale-with-sheet
+ 0x0008=align-with-margins
+end
+
# HIDEOBJ --------------------------------------------------------------------
shortlist=HIDEOBJ,0,show,placeholder,hide
@@ -1338,6 +1511,15 @@ flagslist=OBJCMO-FLAGS
0x4000=auto-area
end
+# PAGELAYOUTVIEW -------------------------------------------------------------
+
+flagslist=PAGELAYOUTVIEW-FLAGS
+ ignore=0xFFF8
+ 0x0001=page-layout-view
+ 0x0002=show-ruler
+ 0x0004=hide-margins
+end
+
# PAGESETUP ------------------------------------------------------------------
multilist=PAGESETUP-PAPERSIZE
@@ -1442,7 +1624,7 @@ shortlist=PHONETICPR-TYPE,0,halfwidth-katakana,fullwidth-katakana,hiragana,no-co
shortlist=PHONETICPR-ALIGNMENT,0,no-control,left,center,distributed
combilist=PHONETICPR-FLAGS
- ignore=0x0030
+ ignore=0xFFF0
0x0003=uint8,dec,type,PHONETICPR-TYPE
0x000C=uint8,dec,alignment,PHONETICPR-ALIGNMENT
end
@@ -1603,11 +1785,50 @@ combilist=ROW-FLAGS
0x40000000=show-phonetic
end
+# SHAREDFEATHEAD -------------------------------------------------------------
+
+shortlist=SHAREDFEATHEAD-TYPE,2,protection,ignored-formula-errors,smarttag,table
+
+flagslist=SHAREDFEATHEAD-PROT-FLAGS
+ 0x00000001=edit-object
+ 0x00000002=edit-scenario
+ 0x00000004=format-cell
+ 0x00000008=format-column
+ 0x00000010=format-row
+ 0x00000020=insert-column
+ 0x00000040=insert-row
+ 0x00000080=insert-hyperlink
+ 0x00000100=delete-column
+ 0x00000200=delete-row
+ 0x00000400=select-locked
+ 0x00000800=sort
+ 0x00001000=use-autofilter
+ 0x00002000=pivottable-report
+ 0x00004000=select-unlocked
+end
+
# SHEET ----------------------------------------------------------------------
shortlist=SHEET-STATE,0,visible,hidden,very-hidden
shortlist=SHEET-TYPE,0,worksheet,macrosheet,chartsheet,,,,vb-module
+# SHEETEXT -------------------------------------------------------------------
+
+combilist=SHEETEXT-FLAGS1
+ 0x0000007F=uint8,dec,color-idx,SHEETEXT-COLOR
+end
+
+constlist=SHEETEXT-COLOR
+ include=COLORS
+ 0x7F=undefined
+end
+
+combilist=SHEETEXT-FLAGS2
+ include=SHEETEXT-FLAGS1
+ 0x00000080=eval-cond-formats
+ 0x00000100=!published!unpublished
+end
+
# SHEETPR --------------------------------------------------------------------
shortlist=SHEETPR-WINDOWPOS,0,tiled,horizontal,vertical,cascaded
@@ -1636,26 +1857,6 @@ flagslist=SHEETPR-FLAGS-BIFF5
0x0010=dialog-sheet
end
-# SHEETPROTECTION ------------------------------------------------------------
-
-flagslist=SHEETPROTECTION-FLAGS
- 0x0001=edit-object
- 0x0002=edit-scenario
- 0x0004=format-cell
- 0x0008=format-column
- 0x0010=format-row
- 0x0020=insert-column
- 0x0040=insert-row
- 0x0080=insert-hyperlink
- 0x0100=delete-column
- 0x0200=delete-row
- 0x0400=select-locked
- 0x0800=sort
- 0x1000=use-autofilter
- 0x2000=pivottable-report
- 0x4000=select-unlocked
-end
-
# STYLE ----------------------------------------------------------------------
combilist=STYLE-FLAGS
@@ -1698,6 +1899,14 @@ end
shortlist=SXEXT-SOURCETYPE,1,odbc,dao,,webquery
+# THEME ----------------------------------------------------------------------
+
+constlist=THEME-VERSION
+ 0=custom
+ 123820=default
+ 124226=default
+end
+
# TXO ------------------------------------------------------------------------
combilist=TXO-FLAGS
@@ -1902,5 +2111,14 @@ combilist=CELL-XFSTYLE-BIFF2
include=XF-STYLEFLAGS-BIFF2
end
+# XFEXT ----------------------------------------------------------------------
+
+multilist=XFEXT-SUBREC
+ 0=,,,,FILL-FGCOLOR
+ 5=FILL-BGCOLOR,FILL-GRADIENT,BORDER-TOP-COLOR,BORDER-BOTTOM-COLOR,BORDER-LEFT-COLOR
+ 10=BORDER-RIGHT-COLOR,BORDER-DIAG-COLOR,,TEXT-COLOR,FONT-SCHEME
+ 15=INDENT
+end
+
# ============================================================================
diff --git a/oox/source/dump/dffdumper.cxx b/oox/source/dump/dffdumper.cxx
index 4cdf12985dbe..599687f5bd50 100644
--- a/oox/source/dump/dffdumper.cxx
+++ b/oox/source/dump/dffdumper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dffdumper.cxx,v $
- * $Revision: 1.3.22.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/dump/dumperbase.cxx b/oox/source/dump/dumperbase.cxx
index 8b8cd7e7392d..8e0e9a4e1225 100644
--- a/oox/source/dump/dumperbase.cxx
+++ b/oox/source/dump/dumperbase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dumperbase.cxx,v $
- * $Revision: 1.4.20.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -3192,20 +3189,6 @@ void RecordObjectBase::writeHeader()
// ============================================================================
-void SequenceRecordObjectBase::construct(
- const ObjectBase& rParent, const BinaryInputStreamRef& rxBaseStrm, const ::rtl::OUString& rSysFileName,
- const BinaryInputStreamRef& rxRecStrm, const String& rRecNames, const String& rSimpleRecs )
-{
- RecordObjectBase::construct( rParent, rxBaseStrm, rSysFileName, rxRecStrm, rRecNames, rSimpleRecs );
-}
-
-void SequenceRecordObjectBase::construct( const OutputObjectBase& rParent,
- const BinaryInputStreamRef& rxBaseStrm, const BinaryInputStreamRef& rxRecStrm,
- const String& rRecNames, const String& rSimpleRecs )
-{
- RecordObjectBase::construct( rParent, rxBaseStrm, rxRecStrm, rRecNames, rSimpleRecs );
-}
-
void SequenceRecordObjectBase::construct( const ObjectBase& rParent,
const BinaryInputStreamRef& rxBaseStrm, const ::rtl::OUString& rSysFileName,
const String& rRecNames, const String& rSimpleRecs )
diff --git a/oox/source/dump/dumperbase.ini b/oox/source/dump/dumperbase.ini
index 26ab682d0b9e..84d742c2b35f 100644
--- a/oox/source/dump/dumperbase.ini
+++ b/oox/source/dump/dumperbase.ini
@@ -367,6 +367,24 @@ constlist=CODEPAGES
65001=utf-8
end
+multilist=COUNTRY
+ 1=usa,canada,latin-america,,,,russia
+ 20=egypt
+ 30=greece,netherlands,belgium,france,spain,,hungary,,,italy
+ 40=,switzerland,,austria,uk,denmark,sweden,norway,poland,germany
+ 50=,,mexico,,,brazil
+ 60=,australia,,,new-zealand,,thailand
+ 80=,japan,korea,,vietnam,,china
+ 90=turkey
+ 210=,,,algeria,,,morocco,,libya
+ 350=,portugal,,,iceland,,,,finland
+ 420=czech
+ 880=,,,,,,taiwan
+ 960=,lebanon,jordan,syria,iraq,kuwait,saudi-arabia
+ 970=,uae,israel,,qatar
+ 980=,iran
+end
+
multilist=SYSTEMCOLOR
0x00=scrollbar,desktop,active-title,inactive-title,menu,window-back,window-frame,menu-text
0x08=window-text,active-title-text,active-border,inactive-border,app-workspace,highlight,highlight-text,button-face
diff --git a/oox/source/dump/makefile.mk b/oox/source/dump/makefile.mk
index 6c7fd2257a58..1e5f615675cc 100644
--- a/oox/source/dump/makefile.mk
+++ b/oox/source/dump/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4.20.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/dump/oledumper.cxx b/oox/source/dump/oledumper.cxx
index 65e04039d1fa..b7750d4113b8 100644
--- a/oox/source/dump/oledumper.cxx
+++ b/oox/source/dump/oledumper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: oledumper.cxx,v $
- * $Revision: 1.1.2.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1029,7 +1026,6 @@ void OcxLabelObject::implDumpShortProperties()
dumpSpecialEffectProperty< sal_uInt16 >( 0 );
dumpStreamProperty();
dumpUnicodeProperty();
- dumpBoolProperty();
dumpStreamProperty();
}
diff --git a/oox/source/dump/pptxdumper.cxx b/oox/source/dump/pptxdumper.cxx
index 0e04cb821d4a..e58991dbecc9 100644
--- a/oox/source/dump/pptxdumper.cxx
+++ b/oox/source/dump/pptxdumper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptxdumper.cxx,v $
- * $Revision: 1.3.20.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/dump/xlsbdumper.cxx b/oox/source/dump/xlsbdumper.cxx
index 3db91fd7383d..a9674951225b 100644
--- a/oox/source/dump/xlsbdumper.cxx
+++ b/oox/source/dump/xlsbdumper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xlsbdumper.cxx,v $
- * $Revision: 1.4.20.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1130,16 +1127,16 @@ void RecordStreamObject::implDumpRecordBody()
case 0: dumpDec< sal_Int32 >( "operator", "CFRULE-CELL-OPERATOR" ); break;
case 5: dumpDec< sal_Int32 >( "rank" ); break;
case 8: dumpDec< sal_Int32 >( "operator", "CFRULE-TEXT-OPERATOR" ); break;
- case 15: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 16: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 17: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 18: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 19: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 20: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 21: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 22: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 23: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
- case 24: dumpDec< sal_Int32 >( "operator", "CFRULE-TIME-OPERATOR" ); break;
+ case 15: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 16: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 17: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 18: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 19: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 20: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 21: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 22: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 23: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
+ case 24: dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
case 25: dumpDec< sal_Int32 >( "std-dev" ); break;
case 26: dumpDec< sal_Int32 >( "std-dev" ); break;
case 29: dumpDec< sal_Int32 >( "std-dev" ); break;
@@ -1306,38 +1303,22 @@ void RecordStreamObject::implDumpRecordBody()
case 0:
dumpDec< sal_uInt8 >( "pattern", "FILLPATTERNS" );
break;
- case 1:
- case 2:
+ case 1: case 2: case 5:
dumpColor();
break;
case 3:
- dumpDec< sal_Int32 >( "gradient-type", "FILL-GRADIENTTYPE" );
- dumpDec< double >( "linear-angle" );
- dumpDec< double >( "pos-left" );
- dumpDec< double >( "pos-right" );
- dumpDec< double >( "pos-top" );
- dumpDec< double >( "pos-bottom" );
+ dumpGradientHead();
break;
case 4:
dumpDec< sal_uInt16 >( "index" );
dumpDec< double >( "stop-position" );
dumpColor( "stop-color" );
break;
- case 5:
- dumpColor();
- break;
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
+ case 6: case 7: case 8: case 9: case 10: case 11: case 12:
dumpColor( "color" );
dumpDec< sal_uInt16 >( "style", "BORDERSTYLES" );
break;
- case 13:
- case 14:
+ case 13: case 14:
dumpBoolean( "value" );
break;
case 15:
@@ -1355,9 +1336,7 @@ void RecordStreamObject::implDumpRecordBody()
case 19:
dumpDec< sal_uInt8 >( "text-dir", "XF-TEXTDIRECTION" );
break;
- case 20:
- case 21:
- case 22:
+ case 20: case 21: case 22:
dumpBoolean( "value" );
break;
case 24:
@@ -1372,12 +1351,7 @@ void RecordStreamObject::implDumpRecordBody()
case 27:
dumpDec< sal_uInt16 >( "escapement", "FONT-ESCAPEMENT" );
break;
- case 28:
- case 29:
- case 30:
- case 31:
- case 32:
- case 33:
+ case 28: case 29: case 30: case 31: case 32: case 33:
dumpBoolean( "value" );
break;
case 34:
@@ -1399,10 +1373,9 @@ void RecordStreamObject::implDumpRecordBody()
dumpDec< sal_uInt16 >( "numfmt-id" );
break;
case 42:
- dumpDec< sal_uInt16 >( "relative-indent" );
+ dumpDec< sal_Int16 >( "relative-indent" );
break;
- case 43:
- case 44:
+ case 43: case 44:
dumpBoolean( "value" );
break;
}
@@ -1503,12 +1476,7 @@ void RecordStreamObject::implDumpRecordBody()
dumpDec< sal_Int32 >( "fill-pattern", "FILLPATTERNS" );
dumpColor( "fg-color" );
dumpColor( "bg-color" );
- dumpDec< sal_Int32 >( "gradient-type", "FILL-GRADIENTTYPE" );
- dumpDec< double >( "linear-angle" );
- dumpDec< double >( "pos-left" );
- dumpDec< double >( "pos-right" );
- dumpDec< double >( "pos-top" );
- dumpDec< double >( "pos-bottom" );
+ dumpGradientHead();
out().resetItemIndex();
for( sal_Int32 nStop = 0, nStopCount = dumpDec< sal_Int32 >( "stop-count" ); (nStop < nStopCount) && !in().isEof(); ++nStop )
{
@@ -2174,6 +2142,16 @@ void RecordStreamObject::implDumpRecordBody()
}
}
+void RecordStreamObject::dumpGradientHead()
+{
+ dumpDec< sal_Int32 >( "gradient-type", "FILL-GRADIENTTYPE" );
+ dumpDec< double >( "linear-angle" );
+ dumpDec< double >( "pos-left" );
+ dumpDec< double >( "pos-right" );
+ dumpDec< double >( "pos-top" );
+ dumpDec< double >( "pos-bottom" );
+}
+
void RecordStreamObject::dumpCellHeader( bool bWithColumn )
{
if( bWithColumn ) dumpColIndex();
diff --git a/oox/source/dump/xlsbdumper.ini b/oox/source/dump/xlsbdumper.ini
index 34c464c69509..d8bc97ddb6bc 100644
--- a/oox/source/dump/xlsbdumper.ini
+++ b/oox/source/dump/xlsbdumper.ini
@@ -328,13 +328,13 @@ end
shortlist=CFRULE-CELL-OPERATOR,1,between,not-between,equal,not-equal,greater-than,less-than,greater-equal,less-equal
shortlist=CFRULE-TEXT-OPERATOR,0,contains,not-contains,begins-with,ends-with
-shortlist=CFRULE-TIME-OPERATOR,0,today,yesterday,last-7-days,this-week,last-week,last-month,tomorrow,next-week,next-month,this-month
+shortlist=CFRULE-DATE-OPERATOR,0,today,yesterday,last-7-days,this-week,last-week,last-month,tomorrow,next-week,next-month,this-month
shortlist=CFRULE-OTHER-OPERATOR,0,none
flagslist=CFRULE-FLAGS
0x0001=table-row
0x0002=stop-if-true
- 0x0004=avove-average
+ 0x0004=above-average
0x0008=bottom
0x0010=percent
end
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index f681477076bf..a49d41ef4759 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile$
- * $Revision$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -60,12 +57,12 @@
#include <tools/stream.hxx>
#include <tools/string.hxx>
#include <vcl/cvtgrf.hxx>
-#include <vcl/fontcvt.hxx>
+#include <unotools/fontcvt.hxx>
#include <vcl/graph.hxx>
-#include <goodies/grfmgr.hxx>
+#include <svtools/grfmgr.hxx>
#include <rtl/strbuf.hxx>
#include <sfx2/app.hxx>
-#include <svtools/languageoptions.hxx>
+#include <svl/languageoptions.hxx>
#include <svx/escherex.hxx>
#include <svx/svxenum.hxx>
diff --git a/oox/source/export/preset-definitions-to-shape-types.pl b/oox/source/export/preset-definitions-to-shape-types.pl
index a05bff74ab90..5ecb82f814de 100644
--- a/oox/source/export/preset-definitions-to-shape-types.pl
+++ b/oox/source/export/preset-definitions-to-shape-types.pl
@@ -3,7 +3,7 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
diff --git a/oox/source/export/presetShapeDefinitions.xml b/oox/source/export/presetShapeDefinitions.xml
index f5fead717fe0..77612e2b1652 100644
--- a/oox/source/export/presetShapeDefinitions.xml
+++ b/oox/source/export/presetShapeDefinitions.xml
@@ -1,19915 +1,19915 @@
-<?xml version="1.0" encoding="utf-8"?>
-<presetShapeDefinitons>
- <accentBorderCallout1>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 112500" />
-
- <gd name="adj4" fmla="val -38333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <close />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- </path>
- </pathLst>
-
- </accentBorderCallout1>
- <accentBorderCallout2>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 112500" />
-
- <gd name="adj6" fmla="val -46667" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <close />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- </path>
- </pathLst>
-
- </accentBorderCallout2>
- <accentBorderCallout3>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 100000" />
-
- <gd name="adj6" fmla="val -16667" />
-
- <gd name="adj7" fmla="val 112963" />
-
- <gd name="adj8" fmla="val -8333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- <gd name="y4" fmla="*/ h adj7 100000" />
- <gd name="x4" fmla="*/ w adj8 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
- <pos x="x4" y="y4" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <close />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- </path>
- </pathLst>
-
- </accentBorderCallout3>
- <accentCallout1>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 112500" />
-
- <gd name="adj4" fmla="val -38333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <close />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- </path>
- </pathLst>
-
- </accentCallout1>
- <accentCallout2>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 112500" />
-
- <gd name="adj6" fmla="val -46667" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <close />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- </path>
- </pathLst>
-
- </accentCallout2>
- <accentCallout3>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 100000" />
-
- <gd name="adj6" fmla="val -16667" />
-
- <gd name="adj7" fmla="val 112963" />
-
- <gd name="adj8" fmla="val -8333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- <gd name="y4" fmla="*/ h adj7 100000" />
- <gd name="x4" fmla="*/ w adj8 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
- <pos x="x4" y="y4" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <close />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- </path>
- </pathLst>
-
- </accentCallout3>
- <actionButtonBackPrevious>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g11" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </actionButtonBackPrevious>
- <actionButtonBeginning>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 1 8" />
- <gd name="g15" fmla="*/ g13 1 4" />
- <gd name="g16" fmla="+- g11 g14 0" />
- <gd name="g17" fmla="+- g11 g15 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g17" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g16" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g16" y="g10" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g17" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g16" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g16" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g17" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g16" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g16" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonBeginning>
- <actionButtonBlank>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonBlank>
- <actionButtonDocument>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="dx1" fmla="*/ ss 9 32" />
- <gd name="g11" fmla="+- hc 0 dx1" />
- <gd name="g12" fmla="+- hc dx1 0" />
- <gd name="g13" fmla="*/ ss 3 16" />
- <gd name="g14" fmla="+- g12 0 g13" />
- <gd name="g15" fmla="+- g9 g13 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g11" y="g9" />
- </moveTo>
- <lnTo>
- <pt x="g14" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g15" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="g11" y="g9" />
- </moveTo>
- <lnTo>
- <pt x="g14" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g14" y="g15" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g15" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g14" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g14" y="g15" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g15" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="g9" />
- </moveTo>
- <lnTo>
- <pt x="g14" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g15" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g12" y="g15" />
- </moveTo>
- <lnTo>
- <pt x="g14" y="g15" />
- </lnTo>
- <lnTo>
- <pt x="g14" y="g9" />
- </lnTo>
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonDocument>
- <actionButtonEnd>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 3 4" />
- <gd name="g15" fmla="*/ g13 7 8" />
- <gd name="g16" fmla="+- g11 g14 0" />
- <gd name="g17" fmla="+- g11 g15 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g16" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g17" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g17" y="g10" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g16" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g17" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g17" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g16" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g17" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g12" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g17" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonEnd>
- <actionButtonForwardNext>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g12" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g12" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g12" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g11" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g9" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </actionButtonForwardNext>
- <actionButtonHelp>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 1 7" />
- <gd name="g15" fmla="*/ g13 3 14" />
- <gd name="g16" fmla="*/ g13 2 7" />
- <gd name="g19" fmla="*/ g13 3 7" />
- <gd name="g20" fmla="*/ g13 4 7" />
- <gd name="g21" fmla="*/ g13 17 28" />
- <gd name="g23" fmla="*/ g13 21 28" />
- <gd name="g24" fmla="*/ g13 11 14" />
- <gd name="g27" fmla="+- g9 g16 0" />
- <gd name="g29" fmla="+- g9 g21 0" />
- <gd name="g30" fmla="+- g9 g23 0" />
- <gd name="g31" fmla="+- g9 g24 0" />
- <gd name="g33" fmla="+- g11 g15 0" />
- <gd name="g36" fmla="+- g11 g19 0" />
- <gd name="g37" fmla="+- g11 g20 0" />
- <gd name="g41" fmla="*/ g13 1 14" />
- <gd name="g42" fmla="*/ g13 3 28" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g33" y="g27" />
- </moveTo>
-
- <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
- <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
- <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="g37" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g29" />
- </lnTo>
- <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
- <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
- <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
- <close />
- <moveTo>
- <pt x="hc" y="g31" />
- </moveTo>
-
- <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g33" y="g27" />
- </moveTo>
-
- <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
- <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
- <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="g37" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g29" />
- </lnTo>
- <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
- <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
- <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
- <close />
- <moveTo>
- <pt x="hc" y="g31" />
- </moveTo>
-
- <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g33" y="g27" />
- </moveTo>
-
- <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
- <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
- <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="g37" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g29" />
- </lnTo>
- <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
- <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
- <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
- <close />
- <moveTo>
- <pt x="hc" y="g31" />
- </moveTo>
-
- <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonHelp>
- <actionButtonHome>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 1 16" />
- <gd name="g15" fmla="*/ g13 1 8" />
- <gd name="g16" fmla="*/ g13 3 16" />
- <gd name="g17" fmla="*/ g13 5 16" />
- <gd name="g18" fmla="*/ g13 7 16" />
- <gd name="g19" fmla="*/ g13 9 16" />
- <gd name="g20" fmla="*/ g13 11 16" />
- <gd name="g21" fmla="*/ g13 3 4" />
- <gd name="g22" fmla="*/ g13 13 16" />
- <gd name="g23" fmla="*/ g13 7 8" />
- <gd name="g24" fmla="+- g9 g14 0" />
- <gd name="g25" fmla="+- g9 g16 0" />
- <gd name="g26" fmla="+- g9 g17 0" />
- <gd name="g27" fmla="+- g9 g21 0" />
- <gd name="g28" fmla="+- g11 g15 0" />
- <gd name="g29" fmla="+- g11 g18 0" />
- <gd name="g30" fmla="+- g11 g19 0" />
- <gd name="g31" fmla="+- g11 g20 0" />
- <gd name="g32" fmla="+- g11 g22 0" />
- <gd name="g33" fmla="+- g11 g23 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="hc" y="g9" />
- </moveTo>
- <lnTo>
- <pt x="g11" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g28" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g28" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g26" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g24" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g24" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g25" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="g32" y="g26" />
- </moveTo>
- <lnTo>
- <pt x="g32" y="g24" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g24" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g25" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g28" y="vc" />
- </moveTo>
-
- <lnTo>
- <pt x="g28" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g29" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g29" y="g27" />
- </lnTo>
- <lnTo>
- <pt x="g30" y="g27" />
- </lnTo>
- <lnTo>
- <pt x="g30" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="vc" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="hc" y="g9" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="vc" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g29" y="g27" />
- </moveTo>
-
- <lnTo>
- <pt x="g30" y="g27" />
- </lnTo>
- <lnTo>
- <pt x="g30" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g29" y="g10" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="hc" y="g9" />
- </moveTo>
- <lnTo>
- <pt x="g31" y="g25" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g24" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g24" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g26" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g28" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g28" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="vc" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g31" y="g25" />
- </moveTo>
- <lnTo>
- <pt x="g32" y="g26" />
- </lnTo>
-
- <moveTo>
- <pt x="g33" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g28" y="vc" />
- </lnTo>
-
- <moveTo>
- <pt x="g29" y="g10" />
- </moveTo>
-
- <lnTo>
- <pt x="g29" y="g27" />
- </lnTo>
- <lnTo>
- <pt x="g30" y="g27" />
- </lnTo>
- <lnTo>
- <pt x="g30" y="g10" />
- </lnTo>
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonHome>
- <actionButtonInformation>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 1 32" />
- <gd name="g17" fmla="*/ g13 5 16" />
- <gd name="g18" fmla="*/ g13 3 8" />
- <gd name="g19" fmla="*/ g13 13 32" />
- <gd name="g20" fmla="*/ g13 19 32" />
- <gd name="g22" fmla="*/ g13 11 16" />
- <gd name="g23" fmla="*/ g13 13 16" />
- <gd name="g24" fmla="*/ g13 7 8" />
- <gd name="g25" fmla="+- g9 g14 0" />
- <gd name="g28" fmla="+- g9 g17 0" />
- <gd name="g29" fmla="+- g9 g18 0" />
- <gd name="g30" fmla="+- g9 g23 0" />
- <gd name="g31" fmla="+- g9 g24 0" />
- <gd name="g32" fmla="+- g11 g17 0" />
- <gd name="g34" fmla="+- g11 g19 0" />
- <gd name="g35" fmla="+- g11 g20 0" />
- <gd name="g37" fmla="+- g11 g22 0" />
- <gd name="g38" fmla="*/ g13 3 32" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="hc" y="g9" />
- </moveTo>
-
- <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="hc" y="g9" />
- </moveTo>
-
- <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
- <close />
- <moveTo>
- <pt x="hc" y="g25" />
- </moveTo>
-
- <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
- <moveTo>
- <pt x="g32" y="g28" />
- </moveTo>
-
- <lnTo>
- <pt x="g32" y="g29" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g29" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g31" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g31" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g28" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="lighten" extrusionOk="false">
- <moveTo>
- <pt x="hc" y="g25" />
- </moveTo>
-
- <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
- <moveTo>
- <pt x="g32" y="g28" />
- </moveTo>
-
- <lnTo>
- <pt x="g35" y="g28" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g31" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g31" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g29" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g29" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="hc" y="g9" />
- </moveTo>
-
- <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
- <close />
- <moveTo>
- <pt x="hc" y="g25" />
- </moveTo>
-
- <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
- <moveTo>
- <pt x="g32" y="g28" />
- </moveTo>
-
- <lnTo>
- <pt x="g35" y="g28" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g31" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g31" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g30" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g29" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g29" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonInformation>
- <actionButtonMovie>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 1455 21600" />
- <gd name="g15" fmla="*/ g13 1905 21600" />
- <gd name="g16" fmla="*/ g13 2325 21600" />
- <gd name="g17" fmla="*/ g13 16155 21600" />
- <gd name="g18" fmla="*/ g13 17010 21600" />
- <gd name="g19" fmla="*/ g13 19335 21600" />
- <gd name="g20" fmla="*/ g13 19725 21600" />
- <gd name="g21" fmla="*/ g13 20595 21600" />
- <gd name="g22" fmla="*/ g13 5280 21600" />
- <gd name="g23" fmla="*/ g13 5730 21600" />
- <gd name="g24" fmla="*/ g13 6630 21600" />
- <gd name="g25" fmla="*/ g13 7492 21600" />
- <gd name="g26" fmla="*/ g13 9067 21600" />
- <gd name="g27" fmla="*/ g13 9555 21600" />
- <gd name="g28" fmla="*/ g13 13342 21600" />
- <gd name="g29" fmla="*/ g13 14580 21600" />
- <gd name="g30" fmla="*/ g13 15592 21600" />
- <gd name="g31" fmla="+- g11 g14 0" />
- <gd name="g32" fmla="+- g11 g15 0" />
- <gd name="g33" fmla="+- g11 g16 0" />
- <gd name="g34" fmla="+- g11 g17 0" />
- <gd name="g35" fmla="+- g11 g18 0" />
- <gd name="g36" fmla="+- g11 g19 0" />
- <gd name="g37" fmla="+- g11 g20 0" />
- <gd name="g38" fmla="+- g11 g21 0" />
- <gd name="g39" fmla="+- g9 g22 0" />
- <gd name="g40" fmla="+- g9 g23 0" />
- <gd name="g41" fmla="+- g9 g24 0" />
- <gd name="g42" fmla="+- g9 g25 0" />
- <gd name="g43" fmla="+- g9 g26 0" />
- <gd name="g44" fmla="+- g9 g27 0" />
- <gd name="g45" fmla="+- g9 g28 0" />
- <gd name="g46" fmla="+- g9 g29 0" />
- <gd name="g47" fmla="+- g9 g30 0" />
- <gd name="g48" fmla="+- g9 g31 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g11" y="g39" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g44" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g44" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g43" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g43" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g47" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g47" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g45" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g45" />
- </lnTo>
- <lnTo>
- <pt x="g38" y="g46" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g46" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g38" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g42" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g42" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g40" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g40" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g39" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="g39" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g44" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g44" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g43" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g43" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g47" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g47" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g45" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g45" />
- </lnTo>
- <lnTo>
- <pt x="g38" y="g46" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g46" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g38" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g42" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g42" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g40" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g40" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g39" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="g39" />
- </moveTo>
-
- <lnTo>
- <pt x="g31" y="g39" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g40" />
- </lnTo>
- <lnTo>
- <pt x="g34" y="g40" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g42" />
- </lnTo>
- <lnTo>
- <pt x="g37" y="g42" />
- </lnTo>
- <lnTo>
- <pt x="g38" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g41" />
- </lnTo>
- <lnTo>
- <pt x="g12" y="g46" />
- </lnTo>
- <lnTo>
- <pt x="g38" y="g46" />
- </lnTo>
- <lnTo>
- <pt x="g36" y="g45" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g45" />
- </lnTo>
- <lnTo>
- <pt x="g35" y="g47" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g47" />
- </lnTo>
- <lnTo>
- <pt x="g33" y="g43" />
- </lnTo>
- <lnTo>
- <pt x="g32" y="g43" />
- </lnTo>
- <lnTo>
- <pt x="g31" y="g44" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g44" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonMovie>
- <actionButtonReturn>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 7 8" />
- <gd name="g15" fmla="*/ g13 3 4" />
- <gd name="g16" fmla="*/ g13 5 8" />
- <gd name="g17" fmla="*/ g13 3 8" />
- <gd name="g18" fmla="*/ g13 1 4" />
- <gd name="g19" fmla="+- g9 g15 0" />
- <gd name="g20" fmla="+- g9 g16 0" />
- <gd name="g21" fmla="+- g9 g18 0" />
- <gd name="g22" fmla="+- g11 g14 0" />
- <gd name="g23" fmla="+- g11 g15 0" />
- <gd name="g24" fmla="+- g11 g16 0" />
- <gd name="g25" fmla="+- g11 g17 0" />
- <gd name="g26" fmla="+- g11 g18 0" />
- <gd name="g27" fmla="*/ g13 1 8" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g12" y="g21" />
- </moveTo>
- <lnTo>
- <pt x="g23" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g20" />
- </lnTo>
- <arcTo wR="g27" hR="g27" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="g25" y="g19" />
- </lnTo>
- <arcTo wR="g27" hR="g27" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="g26" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g20" />
- </lnTo>
- <arcTo wR="g17" hR="g17" stAng="cd2" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="g10" />
- </lnTo>
- <arcTo wR="g17" hR="g17" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="g22" y="g21" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g12" y="g21" />
- </moveTo>
- <lnTo>
- <pt x="g23" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g20" />
- </lnTo>
- <arcTo wR="g27" hR="g27" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="g25" y="g19" />
- </lnTo>
- <arcTo wR="g27" hR="g27" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="g26" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g20" />
- </lnTo>
- <arcTo wR="g17" hR="g17" stAng="cd2" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="g10" />
- </lnTo>
- <arcTo wR="g17" hR="g17" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="g22" y="g21" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g12" y="g21" />
- </moveTo>
- <lnTo>
- <pt x="g22" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g22" y="g20" />
- </lnTo>
- <arcTo wR="g17" hR="g17" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="g25" y="g10" />
- </lnTo>
- <arcTo wR="g17" hR="g17" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="g11" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g26" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g26" y="g20" />
- </lnTo>
- <arcTo wR="g27" hR="g27" stAng="cd2" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="g19" />
- </lnTo>
- <arcTo wR="g27" hR="g27" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="g24" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g23" y="g9" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonReturn>
- <actionButtonSound>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx2" fmla="*/ ss 3 8" />
- <gd name="g9" fmla="+- vc 0 dx2" />
- <gd name="g10" fmla="+- vc dx2 0" />
- <gd name="g11" fmla="+- hc 0 dx2" />
- <gd name="g12" fmla="+- hc dx2 0" />
- <gd name="g13" fmla="*/ ss 3 4" />
- <gd name="g14" fmla="*/ g13 1 8" />
- <gd name="g15" fmla="*/ g13 5 16" />
- <gd name="g16" fmla="*/ g13 5 8" />
- <gd name="g17" fmla="*/ g13 11 16" />
- <gd name="g18" fmla="*/ g13 3 4" />
- <gd name="g19" fmla="*/ g13 7 8" />
- <gd name="g20" fmla="+- g9 g14 0" />
- <gd name="g21" fmla="+- g9 g15 0" />
- <gd name="g22" fmla="+- g9 g17 0" />
- <gd name="g23" fmla="+- g9 g19 0" />
- <gd name="g24" fmla="+- g11 g15 0" />
- <gd name="g25" fmla="+- g11 g16 0" />
- <gd name="g26" fmla="+- g11 g18 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g11" y="g21" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g22" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g22" />
- </lnTo>
- <lnTo>
- <pt x="g25" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g25" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g21" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="g21" />
- </moveTo>
-
- <lnTo>
- <pt x="g11" y="g22" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g22" />
- </lnTo>
- <lnTo>
- <pt x="g25" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g25" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g21" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="g11" y="g21" />
- </moveTo>
-
- <lnTo>
- <pt x="g24" y="g21" />
- </lnTo>
- <lnTo>
- <pt x="g25" y="g9" />
- </lnTo>
- <lnTo>
- <pt x="g25" y="g10" />
- </lnTo>
- <lnTo>
- <pt x="g24" y="g22" />
- </lnTo>
- <lnTo>
- <pt x="g11" y="g22" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="g26" y="g21" />
- </moveTo>
- <lnTo>
- <pt x="g12" y="g20" />
- </lnTo>
- <moveTo>
- <pt x="g26" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="g12" y="vc" />
- </lnTo>
- <moveTo>
- <pt x="g26" y="g22" />
- </moveTo>
- <lnTo>
- <pt x="g12" y="g23" />
- </lnTo>
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
-
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </actionButtonSound>
- <arc>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16200000" />
- <gd name="adj2" fmla="val 0" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="stAng" fmla="pin 0 adj1 21599999" />
- <gd name="enAng" fmla="pin 0 adj2 21599999" />
- <gd name="sw11" fmla="+- enAng 0 stAng" />
- <gd name="sw12" fmla="+- sw11 21600000 0" />
- <gd name="swAng" fmla="?: sw11 sw11 sw12" />
- <gd name="wt1" fmla="sin wd2 stAng" />
- <gd name="ht1" fmla="cos hd2 stAng" />
- <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
- <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
- <gd name="wt2" fmla="sin wd2 enAng" />
- <gd name="ht2" fmla="cos hd2 enAng" />
- <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
- <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
- <gd name="x1" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc dy1 0" />
- <gd name="x2" fmla="+- hc dx2 0" />
- <gd name="y2" fmla="+- vc dy2 0" />
- <gd name="sw0" fmla="+- 21600000 0 stAng" />
- <gd name="da1" fmla="+- swAng 0 sw0" />
- <gd name="g1" fmla="max x1 x2" />
- <gd name="ir" fmla="?: da1 r g1" />
- <gd name="sw1" fmla="+- cd4 0 stAng" />
- <gd name="sw2" fmla="+- 27000000 0 stAng" />
- <gd name="sw3" fmla="?: sw1 sw1 sw2" />
- <gd name="da2" fmla="+- swAng 0 sw3" />
- <gd name="g5" fmla="max y1 y2" />
- <gd name="ib" fmla="?: da2 b g5" />
- <gd name="sw4" fmla="+- cd2 0 stAng" />
- <gd name="sw5" fmla="+- 32400000 0 stAng" />
- <gd name="sw6" fmla="?: sw4 sw4 sw5" />
- <gd name="da3" fmla="+- swAng 0 sw6" />
- <gd name="g9" fmla="min x1 x2" />
- <gd name="il" fmla="?: da3 l g9" />
- <gd name="sw7" fmla="+- 3cd4 0 stAng" />
- <gd name="sw8" fmla="+- 37800000 0 stAng" />
- <gd name="sw9" fmla="?: sw7 sw7 sw8" />
- <gd name="da4" fmla="+- swAng 0 sw9" />
- <gd name="g13" fmla="min y1 y2" />
- <gd name="it" fmla="?: da4 t g13" />
- <gd name="cang1" fmla="+- stAng 0 cd4" />
- <gd name="cang2" fmla="+- enAng cd4 0" />
- <gd name="cang3" fmla="+/ cang1 cang2 2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
- <pos x="x1" y="y1" />
- </ahPolar>
- <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
- <pos x="x2" y="y2" />
- </ahPolar>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cang1">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="cang3">
- <pos x="hc" y="vc" />
- </cxn>
- <cxn ang="cang2">
- <pos x="x2" y="y2" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
- <lnTo>
- <pt x="hc" y="vc" />
- </lnTo>
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
- </path>
- </pathLst>
- </arc>
- <bentArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 43750" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="a3" fmla="pin 0 adj3 50000" />
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="aw2" fmla="*/ ss a2 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
- <gd name="dh2" fmla="+- aw2 0 th2" />
-
- <gd name="ah" fmla="*/ ss a3 100000" />
-
- <gd name="bw" fmla="+- r 0 ah" />
-
- <gd name="bh" fmla="+- b 0 dh2" />
-
- <gd name="bs" fmla="min bw bh" />
-
- <gd name="maxAdj4" fmla="*/ 100000 bs ss" />
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
-
- <gd name="bd" fmla="*/ ss a4 100000" />
-
-
- <gd name="bd3" fmla="+- bd 0 th" />
- <gd name="bd2" fmla="max bd3 0" />
- <gd name="x3" fmla="+- th bd2 0" />
- <gd name="x4" fmla="+- r 0 ah" />
-
-
- <gd name="y3" fmla="+- dh2 th 0" />
- <gd name="y4" fmla="+- y3 dh2 0" />
- <gd name="y5" fmla="+- dh2 bd 0" />
- <gd name="y6" fmla="+- y3 bd2 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="th" y="b" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="50000">
- <pos x="r" y="y4" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="0" maxX="50000">
- <pos x="x4" y="t" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
- <pos x="bd" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x4" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x4" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="th2" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="aw2" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="l" y="y5" />
- </lnTo>
- <arcTo wR="bd" hR="bd" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x4" y="dh2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="aw2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <arcTo wR="bd2" hR="bd2" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="th" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </bentArrow>
- <bentConnector2>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- </path>
- </pathLst>
- </bentConnector2>
- <bentConnector3>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x1" fmla="*/ w adj1 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
- <pos x="x1" y="vc" />
- </ahXY>
- </ahLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- </path>
- </pathLst>
- </bentConnector3>
- <bentConnector4>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x1" fmla="*/ w adj1 100000" />
- <gd name="x2" fmla="+/ x1 r 2" />
- <gd name="y2" fmla="*/ h adj2 100000" />
- <gd name="y1" fmla="+/ t y2 2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- </ahLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- </path>
- </pathLst>
- </bentConnector4>
- <bentConnector5>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 50000" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x1" fmla="*/ w adj1 100000" />
-
- <gd name="x3" fmla="*/ w adj3 100000" />
-
- <gd name="x2" fmla="+/ x1 x3 2" />
-
- <gd name="y2" fmla="*/ h adj2 100000" />
-
- <gd name="y1" fmla="+/ t y2 2" />
-
- <gd name="y3" fmla="+/ b y2 2" />
-
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="-2147483647" maxX="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- </ahLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="b" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- </path>
- </pathLst>
-
- </bentConnector5>
- <bentUpArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="a3" fmla="pin 0 adj3 50000" />
- <gd name="y1" fmla="*/ ss a3 100000" />
- <gd name="dx1" fmla="*/ ss a2 50000" />
-
- <gd name="x1" fmla="+- r 0 dx1" />
- <gd name="dx3" fmla="*/ ss a2 100000" />
-
- <gd name="x3" fmla="+- r 0 dx3" />
- <gd name="dx2" fmla="*/ ss a1 200000" />
-
- <gd name="x2" fmla="+- x3 0 dx2" />
- <gd name="x4" fmla="+- x3 dx2 0" />
- <gd name="dy2" fmla="*/ ss a1 100000" />
-
- <gd name="y2" fmla="+- b 0 dy2" />
- <gd name="x0" fmla="*/ x4 1 2" />
- <gd name="y3" fmla="+/ y2 b 2" />
- <gd name="y15" fmla="+/ y1 b 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="50000">
- <pos x="l" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="50000">
- <pos x="x2" y="y1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x0" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y15" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="y2" r="x4" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </bentUpArrow>
- <bevel>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 12500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="x1" fmla="*/ ss a 100000" />
-
-
-
- <gd name="x2" fmla="+- r 0 x1" />
-
- <gd name="y2" fmla="+- b 0 x1" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="x1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="x1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="x1" y="x1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="lightenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="x1" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="lighten" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darken" extrusionOk="false">
-
- <moveTo>
- <pt x="r" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x1" y="x1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="x1" />
- </lnTo>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <moveTo>
- <pt x="r" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <moveTo>
- <pt x="r" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- </path>
- </pathLst>
-
- </bevel>
- <blockArc>
-
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 10800000" />
-
- <gd name="adj2" fmla="val 0" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="stAng" fmla="pin 0 adj1 21599999" />
- <gd name="istAng" fmla="pin 0 adj2 21599999" />
- <gd name="a3" fmla="pin 0 adj3 50000" />
- <gd name="sw11" fmla="+- istAng 0 stAng" />
-
- <gd name="sw12" fmla="+- sw11 21600000 0" />
-
- <gd name="swAng" fmla="?: sw11 sw11 sw12" />
-
- <gd name="iswAng" fmla="+- 0 0 swAng" />
-
-
- <gd name="wt1" fmla="sin wd2 stAng" />
- <gd name="ht1" fmla="cos hd2 stAng" />
- <gd name="wt3" fmla="sin wd2 istAng" />
- <gd name="ht3" fmla="cos hd2 istAng" />
- <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
- <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
- <gd name="dx3" fmla="cat2 wd2 ht3 wt3" />
- <gd name="dy3" fmla="sat2 hd2 ht3 wt3" />
- <gd name="x1" fmla="+- hc dx1 0" />
-
- <gd name="y1" fmla="+- vc dy1 0" />
-
- <gd name="x3" fmla="+- hc dx3 0" />
-
- <gd name="y3" fmla="+- vc dy3 0" />
-
-
- <gd name="dr" fmla="*/ ss a3 100000" />
- <gd name="iwd2" fmla="+- wd2 0 dr" />
- <gd name="ihd2" fmla="+- hd2 0 dr" />
- <gd name="wt2" fmla="sin iwd2 istAng" />
- <gd name="ht2" fmla="cos ihd2 istAng" />
- <gd name="wt4" fmla="sin iwd2 stAng" />
- <gd name="ht4" fmla="cos ihd2 stAng" />
- <gd name="dx2" fmla="cat2 iwd2 ht2 wt2" />
- <gd name="dy2" fmla="sat2 ihd2 ht2 wt2" />
- <gd name="dx4" fmla="cat2 iwd2 ht4 wt4" />
- <gd name="dy4" fmla="sat2 ihd2 ht4 wt4" />
- <gd name="x2" fmla="+- hc dx2 0" />
-
- <gd name="y2" fmla="+- vc dy2 0" />
-
- <gd name="x4" fmla="+- hc dx4 0" />
-
- <gd name="y4" fmla="+- vc dy4 0" />
-
-
- <gd name="sw0" fmla="+- 21600000 0 stAng" />
- <gd name="da1" fmla="+- swAng 0 sw0" />
- <gd name="g1" fmla="max x1 x2" />
- <gd name="g2" fmla="max x3 x4" />
- <gd name="g3" fmla="max g1 g2" />
- <gd name="ir" fmla="?: da1 r g3" />
-
- <gd name="sw1" fmla="+- cd4 0 stAng" />
- <gd name="sw2" fmla="+- 27000000 0 stAng" />
- <gd name="sw3" fmla="?: sw1 sw1 sw2" />
- <gd name="da2" fmla="+- swAng 0 sw3" />
- <gd name="g5" fmla="max y1 y2" />
- <gd name="g6" fmla="max y3 y4" />
- <gd name="g7" fmla="max g5 g6" />
- <gd name="ib" fmla="?: da2 b g7" />
-
- <gd name="sw4" fmla="+- cd2 0 stAng" />
- <gd name="sw5" fmla="+- 32400000 0 stAng" />
- <gd name="sw6" fmla="?: sw4 sw4 sw5" />
- <gd name="da3" fmla="+- swAng 0 sw6" />
- <gd name="g9" fmla="min x1 x2" />
- <gd name="g10" fmla="min x3 x4" />
- <gd name="g11" fmla="min g9 g10" />
- <gd name="il" fmla="?: da3 l g11" />
-
- <gd name="sw7" fmla="+- 3cd4 0 stAng" />
- <gd name="sw8" fmla="+- 37800000 0 stAng" />
- <gd name="sw9" fmla="?: sw7 sw7 sw8" />
- <gd name="da4" fmla="+- swAng 0 sw9" />
- <gd name="g13" fmla="min y1 y2" />
- <gd name="g14" fmla="min y3 y4" />
- <gd name="g15" fmla="min g13 g14" />
- <gd name="it" fmla="?: da4 t g15" />
-
- <gd name="x5" fmla="+/ x1 x4 2" />
-
- <gd name="y5" fmla="+/ y1 y4 2" />
-
- <gd name="x6" fmla="+/ x3 x2 2" />
-
- <gd name="y6" fmla="+/ y3 y2 2" />
-
- <gd name="cang1" fmla="+- stAng 0 cd4" />
- <gd name="cang2" fmla="+- istAng cd4 0" />
- <gd name="cang3" fmla="+/ cang1 cang2 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
- <pos x="x1" y="y1" />
- </ahPolar>
- <ahPolar gdRefR="adj3" minR="0" maxR="50000" gdRefAng="adj2" minAng="0" maxAng="21599999">
- <pos x="x2" y="y2" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cang1">
- <pos x="x5" y="y5" />
- </cxn>
- <cxn ang="cang2">
- <pos x="x6" y="y6" />
- </cxn>
- <cxn ang="cang3">
- <pos x="hc" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <arcTo wR="iwd2" hR="ihd2" stAng="istAng" swAng="iswAng" />
- <close />
- </path>
- </pathLst>
-
- </blockArc>
- <borderCallout1>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 112500" />
-
- <gd name="adj4" fmla="val -38333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- </path>
- </pathLst>
-
- </borderCallout1>
- <borderCallout2>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 112500" />
-
- <gd name="adj6" fmla="val -46667" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- </path>
- </pathLst>
-
- </borderCallout2>
- <borderCallout3>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 100000" />
-
- <gd name="adj6" fmla="val -16667" />
-
- <gd name="adj7" fmla="val 112963" />
-
- <gd name="adj8" fmla="val -8333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- <gd name="y4" fmla="*/ h adj7 100000" />
- <gd name="x4" fmla="*/ w adj8 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
- <pos x="x4" y="y4" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- </path>
- </pathLst>
-
- </borderCallout3>
- <bracePair>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 8333" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 25000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="*/ ss a 50000" />
- <gd name="x3" fmla="+- r 0 x2" />
- <gd name="x4" fmla="+- r 0 x1" />
-
- <gd name="y2" fmla="+- vc 0 x1" />
- <gd name="y3" fmla="+- vc x1 0" />
- <gd name="y4" fmla="+- b 0 x1" />
- <gd name="it" fmla="*/ x1 29289 100000" />
-
- <gd name="il" fmla="+- x1 it 0" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 it" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="25000">
- <pos x="l" y="x1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="x2" y="b" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x1" y="x1" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="x2" y="b" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x1" y="x1" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <moveTo>
- <pt x="x3" y="t" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
- </path>
- </pathLst>
-
- </bracePair>
- <bracketPair>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
-
- <gd name="y2" fmla="+- b 0 x1" />
- <gd name="il" fmla="*/ x1 29289 100000" />
-
-
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="l" y="x1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="x1" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="x1" y="b" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="x1" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <moveTo>
- <pt x="x2" y="t" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
- </path>
- </pathLst>
-
- </bracketPair>
- <callout1>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 112500" />
-
- <gd name="adj4" fmla="val -38333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- </path>
- </pathLst>
-
- </callout1>
- <callout2>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 112500" />
-
- <gd name="adj6" fmla="val -46667" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- </path>
- </pathLst>
-
- </callout2>
- <callout3>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="adj1" fmla="val 18750" />
-
- <gd name="adj2" fmla="val -8333" />
-
- <gd name="adj3" fmla="val 18750" />
-
- <gd name="adj4" fmla="val -16667" />
-
- <gd name="adj5" fmla="val 100000" />
-
- <gd name="adj6" fmla="val -16667" />
-
- <gd name="adj7" fmla="val 112963" />
-
- <gd name="adj8" fmla="val -8333" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h adj1 100000" />
- <gd name="x1" fmla="*/ w adj2 100000" />
- <gd name="y2" fmla="*/ h adj3 100000" />
- <gd name="x2" fmla="*/ w adj4 100000" />
- <gd name="y3" fmla="*/ h adj5 100000" />
- <gd name="x3" fmla="*/ w adj6 100000" />
- <gd name="y4" fmla="*/ h adj7 100000" />
- <gd name="x4" fmla="*/ w adj8 100000" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
- <pos x="x2" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y3" />
- </ahXY>
- <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
- <pos x="x4" y="y4" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- </path>
- </pathLst>
-
- </callout3>
- <can>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 50000 h ss" />
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="y1" fmla="*/ ss a 200000" />
- <gd name="y2" fmla="+- y1 y1 0" />
- <gd name="y3" fmla="+- b 0 y1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
- <pos x="hc" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="y2" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-10800000" />
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
- <close />
- </path>
- <path stroke="false" fill="lighten" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd2" />
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="r" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd2" />
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
- <lnTo>
- <pt x="l" y="y1" />
- </lnTo>
- </path>
- </pathLst>
-
- </can>
- <chartPlus>
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="10" h="10" fill="none" extrusionOk="false">
- <moveTo>
- <pt x="5" y="0" />
- </moveTo>
- <lnTo>
- <pt x="5" y="10" />
- </lnTo>
- <moveTo>
- <pt x="0" y="5" />
- </moveTo>
- <lnTo>
- <pt x="10" y="5" />
- </lnTo>
- </path>
- <path w="10" h="10" stroke="false">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="0" y="10" />
- </lnTo>
- <lnTo>
- <pt x="10" y="10" />
- </lnTo>
- <lnTo>
- <pt x="10" y="0" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </chartPlus>
- <chartStar>
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="10" h="10" fill="none" extrusionOk="false">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="10" y="10" />
- </lnTo>
- <moveTo>
- <pt x="0" y="10" />
- </moveTo>
- <lnTo>
- <pt x="10" y="0" />
- </lnTo>
- <moveTo>
- <pt x="5" y="0" />
- </moveTo>
- <lnTo>
- <pt x="5" y="10" />
- </lnTo>
- </path>
- <path w="10" h="10" stroke="false">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="0" y="10" />
- </lnTo>
- <lnTo>
- <pt x="10" y="10" />
- </lnTo>
- <lnTo>
- <pt x="10" y="0" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </chartStar>
- <chartX>
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="10" h="10" fill="none" extrusionOk="false">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="10" y="10" />
- </lnTo>
- <moveTo>
- <pt x="0" y="10" />
- </moveTo>
- <lnTo>
- <pt x="10" y="0" />
- </lnTo>
- </path>
- <path w="10" h="10" stroke="false">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="0" y="10" />
- </lnTo>
- <lnTo>
- <pt x="10" y="10" />
- </lnTo>
- <lnTo>
- <pt x="10" y="0" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </chartX>
- <chevron>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 100000 w ss" />
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
- <gd name="x3" fmla="*/ x2 1 2" />
- <gd name="dx" fmla="+- x2 0 x1" />
- <gd name="il" fmla="?: dx x1 l" />
- <gd name="ir" fmla="?: dx x2 r" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="il" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="vc" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </chevron>
- <chord>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 2700000" />
-
- <gd name="adj2" fmla="val 16200000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="stAng" fmla="pin 0 adj1 21599999" />
- <gd name="enAng" fmla="pin 0 adj2 21599999" />
- <gd name="sw1" fmla="+- enAng 0 stAng" />
-
- <gd name="sw2" fmla="+- sw1 21600000 0" />
-
- <gd name="swAng" fmla="?: sw1 sw1 sw2" />
-
- <gd name="wt1" fmla="sin wd2 stAng" />
- <gd name="ht1" fmla="cos hd2 stAng" />
- <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
- <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
- <gd name="wt2" fmla="sin wd2 enAng" />
- <gd name="ht2" fmla="cos hd2 enAng" />
- <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
- <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
- <gd name="x1" fmla="+- hc dx1 0" />
-
- <gd name="y1" fmla="+- vc dy1 0" />
-
- <gd name="x2" fmla="+- hc dx2 0" />
-
- <gd name="y2" fmla="+- vc dy2 0" />
-
- <gd name="x3" fmla="+/ x1 x2 2" />
- <gd name="y3" fmla="+/ y1 y2 2" />
- <gd name="midAng0" fmla="*/ swAng 1 2" />
- <gd name="midAng" fmla="+- stAng midAng0 cd2" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
- <pos x="x1" y="y1" />
- </ahPolar>
- <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
- <pos x="x2" y="y2" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="stAng">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="enAng">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="midAng">
- <pos x="x3" y="y3" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
- <close />
- </path>
- </pathLst>
-
- </chord>
- <circularArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 12500" />
-
- <gd name="adj2" fmla="val 1142319" />
-
- <gd name="adj3" fmla="val 20457681" />
-
- <gd name="adj4" fmla="val 10800000" />
-
- <gd name="adj5" fmla="val 12500" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a5" fmla="pin 0 adj5 25000" />
-
- <gd name="maxAdj1" fmla="*/ a5 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="enAng" fmla="pin 1 adj3 21599999" />
- <gd name="stAng" fmla="pin 0 adj4 21599999" />
-
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="thh" fmla="*/ ss a5 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
-
-
- <gd name="rw1" fmla="+- wd2 th2 thh" />
-
- <gd name="rh1" fmla="+- hd2 th2 thh" />
-
- <gd name="rw2" fmla="+- rw1 0 th" />
-
- <gd name="rh2" fmla="+- rh1 0 th" />
-
- <gd name="rw3" fmla="+- rw2 th2 0" />
-
- <gd name="rh3" fmla="+- rh2 th2 0" />
-
-
- <gd name="wtH" fmla="sin rw3 enAng" />
- <gd name="htH" fmla="cos rh3 enAng" />
- <gd name="dxH" fmla="cat2 rw3 htH wtH" />
- <gd name="dyH" fmla="sat2 rh3 htH wtH" />
- <gd name="xH" fmla="+- hc dxH 0" />
-
- <gd name="yH" fmla="+- vc dyH 0" />
-
-
- <gd name="rI" fmla="min rw2 rh2" />
-
- <gd name="u1" fmla="*/ dxH dxH 1" />
- <gd name="u2" fmla="*/ dyH dyH 1" />
- <gd name="u3" fmla="*/ rI rI 1" />
- <gd name="u4" fmla="+- u1 0 u3" />
- <gd name="u5" fmla="+- u2 0 u3" />
- <gd name="u6" fmla="*/ u4 u5 u1" />
- <gd name="u7" fmla="*/ u6 1 u2" />
- <gd name="u8" fmla="+- 1 0 u7" />
- <gd name="u9" fmla="sqrt u8" />
- <gd name="u10" fmla="*/ u4 1 dxH" />
- <gd name="u11" fmla="*/ u10 1 dyH" />
- <gd name="u12" fmla="+/ 1 u9 u11" />
- <gd name="u13" fmla="at2 1 u12" />
- <gd name="u14" fmla="+- u13 21600000 0" />
- <gd name="u15" fmla="?: u13 u13 u14" />
- <gd name="u16" fmla="+- u15 0 enAng" />
-
- <gd name="u17" fmla="+- u16 21600000 0" />
- <gd name="u18" fmla="?: u16 u16 u17" />
- <gd name="u19" fmla="+- u18 0 cd2" />
- <gd name="u20" fmla="+- u18 0 21600000" />
- <gd name="u21" fmla="?: u19 u20 u18" />
- <gd name="maxAng" fmla="abs u21" />
- <gd name="aAng" fmla="pin 0 adj2 maxAng" />
-
- <gd name="ptAng" fmla="+- enAng aAng 0" />
-
-
- <gd name="wtA" fmla="sin rw3 ptAng" />
- <gd name="htA" fmla="cos rh3 ptAng" />
- <gd name="dxA" fmla="cat2 rw3 htA wtA" />
- <gd name="dyA" fmla="sat2 rh3 htA wtA" />
- <gd name="xA" fmla="+- hc dxA 0" />
-
- <gd name="yA" fmla="+- vc dyA 0" />
-
-
- <gd name="wtE" fmla="sin rw1 stAng" />
- <gd name="htE" fmla="cos rh1 stAng" />
- <gd name="dxE" fmla="cat2 rw1 htE wtE" />
- <gd name="dyE" fmla="sat2 rh1 htE wtE" />
- <gd name="xE" fmla="+- hc dxE 0" />
-
- <gd name="yE" fmla="+- vc dyE 0" />
-
-
- <gd name="dxG" fmla="cos thh ptAng" />
- <gd name="dyG" fmla="sin thh ptAng" />
- <gd name="xG" fmla="+- xH dxG 0" />
-
- <gd name="yG" fmla="+- yH dyG 0" />
-
-
- <gd name="dxB" fmla="cos thh ptAng" />
- <gd name="dyB" fmla="sin thh ptAng" />
- <gd name="xB" fmla="+- xH 0 dxB 0" />
-
- <gd name="yB" fmla="+- yH 0 dyB 0" />
-
-
- <gd name="sx1" fmla="+- xB 0 hc" />
-
- <gd name="sy1" fmla="+- yB 0 vc" />
-
- <gd name="sx2" fmla="+- xG 0 hc" />
-
- <gd name="sy2" fmla="+- yG 0 vc" />
-
-
- <gd name="rO" fmla="min rw1 rh1" />
-
- <gd name="x1O" fmla="*/ sx1 rO rw1" />
-
- <gd name="y1O" fmla="*/ sy1 rO rh1" />
-
- <gd name="x2O" fmla="*/ sx2 rO rw1" />
-
- <gd name="y2O" fmla="*/ sy2 rO rh1" />
-
-
- <gd name="dxO" fmla="+- x2O 0 x1O" />
- <gd name="dyO" fmla="+- y2O 0 y1O" />
- <gd name="dO" fmla="mod dxO dyO 0" />
-
- <gd name="q1" fmla="*/ x1O y2O 1" />
- <gd name="q2" fmla="*/ x2O y1O 1" />
- <gd name="DO" fmla="+- q1 0 q2" />
-
-
- <gd name="q3" fmla="*/ rO rO 1" />
-
- <gd name="q4" fmla="*/ dO dO 1" />
-
- <gd name="q5" fmla="*/ q3 q4 1" />
-
- <gd name="q6" fmla="*/ DO DO 1" />
-
- <gd name="q7" fmla="+- q5 0 q6" />
-
- <gd name="q8" fmla="max q7 0" />
-
- <gd name="sdelO" fmla="sqrt q8" />
-
- <gd name="ndyO" fmla="*/ dyO -1 1" />
- <gd name="sdyO" fmla="?: ndyO -1 1" />
-
- <gd name="q9" fmla="*/ sdyO dxO 1" />
-
- <gd name="q10" fmla="*/ q9 sdelO 1" />
-
- <gd name="q11" fmla="*/ DO dyO 1" />
-
- <gd name="dxF1" fmla="+/ q11 q10 q4" />
-
- <gd name="q12" fmla="+- q11 0 q10" />
- <gd name="dxF2" fmla="*/ q12 1 q4" />
-
-
- <gd name="adyO" fmla="abs dyO" />
- <gd name="q13" fmla="*/ adyO sdelO 1" />
-
- <gd name="q14" fmla="*/ DO dxO -1" />
-
- <gd name="dyF1" fmla="+/ q14 q13 q4" />
-
- <gd name="q15" fmla="+- q14 0 q13" />
- <gd name="dyF2" fmla="*/ q15 1 q4" />
-
-
-
- <gd name="q16" fmla="+- x2O 0 dxF1" />
- <gd name="q17" fmla="+- x2O 0 dxF2" />
- <gd name="q18" fmla="+- y2O 0 dyF1" />
- <gd name="q19" fmla="+- y2O 0 dyF2" />
- <gd name="q20" fmla="mod q16 q18 0" />
-
- <gd name="q21" fmla="mod q17 q19 0" />
-
- <gd name="q22" fmla="+- q21 0 q20" />
- <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
-
- <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
-
- <gd name="sdxF" fmla="*/ dxF rw1 rO" />
-
- <gd name="sdyF" fmla="*/ dyF rh1 rO" />
-
- <gd name="xF" fmla="+- hc sdxF 0" />
-
- <gd name="yF" fmla="+- vc sdyF 0" />
-
-
-
-
- <gd name="x1I" fmla="*/ sx1 rI rw2" />
-
- <gd name="y1I" fmla="*/ sy1 rI rh2" />
-
- <gd name="x2I" fmla="*/ sx2 rI rw2" />
-
- <gd name="y2I" fmla="*/ sy2 rI rh2" />
-
-
- <gd name="dxI" fmla="+- x2I 0 x1I" />
- <gd name="dyI" fmla="+- y2I 0 y1I" />
- <gd name="dI" fmla="mod dxI dyI 0" />
- <gd name="v1" fmla="*/ x1I y2I 1" />
- <gd name="v2" fmla="*/ x2I y1I 1" />
- <gd name="DI" fmla="+- v1 0 v2" />
-
- <gd name="v3" fmla="*/ rI rI 1" />
- <gd name="v4" fmla="*/ dI dI 1" />
- <gd name="v5" fmla="*/ v3 v4 1" />
- <gd name="v6" fmla="*/ DI DI 1" />
- <gd name="v7" fmla="+- v5 0 v6" />
- <gd name="v8" fmla="max v7 0" />
- <gd name="sdelI" fmla="sqrt v8" />
- <gd name="v9" fmla="*/ sdyO dxI 1" />
- <gd name="v10" fmla="*/ v9 sdelI 1" />
- <gd name="v11" fmla="*/ DI dyI 1" />
- <gd name="dxC1" fmla="+/ v11 v10 v4" />
- <gd name="v12" fmla="+- v11 0 v10" />
- <gd name="dxC2" fmla="*/ v12 1 v4" />
-
- <gd name="adyI" fmla="abs dyI" />
- <gd name="v13" fmla="*/ adyI sdelI 1" />
- <gd name="v14" fmla="*/ DI dxI -1" />
- <gd name="dyC1" fmla="+/ v14 v13 v4" />
- <gd name="v15" fmla="+- v14 0 v13" />
- <gd name="dyC2" fmla="*/ v15 1 v4" />
-
- <gd name="v16" fmla="+- x1I 0 dxC1" />
- <gd name="v17" fmla="+- x1I 0 dxC2" />
- <gd name="v18" fmla="+- y1I 0 dyC1" />
- <gd name="v19" fmla="+- y1I 0 dyC2" />
- <gd name="v20" fmla="mod v16 v18 0" />
- <gd name="v21" fmla="mod v17 v19 0" />
- <gd name="v22" fmla="+- v21 0 v20" />
- <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
- <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
- <gd name="sdxC" fmla="*/ dxC rw2 rI" />
- <gd name="sdyC" fmla="*/ dyC rh2 rI" />
- <gd name="xC" fmla="+- hc sdxC 0" />
-
- <gd name="yC" fmla="+- vc sdyC 0" />
-
-
- <gd name="ist0" fmla="at2 sdxC sdyC" />
- <gd name="ist1" fmla="+- ist0 21600000 0" />
- <gd name="istAng" fmla="?: ist0 ist0 ist1" />
- <gd name="isw1" fmla="+- stAng 0 istAng" />
- <gd name="isw2" fmla="+- isw1 0 21600000" />
- <gd name="iswAng" fmla="?: isw1 isw2 isw1" />
-
-
- <gd name="p1" fmla="+- xF 0 xC" />
- <gd name="p2" fmla="+- yF 0 yC" />
- <gd name="p3" fmla="mod p1 p2 0" />
- <gd name="p4" fmla="*/ p3 1 2" />
- <gd name="p5" fmla="+- p4 0 thh" />
- <gd name="xGp" fmla="?: p5 xF xG" />
- <gd name="yGp" fmla="?: p5 yF yG" />
- <gd name="xBp" fmla="?: p5 xC xB" />
- <gd name="yBp" fmla="?: p5 yC yB" />
-
- <gd name="en0" fmla="at2 sdxF sdyF" />
- <gd name="en1" fmla="+- en0 21600000 0" />
- <gd name="en2" fmla="?: en0 en0 en1" />
- <gd name="sw0" fmla="+- en2 0 stAng" />
- <gd name="sw1" fmla="+- sw0 21600000 0" />
- <gd name="swAng" fmla="?: sw0 sw0 sw1" />
-
- <gd name="wtI" fmla="sin rw3 stAng" />
- <gd name="htI" fmla="cos rh3 stAng" />
- <gd name="dxI" fmla="cat2 rw3 htI wtI" />
- <gd name="dyI" fmla="sat2 rh3 htI wtI" />
- <gd name="xI" fmla="+- hc dxI 0" />
-
- <gd name="yI" fmla="+- vc dyI 0" />
-
-
- <gd name="aI" fmla="+- stAng 0 cd4" />
- <gd name="aA" fmla="+- ptAng cd4 0" />
- <gd name="aB" fmla="+- ptAng cd2 0" />
-
- <gd name="idx" fmla="cos rw1 2700000" />
- <gd name="idy" fmla="sin rh1 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj2" minAng="0" maxAng="maxAng">
- <pos x="xA" y="yA" />
- </ahPolar>
- <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
- <pos x="xE" y="yE" />
- </ahPolar>
- <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
- <pos x="xF" y="yF" />
- </ahPolar>
- <ahPolar gdRefR="adj5" minR="0" maxR="25000">
- <pos x="xB" y="yB" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="aI">
- <pos x="xI" y="yI" />
- </cxn>
- <cxn ang="ptAng">
- <pos x="xGp" y="yGp" />
- </cxn>
- <cxn ang="aA">
- <pos x="xA" y="yA" />
- </cxn>
- <cxn ang="aB">
- <pos x="xBp" y="yBp" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xE" y="yE" />
- </moveTo>
- <arcTo wR="rw1" hR="rh1" stAng="stAng" swAng="swAng" />
- <lnTo>
- <pt x="xGp" y="yGp" />
- </lnTo>
- <lnTo>
- <pt x="xA" y="yA" />
- </lnTo>
- <lnTo>
- <pt x="xBp" y="yBp" />
- </lnTo>
- <lnTo>
- <pt x="xC" y="yC" />
- </lnTo>
- <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
- <close />
- </path>
- </pathLst>
-
- </circularArrow>
- <cloud>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="il" fmla="*/ w 2977 21600" />
- <gd name="it" fmla="*/ h 3262 21600" />
- <gd name="ir" fmla="*/ w 17087 21600" />
- <gd name="ib" fmla="*/ h 17337 21600" />
- <gd name="g27" fmla="*/ w 67 21600" />
- <gd name="g28" fmla="*/ h 21577 21600" />
- <gd name="g29" fmla="*/ w 21582 21600" />
- <gd name="g30" fmla="*/ h 1235 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="g29" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="g28" />
- </cxn>
- <cxn ang="cd2">
- <pos x="g27" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="g30" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="43200" h="43200">
- <moveTo>
- <pt x="3900" y="14370" />
- </moveTo>
- <arcTo wR="6753" hR="9190" stAng="-11429249" swAng="7426832" />
- <arcTo wR="5333" hR="7267" stAng="-8646143" swAng="5396714" />
- <arcTo wR="4365" hR="5945" stAng="-8748475" swAng="5983381" />
- <arcTo wR="4857" hR="6595" stAng="-7859164" swAng="7034504" />
- <arcTo wR="5333" hR="7273" stAng="-4722533" swAng="6541615" />
- <arcTo wR="6775" hR="9220" stAng="-2776035" swAng="7816140" />
- <arcTo wR="5785" hR="7867" stAng="37501" swAng="6842000" />
- <arcTo wR="6752" hR="9215" stAng="1347096" swAng="6910353" />
- <arcTo wR="7720" hR="10543" stAng="3974558" swAng="4542661" />
- <arcTo wR="4360" hR="5918" stAng="-16496525" swAng="8804134" />
- <arcTo wR="4345" hR="5945" stAng="-14809710" swAng="9151131" />
- <close />
- </path>
- <path w="43200" h="43200" fill="none" extrusionOk="false">
- <moveTo>
- <pt x="4693" y="26177" />
- </moveTo>
- <arcTo wR="4345" hR="5945" stAng="5204520" swAng="1585770" />
- <moveTo>
- <pt x="6928" y="34899" />
- </moveTo>
- <arcTo wR="4360" hR="5918" stAng="4416628" swAng="686848" />
- <moveTo>
- <pt x="16478" y="39090" />
- </moveTo>
- <arcTo wR="6752" hR="9215" stAng="8257449" swAng="844866" />
- <moveTo>
- <pt x="28827" y="34751" />
- </moveTo>
- <arcTo wR="6752" hR="9215" stAng="387196" swAng="959901" />
- <moveTo>
- <pt x="34129" y="22954" />
- </moveTo>
- <arcTo wR="5785" hR="7867" stAng="-4217541" swAng="4255042" />
- <moveTo>
- <pt x="41798" y="15354" />
- </moveTo>
- <arcTo wR="5333" hR="7273" stAng="1819082" swAng="1665090" />
- <moveTo>
- <pt x="38324" y="5426" />
- </moveTo>
- <arcTo wR="4857" hR="6595" stAng="-824660" swAng="891534" />
- <moveTo>
- <pt x="29078" y="3952" />
- </moveTo>
- <arcTo wR="4857" hR="6595" stAng="-8950887" swAng="1091722" />
- <moveTo>
- <pt x="22141" y="4720" />
- </moveTo>
- <arcTo wR="4365" hR="5945" stAng="-9809656" swAng="1061181" />
- <moveTo>
- <pt x="14000" y="5192" />
- </moveTo>
- <arcTo wR="6753" hR="9190" stAng="-4002417" swAng="739161" />
- <moveTo>
- <pt x="4127" y="15789" />
- </moveTo>
- <arcTo wR="6753" hR="9190" stAng="9459261" swAng="711490" />
- </path>
- </pathLst>
-
- </cloud>
- <cloudCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val -20833" />
-
- <gd name="adj2" fmla="val 62500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dxPos" fmla="*/ w adj1 100000" />
- <gd name="dyPos" fmla="*/ h adj2 100000" />
- <gd name="xPos" fmla="+- hc dxPos 0" />
- <gd name="yPos" fmla="+- vc dyPos 0" />
- <gd name="ht" fmla="cat2 hd2 dxPos dyPos" />
- <gd name="wt" fmla="sat2 wd2 dxPos dyPos" />
- <gd name="g2" fmla="cat2 wd2 ht wt" />
- <gd name="g3" fmla="sat2 hd2 ht wt" />
- <gd name="g4" fmla="+- hc g2 0" />
-
- <gd name="g5" fmla="+- vc g3 0" />
-
- <gd name="g6" fmla="+- g4 0 xPos" />
-
- <gd name="g7" fmla="+- g5 0 yPos" />
-
- <gd name="g8" fmla="mod g6 g7 0" />
-
- <gd name="g9" fmla="*/ ss 6600 21600" />
-
- <gd name="g10" fmla="+- g8 0 g9" />
-
- <gd name="g11" fmla="*/ g10 1 3" />
-
- <gd name="g12" fmla="*/ ss 1800 21600" />
-
- <gd name="g13" fmla="+- g11 g12 0" />
-
- <gd name="g14" fmla="*/ g13 g6 g8" />
-
- <gd name="g15" fmla="*/ g13 g7 g8" />
-
- <gd name="g16" fmla="+- g14 xPos 0" />
-
- <gd name="g17" fmla="+- g15 yPos 0" />
-
- <gd name="g18" fmla="*/ ss 4800 21600" />
-
- <gd name="g19" fmla="*/ g11 2 1" />
-
- <gd name="g20" fmla="+- g18 g19 0" />
-
- <gd name="g21" fmla="*/ g20 g6 g8" />
- <gd name="g22" fmla="*/ g20 g7 g8" />
- <gd name="g23" fmla="+- g21 xPos 0" />
- <gd name="g24" fmla="+- g22 yPos 0" />
- <gd name="g25" fmla="*/ ss 1200 21600" />
- <gd name="g26" fmla="*/ ss 600 21600" />
-
- <gd name="x23" fmla="+- xPos g26 0" />
- <gd name="x24" fmla="+- g16 g25 0" />
- <gd name="x25" fmla="+- g23 g12 0" />
- <gd name="il" fmla="*/ w 2977 21600" />
- <gd name="it" fmla="*/ h 3262 21600" />
- <gd name="ir" fmla="*/ w 17087 21600" />
- <gd name="ib" fmla="*/ h 17337 21600" />
-
- <gd name="g27" fmla="*/ w 67 21600" />
- <gd name="g28" fmla="*/ h 21577 21600" />
- <gd name="g29" fmla="*/ w 21582 21600" />
- <gd name="g30" fmla="*/ h 1235 21600" />
- <gd name="pang" fmla="at2 dxPos dyPos" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="xPos" y="yPos" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="g27" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="g28" />
- </cxn>
- <cxn ang="0">
- <pos x="g29" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="g30" />
- </cxn>
- <cxn ang="pang">
- <pos x="xPos" y="yPos" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="43200" h="43200">
- <moveTo>
- <pt x="3900" y="14370" />
- </moveTo>
- <arcTo wR="6753" hR="9190" stAng="-11429249" swAng="7426832" />
- <arcTo wR="5333" hR="7267" stAng="-8646143" swAng="5396714" />
- <arcTo wR="4365" hR="5945" stAng="-8748475" swAng="5983381" />
- <arcTo wR="4857" hR="6595" stAng="-7859164" swAng="7034504" />
- <arcTo wR="5333" hR="7273" stAng="-4722533" swAng="6541615" />
- <arcTo wR="6775" hR="9220" stAng="-2776035" swAng="7816140" />
- <arcTo wR="5785" hR="7867" stAng="37501" swAng="6842000" />
- <arcTo wR="6752" hR="9215" stAng="1347096" swAng="6910353" />
- <arcTo wR="7720" hR="10543" stAng="3974558" swAng="4542661" />
- <arcTo wR="4360" hR="5918" stAng="-16496525" swAng="8804134" />
- <arcTo wR="4345" hR="5945" stAng="-14809710" swAng="9151131" />
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x23" y="yPos" />
- </moveTo>
- <arcTo wR="g26" hR="g26" stAng="0" swAng="21600000" />
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x24" y="g17" />
- </moveTo>
- <arcTo wR="g25" hR="g25" stAng="0" swAng="21600000" />
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x25" y="g24" />
- </moveTo>
- <arcTo wR="g12" hR="g12" stAng="0" swAng="21600000" />
- <close />
- </path>
- <path w="43200" h="43200" fill="none" extrusionOk="false">
- <moveTo>
- <pt x="4693" y="26177" />
- </moveTo>
- <arcTo wR="4345" hR="5945" stAng="5204520" swAng="1585770" />
- <moveTo>
- <pt x="6928" y="34899" />
- </moveTo>
- <arcTo wR="4360" hR="5918" stAng="4416628" swAng="686848" />
- <moveTo>
- <pt x="16478" y="39090" />
- </moveTo>
- <arcTo wR="6752" hR="9215" stAng="8257449" swAng="844866" />
- <moveTo>
- <pt x="28827" y="34751" />
- </moveTo>
- <arcTo wR="6752" hR="9215" stAng="387196" swAng="959901" />
- <moveTo>
- <pt x="34129" y="22954" />
- </moveTo>
- <arcTo wR="5785" hR="7867" stAng="-4217541" swAng="4255042" />
- <moveTo>
- <pt x="41798" y="15354" />
- </moveTo>
- <arcTo wR="5333" hR="7273" stAng="1819082" swAng="1665090" />
- <moveTo>
- <pt x="38324" y="5426" />
- </moveTo>
- <arcTo wR="4857" hR="6595" stAng="-824660" swAng="891534" />
- <moveTo>
- <pt x="29078" y="3952" />
- </moveTo>
- <arcTo wR="4857" hR="6595" stAng="-8950887" swAng="1091722" />
- <moveTo>
- <pt x="22141" y="4720" />
- </moveTo>
- <arcTo wR="4365" hR="5945" stAng="-9809656" swAng="1061181" />
- <moveTo>
- <pt x="14000" y="5192" />
- </moveTo>
- <arcTo wR="6753" hR="9190" stAng="-4002417" swAng="739161" />
- <moveTo>
- <pt x="4127" y="15789" />
- </moveTo>
- <arcTo wR="6753" hR="9190" stAng="9459261" swAng="711490" />
- </path>
- </pathLst>
-
- </cloudCallout>
- <corner>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj1" fmla="*/ 100000 h ss" />
- <gd name="maxAdj2" fmla="*/ 100000 w ss" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="x1" fmla="*/ ss a2 100000" />
- <gd name="dy1" fmla="*/ ss a1 100000" />
- <gd name="y1" fmla="+- b 0 dy1" />
- <gd name="cx1" fmla="*/ x1 1 2" />
- <gd name="cy1" fmla="+/ y1 b 2" />
- <gd name="d" fmla="+- w 0 h" />
- <gd name="it" fmla="?: d y1 t" />
- <gd name="ir" fmla="?: d r x1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="cy1" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="cx1" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </corner>
- <cornerTabs>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="md" fmla="mod w h 0" />
- <gd name="dx" fmla="*/ 1 md 20" />
-
- <gd name="y1" fmla="+- 0 b dx" />
-
- <gd name="x1" fmla="+- 0 r dx" />
-
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="dx" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="dx" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="dx" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="t" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="dx" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y1" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="b" />
- </cxn>
- </cxnLst>
-
- <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="dx" y="t" />
- </lnTo>
- <lnTo>
- <pt x="l" y="dx" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="dx" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="dx" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="r" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </cornerTabs>
- <cube>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 100000" />
- <gd name="y1" fmla="*/ ss a 100000" />
- <gd name="y4" fmla="+- b 0 y1" />
- <gd name="y2" fmla="*/ y4 1 2" />
- <gd name="y3" fmla="+/ y1 b 2" />
- <gd name="x4" fmla="+- r 0 y1" />
- <gd name="x2" fmla="*/ x4 1 2" />
- <gd name="x3" fmla="+/ y1 r 2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="100000">
- <pos x="l" y="y1" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y3" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y2" />
- </cxn>
- </cxnLst>
- <rect l="l" t="y1" r="x4" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
- <moveTo>
- <pt x="x4" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="lightenLess" extrusionOk="false">
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="y1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="y1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <moveTo>
- <pt x="x4" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- </path>
- </pathLst>
- </cube>
- <curvedConnector2>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <cubicBezTo>
- <pt x="wd2" y="t" />
- <pt x="r" y="hd2" />
- <pt x="r" y="b" />
- </cubicBezTo>
- </path>
- </pathLst>
- </curvedConnector2>
- <curvedConnector3>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w adj1 100000" />
- <gd name="x1" fmla="+/ l x2 2" />
- <gd name="x3" fmla="+/ r x2 2" />
- <gd name="y3" fmla="*/ h 3 4" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
- <pos x="x2" y="vc" />
- </ahXY>
- </ahLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <cubicBezTo>
- <pt x="x1" y="t" />
- <pt x="x2" y="hd4" />
- <pt x="x2" y="vc" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x2" y="y3" />
- <pt x="x3" y="b" />
- <pt x="r" y="b" />
- </cubicBezTo>
- </path>
- </pathLst>
- </curvedConnector3>
- <curvedConnector4>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w adj1 100000" />
- <gd name="x1" fmla="+/ l x2 2" />
- <gd name="x3" fmla="+/ r x2 2" />
- <gd name="x4" fmla="+/ x2 x3 2" />
- <gd name="x5" fmla="+/ x3 r 2" />
- <gd name="y4" fmla="*/ h adj2 100000" />
- <gd name="y1" fmla="+/ t y4 2" />
- <gd name="y2" fmla="+/ t y1 2" />
- <gd name="y3" fmla="+/ y1 y4 2" />
- <gd name="y5" fmla="+/ b y4 2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
- <pos x="x2" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="x3" y="y4" />
- </ahXY>
- </ahLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <cubicBezTo>
- <pt x="x1" y="t" />
- <pt x="x2" y="y2" />
- <pt x="x2" y="y1" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x2" y="y3" />
- <pt x="x4" y="y4" />
- <pt x="x3" y="y4" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x5" y="y4" />
- <pt x="r" y="y5" />
- <pt x="r" y="b" />
- </cubicBezTo>
- </path>
- </pathLst>
- </curvedConnector4>
- <curvedConnector5>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 50000" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x3" fmla="*/ w adj1 100000" />
- <gd name="x6" fmla="*/ w adj3 100000" />
- <gd name="x1" fmla="+/ x3 x6 2" />
- <gd name="x2" fmla="+/ l x3 2" />
- <gd name="x4" fmla="+/ x3 x1 2" />
- <gd name="x5" fmla="+/ x6 x1 2" />
- <gd name="x7" fmla="+/ x6 r 2" />
- <gd name="y4" fmla="*/ h adj2 100000" />
- <gd name="y1" fmla="+/ t y4 2" />
- <gd name="y2" fmla="+/ t y1 2" />
- <gd name="y3" fmla="+/ y1 y4 2" />
- <gd name="y5" fmla="+/ b y4 2" />
- <gd name="y6" fmla="+/ y5 y4 2" />
- <gd name="y7" fmla="+/ y5 b 2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
- <pos x="x3" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="x1" y="y4" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="-2147483647" maxX="2147483647">
- <pos x="x6" y="y5" />
- </ahXY>
- </ahLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <cubicBezTo>
- <pt x="x2" y="t" />
- <pt x="x3" y="y2" />
- <pt x="x3" y="y1" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x3" y="y3" />
- <pt x="x4" y="y4" />
- <pt x="x1" y="y4" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x5" y="y4" />
- <pt x="x6" y="y6" />
- <pt x="x6" y="y5" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x6" y="y7" />
- <pt x="x7" y="b" />
- <pt x="r" y="b" />
- </cubicBezTo>
- </path>
- </pathLst>
-
- </curvedConnector5>
- <curvedDownArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 w ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="aw" fmla="*/ ss a2 100000" />
-
- <gd name="q1" fmla="+/ th aw 4" />
-
- <gd name="wR" fmla="+- wd2 0 q1" />
-
- <gd name="q7" fmla="*/ wR 2 1" />
-
- <gd name="q8" fmla="*/ q7 q7 1" />
-
- <gd name="q9" fmla="*/ th th 1" />
-
- <gd name="q10" fmla="+- q8 0 q9" />
- <gd name="q11" fmla="sqrt q10" />
- <gd name="idy" fmla="*/ q11 h q7" />
- <gd name="maxAdj3" fmla="*/ 100000 idy ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="ah" fmla="*/ ss adj3 100000" />
-
-
-
-
-
- <gd name="x3" fmla="+- wR th 0" />
-
- <gd name="q2" fmla="*/ h h 1" />
- <gd name="q3" fmla="*/ ah ah 1" />
- <gd name="q4" fmla="+- q2 0 q3" />
- <gd name="q5" fmla="sqrt q4" />
- <gd name="dx" fmla="*/ q5 wR h" />
- <gd name="x5" fmla="+- wR dx 0" />
-
- <gd name="x7" fmla="+- x3 dx 0" />
-
- <gd name="q6" fmla="+- aw 0 th" />
- <gd name="dh" fmla="*/ q6 1 2" />
-
- <gd name="x4" fmla="+- x5 0 dh" />
-
- <gd name="x8" fmla="+- x7 dh 0" />
-
- <gd name="aw2" fmla="*/ aw 1 2" />
- <gd name="x6" fmla="+- r 0 aw2" />
-
- <gd name="y1" fmla="+- b 0 ah" />
- <gd name="swAng" fmla="at2 ah dx" />
-
- <gd name="mswAng" fmla="+- 0 0 swAng" />
- <gd name="iy" fmla="+- b 0 idy" />
-
- <gd name="ix" fmla="+/ wR x3 2" />
-
- <gd name="q12" fmla="*/ th 1 2" />
- <gd name="dang2" fmla="at2 idy q12" />
- <gd name="stAng" fmla="+- 3cd4 swAng 0" />
- <gd name="stAng2" fmla="+- 3cd4 0 dang2" />
- <gd name="swAng2" fmla="+- dang2 0 cd4" />
- <gd name="swAng3" fmla="+- cd4 dang2 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="adj2">
- <pos x="x7" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x4" y="b" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="y1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="ix" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="q12" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x4" y="y1" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x6" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x8" y="y1" />
- </cxn>
- </cxnLst>
-
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="x6" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y1" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="stAng" swAng="mswAng" />
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="3cd4" swAng="swAng" />
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <close />
- </path>
-
- <path fill="darkenLess" stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="ix" y="iy" />
- </moveTo>
- <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="cd2" swAng="swAng3" />
- <close />
- </path>
-
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="ix" y="iy" />
- </moveTo>
- <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="3cd4" swAng="swAng" />
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y1" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="stAng" swAng="mswAng" />
- </path>
- </pathLst>
-
- </curvedDownArrow>
- <curvedLeftArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="a1" fmla="pin 0 adj1 a2" />
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="aw" fmla="*/ ss a2 100000" />
-
- <gd name="q1" fmla="+/ th aw 4" />
-
- <gd name="hR" fmla="+- hd2 0 q1" />
-
- <gd name="q7" fmla="*/ hR 2 1" />
-
- <gd name="q8" fmla="*/ q7 q7 1" />
-
- <gd name="q9" fmla="*/ th th 1" />
-
- <gd name="q10" fmla="+- q8 0 q9" />
- <gd name="q11" fmla="sqrt q10" />
- <gd name="idx" fmla="*/ q11 w q7" />
- <gd name="maxAdj3" fmla="*/ 100000 idx ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="ah" fmla="*/ ss a3 100000" />
-
-
-
-
-
- <gd name="y3" fmla="+- hR th 0" />
-
- <gd name="q2" fmla="*/ w w 1" />
- <gd name="q3" fmla="*/ ah ah 1" />
- <gd name="q4" fmla="+- q2 0 q3" />
- <gd name="q5" fmla="sqrt q4" />
- <gd name="dy" fmla="*/ q5 hR w" />
- <gd name="y5" fmla="+- hR dy 0" />
-
- <gd name="y7" fmla="+- y3 dy 0" />
-
- <gd name="q6" fmla="+- aw 0 th" />
- <gd name="dh" fmla="*/ q6 1 2" />
-
- <gd name="y4" fmla="+- y5 0 dh" />
-
- <gd name="y8" fmla="+- y7 dh 0" />
-
- <gd name="aw2" fmla="*/ aw 1 2" />
- <gd name="y6" fmla="+- b 0 aw2" />
-
- <gd name="x1" fmla="+- l ah 0" />
- <gd name="swAng" fmla="at2 ah dy" />
-
- <gd name="mswAng" fmla="+- 0 0 swAng" />
- <gd name="ix" fmla="+- l idx 0" />
-
- <gd name="iy" fmla="+/ hR y3 2" />
-
- <gd name="q12" fmla="*/ th 1 2" />
- <gd name="dang2" fmla="at2 idx q12" />
- <gd name="swAng2" fmla="+- dang2 0 swAng" />
- <gd name="swAng3" fmla="+- swAng dang2 0" />
- <gd name="stAng3" fmla="+- 0 0 dang2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="a2">
- <pos x="x1" y="y5" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="r" y="y4" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
- <pos x="x1" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="l" y="q12" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y4" />
- </cxn>
- <cxn ang="cd3">
- <pos x="l" y="y6" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="y8" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="iy" />
- </cxn>
- </cxnLst>
-
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="y6" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y5" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="swAng" swAng="swAng2" />
- <arcTo wR="w" hR="hR" stAng="stAng3" swAng="swAng3" />
- <lnTo>
- <pt x="x1" y="y8" />
- </lnTo>
- <close />
- </path>
-
- <path fill="darkenLess" stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="r" y="y3" />
- </moveTo>
- <arcTo wR="w" hR="hR" stAng="0" swAng="-5400000" />
- <lnTo>
- <pt x="l" y="t" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="3cd4" swAng="cd4" />
- <close />
- </path>
-
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="r" y="y3" />
- </moveTo>
- <arcTo wR="w" hR="hR" stAng="0" swAng="-5400000" />
- <lnTo>
- <pt x="l" y="t" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="0" swAng="swAng" />
- <lnTo>
- <pt x="x1" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y5" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="swAng" swAng="swAng2" />
- </path>
- </pathLst>
-
- </curvedLeftArrow>
- <curvedRightArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="a1" fmla="pin 0 adj1 a2" />
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="aw" fmla="*/ ss a2 100000" />
-
- <gd name="q1" fmla="+/ th aw 4" />
-
- <gd name="hR" fmla="+- hd2 0 q1" />
-
- <gd name="q7" fmla="*/ hR 2 1" />
-
- <gd name="q8" fmla="*/ q7 q7 1" />
-
- <gd name="q9" fmla="*/ th th 1" />
-
- <gd name="q10" fmla="+- q8 0 q9" />
- <gd name="q11" fmla="sqrt q10" />
- <gd name="idx" fmla="*/ q11 w q7" />
- <gd name="maxAdj3" fmla="*/ 100000 idx ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="ah" fmla="*/ ss a3 100000" />
-
-
-
-
-
- <gd name="y3" fmla="+- hR th 0" />
-
- <gd name="q2" fmla="*/ w w 1" />
- <gd name="q3" fmla="*/ ah ah 1" />
- <gd name="q4" fmla="+- q2 0 q3" />
- <gd name="q5" fmla="sqrt q4" />
- <gd name="dy" fmla="*/ q5 hR w" />
- <gd name="y5" fmla="+- hR dy 0" />
-
- <gd name="y7" fmla="+- y3 dy 0" />
-
- <gd name="q6" fmla="+- aw 0 th" />
- <gd name="dh" fmla="*/ q6 1 2" />
-
- <gd name="y4" fmla="+- y5 0 dh" />
-
- <gd name="y8" fmla="+- y7 dh 0" />
-
- <gd name="aw2" fmla="*/ aw 1 2" />
- <gd name="y6" fmla="+- b 0 aw2" />
-
- <gd name="x1" fmla="+- r 0 ah" />
- <gd name="swAng" fmla="at2 ah dy" />
-
- <gd name="stAng" fmla="+- cd2 0 swAng" />
- <gd name="mswAng" fmla="+- 0 0 swAng" />
- <gd name="ix" fmla="+- r 0 idx" />
-
- <gd name="iy" fmla="+/ hR y3 2" />
-
- <gd name="q12" fmla="*/ th 1 2" />
- <gd name="dang2" fmla="at2 idx q12" />
- <gd name="swAng2" fmla="+- dang2 0 cd4" />
- <gd name="swAng3" fmla="+- cd4 dang2 0" />
- <gd name="stAng3" fmla="+- cd2 0 dang2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="a2">
- <pos x="x1" y="y5" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="r" y="y4" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
- <pos x="x1" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="l" y="iy" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="y8" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y6" />
- </cxn>
- <cxn ang="0">
- <pos x="x1" y="y4" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="q12" />
- </cxn>
- </cxnLst>
-
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="hR" />
- </moveTo>
- <arcTo wR="w" hR="hR" stAng="cd2" swAng="mswAng" />
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y7" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="stAng" swAng="swAng" />
- <close />
- </path>
-
- <path fill="darkenLess" stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="r" y="th" />
- </moveTo>
- <arcTo wR="w" hR="hR" stAng="3cd4" swAng="swAng2" />
- <arcTo wR="w" hR="hR" stAng="stAng3" swAng="swAng3" />
- <close />
- </path>
-
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="l" y="hR" />
- </moveTo>
- <arcTo wR="w" hR="hR" stAng="cd2" swAng="mswAng" />
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y7" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="stAng" swAng="swAng" />
- <lnTo>
- <pt x="l" y="hR" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="r" y="th" />
- </lnTo>
- <arcTo wR="w" hR="hR" stAng="3cd4" swAng="swAng2" />
- </path>
- </pathLst>
-
- </curvedRightArrow>
- <curvedUpArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 w ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="aw" fmla="*/ ss a2 100000" />
-
- <gd name="q1" fmla="+/ th aw 4" />
-
- <gd name="wR" fmla="+- wd2 0 q1" />
-
- <gd name="q7" fmla="*/ wR 2 1" />
-
- <gd name="q8" fmla="*/ q7 q7 1" />
-
- <gd name="q9" fmla="*/ th th 1" />
-
- <gd name="q10" fmla="+- q8 0 q9" />
- <gd name="q11" fmla="sqrt q10" />
- <gd name="idy" fmla="*/ q11 h q7" />
- <gd name="maxAdj3" fmla="*/ 100000 idy ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="ah" fmla="*/ ss adj3 100000" />
-
-
-
-
-
- <gd name="x3" fmla="+- wR th 0" />
-
- <gd name="q2" fmla="*/ h h 1" />
- <gd name="q3" fmla="*/ ah ah 1" />
- <gd name="q4" fmla="+- q2 0 q3" />
- <gd name="q5" fmla="sqrt q4" />
- <gd name="dx" fmla="*/ q5 wR h" />
- <gd name="x5" fmla="+- wR dx 0" />
-
- <gd name="x7" fmla="+- x3 dx 0" />
-
- <gd name="q6" fmla="+- aw 0 th" />
- <gd name="dh" fmla="*/ q6 1 2" />
-
- <gd name="x4" fmla="+- x5 0 dh" />
-
- <gd name="x8" fmla="+- x7 dh 0" />
-
- <gd name="aw2" fmla="*/ aw 1 2" />
- <gd name="x6" fmla="+- r 0 aw2" />
-
- <gd name="y1" fmla="+- t ah 0" />
- <gd name="swAng" fmla="at2 ah dx" />
-
- <gd name="mswAng" fmla="+- 0 0 swAng" />
- <gd name="iy" fmla="+- t idy 0" />
-
- <gd name="ix" fmla="+/ wR x3 2" />
-
- <gd name="q12" fmla="*/ th 1 2" />
- <gd name="dang2" fmla="at2 idy q12" />
- <gd name="swAng2" fmla="+- dang2 0 swAng" />
- <gd name="mswAng2" fmla="+- 0 0 swAng2" />
- <gd name="stAng3" fmla="+- cd4 0 swAng" />
- <gd name="swAng3" fmla="+- swAng dang2 0" />
- <gd name="stAng2" fmla="+- cd4 0 dang2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="a2">
- <pos x="x7" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x4" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="y1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x6" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x4" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="q12" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ix" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x8" y="y1" />
- </cxn>
- </cxnLst>
-
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="x6" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y1" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="stAng3" swAng="swAng3" />
- <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <close />
- </path>
-
- <path fill="darkenLess" stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="wR" y="b" />
- </moveTo>
- <arcTo wR="wR" hR="h" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="th" y="t" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="cd2" swAng="-5400000" />
- <close />
- </path>
-
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="ix" y="iy" />
- </moveTo>
- <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y1" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="stAng3" swAng="swAng" />
- <lnTo>
- <pt x="wR" y="b" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="th" y="t" />
- </lnTo>
- <arcTo wR="wR" hR="h" stAng="cd2" swAng="-5400000" />
- </path>
- </pathLst>
-
- </curvedUpArrow>
- <decagon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="vf" fmla="val 105146" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="shd2" fmla="*/ hd2 vf 100000" />
- <gd name="dx1" fmla="cos wd2 2160000" />
- <gd name="dx2" fmla="cos wd2 4320000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="dy1" fmla="sin shd2 4320000" />
- <gd name="dy2" fmla="sin shd2 2160000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc dy2 0" />
- <gd name="y4" fmla="+- vc dy1 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y2" r="x4" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </decagon>
- <diagStripe>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 100000" />
- <gd name="x2" fmla="*/ w a 100000" />
- <gd name="x1" fmla="*/ x2 1 2" />
- <gd name="x3" fmla="+/ x2 r 2" />
- <gd name="y2" fmla="*/ h a 100000" />
- <gd name="y1" fmla="*/ y2 1 2" />
- <gd name="y3" fmla="+/ y2 b 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="100000">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="hc" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="x3" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </diagStripe>
- <diamond>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="ir" fmla="*/ w 3 4" />
- <gd name="ib" fmla="*/ h 3 4" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </diamond>
- <dodecagon>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x1" fmla="*/ w 2894 21600" />
- <gd name="x2" fmla="*/ w 7906 21600" />
- <gd name="x3" fmla="*/ w 13694 21600" />
- <gd name="x4" fmla="*/ w 18706 21600" />
- <gd name="y1" fmla="*/ h 2894 21600" />
- <gd name="y2" fmla="*/ h 7906 21600" />
- <gd name="y3" fmla="*/ h 13694 21600" />
- <gd name="y4" fmla="*/ h 18706 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="y1" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y3" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y1" r="x4" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </dodecagon>
- <donut>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dr" fmla="*/ ss a 100000" />
- <gd name="iwd2" fmla="+- wd2 0 dr" />
- <gd name="ihd2" fmla="+- hd2 0 dr" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefR="adj" minR="0" maxR="50000">
- <pos x="dr" y="vc" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- <moveTo>
- <pt x="dr" y="vc" />
- </moveTo>
- <arcTo wR="iwd2" hR="ihd2" stAng="cd2" swAng="-5400000" />
- <arcTo wR="iwd2" hR="ihd2" stAng="cd4" swAng="-5400000" />
- <arcTo wR="iwd2" hR="ihd2" stAng="0" swAng="-5400000" />
- <arcTo wR="iwd2" hR="ihd2" stAng="3cd4" swAng="-5400000" />
- <close />
- </path>
- </pathLst>
-
- </donut>
- <doubleWave>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 6250" />
-
- <gd name="adj2" fmla="val 0" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 12500" />
- <gd name="a2" fmla="pin -10000 adj2 10000" />
- <gd name="y1" fmla="*/ h a1 100000" />
-
- <gd name="dy2" fmla="*/ y1 10 3" />
- <gd name="y2" fmla="+- y1 0 dy2" />
-
- <gd name="y3" fmla="+- y1 dy2 0" />
-
- <gd name="y4" fmla="+- b 0 y1" />
-
- <gd name="y5" fmla="+- y4 0 dy2" />
-
- <gd name="y6" fmla="+- y4 dy2 0" />
-
- <gd name="dx1" fmla="*/ w a2 100000" />
-
- <gd name="of2" fmla="*/ w a2 50000" />
-
- <gd name="x1" fmla="abs dx1" />
-
- <gd name="dx2" fmla="?: of2 0 of2" />
- <gd name="x2" fmla="+- l 0 dx2" />
-
- <gd name="dx8" fmla="?: of2 of2 0" />
- <gd name="x8" fmla="+- r 0 dx8" />
-
- <gd name="dx3" fmla="+/ dx2 x8 6" />
- <gd name="x3" fmla="+- x2 dx3 0" />
-
- <gd name="dx4" fmla="+/ dx2 x8 3" />
- <gd name="x4" fmla="+- x2 dx4 0" />
-
- <gd name="x5" fmla="+/ x2 x8 2" />
-
- <gd name="x6" fmla="+- x5 dx3 0" />
-
- <gd name="x7" fmla="+/ x6 x8 2" />
-
- <gd name="x9" fmla="+- l dx8 0" />
-
- <gd name="x15" fmla="+- r dx2 0" />
-
- <gd name="x10" fmla="+- x9 dx3 0" />
-
- <gd name="x11" fmla="+- x9 dx4 0" />
-
- <gd name="x12" fmla="+/ x9 x15 2" />
-
- <gd name="x13" fmla="+- x12 dx3 0" />
-
- <gd name="x14" fmla="+/ x13 x15 2" />
-
- <gd name="x16" fmla="+- r 0 x1" />
-
- <gd name="xAdj" fmla="+- hc dx1 0" />
- <gd name="il" fmla="max x2 x9" />
- <gd name="ir" fmla="min x8 x15" />
- <gd name="it" fmla="*/ h a1 50000" />
- <gd name="ib" fmla="+- b 0 it" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="12500">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="-10000" maxX="10000">
- <pos x="xAdj" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="x12" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x5" y="y4" />
- </cxn>
- <cxn ang="0">
- <pos x="x16" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x2" y="y1" />
- </moveTo>
- <cubicBezTo>
- <pt x="x3" y="y2" />
- <pt x="x4" y="y3" />
- <pt x="x5" y="y1" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x6" y="y2" />
- <pt x="x7" y="y3" />
- <pt x="x8" y="y1" />
- </cubicBezTo>
- <lnTo>
- <pt x="x15" y="y4" />
- </lnTo>
- <cubicBezTo>
- <pt x="x14" y="y6" />
- <pt x="x13" y="y5" />
- <pt x="x12" y="y4" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x11" y="y6" />
- <pt x="x10" y="y5" />
- <pt x="x9" y="y4" />
- </cubicBezTo>
- <close />
- </path>
- </pathLst>
-
- </doubleWave>
- <downArrow>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 100000 h ss" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="dy1" fmla="*/ ss a2 100000" />
- <gd name="y1" fmla="+- b 0 dy1" />
- <gd name="dx1" fmla="*/ w a1 200000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc dx1 0" />
- <gd name="dy2" fmla="*/ x1 dy1 wd2" />
- <gd name="y2" fmla="+- y1 dy2 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="100000">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="l" y="y1" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y1" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y1" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="t" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </downArrow>
- <downArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 64977" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 w ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ 100000 h ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 ss h" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
- <gd name="dx1" fmla="*/ ss a2 100000" />
-
- <gd name="dx2" fmla="*/ ss a1 200000" />
-
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="dy3" fmla="*/ ss a3 100000" />
-
- <gd name="y3" fmla="+- b 0 dy3" />
- <gd name="y2" fmla="*/ h a4 100000" />
-
- <gd name="y1" fmla="*/ y2 1 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="x2" y="y3" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="b" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="y3" />
- </ahXY>
- <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y1" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </downArrowCallout>
- <ellipse>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
- </ellipse>
- <ellipseRibbon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 12500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 25000 adj2 75000" />
- <gd name="q10" fmla="+- 100000 0 a1" />
- <gd name="q11" fmla="*/ q10 1 2" />
- <gd name="q12" fmla="+- a1 0 q11" />
- <gd name="minAdj3" fmla="max 0 q12" />
- <gd name="a3" fmla="pin minAdj3 adj3 a1" />
-
-
- <gd name="dx2" fmla="*/ w a2 200000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
-
- <gd name="x3" fmla="+- x2 wd8 0" />
-
- <gd name="x4" fmla="+- r 0 x3" />
-
- <gd name="x5" fmla="+- r 0 x2" />
-
- <gd name="x6" fmla="+- r 0 wd8" />
-
- <gd name="dy1" fmla="*/ h a3 100000" />
-
- <gd name="f1" fmla="*/ 4 dy1 w" />
-
- <gd name="q1" fmla="*/ x3 x3 w" />
- <gd name="q2" fmla="+- x3 0 q1" />
- <gd name="y1" fmla="*/ f1 q2 1" />
-
- <gd name="cx1" fmla="*/ x3 1 2" />
-
- <gd name="cy1" fmla="*/ f1 cx1 1" />
-
- <gd name="cx2" fmla="+- r 0 cx1" />
-
-
-
- <gd name="q1" fmla="*/ h a1 100000" />
-
- <gd name="dy3" fmla="+- q1 0 dy1" />
-
- <gd name="q3" fmla="*/ x2 x2 w" />
- <gd name="q4" fmla="+- x2 0 q3" />
- <gd name="q5" fmla="*/ f1 q4 1" />
- <gd name="y3" fmla="+- q5 dy3 0" />
-
-
-
- <gd name="q6" fmla="+- dy1 dy3 y3" />
- <gd name="q7" fmla="+- q6 dy1 0" />
- <gd name="cy3" fmla="+- q7 dy3 0" />
-
- <gd name="rh" fmla="+- b 0 q1" />
-
- <gd name="q8" fmla="*/ dy1 14 16" />
- <gd name="y2" fmla="+/ q8 rh 2" />
-
-
- <gd name="y5" fmla="+- q5 rh 0" />
-
- <gd name="y6" fmla="+- y3 rh 0" />
-
- <gd name="cx4" fmla="*/ x2 1 2" />
-
- <gd name="q9" fmla="*/ f1 cx4 1" />
- <gd name="cy4" fmla="+- q9 rh 0" />
-
- <gd name="cx5" fmla="+- r 0 cx4" />
-
-
-
-
-
- <gd name="cy6" fmla="+- cy3 rh 0" />
-
- <gd name="y7" fmla="+- y1 dy3 0" />
- <gd name="cy7" fmla="+- q1 q1 y7" />
- <gd name="y8" fmla="+- b 0 dy1" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="hc" y="q1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="25000" maxX="75000">
- <pos x="x2" y="b" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="minAdj3" maxY="a1">
- <pos x="l" y="y8" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="q1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd8" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="y2" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="q1" r="x5" b="y6" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <quadBezTo>
- <pt x="cx1" y="cy1" />
- <pt x="x3" y="y1" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy3" />
- <pt x="x5" y="y3" />
- </quadBezTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <quadBezTo>
- <pt x="cx2" y="cy1" />
- <pt x="r" y="t" />
- </quadBezTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="rh" />
- </lnTo>
- <quadBezTo>
- <pt x="cx5" y="cy4" />
- <pt x="x5" y="y5" />
- </quadBezTo>
- <lnTo>
- <pt x="x5" y="y6" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy6" />
- <pt x="x2" y="y6" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y5" />
- </lnTo>
- <quadBezTo>
- <pt x="cx4" y="cy4" />
- <pt x="l" y="rh" />
- </quadBezTo>
- <lnTo>
- <pt x="wd8" y="y2" />
- </lnTo>
- <close />
- </path>
- <path fill="darkenLess" stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="x3" y="y7" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy3" />
- <pt x="x5" y="y3" />
- </quadBezTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y7" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy7" />
- <pt x="x3" y="y7" />
- </quadBezTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <quadBezTo>
- <pt x="cx1" y="cy1" />
- <pt x="x3" y="y1" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy3" />
- <pt x="x5" y="y3" />
- </quadBezTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <quadBezTo>
- <pt x="cx2" y="cy1" />
- <pt x="r" y="t" />
- </quadBezTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="rh" />
- </lnTo>
- <quadBezTo>
- <pt x="cx5" y="cy4" />
- <pt x="x5" y="y5" />
- </quadBezTo>
- <lnTo>
- <pt x="x5" y="y6" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy6" />
- <pt x="x2" y="y6" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y5" />
- </lnTo>
- <quadBezTo>
- <pt x="cx4" y="cy4" />
- <pt x="l" y="rh" />
- </quadBezTo>
- <lnTo>
- <pt x="wd8" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x2" y="y5" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <moveTo>
- <pt x="x5" y="y3" />
- </moveTo>
- <lnTo>
- <pt x="x5" y="y5" />
- </lnTo>
- <moveTo>
- <pt x="x3" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="y7" />
- </lnTo>
- <moveTo>
- <pt x="x4" y="y7" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- </path>
- </pathLst>
-
- </ellipseRibbon>
- <ellipseRibbon2>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 12500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
-
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 25000 adj2 75000" />
- <gd name="q10" fmla="+- 100000 0 a1" />
- <gd name="q11" fmla="*/ q10 1 2" />
- <gd name="q12" fmla="+- a1 0 q11" />
- <gd name="minAdj3" fmla="max 0 q12" />
- <gd name="a3" fmla="pin minAdj3 adj3 a1" />
- <gd name="dx2" fmla="*/ w a2 200000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
-
- <gd name="x3" fmla="+- x2 wd8 0" />
-
- <gd name="x4" fmla="+- r 0 x3" />
-
- <gd name="x5" fmla="+- r 0 x2" />
-
- <gd name="x6" fmla="+- r 0 wd8" />
-
- <gd name="dy1" fmla="*/ h a3 100000" />
-
- <gd name="f1" fmla="*/ 4 dy1 w" />
-
- <gd name="q1" fmla="*/ x3 x3 w" />
- <gd name="q2" fmla="+- x3 0 q1" />
- <gd name="u1" fmla="*/ f1 q2 1" />
-
- <gd name="y1" fmla="+- b 0 u1" />
- <gd name="cx1" fmla="*/ x3 1 2" />
-
- <gd name="cu1" fmla="*/ f1 cx1 1" />
-
- <gd name="cy1" fmla="+- b 0 cu1" />
- <gd name="cx2" fmla="+- r 0 cx1" />
-
-
-
- <gd name="q1" fmla="*/ h a1 100000" />
-
- <gd name="dy3" fmla="+- q1 0 dy1" />
-
- <gd name="q3" fmla="*/ x2 x2 w" />
- <gd name="q4" fmla="+- x2 0 q3" />
- <gd name="q5" fmla="*/ f1 q4 1" />
- <gd name="u3" fmla="+- q5 dy3 0" />
-
- <gd name="y3" fmla="+- b 0 u3" />
-
-
- <gd name="q6" fmla="+- dy1 dy3 u3" />
- <gd name="q7" fmla="+- q6 dy1 0" />
- <gd name="cu3" fmla="+- q7 dy3 0" />
-
- <gd name="cy3" fmla="+- b 0 cu3" />
- <gd name="rh" fmla="+- b 0 q1" />
-
- <gd name="q8" fmla="*/ dy1 14 16" />
- <gd name="u2" fmla="+/ q8 rh 2" />
-
- <gd name="y2" fmla="+- b 0 u2" />
-
- <gd name="u5" fmla="+- q5 rh 0" />
-
- <gd name="y5" fmla="+- b 0 u5" />
- <gd name="u6" fmla="+- u3 rh 0" />
-
- <gd name="y6" fmla="+- b 0 u6" />
- <gd name="cx4" fmla="*/ x2 1 2" />
-
- <gd name="q9" fmla="*/ f1 cx4 1" />
- <gd name="cu4" fmla="+- q9 rh 0" />
-
- <gd name="cy4" fmla="+- b 0 cu4" />
- <gd name="cx5" fmla="+- r 0 cx4" />
-
-
-
-
-
- <gd name="cu6" fmla="+- cu3 rh 0" />
-
- <gd name="cy6" fmla="+- b 0 cu6" />
- <gd name="u7" fmla="+- u1 dy3 0" />
- <gd name="y7" fmla="+- b 0 u7" />
- <gd name="cu7" fmla="+- q1 q1 u7" />
- <gd name="cy7" fmla="+- b 0 cu7" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="hc" y="rh" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="25000" maxX="100000">
- <pos x="x2" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="minAdj3" maxY="a1">
- <pos x="l" y="dy1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd8" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="rh" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="y2" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="y6" r="x5" b="rh" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <quadBezTo>
- <pt x="cx1" y="cy1" />
- <pt x="x3" y="y1" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy3" />
- <pt x="x5" y="y3" />
- </quadBezTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <quadBezTo>
- <pt x="cx2" y="cy1" />
- <pt x="r" y="b" />
- </quadBezTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="q1" />
- </lnTo>
- <quadBezTo>
- <pt x="cx5" y="cy4" />
- <pt x="x5" y="y5" />
- </quadBezTo>
- <lnTo>
- <pt x="x5" y="y6" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy6" />
- <pt x="x2" y="y6" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y5" />
- </lnTo>
- <quadBezTo>
- <pt x="cx4" y="cy4" />
- <pt x="l" y="q1" />
- </quadBezTo>
- <lnTo>
- <pt x="wd8" y="y2" />
- </lnTo>
- <close />
- </path>
- <path fill="darkenLess" stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="x3" y="y7" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy3" />
- <pt x="x5" y="y3" />
- </quadBezTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y7" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy7" />
- <pt x="x3" y="y7" />
- </quadBezTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="wd8" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="q1" />
- </lnTo>
- <quadBezTo>
- <pt x="cx4" y="cy4" />
- <pt x="x2" y="y5" />
- </quadBezTo>
- <lnTo>
- <pt x="x2" y="y6" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy6" />
- <pt x="x5" y="y6" />
- </quadBezTo>
- <lnTo>
- <pt x="x5" y="y5" />
- </lnTo>
- <quadBezTo>
- <pt x="cx5" y="cy4" />
- <pt x="r" y="q1" />
- </quadBezTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <quadBezTo>
- <pt x="cx2" y="cy1" />
- <pt x="x4" y="y1" />
- </quadBezTo>
- <lnTo>
- <pt x="x5" y="y3" />
- </lnTo>
- <quadBezTo>
- <pt x="hc" y="cy3" />
- <pt x="x2" y="y3" />
- </quadBezTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <quadBezTo>
- <pt x="cx1" y="cy1" />
- <pt x="l" y="b" />
- </quadBezTo>
- <close />
- <moveTo>
- <pt x="x2" y="y3" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y5" />
- </lnTo>
- <moveTo>
- <pt x="x5" y="y5" />
- </moveTo>
- <lnTo>
- <pt x="x5" y="y3" />
- </lnTo>
- <moveTo>
- <pt x="x3" y="y7" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <moveTo>
- <pt x="x4" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="y7" />
- </lnTo>
- </path>
- </pathLst>
-
- </ellipseRibbon2>
- <flowChartAlternateProcess>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="+- r 0 ssd6" />
- <gd name="y2" fmla="+- b 0 ssd6" />
- <gd name="il" fmla="*/ ssd6 29289 100000" />
-
-
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="ssd6" />
- </moveTo>
- <arcTo wR="ssd6" hR="ssd6" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <arcTo wR="ssd6" hR="ssd6" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="ssd6" hR="ssd6" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="ssd6" y="b" />
- </lnTo>
- <arcTo wR="ssd6" hR="ssd6" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </flowChartAlternateProcess>
- <flowChartCollate>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="ir" fmla="*/ w 3 4" />
- <gd name="ib" fmla="*/ h 3 4" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- </cxnLst>
-
- <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="2" h="2">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="2" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <lnTo>
- <pt x="2" y="2" />
- </lnTo>
- <lnTo>
- <pt x="0" y="2" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartCollate>
- <flowChartConnector>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </flowChartConnector>
- <flowChartDecision>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="ir" fmla="*/ w 3 4" />
- <gd name="ib" fmla="*/ h 3 4" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="2" h="2">
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="2" y="1" />
- </lnTo>
- <lnTo>
- <pt x="1" y="2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartDecision>
- <flowChartDelay>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartDelay>
- <flowChartDisplay>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 5 6" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="6" h="6">
- <moveTo>
- <pt x="0" y="3" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="1" y="6" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartDisplay>
- <flowChartDocument>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h 17322 21600" />
- <gd name="y2" fmla="*/ h 20172 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="21600" h="21600">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="21600" y="0" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="17322" />
- </lnTo>
- <cubicBezTo>
- <pt x="10800" y="17322" />
- <pt x="10800" y="23922" />
- <pt x="0" y="20172" />
- </cubicBezTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartDocument>
- <flowChartExtract>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 3 4" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd4" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd4" t="vc" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="2" h="2">
- <moveTo>
- <pt x="0" y="2" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="2" y="2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartExtract>
- <flowChartInputOutput>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x3" fmla="*/ w 2 5" />
- <gd name="x4" fmla="*/ w 3 5" />
- <gd name="x5" fmla="*/ w 4 5" />
- <gd name="x6" fmla="*/ w 9 10" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x4" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd10" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd5" t="t" r="x5" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="5" h="5">
- <moveTo>
- <pt x="0" y="5" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <lnTo>
- <pt x="4" y="5" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartInputOutput>
- <flowChartInternalStorage>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd8" t="hd8" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="1" h="1">
-
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <lnTo>
- <pt x="0" y="1" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="8" h="8">
-
- <moveTo>
- <pt x="1" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="8" />
- </lnTo>
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="8" y="1" />
- </lnTo>
- </path>
- <path fill="none" w="1" h="1">
-
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <lnTo>
- <pt x="0" y="1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartInternalStorage>
- <flowChartMagneticDisk>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y3" fmla="*/ h 5 6" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="hd3" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="hd3" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="6" h="6">
-
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <arcTo wR="3" hR="1" stAng="cd2" swAng="cd2" />
- <lnTo>
- <pt x="6" y="5" />
- </lnTo>
- <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="6" h="6">
-
- <moveTo>
- <pt x="6" y="1" />
- </moveTo>
- <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
- </path>
- <path fill="none" w="6" h="6">
-
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <arcTo wR="3" hR="1" stAng="cd2" swAng="cd2" />
- <lnTo>
- <pt x="6" y="5" />
- </lnTo>
- <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
- <close />
- </path>
- </pathLst>
-
- </flowChartMagneticDisk>
- <flowChartMagneticDrum>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 2 3" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="6" h="6">
-
- <moveTo>
- <pt x="1" y="0" />
- </moveTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="1" y="6" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="6" h="6">
-
- <moveTo>
- <pt x="5" y="6" />
- </moveTo>
- <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
- </path>
- <path fill="none" w="6" h="6">
-
- <moveTo>
- <pt x="1" y="0" />
- </moveTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="1" y="6" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
- <close />
- </path>
- </pathLst>
-
- </flowChartMagneticDrum>
- <flowChartMagneticTape>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- <gd name="ang1" fmla="at2 w h" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="hc" y="b" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="ang1" />
- <lnTo>
- <pt x="r" y="ib" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartMagneticTape>
- <flowChartManualInput>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="hd10" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="hd5" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="5" h="5">
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <lnTo>
- <pt x="5" y="5" />
- </lnTo>
- <lnTo>
- <pt x="0" y="5" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartManualInput>
- <flowChartManualOperation>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x3" fmla="*/ w 4 5" />
- <gd name="x4" fmla="*/ w 9 10" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd10" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd5" t="t" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="5" h="5">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <lnTo>
- <pt x="4" y="5" />
- </lnTo>
- <lnTo>
- <pt x="1" y="5" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartManualOperation>
- <flowChartMerge>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 3 4" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd4" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd4" t="t" r="x2" b="vc" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="2" h="2">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="2" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartMerge>
- <flowChartMultidocument>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y2" fmla="*/ h 3675 21600" />
- <gd name="y8" fmla="*/ h 20782 21600" />
- <gd name="x3" fmla="*/ w 9298 21600" />
- <gd name="x4" fmla="*/ w 12286 21600" />
- <gd name="x5" fmla="*/ w 18595 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x4" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y8" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="y2" r="x5" b="y8" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="21600" h="21600">
-
- <moveTo>
- <pt x="0" y="20782" />
- </moveTo>
- <cubicBezTo>
- <pt x="9298" y="23542" />
- <pt x="9298" y="18022" />
- <pt x="18595" y="18022" />
- </cubicBezTo>
- <lnTo>
- <pt x="18595" y="3675" />
- </lnTo>
- <lnTo>
- <pt x="0" y="3675" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="1532" y="3675" />
- </moveTo>
- <lnTo>
- <pt x="1532" y="1815" />
- </lnTo>
- <lnTo>
- <pt x="20000" y="1815" />
- </lnTo>
- <lnTo>
- <pt x="20000" y="16252" />
- </lnTo>
- <cubicBezTo>
- <pt x="19298" y="16252" />
- <pt x="18595" y="16352" />
- <pt x="18595" y="16352" />
- </cubicBezTo>
- <lnTo>
- <pt x="18595" y="3675" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="2972" y="1815" />
- </moveTo>
- <lnTo>
- <pt x="2972" y="0" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="0" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="14392" />
- </lnTo>
- <cubicBezTo>
- <pt x="20800" y="14392" />
- <pt x="20000" y="14467" />
- <pt x="20000" y="14467" />
- </cubicBezTo>
- <lnTo>
- <pt x="20000" y="1815" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="21600" h="21600">
-
- <moveTo>
- <pt x="0" y="3675" />
- </moveTo>
- <lnTo>
- <pt x="18595" y="3675" />
- </lnTo>
- <lnTo>
- <pt x="18595" y="18022" />
- </lnTo>
- <cubicBezTo>
- <pt x="9298" y="18022" />
- <pt x="9298" y="23542" />
- <pt x="0" y="20782" />
- </cubicBezTo>
- <close />
- <moveTo>
- <pt x="1532" y="3675" />
- </moveTo>
- <lnTo>
- <pt x="1532" y="1815" />
- </lnTo>
- <lnTo>
- <pt x="20000" y="1815" />
- </lnTo>
- <lnTo>
- <pt x="20000" y="16252" />
- </lnTo>
- <cubicBezTo>
- <pt x="19298" y="16252" />
- <pt x="18595" y="16352" />
- <pt x="18595" y="16352" />
- </cubicBezTo>
- <moveTo>
- <pt x="2972" y="1815" />
- </moveTo>
- <lnTo>
- <pt x="2972" y="0" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="0" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="14392" />
- </lnTo>
- <cubicBezTo>
- <pt x="20800" y="14392" />
- <pt x="20000" y="14467" />
- <pt x="20000" y="14467" />
- </cubicBezTo>
- </path>
- <path stroke="false" fill="none" w="21600" h="21600">
-
- <moveTo>
- <pt x="0" y="20782" />
- </moveTo>
- <cubicBezTo>
- <pt x="9298" y="23542" />
- <pt x="9298" y="18022" />
- <pt x="18595" y="18022" />
- </cubicBezTo>
- <lnTo>
- <pt x="18595" y="16352" />
- </lnTo>
- <cubicBezTo>
- <pt x="18595" y="16352" />
- <pt x="19298" y="16252" />
- <pt x="20000" y="16252" />
- </cubicBezTo>
- <lnTo>
- <pt x="20000" y="14467" />
- </lnTo>
- <cubicBezTo>
- <pt x="20000" y="14467" />
- <pt x="20800" y="14392" />
- <pt x="21600" y="14392" />
- </cubicBezTo>
- <lnTo>
- <pt x="21600" y="0" />
- </lnTo>
- <lnTo>
- <pt x="2972" y="0" />
- </lnTo>
- <lnTo>
- <pt x="2972" y="1815" />
- </lnTo>
- <lnTo>
- <pt x="1532" y="1815" />
- </lnTo>
- <lnTo>
- <pt x="1532" y="3675" />
- </lnTo>
- <lnTo>
- <pt x="0" y="3675" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartMultidocument>
- <flowChartOfflineStorage>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x4" fmla="*/ w 3 4" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd4" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="wd4" t="t" r="x4" b="vc" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="2" h="2">
-
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="2" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="2" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="5" h="5">
-
- <moveTo>
- <pt x="2" y="4" />
- </moveTo>
- <lnTo>
- <pt x="3" y="4" />
- </lnTo>
- </path>
- <path fill="none" extrusionOk="true" w="2" h="2">
-
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="2" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartOfflineStorage>
- <flowChartOffpageConnector>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y1" fmla="*/ h 4 5" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="10" h="10">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="10" y="0" />
- </lnTo>
- <lnTo>
- <pt x="10" y="8" />
- </lnTo>
- <lnTo>
- <pt x="5" y="10" />
- </lnTo>
- <lnTo>
- <pt x="0" y="8" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartOffpageConnector>
- <flowChartOnlineStorage>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 5 6" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="6" h="6">
- <moveTo>
- <pt x="1" y="0" />
- </moveTo>
- <lnTo>
- <pt x="6" y="0" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="1" y="6" />
- </lnTo>
- <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
- <close />
- </path>
- </pathLst>
-
- </flowChartOnlineStorage>
- <flowChartOr>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="hc" y="t" />
- </moveTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- </path>
- <path fill="none">
-
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </flowChartOr>
- <flowChartPredefinedProcess>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 7 8" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd8" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="1" h="1">
-
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <lnTo>
- <pt x="0" y="1" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="8" h="8">
-
- <moveTo>
- <pt x="1" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="8" />
- </lnTo>
- <moveTo>
- <pt x="7" y="0" />
- </moveTo>
- <lnTo>
- <pt x="7" y="8" />
- </lnTo>
- </path>
- <path fill="none" w="1" h="1">
-
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <lnTo>
- <pt x="0" y="1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartPredefinedProcess>
- <flowChartPreparation>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 4 5" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd5" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="10" h="10">
- <moveTo>
- <pt x="0" y="5" />
- </moveTo>
- <lnTo>
- <pt x="2" y="0" />
- </lnTo>
- <lnTo>
- <pt x="8" y="0" />
- </lnTo>
- <lnTo>
- <pt x="10" y="5" />
- </lnTo>
- <lnTo>
- <pt x="8" y="10" />
- </lnTo>
- <lnTo>
- <pt x="2" y="10" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartPreparation>
- <flowChartProcess>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="1" h="1">
- <moveTo>
- <pt x="0" y="0" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="1" y="1" />
- </lnTo>
- <lnTo>
- <pt x="0" y="1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartProcess>
- <flowChartPunchedCard>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="hd5" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="5" h="5">
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="5" y="0" />
- </lnTo>
- <lnTo>
- <pt x="5" y="5" />
- </lnTo>
- <lnTo>
- <pt x="0" y="5" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartPunchedCard>
- <flowChartPunchedTape>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="y2" fmla="*/ h 9 10" />
- <gd name="ib" fmla="*/ h 4 5" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="hd10" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="hd5" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="20" h="20">
- <moveTo>
- <pt x="0" y="2" />
- </moveTo>
- <arcTo wR="5" hR="2" stAng="cd2" swAng="-10800000" />
- <arcTo wR="5" hR="2" stAng="cd2" swAng="cd2" />
- <lnTo>
- <pt x="20" y="18" />
- </lnTo>
- <arcTo wR="5" hR="2" stAng="0" swAng="-10800000" />
- <arcTo wR="5" hR="2" stAng="0" swAng="cd2" />
- <close />
- </path>
- </pathLst>
-
- </flowChartPunchedTape>
- <flowChartSort>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="ir" fmla="*/ w 3 4" />
- <gd name="ib" fmla="*/ h 3 4" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false" w="2" h="2">
-
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="2" y="1" />
- </lnTo>
- <lnTo>
- <pt x="1" y="2" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false" w="2" h="2">
-
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="2" y="1" />
- </lnTo>
- </path>
- <path fill="none" w="2" h="2">
-
- <moveTo>
- <pt x="0" y="1" />
- </moveTo>
- <lnTo>
- <pt x="1" y="0" />
- </lnTo>
- <lnTo>
- <pt x="2" y="1" />
- </lnTo>
- <lnTo>
- <pt x="1" y="2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </flowChartSort>
- <flowChartSummingJunction>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="il" y="it" />
- </moveTo>
- <lnTo>
- <pt x="ir" y="ib" />
- </lnTo>
- <moveTo>
- <pt x="ir" y="it" />
- </moveTo>
- <lnTo>
- <pt x="il" y="ib" />
- </lnTo>
- </path>
- <path fill="none">
-
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </flowChartSummingJunction>
- <flowChartTerminator>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="il" fmla="*/ w 1018 21600" />
- <gd name="ir" fmla="*/ w 20582 21600" />
- <gd name="it" fmla="*/ h 3163 21600" />
- <gd name="ib" fmla="*/ h 18437 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="21600" h="21600">
- <moveTo>
- <pt x="3475" y="0" />
- </moveTo>
- <lnTo>
- <pt x="18125" y="0" />
- </lnTo>
- <arcTo wR="3475" hR="10800" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="3475" y="21600" />
- </lnTo>
- <arcTo wR="3475" hR="10800" stAng="cd4" swAng="cd2" />
- <close />
- </path>
- </pathLst>
-
- </flowChartTerminator>
- <foldedCorner>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dy2" fmla="*/ ss a 100000" />
- <gd name="dy1" fmla="*/ dy2 1 5" />
- <gd name="x1" fmla="+- r 0 dy2" />
- <gd name="x2" fmla="+- x1 dy1 0" />
- <gd name="y2" fmla="+- b 0 dy2" />
- <gd name="y1" fmla="+- y2 dy1 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="x1" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
- <moveTo>
- <pt x="x1" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- </path>
- </pathLst>
-
- </foldedCorner>
- <frame>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 12500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="x1" fmla="*/ ss a1 100000" />
-
- <gd name="x4" fmla="+- r 0 x1" />
-
-
-
- <gd name="y4" fmla="+- b 0 x1" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="x1" r="x4" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x1" y="x1" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="x1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </frame>
- <funnel>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="d" fmla="*/ ss 1 20" />
-
-
- <gd name="rw2" fmla="+- wd2 0 d" />
-
- <gd name="rh2" fmla="+- hd4 0 d" />
-
-
-
- <gd name="t1" fmla="cos wd2 480000" />
-
- <gd name="t2" fmla="sin hd4 480000" />
-
- <gd name="da" fmla="at2 t1 t2" />
-
-
- <gd name="2da" fmla="*/ da 2 1" />
- <gd name="stAng1" fmla="+- cd2 0 da" />
- <gd name="swAng1" fmla="+- cd2 2da 0" />
-
-
- <gd name="swAng3" fmla="+- cd2 0 2da" />
-
-
- <gd name="rw3" fmla="*/ wd2 1 4" />
- <gd name="rh3" fmla="*/ hd4 1 4" />
-
-
- <gd name="ct1" fmla="cos hd4 stAng1" />
- <gd name="st1" fmla="sin wd2 stAng1" />
- <gd name="m1" fmla="mod ct1 st1 0" />
- <gd name="n1" fmla="*/ wd2 hd4 m1" />
- <gd name="dx1" fmla="cos n1 stAng1" />
- <gd name="dy1" fmla="sin n1 stAng1" />
- <gd name="x1" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- hd4 dy1 0" />
-
-
- <gd name="ct3" fmla="cos rh3 da" />
- <gd name="st3" fmla="sin rw3 da" />
- <gd name="m3" fmla="mod ct3 st3 0" />
- <gd name="n3" fmla="*/ rw3 rh3 m3" />
- <gd name="dx3" fmla="cos n3 da" />
- <gd name="dy3" fmla="sin n3 da" />
- <gd name="x3" fmla="+- hc dx3 0" />
- <gd name="vc3" fmla="+- b 0 rh3" />
- <gd name="y2" fmla="+- vc3 dy3 0" />
-
-
- <gd name="x2" fmla="+- wd2 0 rw2" />
-
- <gd name="cd" fmla="*/ cd2 2 1" />
- </gdLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo hR="hd4" wR="wd2" stAng="stAng1" swAng="swAng1" />
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <arcTo hR="rh3" wR="rw3" stAng="da" swAng="swAng3" />
- <close />
- <moveTo>
- <pt x="x2" y="hd4" />
- </moveTo>
- <arcTo hR="rh2" wR="rw2" stAng="cd2" swAng="-21600000" />
- <close />
- </path>
- </pathLst>
-
- </funnel>
- <gear6>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 15000" />
-
- <gd name="adj2" fmla="val 3526" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
-
-
-
- <gd name="a1" fmla="pin 0 adj1 20000" />
- <gd name="a2" fmla="pin 0 adj2 5358" />
-
-
- <gd name="th" fmla="*/ ss a1 100000" />
- <gd name="lFD" fmla="*/ ss a2 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
- <gd name="l2" fmla="*/ lFD 1 2" />
- <gd name="l3" fmla="+- th2 l2 0" />
-
-
- <gd name="rh" fmla="+- hd2 0 th" />
- <gd name="rw" fmla="+- wd2 0 th" />
-
-
- <gd name="dr" fmla="+- rw 0 rh" />
- <gd name="maxr" fmla="?: dr rh rw" />
- <gd name="ha" fmla="at2 maxr l3" />
-
-
- <gd name="aA1" fmla="+- 19800000 0 ha" />
- <gd name="aD1" fmla="+- 19800000 ha 0" />
-
-
- <gd name="ta11" fmla="cos rw aA1" />
- <gd name="ta12" fmla="sin rh aA1" />
- <gd name="bA1" fmla="at2 ta11 ta12" />
-
- <gd name="cta1" fmla="cos rh bA1" />
- <gd name="sta1" fmla="sin rw bA1" />
- <gd name="ma1" fmla="mod cta1 sta1 0" />
- <gd name="na1" fmla="*/ rw rh ma1" />
- <gd name="dxa1" fmla="cos na1 bA1" />
- <gd name="dya1" fmla="sin na1 bA1" />
- <gd name="xA1" fmla="+- hc dxa1 0" />
- <gd name="yA1" fmla="+- vc dya1 0" />
-
-
- <gd name="td11" fmla="cos rw aD1" />
- <gd name="td12" fmla="sin rh aD1" />
- <gd name="bD1" fmla="at2 td11 td12" />
-
- <gd name="ctd1" fmla="cos rh bD1" />
- <gd name="std1" fmla="sin rw bD1" />
- <gd name="md1" fmla="mod ctd1 std1 0" />
- <gd name="nd1" fmla="*/ rw rh md1" />
- <gd name="dxd1" fmla="cos nd1 bD1" />
- <gd name="dyd1" fmla="sin nd1 bD1" />
- <gd name="xD1" fmla="+- hc dxd1 0" />
- <gd name="yD1" fmla="+- vc dyd1 0" />
-
-
- <gd name="xAD1" fmla="+- xA1 0 xD1" />
- <gd name="yAD1" fmla="+- yA1 0 yD1" />
- <gd name="lAD1" fmla="mod xAD1 yAD1 0" />
- <gd name="a1" fmla="at2 yAD1 xAD1" />
-
-
- <gd name="dxF1" fmla="sin lFD a1" />
- <gd name="dyF1" fmla="cos lFD a1" />
- <gd name="xF1" fmla="+- xD1 dxF1 0" />
- <gd name="yF1" fmla="+- yD1 dyF1 0" />
- <gd name="xE1" fmla="+- xA1 0 dxF1" />
- <gd name="yE1" fmla="+- yA1 0 dyF1" />
-
-
- <gd name="yC1t" fmla="sin th a1" />
- <gd name="xC1t" fmla="cos th a1" />
- <gd name="yC1" fmla="+- yF1 yC1t 0" />
- <gd name="xC1" fmla="+- xF1 0 xC1t" />
-
-
- <gd name="yB1" fmla="+- yE1 yC1t 0" />
- <gd name="xB1" fmla="+- xE1 0 xC1t" />
-
-
- <gd name="aD6" fmla="+- 3cd4 ha 0" />
-
-
- <gd name="td61" fmla="cos rw aD6" />
- <gd name="td62" fmla="sin rh aD6" />
- <gd name="bD6" fmla="at2 td61 td62" />
-
- <gd name="ctd6" fmla="cos rh bD6" />
- <gd name="std6" fmla="sin rw bD6" />
- <gd name="md6" fmla="mod ctd6 std6 0" />
- <gd name="nd6" fmla="*/ rw rh md6" />
- <gd name="dxd6" fmla="cos nd6 bD6" />
- <gd name="dyd6" fmla="sin nd6 bD6" />
- <gd name="xD6" fmla="+- hc dxd6 0" />
- <gd name="yD6" fmla="+- vc dyd6 0" />
-
-
- <gd name="xA6" fmla="+- hc 0 dxd6" />
-
-
- <gd name="xF6" fmla="+- xD6 0 lFD" />
- <gd name="xE6" fmla="+- xA6 lFD 0" />
-
-
- <gd name="yC6" fmla="+- yD6 0 th" />
-
- <gd name="swAng1" fmla="+- bA1 0 bD6" />
-
-
- <gd name="aA2" fmla="+- 1800000 0 ha" />
- <gd name="aD2" fmla="+- 1800000 ha 0" />
-
-
- <gd name="ta21" fmla="cos rw aA2" />
- <gd name="ta22" fmla="sin rh aA2" />
- <gd name="bA2" fmla="at2 ta21 ta22" />
-
- <gd name="yA2" fmla="+- h 0 yD1" />
-
-
- <gd name="td21" fmla="cos rw aD2" />
- <gd name="td22" fmla="sin rh aD2" />
- <gd name="bD2" fmla="at2 td21 td22" />
-
- <gd name="yD2" fmla="+- h 0 yA1" />
-
-
- <gd name="yC2" fmla="+- h 0 yB1" />
-
-
- <gd name="yB2" fmla="+- h 0 yC1" />
- <gd name="xB2" fmla="val xC1" />
-
- <gd name="swAng2" fmla="+- bA2 0 bD1" />
-
-
- <gd name="aD3" fmla="+- cd4 ha 0" />
-
- <gd name="td31" fmla="cos rw aD3" />
- <gd name="td32" fmla="sin rh aD3" />
- <gd name="bD3" fmla="at2 td31 td32" />
-
-
- <gd name="yD3" fmla="+- h 0 yD6" />
-
-
- <gd name="yB3" fmla="+- h 0 yC6" />
-
-
- <gd name="aD4" fmla="+- 9000000 ha 0" />
-
- <gd name="td41" fmla="cos rw aD4" />
- <gd name="td42" fmla="sin rh aD4" />
- <gd name="bD4" fmla="at2 td41 td42" />
-
-
- <gd name="xD4" fmla="+- w 0 xD1" />
-
-
- <gd name="xC4" fmla="+- w 0 xC1" />
-
-
- <gd name="xB4" fmla="+- w 0 xB1" />
-
-
- <gd name="aD5" fmla="+- 12600000 ha 0" />
-
- <gd name="td51" fmla="cos rw aD5" />
- <gd name="td52" fmla="sin rh aD5" />
- <gd name="bD5" fmla="at2 td51 td52" />
-
-
- <gd name="xD5" fmla="+- w 0 xA1" />
-
-
- <gd name="xC5" fmla="+- w 0 xB1" />
-
-
- <gd name="xB5" fmla="+- w 0 xC1" />
-
-
- <gd name="xCxn1" fmla="+/ xB1 xC1 2" />
- <gd name="yCxn1" fmla="+/ yB1 yC1 2" />
- <gd name="yCxn2" fmla="+- b 0 yCxn1" />
- <gd name="xCxn4" fmla="+/ r 0 xCxn1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="20000">
- <pos x="xD6" y="yD6" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="5358">
- <pos x="xA6" y="yD6" />
- </ahXY>
-
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="19800000">
- <pos x="xCxn1" y="yCxn1" />
- </cxn>
-
- <cxn ang="1800000">
- <pos x="xCxn1" y="yCxn2" />
- </cxn>
-
- <cxn ang="cd4">
- <pos x="hc" y="yB3" />
- </cxn>
-
- <cxn ang="9000000">
- <pos x="xCxn4" y="yCxn2" />
- </cxn>
-
- <cxn ang="12600000">
- <pos x="xCxn4" y="yCxn1" />
- </cxn>
-
- <cxn ang="3cd4">
- <pos x="hc" y="yC6" />
- </cxn>
-
- </cxnLst>
-
- <rect l="xD5" t="yA1" r="xA1" b="yD2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xA1" y="yA1" />
- </moveTo>
- <lnTo>
- <pt x="xB1" y="yB1" />
- </lnTo>
- <lnTo>
- <pt x="xC1" y="yC1" />
- </lnTo>
- <lnTo>
- <pt x="xD1" y="yD1" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD1" swAng="swAng2" />
-
- <lnTo>
- <pt x="xC1" y="yB2" />
- </lnTo>
- <lnTo>
- <pt x="xB1" y="yC2" />
- </lnTo>
- <lnTo>
- <pt x="xA1" y="yD2" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD2" swAng="swAng1" />
-
- <lnTo>
- <pt x="xF6" y="yB3" />
- </lnTo>
- <lnTo>
- <pt x="xE6" y="yB3" />
- </lnTo>
- <lnTo>
- <pt x="xA6" y="yD3" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD3" swAng="swAng1" />
-
- <lnTo>
- <pt x="xB4" y="yC2" />
- </lnTo>
- <lnTo>
- <pt x="xC4" y="yB2" />
- </lnTo>
- <lnTo>
- <pt x="xD4" y="yA2" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD4" swAng="swAng2" />
-
- <lnTo>
- <pt x="xB5" y="yC1" />
- </lnTo>
- <lnTo>
- <pt x="xC5" y="yB1" />
- </lnTo>
- <lnTo>
- <pt x="xD5" y="yA1" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD5" swAng="swAng1" />
-
- <lnTo>
- <pt x="xE6" y="yC6" />
- </lnTo>
- <lnTo>
- <pt x="xF6" y="yC6" />
- </lnTo>
- <lnTo>
- <pt x="xD6" y="yD6" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD6" swAng="swAng1" />
- <close />
- </path>
- </pathLst>
-
- </gear6>
- <gear9>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 10000" />
-
- <gd name="adj2" fmla="val 1763" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
-
-
-
- <gd name="a1" fmla="pin 0 adj1 20000" />
- <gd name="a2" fmla="pin 0 adj2 2679" />
-
-
- <gd name="th" fmla="*/ ss a1 100000" />
- <gd name="lFD" fmla="*/ ss a2 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
- <gd name="l2" fmla="*/ lFD 1 2" />
- <gd name="l3" fmla="+- th2 l2 0" />
-
-
- <gd name="rh" fmla="+- hd2 0 th" />
- <gd name="rw" fmla="+- wd2 0 th" />
-
-
- <gd name="dr" fmla="+- rw 0 rh" />
- <gd name="maxr" fmla="?: dr rh rw" />
- <gd name="ha" fmla="at2 maxr l3" />
-
-
- <gd name="aA1" fmla="+- 18600000 0 ha" />
- <gd name="aD1" fmla="+- 18600000 ha 0" />
-
-
- <gd name="ta11" fmla="cos rw aA1" />
- <gd name="ta12" fmla="sin rh aA1" />
- <gd name="bA1" fmla="at2 ta11 ta12" />
-
- <gd name="cta1" fmla="cos rh bA1" />
- <gd name="sta1" fmla="sin rw bA1" />
- <gd name="ma1" fmla="mod cta1 sta1 0" />
- <gd name="na1" fmla="*/ rw rh ma1" />
- <gd name="dxa1" fmla="cos na1 bA1" />
- <gd name="dya1" fmla="sin na1 bA1" />
- <gd name="xA1" fmla="+- hc dxa1 0" />
- <gd name="yA1" fmla="+- vc dya1 0" />
-
-
- <gd name="td11" fmla="cos rw aD1" />
- <gd name="td12" fmla="sin rh aD1" />
- <gd name="bD1" fmla="at2 td11 td12" />
-
- <gd name="ctd1" fmla="cos rh bD1" />
- <gd name="std1" fmla="sin rw bD1" />
- <gd name="md1" fmla="mod ctd1 std1 0" />
- <gd name="nd1" fmla="*/ rw rh md1" />
- <gd name="dxd1" fmla="cos nd1 bD1" />
- <gd name="dyd1" fmla="sin nd1 bD1" />
- <gd name="xD1" fmla="+- hc dxd1 0" />
- <gd name="yD1" fmla="+- vc dyd1 0" />
-
-
- <gd name="xAD1" fmla="+- xA1 0 xD1" />
- <gd name="yAD1" fmla="+- yA1 0 yD1" />
- <gd name="lAD1" fmla="mod xAD1 yAD1 0" />
- <gd name="a1" fmla="at2 yAD1 xAD1" />
-
-
- <gd name="dxF1" fmla="sin lFD a1" />
- <gd name="dyF1" fmla="cos lFD a1" />
- <gd name="xF1" fmla="+- xD1 dxF1 0" />
- <gd name="yF1" fmla="+- yD1 dyF1 0" />
- <gd name="xE1" fmla="+- xA1 0 dxF1" />
- <gd name="yE1" fmla="+- yA1 0 dyF1" />
-
-
- <gd name="yC1t" fmla="sin th a1" />
- <gd name="xC1t" fmla="cos th a1" />
- <gd name="yC1" fmla="+- yF1 yC1t 0" />
- <gd name="xC1" fmla="+- xF1 0 xC1t" />
-
-
- <gd name="yB1" fmla="+- yE1 yC1t 0" />
- <gd name="xB1" fmla="+- xE1 0 xC1t" />
-
-
- <gd name="aA2" fmla="+- 21000000 0 ha" />
- <gd name="aD2" fmla="+- 21000000 ha 0" />
-
-
- <gd name="ta21" fmla="cos rw aA2" />
- <gd name="ta22" fmla="sin rh aA2" />
- <gd name="bA2" fmla="at2 ta21 ta22" />
-
- <gd name="cta2" fmla="cos rh bA2" />
- <gd name="sta2" fmla="sin rw bA2" />
- <gd name="ma2" fmla="mod cta2 sta2 0" />
- <gd name="na2" fmla="*/ rw rh ma2" />
- <gd name="dxa2" fmla="cos na2 bA2" />
- <gd name="dya2" fmla="sin na2 bA2" />
- <gd name="xA2" fmla="+- hc dxa2 0" />
- <gd name="yA2" fmla="+- vc dya2 0" />
-
-
- <gd name="td21" fmla="cos rw aD2" />
- <gd name="td22" fmla="sin rh aD2" />
- <gd name="bD2" fmla="at2 td21 td22" />
-
- <gd name="ctd2" fmla="cos rh bD2" />
- <gd name="std2" fmla="sin rw bD2" />
- <gd name="md2" fmla="mod ctd2 std2 0" />
- <gd name="nd2" fmla="*/ rw rh md2" />
- <gd name="dxd2" fmla="cos nd2 bD2" />
- <gd name="dyd2" fmla="sin nd2 bD2" />
- <gd name="xD2" fmla="+- hc dxd2 0" />
- <gd name="yD2" fmla="+- vc dyd2 0" />
-
-
- <gd name="xAD2" fmla="+- xA2 0 xD2" />
- <gd name="yAD2" fmla="+- yA2 0 yD2" />
- <gd name="lAD2" fmla="mod xAD2 yAD2 0" />
- <gd name="a2" fmla="at2 yAD2 xAD2" />
-
-
- <gd name="dxF2" fmla="sin lFD a2" />
- <gd name="dyF2" fmla="cos lFD a2" />
- <gd name="xF2" fmla="+- xD2 dxF2 0" />
- <gd name="yF2" fmla="+- yD2 dyF2 0" />
- <gd name="xE2" fmla="+- xA2 0 dxF2" />
- <gd name="yE2" fmla="+- yA2 0 dyF2" />
-
-
- <gd name="yC2t" fmla="sin th a2" />
- <gd name="xC2t" fmla="cos th a2" />
- <gd name="yC2" fmla="+- yF2 yC2t 0" />
- <gd name="xC2" fmla="+- xF2 0 xC2t" />
-
-
- <gd name="yB2" fmla="+- yE2 yC2t 0" />
- <gd name="xB2" fmla="+- xE2 0 xC2t" />
-
- <gd name="swAng1" fmla="+- bA2 0 bD1" />
-
-
- <gd name="aA3" fmla="+- 1800000 0 ha" />
- <gd name="aD3" fmla="+- 1800000 ha 0" />
-
-
- <gd name="ta31" fmla="cos rw aA3" />
- <gd name="ta32" fmla="sin rh aA3" />
- <gd name="bA3" fmla="at2 ta31 ta32" />
-
- <gd name="cta3" fmla="cos rh bA3" />
- <gd name="sta3" fmla="sin rw bA3" />
- <gd name="ma3" fmla="mod cta3 sta3 0" />
- <gd name="na3" fmla="*/ rw rh ma3" />
- <gd name="dxa3" fmla="cos na3 bA3" />
- <gd name="dya3" fmla="sin na3 bA3" />
- <gd name="xA3" fmla="+- hc dxa3 0" />
- <gd name="yA3" fmla="+- vc dya3 0" />
-
-
- <gd name="td31" fmla="cos rw aD3" />
- <gd name="td32" fmla="sin rh aD3" />
- <gd name="bD3" fmla="at2 td31 td32" />
-
- <gd name="ctd3" fmla="cos rh bD3" />
- <gd name="std3" fmla="sin rw bD3" />
- <gd name="md3" fmla="mod ctd3 std3 0" />
- <gd name="nd3" fmla="*/ rw rh md3" />
- <gd name="dxd3" fmla="cos nd3 bD3" />
- <gd name="dyd3" fmla="sin nd3 bD3" />
- <gd name="xD3" fmla="+- hc dxd3 0" />
- <gd name="yD3" fmla="+- vc dyd3 0" />
-
-
- <gd name="xAD3" fmla="+- xA3 0 xD3" />
- <gd name="yAD3" fmla="+- yA3 0 yD3" />
- <gd name="lAD3" fmla="mod xAD3 yAD3 0" />
- <gd name="a3" fmla="at2 yAD3 xAD3" />
-
-
- <gd name="dxF3" fmla="sin lFD a3" />
- <gd name="dyF3" fmla="cos lFD a3" />
- <gd name="xF3" fmla="+- xD3 dxF3 0" />
- <gd name="yF3" fmla="+- yD3 dyF3 0" />
- <gd name="xE3" fmla="+- xA3 0 dxF3" />
- <gd name="yE3" fmla="+- yA3 0 dyF3" />
-
-
- <gd name="yC3t" fmla="sin th a3" />
- <gd name="xC3t" fmla="cos th a3" />
- <gd name="yC3" fmla="+- yF3 yC3t 0" />
- <gd name="xC3" fmla="+- xF3 0 xC3t" />
-
-
- <gd name="yB3" fmla="+- yE3 yC3t 0" />
- <gd name="xB3" fmla="+- xE3 0 xC3t" />
-
- <gd name="swAng2" fmla="+- bA3 0 bD2" />
-
-
- <gd name="aA4" fmla="+- 4200000 0 ha" />
- <gd name="aD4" fmla="+- 4200000 ha 0" />
-
-
- <gd name="ta41" fmla="cos rw aA4" />
- <gd name="ta42" fmla="sin rh aA4" />
- <gd name="bA4" fmla="at2 ta41 ta42" />
-
- <gd name="cta4" fmla="cos rh bA4" />
- <gd name="sta4" fmla="sin rw bA4" />
- <gd name="ma4" fmla="mod cta4 sta4 0" />
- <gd name="na4" fmla="*/ rw rh ma4" />
- <gd name="dxa4" fmla="cos na4 bA4" />
- <gd name="dya4" fmla="sin na4 bA4" />
- <gd name="xA4" fmla="+- hc dxa4 0" />
- <gd name="yA4" fmla="+- vc dya4 0" />
-
-
- <gd name="td41" fmla="cos rw aD4" />
- <gd name="td42" fmla="sin rh aD4" />
- <gd name="bD4" fmla="at2 td41 td42" />
-
- <gd name="ctd4" fmla="cos rh bD4" />
- <gd name="std4" fmla="sin rw bD4" />
- <gd name="md4" fmla="mod ctd4 std4 0" />
- <gd name="nd4" fmla="*/ rw rh md4" />
- <gd name="dxd4" fmla="cos nd4 bD4" />
- <gd name="dyd4" fmla="sin nd4 bD4" />
- <gd name="xD4" fmla="+- hc dxd4 0" />
- <gd name="yD4" fmla="+- vc dyd4 0" />
-
-
- <gd name="xAD4" fmla="+- xA4 0 xD4" />
- <gd name="yAD4" fmla="+- yA4 0 yD4" />
- <gd name="lAD4" fmla="mod xAD4 yAD4 0" />
- <gd name="a4" fmla="at2 yAD4 xAD4" />
-
-
- <gd name="dxF4" fmla="sin lFD a4" />
- <gd name="dyF4" fmla="cos lFD a4" />
- <gd name="xF4" fmla="+- xD4 dxF4 0" />
- <gd name="yF4" fmla="+- yD4 dyF4 0" />
- <gd name="xE4" fmla="+- xA4 0 dxF4" />
- <gd name="yE4" fmla="+- yA4 0 dyF4" />
-
-
- <gd name="yC4t" fmla="sin th a4" />
- <gd name="xC4t" fmla="cos th a4" />
- <gd name="yC4" fmla="+- yF4 yC4t 0" />
- <gd name="xC4" fmla="+- xF4 0 xC4t" />
-
-
- <gd name="yB4" fmla="+- yE4 yC4t 0" />
- <gd name="xB4" fmla="+- xE4 0 xC4t" />
-
- <gd name="swAng3" fmla="+- bA4 0 bD3" />
-
-
- <gd name="aA5" fmla="+- 6600000 0 ha" />
- <gd name="aD5" fmla="+- 6600000 ha 0" />
-
- <gd name="ta51" fmla="cos rw aA5" />
- <gd name="ta52" fmla="sin rh aA5" />
- <gd name="bA5" fmla="at2 ta51 ta52" />
-
- <gd name="td51" fmla="cos rw aD5" />
- <gd name="td52" fmla="sin rh aD5" />
- <gd name="bD5" fmla="at2 td51 td52" />
-
-
- <gd name="xD5" fmla="+- w 0 xA4" />
-
-
- <gd name="xC5" fmla="+- w 0 xB4" />
-
-
- <gd name="xB5" fmla="+- w 0 xC4" />
-
- <gd name="swAng4" fmla="+- bA5 0 bD4" />
-
-
- <gd name="aD6" fmla="+- 9000000 ha 0" />
-
- <gd name="td61" fmla="cos rw aD6" />
- <gd name="td62" fmla="sin rh aD6" />
- <gd name="bD6" fmla="at2 td61 td62" />
-
-
- <gd name="xD6" fmla="+- w 0 xA3" />
-
-
- <gd name="xC6" fmla="+- w 0 xB3" />
-
-
- <gd name="xB6" fmla="+- w 0 xC3" />
-
-
- <gd name="aD7" fmla="+- 11400000 ha 0" />
-
- <gd name="td71" fmla="cos rw aD7" />
- <gd name="td72" fmla="sin rh aD7" />
- <gd name="bD7" fmla="at2 td71 td72" />
-
-
- <gd name="xD7" fmla="+- w 0 xA2" />
-
-
- <gd name="xC7" fmla="+- w 0 xB2" />
-
-
- <gd name="xB7" fmla="+- w 0 xC2" />
-
-
- <gd name="aD8" fmla="+- 13800000 ha 0" />
-
- <gd name="td81" fmla="cos rw aD8" />
- <gd name="td82" fmla="sin rh aD8" />
- <gd name="bD8" fmla="at2 td81 td82" />
-
-
- <gd name="xA8" fmla="+- w 0 xD1" />
-
- <gd name="xD8" fmla="+- w 0 xA1" />
-
-
- <gd name="xC8" fmla="+- w 0 xB1" />
-
-
- <gd name="xB8" fmla="+- w 0 xC1" />
-
-
- <gd name="aA9" fmla="+- 3cd4 0 ha" />
- <gd name="aD9" fmla="+- 3cd4 ha 0" />
-
-
- <gd name="td91" fmla="cos rw aD9" />
- <gd name="td92" fmla="sin rh aD9" />
- <gd name="bD9" fmla="at2 td91 td92" />
-
- <gd name="ctd9" fmla="cos rh bD9" />
- <gd name="std9" fmla="sin rw bD9" />
- <gd name="md9" fmla="mod ctd9 std9 0" />
- <gd name="nd9" fmla="*/ rw rh md9" />
- <gd name="dxd9" fmla="cos nd9 bD9" />
- <gd name="dyd9" fmla="sin nd9 bD9" />
- <gd name="xD9" fmla="+- hc dxd9 0" />
- <gd name="yD9" fmla="+- vc dyd9 0" />
-
-
- <gd name="ta91" fmla="cos rw aA9" />
- <gd name="ta92" fmla="sin rh aA9" />
- <gd name="bA9" fmla="at2 ta91 ta92" />
-
- <gd name="xA9" fmla="+- hc 0 dxd9" />
-
-
- <gd name="xF9" fmla="+- xD9 0 lFD" />
- <gd name="xE9" fmla="+- xA9 lFD 0" />
-
-
- <gd name="yC9" fmla="+- yD9 0 th" />
-
- <gd name="swAng5" fmla="+- bA9 0 bD8" />
-
-
- <gd name="xCxn1" fmla="+/ xB1 xC1 2" />
- <gd name="yCxn1" fmla="+/ yB1 yC1 2" />
- <gd name="xCxn2" fmla="+/ xB2 xC2 2" />
- <gd name="yCxn2" fmla="+/ yB2 yC2 2" />
- <gd name="xCxn3" fmla="+/ xB3 xC3 2" />
- <gd name="yCxn3" fmla="+/ yB3 yC3 2" />
- <gd name="xCxn4" fmla="+/ xB4 xC4 2" />
- <gd name="yCxn4" fmla="+/ yB4 yC4 2" />
- <gd name="xCxn5" fmla="+/ r 0 xCxn4" />
- <gd name="xCxn6" fmla="+/ r 0 xCxn3" />
- <gd name="xCxn7" fmla="+/ r 0 xCxn2" />
- <gd name="xCxn8" fmla="+/ r 0 xCxn1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="20000">
- <pos x="xD9" y="yD9" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="2679">
- <pos x="xA9" y="yD9" />
- </ahXY>
-
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="18600000">
- <pos x="xCxn1" y="yCxn1" />
- </cxn>
-
- <cxn ang="21000000">
- <pos x="xCxn2" y="yCxn2" />
- </cxn>
-
- <cxn ang="1800000">
- <pos x="xCxn3" y="yCxn3" />
- </cxn>
-
- <cxn ang="4200000">
- <pos x="xCxn4" y="yCxn4" />
- </cxn>
-
- <cxn ang="6600000">
- <pos x="xCxn5" y="yCxn4" />
- </cxn>
-
- <cxn ang="9000000">
- <pos x="xCxn6" y="yCxn3" />
- </cxn>
-
- <cxn ang="11400000">
- <pos x="xCxn7" y="yCxn2" />
- </cxn>
-
- <cxn ang="13800000">
- <pos x="xCxn8" y="yCxn1" />
- </cxn>
-
- <cxn ang="3cd4">
- <pos x="hc" y="yC9" />
- </cxn>
-
- </cxnLst>
-
- <rect l="xA8" t="yD1" r="xD1" b="yD3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xA1" y="yA1" />
- </moveTo>
- <lnTo>
- <pt x="xB1" y="yB1" />
- </lnTo>
- <lnTo>
- <pt x="xC1" y="yC1" />
- </lnTo>
- <lnTo>
- <pt x="xD1" y="yD1" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD1" swAng="swAng1" />
-
- <lnTo>
- <pt x="xB2" y="yB2" />
- </lnTo>
- <lnTo>
- <pt x="xC2" y="yC2" />
- </lnTo>
- <lnTo>
- <pt x="xD2" y="yD2" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD2" swAng="swAng2" />
-
- <lnTo>
- <pt x="xB3" y="yB3" />
- </lnTo>
- <lnTo>
- <pt x="xC3" y="yC3" />
- </lnTo>
- <lnTo>
- <pt x="xD3" y="yD3" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD3" swAng="swAng3" />
-
- <lnTo>
- <pt x="xB4" y="yB4" />
- </lnTo>
- <lnTo>
- <pt x="xC4" y="yC4" />
- </lnTo>
- <lnTo>
- <pt x="xD4" y="yD4" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD4" swAng="swAng4" />
-
- <lnTo>
- <pt x="xB5" y="yC4" />
- </lnTo>
- <lnTo>
- <pt x="xC5" y="yB4" />
- </lnTo>
- <lnTo>
- <pt x="xD5" y="yA4" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD5" swAng="swAng3" />
-
- <lnTo>
- <pt x="xB6" y="yC3" />
- </lnTo>
- <lnTo>
- <pt x="xC6" y="yB3" />
- </lnTo>
- <lnTo>
- <pt x="xD6" y="yA3" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD6" swAng="swAng2" />
-
- <lnTo>
- <pt x="xB7" y="yC2" />
- </lnTo>
- <lnTo>
- <pt x="xC7" y="yB2" />
- </lnTo>
- <lnTo>
- <pt x="xD7" y="yA2" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD7" swAng="swAng1" />
-
- <lnTo>
- <pt x="xB8" y="yC1" />
- </lnTo>
- <lnTo>
- <pt x="xC8" y="yB1" />
- </lnTo>
- <lnTo>
- <pt x="xD8" y="yA1" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD8" swAng="swAng5" />
-
- <lnTo>
- <pt x="xE9" y="yC9" />
- </lnTo>
- <lnTo>
- <pt x="xF9" y="yC9" />
- </lnTo>
- <lnTo>
- <pt x="xD9" y="yD9" />
- </lnTo>
- <arcTo hR="rh" wR="rw" stAng="bD9" swAng="swAng5" />
- <close />
- </path>
- </pathLst>
-
- </gear9>
- <halfFrame>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 33333" />
-
- <gd name="adj2" fmla="val 33333" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 100000 w ss" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="x1" fmla="*/ ss a2 100000" />
- <gd name="g1" fmla="*/ h x1 w" />
- <gd name="g2" fmla="+- h 0 g1" />
- <gd name="maxAdj1" fmla="*/ 100000 g2 ss" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="y1" fmla="*/ ss a1 100000" />
- <gd name="dx2" fmla="*/ y1 w h" />
- <gd name="x2" fmla="+- r 0 dx2" />
- <gd name="dy2" fmla="*/ x1 h w" />
- <gd name="y2" fmla="+- b 0 dy2" />
- <gd name="cx1" fmla="*/ x1 1 2" />
- <gd name="cy1" fmla="+/ y2 b 2" />
- <gd name="cx2" fmla="+/ x2 r 2" />
- <gd name="cy2" fmla="*/ y1 1 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="cx2" y="cy2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="cx1" y="cy1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </halfFrame>
- <heart>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dx1" fmla="*/ w 49 48" />
- <gd name="dx2" fmla="*/ w 10 48" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- t 0 hd3" />
-
-
- <gd name="il" fmla="*/ w 1 6" />
- <gd name="ir" fmla="*/ w 5 6" />
- <gd name="ib" fmla="*/ h 2 3" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="hd4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="hc" y="hd4" />
- </moveTo>
- <cubicBezTo>
- <pt x="x3" y="y1" />
- <pt x="x4" y="hd4" />
- <pt x="hc" y="b" />
- </cubicBezTo>
- <cubicBezTo>
- <pt x="x1" y="hd4" />
- <pt x="x2" y="y1" />
- <pt x="hc" y="hd4" />
- </cubicBezTo>
- <close />
- </path>
- </pathLst>
-
- </heart>
- <heptagon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="hf" fmla="val 102572" />
- <gd name="vf" fmla="val 105210" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="swd2" fmla="*/ wd2 hf 100000" />
- <gd name="shd2" fmla="*/ hd2 vf 100000" />
- <gd name="svc" fmla="*/ vc vf 100000" />
- <gd name="dx1" fmla="*/ swd2 97493 100000" />
- <gd name="dx2" fmla="*/ swd2 78183 100000" />
- <gd name="dx3" fmla="*/ swd2 43388 100000" />
- <gd name="dy1" fmla="*/ shd2 62349 100000" />
- <gd name="dy2" fmla="*/ shd2 22252 100000" />
- <gd name="dy3" fmla="*/ shd2 90097 100000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc dx3 0" />
- <gd name="x5" fmla="+- hc dx2 0" />
- <gd name="x6" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- svc 0 dy1" />
- <gd name="y2" fmla="+- svc dy2 0" />
- <gd name="y3" fmla="+- svc dy3 0" />
- <gd name="ib" fmla="+- b 0 y1" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x5" y="y1" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x4" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x2" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="y1" r="x5" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </heptagon>
- <hexagon>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
- <gd name="vf" fmla="val 115470" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 50000 w ss" />
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="shd2" fmla="*/ hd2 vf 100000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
- <gd name="dy1" fmla="sin shd2 3600000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc dy1 0" />
- <gd name="q1" fmla="*/ maxAdj -1 2" />
- <gd name="q2" fmla="+- a q1 0" />
- <gd name="q3" fmla="?: q2 4 2" />
- <gd name="q4" fmla="?: q2 3 2" />
- <gd name="q5" fmla="?: q2 q1 0" />
- <gd name="q6" fmla="+/ a q5 q1" />
- <gd name="q7" fmla="*/ q6 q4 -1" />
- <gd name="q8" fmla="+- q3 q7 0" />
- <gd name="il" fmla="*/ w q8 24" />
- <gd name="it" fmla="*/ h q8 24" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 it" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="y1" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </hexagon>
- <homePlate>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 100000 w ss" />
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="dx1" fmla="*/ ss a 100000" />
- <gd name="x1" fmla="+- r 0 dx1" />
- <gd name="ir" fmla="+/ x1 r 2" />
- <gd name="x2" fmla="*/ x1 1 2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </homePlate>
- <horizontalScroll>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 12500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 25000" />
- <gd name="ch" fmla="*/ ss a 100000" />
-
- <gd name="ch2" fmla="*/ ch 1 2" />
-
- <gd name="ch4" fmla="*/ ch 1 4" />
-
-
-
-
-
- <gd name="y3" fmla="+- ch ch2 0" />
-
- <gd name="y4" fmla="+- ch ch 0" />
-
- <gd name="y6" fmla="+- b 0 ch" />
-
- <gd name="y7" fmla="+- b 0 ch2" />
-
- <gd name="y5" fmla="+- y6 0 ch2" />
-
-
-
-
-
- <gd name="x3" fmla="+- r 0 ch" />
-
- <gd name="x4" fmla="+- r 0 ch2" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="25000">
- <pos x="ch" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="hc" y="ch" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="y6" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="ch" t="ch" r="x4" b="y6" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="r" y="ch2" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x4" y="ch2" />
- </lnTo>
- <arcTo wR="ch4" hR="ch4" stAng="0" swAng="cd2" />
- <lnTo>
- <pt x="x3" y="ch" />
- </lnTo>
- <lnTo>
- <pt x="ch2" y="ch" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="l" y="y7" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="-10800000" />
- <lnTo>
- <pt x="ch" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y6" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
- <close />
- <moveTo>
- <pt x="ch2" y="y4" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
- <arcTo wR="ch4" hR="ch4" stAng="0" swAng="-10800000" />
- <close />
- </path>
- <path fill="darkenLess" stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="ch2" y="y4" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
- <arcTo wR="ch4" hR="ch4" stAng="0" swAng="-10800000" />
- <close />
- <moveTo>
- <pt x="x4" y="ch" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-16200000" />
- <arcTo wR="ch4" hR="ch4" stAng="cd2" swAng="-10800000" />
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="y3" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x3" y="ch" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="ch2" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd2" />
- <lnTo>
- <pt x="r" y="y5" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="ch" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="ch" y="y7" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd2" />
- <close />
- <moveTo>
- <pt x="x3" y="ch" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="ch" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
- <moveTo>
- <pt x="x4" y="ch" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="ch2" />
- </lnTo>
- <arcTo wR="ch4" hR="ch4" stAng="0" swAng="cd2" />
- <moveTo>
- <pt x="ch2" y="y4" />
- </moveTo>
- <lnTo>
- <pt x="ch2" y="y3" />
- </lnTo>
- <arcTo wR="ch4" hR="ch4" stAng="cd2" swAng="cd2" />
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd2" />
- <moveTo>
- <pt x="ch" y="y3" />
- </moveTo>
- <lnTo>
- <pt x="ch" y="y6" />
- </lnTo>
- </path>
- </pathLst>
-
- </horizontalScroll>
- <irregularSeal1>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x5" fmla="*/ w 4627 21600" />
- <gd name="x12" fmla="*/ w 8485 21600" />
- <gd name="x21" fmla="*/ w 16702 21600" />
- <gd name="x24" fmla="*/ w 14522 21600" />
- <gd name="y3" fmla="*/ h 6320 21600" />
- <gd name="y6" fmla="*/ h 8615 21600" />
- <gd name="y9" fmla="*/ h 13937 21600" />
- <gd name="y18" fmla="*/ h 13290 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x24" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y6" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x12" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y18" />
- </cxn>
- </cxnLst>
-
- <rect l="x5" t="y3" r="x21" b="y9" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="21600" h="21600">
- <moveTo>
- <pt x="10800" y="5800" />
- </moveTo>
- <lnTo>
- <pt x="14522" y="0" />
- </lnTo>
- <lnTo>
- <pt x="14155" y="5325" />
- </lnTo>
- <lnTo>
- <pt x="18380" y="4457" />
- </lnTo>
- <lnTo>
- <pt x="16702" y="7315" />
- </lnTo>
- <lnTo>
- <pt x="21097" y="8137" />
- </lnTo>
- <lnTo>
- <pt x="17607" y="10475" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="13290" />
- </lnTo>
- <lnTo>
- <pt x="16837" y="12942" />
- </lnTo>
- <lnTo>
- <pt x="18145" y="18095" />
- </lnTo>
- <lnTo>
- <pt x="14020" y="14457" />
- </lnTo>
- <lnTo>
- <pt x="13247" y="19737" />
- </lnTo>
- <lnTo>
- <pt x="10532" y="14935" />
- </lnTo>
- <lnTo>
- <pt x="8485" y="21600" />
- </lnTo>
- <lnTo>
- <pt x="7715" y="15627" />
- </lnTo>
- <lnTo>
- <pt x="4762" y="17617" />
- </lnTo>
- <lnTo>
- <pt x="5667" y="13937" />
- </lnTo>
- <lnTo>
- <pt x="135" y="14587" />
- </lnTo>
- <lnTo>
- <pt x="3722" y="11775" />
- </lnTo>
- <lnTo>
- <pt x="0" y="8615" />
- </lnTo>
- <lnTo>
- <pt x="4627" y="7617" />
- </lnTo>
- <lnTo>
- <pt x="370" y="2295" />
- </lnTo>
- <lnTo>
- <pt x="7312" y="6320" />
- </lnTo>
- <lnTo>
- <pt x="8352" y="2295" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </irregularSeal1>
- <irregularSeal2>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x2" fmla="*/ w 9722 21600" />
- <gd name="x5" fmla="*/ w 5372 21600" />
- <gd name="x16" fmla="*/ w 11612 21600" />
- <gd name="x19" fmla="*/ w 14640 21600" />
- <gd name="y2" fmla="*/ h 1887 21600" />
- <gd name="y3" fmla="*/ h 6382 21600" />
- <gd name="y8" fmla="*/ h 12877 21600" />
- <gd name="y14" fmla="*/ h 19712 21600" />
- <gd name="y16" fmla="*/ h 18842 21600" />
- <gd name="y17" fmla="*/ h 15935 21600" />
- <gd name="y24" fmla="*/ h 6645 21600" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y8" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x16" y="y16" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y24" />
- </cxn>
- </cxnLst>
-
- <rect l="x5" t="y3" r="x19" b="y17" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="21600" h="21600">
- <moveTo>
- <pt x="11462" y="4342" />
- </moveTo>
- <lnTo>
- <pt x="14790" y="0" />
- </lnTo>
- <lnTo>
- <pt x="14525" y="5777" />
- </lnTo>
- <lnTo>
- <pt x="18007" y="3172" />
- </lnTo>
- <lnTo>
- <pt x="16380" y="6532" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="6645" />
- </lnTo>
- <lnTo>
- <pt x="16985" y="9402" />
- </lnTo>
- <lnTo>
- <pt x="18270" y="11290" />
- </lnTo>
- <lnTo>
- <pt x="16380" y="12310" />
- </lnTo>
- <lnTo>
- <pt x="18877" y="15632" />
- </lnTo>
- <lnTo>
- <pt x="14640" y="14350" />
- </lnTo>
- <lnTo>
- <pt x="14942" y="17370" />
- </lnTo>
- <lnTo>
- <pt x="12180" y="15935" />
- </lnTo>
- <lnTo>
- <pt x="11612" y="18842" />
- </lnTo>
- <lnTo>
- <pt x="9872" y="17370" />
- </lnTo>
- <lnTo>
- <pt x="8700" y="19712" />
- </lnTo>
- <lnTo>
- <pt x="7527" y="18125" />
- </lnTo>
- <lnTo>
- <pt x="4917" y="21600" />
- </lnTo>
- <lnTo>
- <pt x="4805" y="18240" />
- </lnTo>
- <lnTo>
- <pt x="1285" y="17825" />
- </lnTo>
- <lnTo>
- <pt x="3330" y="15370" />
- </lnTo>
- <lnTo>
- <pt x="0" y="12877" />
- </lnTo>
- <lnTo>
- <pt x="3935" y="11592" />
- </lnTo>
- <lnTo>
- <pt x="1172" y="8270" />
- </lnTo>
- <lnTo>
- <pt x="5372" y="7817" />
- </lnTo>
- <lnTo>
- <pt x="4502" y="3625" />
- </lnTo>
- <lnTo>
- <pt x="8550" y="6382" />
- </lnTo>
- <lnTo>
- <pt x="9722" y="1887" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </irregularSeal2>
- <leftArrow>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 100000 w ss" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="dx2" fmla="*/ ss a2 100000" />
- <gd name="x2" fmla="+- l dx2 0" />
- <gd name="dy1" fmla="*/ h a1 200000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc dy1 0" />
- <gd name="dx1" fmla="*/ y1 dx2 hd2" />
- <gd name="x1" fmla="+- x2 0 dx1" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="r" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="y1" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </leftArrow>
- <leftArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 64977" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ 100000 w ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 ss w" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
- <gd name="dy1" fmla="*/ ss a2 100000" />
-
- <gd name="dy2" fmla="*/ ss a1 200000" />
-
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc dy2 0" />
- <gd name="y4" fmla="+- vc dy1 0" />
- <gd name="x1" fmla="*/ ss a3 100000" />
-
- <gd name="dx2" fmla="*/ w a4 100000" />
-
- <gd name="x2" fmla="+- r 0 dx2" />
- <gd name="x3" fmla="+/ x2 r 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="x1" y="y2" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
- <pos x="x2" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </leftArrowCallout>
- <leftBrace>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 8333" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 100000" />
- <gd name="q1" fmla="+- 100000 0 a2" />
- <gd name="q2" fmla="min q1 a2" />
- <gd name="q3" fmla="*/ q2 1 2" />
- <gd name="maxAdj1" fmla="*/ q3 h ss" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="y1" fmla="*/ ss a1 100000" />
- <gd name="y3" fmla="*/ h a2 100000" />
- <gd name="y4" fmla="+- y3 y1 0" />
- <gd name="dx1" fmla="cos wd2 2700000" />
- <gd name="dy1" fmla="sin y1 2700000" />
- <gd name="il" fmla="+- r 0 dx1" />
- <gd name="it" fmla="+- y1 0 dy1" />
- <gd name="ib" fmla="+- b dy1 y1" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="hc" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="100000">
- <pos x="l" y="y3" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="r" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="r" y="b" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="r" y="b" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="hc" y="y4" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="-5400000" />
- <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="y1" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd4" />
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="r" y="b" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="hc" y="y4" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="-5400000" />
- <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="y1" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd4" />
- </path>
- </pathLst>
- </leftBrace>
- <leftBracket>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 8333" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 50000 h ss" />
-
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="y1" fmla="*/ ss a 100000" />
-
- <gd name="y2" fmla="+- b 0 y1" />
-
- <gd name="dx1" fmla="cos w 2700000" />
- <gd name="dy1" fmla="sin y1 2700000" />
- <gd name="il" fmla="+- r 0 dx1" />
- <gd name="it" fmla="+- y1 0 dy1" />
- <gd name="ib" fmla="+- b dy1 y1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
- <pos x="l" y="y1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="r" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="r" y="b" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="r" y="b" />
- </moveTo>
- <arcTo wR="w" hR="y1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="y1" />
- </lnTo>
- <arcTo wR="w" hR="y1" stAng="cd2" swAng="cd4" />
- <close />
- </path>
- <path fill="none">
-
- <moveTo>
- <pt x="r" y="b" />
- </moveTo>
- <arcTo wR="w" hR="y1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="y1" />
- </lnTo>
- <arcTo wR="w" hR="y1" stAng="cd2" swAng="cd4" />
- </path>
- </pathLst>
-
- </leftBracket>
- <leftCircularArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 12500" />
-
- <gd name="adj2" fmla="val -1142319" />
-
- <gd name="adj3" fmla="val 1142319" />
-
- <gd name="adj4" fmla="val 10800000" />
-
- <gd name="adj5" fmla="val 12500" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a5" fmla="pin 0 adj5 25000" />
-
- <gd name="maxAdj1" fmla="*/ a5 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="enAng" fmla="pin 1 adj3 21599999" />
- <gd name="stAng" fmla="pin 0 adj4 21599999" />
-
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="thh" fmla="*/ ss a5 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
-
-
- <gd name="rw1" fmla="+- wd2 th2 thh" />
-
- <gd name="rh1" fmla="+- hd2 th2 thh" />
-
- <gd name="rw2" fmla="+- rw1 0 th" />
-
- <gd name="rh2" fmla="+- rh1 0 th" />
-
- <gd name="rw3" fmla="+- rw2 th2 0" />
-
- <gd name="rh3" fmla="+- rh2 th2 0" />
-
-
- <gd name="wtH" fmla="sin rw3 enAng" />
- <gd name="htH" fmla="cos rh3 enAng" />
- <gd name="dxH" fmla="cat2 rw3 htH wtH" />
- <gd name="dyH" fmla="sat2 rh3 htH wtH" />
- <gd name="xH" fmla="+- hc dxH 0" />
-
- <gd name="yH" fmla="+- vc dyH 0" />
-
-
- <gd name="rI" fmla="min rw2 rh2" />
-
- <gd name="u1" fmla="*/ dxH dxH 1" />
- <gd name="u2" fmla="*/ dyH dyH 1" />
- <gd name="u3" fmla="*/ rI rI 1" />
- <gd name="u4" fmla="+- u1 0 u3" />
- <gd name="u5" fmla="+- u2 0 u3" />
- <gd name="u6" fmla="*/ u4 u5 u1" />
- <gd name="u7" fmla="*/ u6 1 u2" />
- <gd name="u8" fmla="+- 1 0 u7" />
- <gd name="u9" fmla="sqrt u8" />
- <gd name="u10" fmla="*/ u4 1 dxH" />
- <gd name="u11" fmla="*/ u10 1 dyH" />
- <gd name="u12" fmla="+/ 1 u9 u11" />
- <gd name="u13" fmla="at2 1 u12" />
- <gd name="u14" fmla="+- u13 21600000 0" />
- <gd name="u15" fmla="?: u13 u13 u14" />
- <gd name="u16" fmla="+- u15 0 enAng" />
-
- <gd name="u17" fmla="+- u16 21600000 0" />
- <gd name="u18" fmla="?: u16 u16 u17" />
- <gd name="u19" fmla="+- u18 0 cd2" />
- <gd name="u20" fmla="+- u18 0 21600000" />
- <gd name="u21" fmla="?: u19 u20 u18" />
- <gd name="u22" fmla="abs u21" />
- <gd name="minAng" fmla="*/ u22 -1 1" />
- <gd name="u23" fmla="abs adj2" />
- <gd name="a2" fmla="*/ u23 -1 1" />
- <gd name="aAng" fmla="pin minAng a2 0" />
-
- <gd name="ptAng" fmla="+- enAng aAng 0" />
-
-
- <gd name="wtA" fmla="sin rw3 ptAng" />
- <gd name="htA" fmla="cos rh3 ptAng" />
- <gd name="dxA" fmla="cat2 rw3 htA wtA" />
- <gd name="dyA" fmla="sat2 rh3 htA wtA" />
- <gd name="xA" fmla="+- hc dxA 0" />
-
- <gd name="yA" fmla="+- vc dyA 0" />
-
-
- <gd name="wtE" fmla="sin rw1 stAng" />
- <gd name="htE" fmla="cos rh1 stAng" />
- <gd name="dxE" fmla="cat2 rw1 htE wtE" />
- <gd name="dyE" fmla="sat2 rh1 htE wtE" />
- <gd name="xE" fmla="+- hc dxE 0" />
-
- <gd name="yE" fmla="+- vc dyE 0" />
-
-
- <gd name="wtD" fmla="sin rw2 stAng" />
- <gd name="htD" fmla="cos rh2 stAng" />
- <gd name="dxD" fmla="cat2 rw2 htD wtD" />
- <gd name="dyD" fmla="sat2 rh2 htD wtD" />
- <gd name="xD" fmla="+- hc dxD 0" />
-
- <gd name="yD" fmla="+- vc dyD 0" />
-
-
- <gd name="dxG" fmla="cos thh ptAng" />
- <gd name="dyG" fmla="sin thh ptAng" />
- <gd name="xG" fmla="+- xH dxG 0" />
-
- <gd name="yG" fmla="+- yH dyG 0" />
-
-
- <gd name="dxB" fmla="cos thh ptAng" />
- <gd name="dyB" fmla="sin thh ptAng" />
- <gd name="xB" fmla="+- xH 0 dxB 0" />
-
- <gd name="yB" fmla="+- yH 0 dyB 0" />
-
-
- <gd name="sx1" fmla="+- xB 0 hc" />
-
- <gd name="sy1" fmla="+- yB 0 vc" />
-
- <gd name="sx2" fmla="+- xG 0 hc" />
-
- <gd name="sy2" fmla="+- yG 0 vc" />
-
-
- <gd name="rO" fmla="min rw1 rh1" />
-
- <gd name="x1O" fmla="*/ sx1 rO rw1" />
-
- <gd name="y1O" fmla="*/ sy1 rO rh1" />
-
- <gd name="x2O" fmla="*/ sx2 rO rw1" />
-
- <gd name="y2O" fmla="*/ sy2 rO rh1" />
-
-
- <gd name="dxO" fmla="+- x2O 0 x1O" />
- <gd name="dyO" fmla="+- y2O 0 y1O" />
- <gd name="dO" fmla="mod dxO dyO 0" />
-
- <gd name="q1" fmla="*/ x1O y2O 1" />
- <gd name="q2" fmla="*/ x2O y1O 1" />
- <gd name="DO" fmla="+- q1 0 q2" />
-
-
- <gd name="q3" fmla="*/ rO rO 1" />
-
- <gd name="q4" fmla="*/ dO dO 1" />
-
- <gd name="q5" fmla="*/ q3 q4 1" />
-
- <gd name="q6" fmla="*/ DO DO 1" />
-
- <gd name="q7" fmla="+- q5 0 q6" />
-
- <gd name="q8" fmla="max q7 0" />
-
- <gd name="sdelO" fmla="sqrt q8" />
-
- <gd name="ndyO" fmla="*/ dyO -1 1" />
- <gd name="sdyO" fmla="?: ndyO -1 1" />
-
- <gd name="q9" fmla="*/ sdyO dxO 1" />
-
- <gd name="q10" fmla="*/ q9 sdelO 1" />
-
- <gd name="q11" fmla="*/ DO dyO 1" />
-
- <gd name="dxF1" fmla="+/ q11 q10 q4" />
-
- <gd name="q12" fmla="+- q11 0 q10" />
- <gd name="dxF2" fmla="*/ q12 1 q4" />
-
-
- <gd name="adyO" fmla="abs dyO" />
- <gd name="q13" fmla="*/ adyO sdelO 1" />
-
- <gd name="q14" fmla="*/ DO dxO -1" />
-
- <gd name="dyF1" fmla="+/ q14 q13 q4" />
-
- <gd name="q15" fmla="+- q14 0 q13" />
- <gd name="dyF2" fmla="*/ q15 1 q4" />
-
-
-
- <gd name="q16" fmla="+- x2O 0 dxF1" />
- <gd name="q17" fmla="+- x2O 0 dxF2" />
- <gd name="q18" fmla="+- y2O 0 dyF1" />
- <gd name="q19" fmla="+- y2O 0 dyF2" />
- <gd name="q20" fmla="mod q16 q18 0" />
-
- <gd name="q21" fmla="mod q17 q19 0" />
-
- <gd name="q22" fmla="+- q21 0 q20" />
- <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
-
- <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
-
- <gd name="sdxF" fmla="*/ dxF rw1 rO" />
-
- <gd name="sdyF" fmla="*/ dyF rh1 rO" />
-
- <gd name="xF" fmla="+- hc sdxF 0" />
-
- <gd name="yF" fmla="+- vc sdyF 0" />
-
-
-
-
- <gd name="x1I" fmla="*/ sx1 rI rw2" />
-
- <gd name="y1I" fmla="*/ sy1 rI rh2" />
-
- <gd name="x2I" fmla="*/ sx2 rI rw2" />
-
- <gd name="y2I" fmla="*/ sy2 rI rh2" />
-
-
- <gd name="dxI" fmla="+- x2I 0 x1I" />
- <gd name="dyI" fmla="+- y2I 0 y1I" />
- <gd name="dI" fmla="mod dxI dyI 0" />
- <gd name="v1" fmla="*/ x1I y2I 1" />
- <gd name="v2" fmla="*/ x2I y1I 1" />
- <gd name="DI" fmla="+- v1 0 v2" />
-
- <gd name="v3" fmla="*/ rI rI 1" />
- <gd name="v4" fmla="*/ dI dI 1" />
- <gd name="v5" fmla="*/ v3 v4 1" />
- <gd name="v6" fmla="*/ DI DI 1" />
- <gd name="v7" fmla="+- v5 0 v6" />
- <gd name="v8" fmla="max v7 0" />
- <gd name="sdelI" fmla="sqrt v8" />
- <gd name="v9" fmla="*/ sdyO dxI 1" />
- <gd name="v10" fmla="*/ v9 sdelI 1" />
- <gd name="v11" fmla="*/ DI dyI 1" />
- <gd name="dxC1" fmla="+/ v11 v10 v4" />
- <gd name="v12" fmla="+- v11 0 v10" />
- <gd name="dxC2" fmla="*/ v12 1 v4" />
-
- <gd name="adyI" fmla="abs dyI" />
- <gd name="v13" fmla="*/ adyI sdelI 1" />
- <gd name="v14" fmla="*/ DI dxI -1" />
- <gd name="dyC1" fmla="+/ v14 v13 v4" />
- <gd name="v15" fmla="+- v14 0 v13" />
- <gd name="dyC2" fmla="*/ v15 1 v4" />
-
- <gd name="v16" fmla="+- x1I 0 dxC1" />
- <gd name="v17" fmla="+- x1I 0 dxC2" />
- <gd name="v18" fmla="+- y1I 0 dyC1" />
- <gd name="v19" fmla="+- y1I 0 dyC2" />
- <gd name="v20" fmla="mod v16 v18 0" />
- <gd name="v21" fmla="mod v17 v19 0" />
- <gd name="v22" fmla="+- v21 0 v20" />
- <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
- <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
- <gd name="sdxC" fmla="*/ dxC rw2 rI" />
- <gd name="sdyC" fmla="*/ dyC rh2 rI" />
- <gd name="xC" fmla="+- hc sdxC 0" />
-
- <gd name="yC" fmla="+- vc sdyC 0" />
-
-
- <gd name="ist0" fmla="at2 sdxC sdyC" />
- <gd name="ist1" fmla="+- ist0 21600000 0" />
- <gd name="istAng0" fmla="?: ist0 ist0 ist1" />
- <gd name="isw1" fmla="+- stAng 0 istAng0" />
- <gd name="isw2" fmla="+- isw1 21600000 0" />
- <gd name="iswAng0" fmla="?: isw1 isw1 isw2" />
-
- <gd name="istAng" fmla="+- istAng0 iswAng0 0" />
- <gd name="iswAng" fmla="+- 0 0 iswAng0" />
-
- <gd name="p1" fmla="+- xF 0 xC" />
- <gd name="p2" fmla="+- yF 0 yC" />
- <gd name="p3" fmla="mod p1 p2 0" />
- <gd name="p4" fmla="*/ p3 1 2" />
- <gd name="p5" fmla="+- p4 0 thh" />
- <gd name="xGp" fmla="?: p5 xF xG" />
- <gd name="yGp" fmla="?: p5 yF yG" />
- <gd name="xBp" fmla="?: p5 xC xB" />
- <gd name="yBp" fmla="?: p5 yC yB" />
-
- <gd name="en0" fmla="at2 sdxF sdyF" />
- <gd name="en1" fmla="+- en0 21600000 0" />
- <gd name="en2" fmla="?: en0 en0 en1" />
- <gd name="sw0" fmla="+- en2 0 stAng" />
- <gd name="sw1" fmla="+- sw0 0 21600000" />
- <gd name="swAng" fmla="?: sw0 sw1 sw0" />
-
-
- <gd name="stAng0" fmla="+- stAng swAng 0" />
-
- <gd name="swAng0" fmla="+- 0 0 swAng" />
-
-
- <gd name="wtI" fmla="sin rw3 stAng" />
- <gd name="htI" fmla="cos rh3 stAng" />
- <gd name="dxI" fmla="cat2 rw3 htI wtI" />
- <gd name="dyI" fmla="sat2 rh3 htI wtI" />
- <gd name="xI" fmla="+- hc dxI 0" />
-
- <gd name="yI" fmla="+- vc dyI 0" />
-
-
- <gd name="aI" fmla="+- stAng cd4 0" />
- <gd name="aA" fmla="+- ptAng 0 cd4" />
- <gd name="aB" fmla="+- ptAng cd2 0" />
-
- <gd name="idx" fmla="cos rw1 2700000" />
- <gd name="idy" fmla="sin rh1 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj2" minAng="minAng" maxAng="0">
- <pos x="xA" y="yA" />
- </ahPolar>
- <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
- <pos x="xE" y="yE" />
- </ahPolar>
- <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
- <pos x="xF" y="yF" />
- </ahPolar>
- <ahPolar gdRefR="adj5" minR="0" maxR="25000">
- <pos x="xB" y="yB" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="aI">
- <pos x="xI" y="yI" />
- </cxn>
- <cxn ang="ptAng">
- <pos x="xGp" y="yGp" />
- </cxn>
- <cxn ang="aA">
- <pos x="xA" y="yA" />
- </cxn>
- <cxn ang="aB">
- <pos x="xBp" y="yBp" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xE" y="yE" />
- </moveTo>
- <lnTo>
- <pt x="xD" y="yD" />
- </lnTo>
- <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
- <lnTo>
- <pt x="xBp" y="yBp" />
- </lnTo>
- <lnTo>
- <pt x="xA" y="yA" />
- </lnTo>
- <lnTo>
- <pt x="xGp" y="yGp" />
- </lnTo>
- <lnTo>
- <pt x="xF" y="yF" />
- </lnTo>
- <arcTo wR="rw1" hR="rh1" stAng="stAng0" swAng="swAng0" />
- <close />
- </path>
- </pathLst>
-
- </leftCircularArrow>
- <leftRightArrow>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 w ss" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="x2" fmla="*/ ss a2 100000" />
- <gd name="x3" fmla="+- r 0 x2" />
- <gd name="dy" fmla="*/ h a1 200000" />
- <gd name="y1" fmla="+- vc 0 dy" />
- <gd name="y2" fmla="+- vc dy 0" />
- <gd name="dx1" fmla="*/ y1 x2 hd2" />
- <gd name="x1" fmla="+- x2 0 dx1" />
- <gd name="x4" fmla="+- x3 dx1 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="x3" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="y1" r="x4" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </leftRightArrow>
- <leftRightArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 48123" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ 50000 w ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 ss wd2" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
- <gd name="dy1" fmla="*/ ss a2 100000" />
-
- <gd name="dy2" fmla="*/ ss a1 200000" />
-
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc dy2 0" />
- <gd name="y4" fmla="+- vc dy1 0" />
- <gd name="x1" fmla="*/ ss a3 100000" />
-
- <gd name="x4" fmla="+- r 0 x1" />
-
- <gd name="dx2" fmla="*/ w a4 200000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
-
- <gd name="x3" fmla="+- hc dx2 0" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="x1" y="y2" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
- <pos x="x2" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="t" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </leftRightArrowCallout>
- <leftRightCircularArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 12500" />
-
- <gd name="adj2" fmla="val 1142319" />
-
- <gd name="adj3" fmla="val 20457681" />
-
- <gd name="adj4" fmla="val 11942319" />
-
- <gd name="adj5" fmla="val 12500" />
-
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a5" fmla="pin 0 adj5 25000" />
-
- <gd name="maxAdj1" fmla="*/ a5 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="enAng" fmla="pin 1 adj3 21599999" />
- <gd name="stAng" fmla="pin 0 adj4 21599999" />
-
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="thh" fmla="*/ ss a5 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
-
-
- <gd name="rw1" fmla="+- wd2 th2 thh" />
-
- <gd name="rh1" fmla="+- hd2 th2 thh" />
-
- <gd name="rw2" fmla="+- rw1 0 th" />
-
- <gd name="rh2" fmla="+- rh1 0 th" />
-
- <gd name="rw3" fmla="+- rw2 th2 0" />
-
- <gd name="rh3" fmla="+- rh2 th2 0" />
-
-
- <gd name="wtH" fmla="sin rw3 enAng" />
- <gd name="htH" fmla="cos rh3 enAng" />
- <gd name="dxH" fmla="cat2 rw3 htH wtH" />
- <gd name="dyH" fmla="sat2 rh3 htH wtH" />
- <gd name="xH" fmla="+- hc dxH 0" />
-
- <gd name="yH" fmla="+- vc dyH 0" />
-
-
- <gd name="rI" fmla="min rw2 rh2" />
-
- <gd name="u1" fmla="*/ dxH dxH 1" />
- <gd name="u2" fmla="*/ dyH dyH 1" />
- <gd name="u3" fmla="*/ rI rI 1" />
- <gd name="u4" fmla="+- u1 0 u3" />
- <gd name="u5" fmla="+- u2 0 u3" />
- <gd name="u6" fmla="*/ u4 u5 u1" />
- <gd name="u7" fmla="*/ u6 1 u2" />
- <gd name="u8" fmla="+- 1 0 u7" />
- <gd name="u9" fmla="sqrt u8" />
- <gd name="u10" fmla="*/ u4 1 dxH" />
- <gd name="u11" fmla="*/ u10 1 dyH" />
- <gd name="u12" fmla="+/ 1 u9 u11" />
- <gd name="u13" fmla="at2 1 u12" />
- <gd name="u14" fmla="+- u13 21600000 0" />
- <gd name="u15" fmla="?: u13 u13 u14" />
- <gd name="u16" fmla="+- u15 0 enAng" />
-
- <gd name="u17" fmla="+- u16 21600000 0" />
- <gd name="u18" fmla="?: u16 u16 u17" />
- <gd name="u19" fmla="+- u18 0 cd2" />
- <gd name="u20" fmla="+- u18 0 21600000" />
- <gd name="u21" fmla="?: u19 u20 u18" />
- <gd name="maxAng" fmla="abs u21" />
- <gd name="aAng" fmla="pin 0 adj2 maxAng" />
-
- <gd name="ptAng" fmla="+- enAng aAng 0" />
-
-
- <gd name="wtA" fmla="sin rw3 ptAng" />
- <gd name="htA" fmla="cos rh3 ptAng" />
- <gd name="dxA" fmla="cat2 rw3 htA wtA" />
- <gd name="dyA" fmla="sat2 rh3 htA wtA" />
- <gd name="xA" fmla="+- hc dxA 0" />
-
- <gd name="yA" fmla="+- vc dyA 0" />
-
-
- <gd name="dxG" fmla="cos thh ptAng" />
- <gd name="dyG" fmla="sin thh ptAng" />
- <gd name="xG" fmla="+- xH dxG 0" />
-
- <gd name="yG" fmla="+- yH dyG 0" />
-
-
- <gd name="dxB" fmla="cos thh ptAng" />
- <gd name="dyB" fmla="sin thh ptAng" />
- <gd name="xB" fmla="+- xH 0 dxB 0" />
-
- <gd name="yB" fmla="+- yH 0 dyB 0" />
-
-
- <gd name="sx1" fmla="+- xB 0 hc" />
-
- <gd name="sy1" fmla="+- yB 0 vc" />
-
- <gd name="sx2" fmla="+- xG 0 hc" />
-
- <gd name="sy2" fmla="+- yG 0 vc" />
-
-
- <gd name="rO" fmla="min rw1 rh1" />
-
- <gd name="x1O" fmla="*/ sx1 rO rw1" />
-
- <gd name="y1O" fmla="*/ sy1 rO rh1" />
-
- <gd name="x2O" fmla="*/ sx2 rO rw1" />
-
- <gd name="y2O" fmla="*/ sy2 rO rh1" />
-
-
- <gd name="dxO" fmla="+- x2O 0 x1O" />
- <gd name="dyO" fmla="+- y2O 0 y1O" />
- <gd name="dO" fmla="mod dxO dyO 0" />
-
- <gd name="q1" fmla="*/ x1O y2O 1" />
- <gd name="q2" fmla="*/ x2O y1O 1" />
- <gd name="DO" fmla="+- q1 0 q2" />
-
-
- <gd name="q3" fmla="*/ rO rO 1" />
-
- <gd name="q4" fmla="*/ dO dO 1" />
-
- <gd name="q5" fmla="*/ q3 q4 1" />
-
- <gd name="q6" fmla="*/ DO DO 1" />
-
- <gd name="q7" fmla="+- q5 0 q6" />
-
- <gd name="q8" fmla="max q7 0" />
-
- <gd name="sdelO" fmla="sqrt q8" />
-
- <gd name="ndyO" fmla="*/ dyO -1 1" />
- <gd name="sdyO" fmla="?: ndyO -1 1" />
-
- <gd name="q9" fmla="*/ sdyO dxO 1" />
-
- <gd name="q10" fmla="*/ q9 sdelO 1" />
-
- <gd name="q11" fmla="*/ DO dyO 1" />
-
- <gd name="dxF1" fmla="+/ q11 q10 q4" />
-
- <gd name="q12" fmla="+- q11 0 q10" />
- <gd name="dxF2" fmla="*/ q12 1 q4" />
-
-
- <gd name="adyO" fmla="abs dyO" />
- <gd name="q13" fmla="*/ adyO sdelO 1" />
-
- <gd name="q14" fmla="*/ DO dxO -1" />
-
- <gd name="dyF1" fmla="+/ q14 q13 q4" />
-
- <gd name="q15" fmla="+- q14 0 q13" />
- <gd name="dyF2" fmla="*/ q15 1 q4" />
-
-
-
- <gd name="q16" fmla="+- x2O 0 dxF1" />
- <gd name="q17" fmla="+- x2O 0 dxF2" />
- <gd name="q18" fmla="+- y2O 0 dyF1" />
- <gd name="q19" fmla="+- y2O 0 dyF2" />
- <gd name="q20" fmla="mod q16 q18 0" />
-
- <gd name="q21" fmla="mod q17 q19 0" />
-
- <gd name="q22" fmla="+- q21 0 q20" />
- <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
-
- <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
-
- <gd name="sdxF" fmla="*/ dxF rw1 rO" />
-
- <gd name="sdyF" fmla="*/ dyF rh1 rO" />
-
- <gd name="xF" fmla="+- hc sdxF 0" />
-
- <gd name="yF" fmla="+- vc sdyF 0" />
-
-
-
-
- <gd name="x1I" fmla="*/ sx1 rI rw2" />
-
- <gd name="y1I" fmla="*/ sy1 rI rh2" />
-
- <gd name="x2I" fmla="*/ sx2 rI rw2" />
-
- <gd name="y2I" fmla="*/ sy2 rI rh2" />
-
-
- <gd name="dxI" fmla="+- x2I 0 x1I" />
- <gd name="dyI" fmla="+- y2I 0 y1I" />
- <gd name="dI" fmla="mod dxI dyI 0" />
- <gd name="v1" fmla="*/ x1I y2I 1" />
- <gd name="v2" fmla="*/ x2I y1I 1" />
- <gd name="DI" fmla="+- v1 0 v2" />
-
- <gd name="v3" fmla="*/ rI rI 1" />
- <gd name="v4" fmla="*/ dI dI 1" />
- <gd name="v5" fmla="*/ v3 v4 1" />
- <gd name="v6" fmla="*/ DI DI 1" />
- <gd name="v7" fmla="+- v5 0 v6" />
- <gd name="v8" fmla="max v7 0" />
- <gd name="sdelI" fmla="sqrt v8" />
- <gd name="v9" fmla="*/ sdyO dxI 1" />
- <gd name="v10" fmla="*/ v9 sdelI 1" />
- <gd name="v11" fmla="*/ DI dyI 1" />
- <gd name="dxC1" fmla="+/ v11 v10 v4" />
- <gd name="v12" fmla="+- v11 0 v10" />
- <gd name="dxC2" fmla="*/ v12 1 v4" />
-
- <gd name="adyI" fmla="abs dyI" />
- <gd name="v13" fmla="*/ adyI sdelI 1" />
- <gd name="v14" fmla="*/ DI dxI -1" />
- <gd name="dyC1" fmla="+/ v14 v13 v4" />
- <gd name="v15" fmla="+- v14 0 v13" />
- <gd name="dyC2" fmla="*/ v15 1 v4" />
-
- <gd name="v16" fmla="+- x1I 0 dxC1" />
- <gd name="v17" fmla="+- x1I 0 dxC2" />
- <gd name="v18" fmla="+- y1I 0 dyC1" />
- <gd name="v19" fmla="+- y1I 0 dyC2" />
- <gd name="v20" fmla="mod v16 v18 0" />
- <gd name="v21" fmla="mod v17 v19 0" />
- <gd name="v22" fmla="+- v21 0 v20" />
- <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
- <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
- <gd name="sdxC" fmla="*/ dxC rw2 rI" />
- <gd name="sdyC" fmla="*/ dyC rh2 rI" />
- <gd name="xC" fmla="+- hc sdxC 0" />
-
- <gd name="yC" fmla="+- vc sdyC 0" />
-
-
- <gd name="wtI" fmla="sin rw3 stAng" />
- <gd name="htI" fmla="cos rh3 stAng" />
- <gd name="dxI" fmla="cat2 rw3 htI wtI" />
- <gd name="dyI" fmla="sat2 rh3 htI wtI" />
- <gd name="xI" fmla="+- hc dxI 0" />
-
- <gd name="yI" fmla="+- vc dyI 0" />
-
-
- <gd name="lptAng" fmla="+- stAng 0 aAng" />
-
-
- <gd name="wtL" fmla="sin rw3 lptAng" />
- <gd name="htL" fmla="cos rh3 lptAng" />
- <gd name="dxL" fmla="cat2 rw3 htL wtL" />
- <gd name="dyL" fmla="sat2 rh3 htL wtL" />
- <gd name="xL" fmla="+- hc dxL 0" />
-
- <gd name="yL" fmla="+- vc dyL 0" />
-
-
- <gd name="dxK" fmla="cos thh lptAng" />
- <gd name="dyK" fmla="sin thh lptAng" />
- <gd name="xK" fmla="+- xI dxK 0" />
-
- <gd name="yK" fmla="+- yI dyK 0" />
-
-
- <gd name="dxJ" fmla="cos thh lptAng" />
- <gd name="dyJ" fmla="sin thh lptAng" />
- <gd name="xJ" fmla="+- xI 0 dxJ 0" />
-
- <gd name="yJ" fmla="+- yI 0 dyJ 0" />
-
-
- <gd name="p1" fmla="+- xF 0 xC" />
- <gd name="p2" fmla="+- yF 0 yC" />
- <gd name="p3" fmla="mod p1 p2 0" />
- <gd name="p4" fmla="*/ p3 1 2" />
- <gd name="p5" fmla="+- p4 0 thh" />
- <gd name="xGp" fmla="?: p5 xF xG" />
- <gd name="yGp" fmla="?: p5 yF yG" />
- <gd name="xBp" fmla="?: p5 xC xB" />
- <gd name="yBp" fmla="?: p5 yC yB" />
-
- <gd name="en0" fmla="at2 sdxF sdyF" />
- <gd name="en1" fmla="+- en0 21600000 0" />
- <gd name="en2" fmla="?: en0 en0 en1" />
- <gd name="od0" fmla="+- en2 0 enAng" />
- <gd name="od1" fmla="+- od0 21600000 0" />
- <gd name="od2" fmla="?: od0 od0 od1" />
-
- <gd name="st0" fmla="+- stAng 0 od2" />
- <gd name="st1" fmla="+- st0 21600000 0" />
- <gd name="st2" fmla="?: st0 st0 st1" />
-
- <gd name="sw0" fmla="+- en2 0 st2" />
- <gd name="sw1" fmla="+- sw0 21600000 0" />
- <gd name="swAng" fmla="?: sw0 sw0 sw1" />
-
-
- <gd name="ist0" fmla="at2 sdxC sdyC" />
- <gd name="ist1" fmla="+- ist0 21600000 0" />
- <gd name="istAng" fmla="?: ist0 ist0 ist1" />
-
- <gd name="id0" fmla="+- istAng 0 enAng" />
- <gd name="id1" fmla="+- id0 0 21600000" />
- <gd name="id2" fmla="?: id0 id1 id0" />
-
- <gd name="ien0" fmla="+- stAng 0 id2" />
- <gd name="ien1" fmla="+- ien0 0 21600000" />
- <gd name="ien2" fmla="?: ien1 ien1 ien0" />
-
- <gd name="isw1" fmla="+- ien2 0 istAng" />
- <gd name="isw2" fmla="+- isw1 0 21600000" />
- <gd name="iswAng" fmla="?: isw1 isw2 isw1" />
-
-
- <gd name="wtE" fmla="sin rw1 st2" />
- <gd name="htE" fmla="cos rh1 st2" />
- <gd name="dxE" fmla="cat2 rw1 htE wtE" />
- <gd name="dyE" fmla="sat2 rh1 htE wtE" />
- <gd name="xE" fmla="+- hc dxE 0" />
-
- <gd name="yE" fmla="+- vc dyE 0" />
-
-
- <gd name="wtD" fmla="sin rw2 ien2" />
- <gd name="htD" fmla="cos rh2 ien2" />
- <gd name="dxD" fmla="cat2 rw2 htD wtD" />
- <gd name="dyD" fmla="sat2 rh2 htD wtD" />
- <gd name="xD" fmla="+- hc dxD 0" />
-
- <gd name="yD" fmla="+- vc dyD 0" />
-
-
- <gd name="xKp" fmla="?: p5 xE xK" />
- <gd name="yKp" fmla="?: p5 yE yK" />
- <gd name="xJp" fmla="?: p5 xD xJ" />
- <gd name="yJp" fmla="?: p5 yD yJ" />
-
- <gd name="aL" fmla="+- lptAng 0 cd4" />
- <gd name="aA" fmla="+- ptAng cd4 0" />
- <gd name="aB" fmla="+- ptAng cd2 0" />
- <gd name="aJ" fmla="+- lptAng cd2 0" />
-
- <gd name="idx" fmla="cos rw1 2700000" />
- <gd name="idy" fmla="sin rh1 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj2" minAng="0" maxAng="maxAng">
- <pos x="xA" y="yA" />
- </ahPolar>
- <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
- <pos x="xE" y="yE" />
- </ahPolar>
- <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
- <pos x="xF" y="yF" />
- </ahPolar>
- <ahPolar gdRefR="adj5" minR="0" maxR="25000">
- <pos x="xB" y="yB" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="aL">
- <pos x="xL" y="yL" />
- </cxn>
- <cxn ang="lptAng">
- <pos x="xKp" y="yKp" />
- </cxn>
- <cxn ang="ptAng">
- <pos x="xGp" y="yGp" />
- </cxn>
- <cxn ang="aA">
- <pos x="xA" y="yA" />
- </cxn>
- <cxn ang="aB">
- <pos x="xBp" y="yBp" />
- </cxn>
- <cxn ang="aJ">
- <pos x="xJp" y="yJp" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xL" y="yL" />
- </moveTo>
- <lnTo>
- <pt x="xKp" y="yKp" />
- </lnTo>
- <lnTo>
- <pt x="xE" y="yE" />
- </lnTo>
- <arcTo wR="rw1" hR="rh1" stAng="st2" swAng="swAng" />
- <lnTo>
- <pt x="xGp" y="yGp" />
- </lnTo>
- <lnTo>
- <pt x="xA" y="yA" />
- </lnTo>
- <lnTo>
- <pt x="xBp" y="yBp" />
- </lnTo>
- <lnTo>
- <pt x="xC" y="yC" />
- </lnTo>
- <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
- <lnTo>
- <pt x="xJp" y="yJp" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </leftRightCircularArrow>
- <leftRightRibbon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- <gd name="adj3" fmla="val 16667" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a3" fmla="pin 0 adj3 33333" />
- <gd name="maxAdj1" fmla="+- 100000 0 a3" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
-
- <gd name="w1" fmla="+- wd2 0 wd32" />
- <gd name="maxAdj2" fmla="*/ 100000 w1 ss" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
-
- <gd name="x1" fmla="*/ ss a2 100000" />
-
- <gd name="x4" fmla="+- r 0 x1" />
-
- <gd name="dy1" fmla="*/ h a1 200000" />
-
- <gd name="dy2" fmla="*/ h a3 -200000" />
-
- <gd name="ly1" fmla="+- vc dy2 dy1" />
-
- <gd name="ry4" fmla="+- vc dy1 dy2" />
-
- <gd name="ly2" fmla="+- ly1 dy1 0" />
-
- <gd name="ry3" fmla="+- b 0 ly2" />
-
- <gd name="ly4" fmla="*/ ly2 2 1" />
-
- <gd name="ry1" fmla="+- b 0 ly4" />
-
- <gd name="ly3" fmla="+- ly4 0 ly1" />
-
- <gd name="ry2" fmla="+- b 0 ly3" />
-
-
- <gd name="hR" fmla="*/ a3 ss 400000" />
-
- <gd name="x2" fmla="+- hc 0 wd32" />
-
- <gd name="x3" fmla="+- hc wd32 0" />
-
- <gd name="y1" fmla="+- ly1 hR 0" />
-
- <gd name="y2" fmla="+- ry2 0 hR" />
-
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="x4" y="ry2" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="33333">
- <pos x="x3" y="ry2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="ry3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x4" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="ly4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="ly2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x4" y="ry1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="ly1" r="x4" b="ry4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="ly2" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="ly1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="ly1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x4" y="ry2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="ry1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="ry3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="ry4" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="ry4" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="ly3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="ly3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="ly4" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="x3" y="y1" />
- </moveTo>
- <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x3" y="ry2" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="ly2" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="ly1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="ly1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x4" y="ry2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="ry1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="ry3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="ry4" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="ry4" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="ly3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="ly3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="ly4" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x3" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="ry2" />
- </lnTo>
- <moveTo>
- <pt x="x2" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="ly3" />
- </lnTo>
- </path>
- </pathLst>
-
- </leftRightRibbon>
- <leftRightUpArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="q1" fmla="+- 100000 0 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ q1 1 2" />
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="x1" fmla="*/ ss a3 100000" />
- <gd name="dx2" fmla="*/ ss a2 100000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x5" fmla="+- hc dx2 0" />
- <gd name="dx3" fmla="*/ ss a1 200000" />
-
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc dx3 0" />
- <gd name="x6" fmla="+- r 0 x1" />
-
- <gd name="dy2" fmla="*/ ss a2 50000" />
-
- <gd name="y2" fmla="+- b 0 dy2" />
- <gd name="y4" fmla="+- b 0 dx2" />
- <gd name="y3" fmla="+- y4 0 dx3" />
- <gd name="y5" fmla="+- y4 dx3 0" />
- <gd name="il" fmla="*/ dx3 x1 dx2" />
- <gd name="ir" fmla="+- r 0 il" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="x3" y="x1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x2" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="x1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y5" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y4" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="y3" r="ir" b="y5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y4" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </leftRightUpArrow>
- <leftUpArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="+- 100000 0 maxAdj1" />
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="x1" fmla="*/ ss a3 100000" />
-
- <gd name="dx2" fmla="*/ ss a2 50000" />
-
- <gd name="x2" fmla="+- r 0 dx2" />
- <gd name="y2" fmla="+- b 0 dx2" />
- <gd name="dx4" fmla="*/ ss a2 100000" />
-
- <gd name="x4" fmla="+- r 0 dx4" />
- <gd name="y4" fmla="+- b 0 dx4" />
- <gd name="dx3" fmla="*/ ss a1 200000" />
-
- <gd name="x3" fmla="+- x4 0 dx3" />
- <gd name="x5" fmla="+- x4 dx3 0" />
- <gd name="y3" fmla="+- y4 0 dx3" />
- <gd name="y5" fmla="+- y4 dx3 0" />
- <gd name="il" fmla="*/ dx3 x1 dx4" />
- <gd name="cx1" fmla="+/ x1 x5 2" />
- <gd name="cy1" fmla="+/ x1 y5 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="x3" y="y3" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x2" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="x3" y="x1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x4" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x2" y="x1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="cx1" y="y5" />
- </cxn>
- <cxn ang="0">
- <pos x="x5" y="cy1" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="x1" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="y3" r="x4" b="y5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y4" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </leftUpArrow>
- <lightningBolt>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="x1" fmla="*/ w 5022 21600" />
- <gd name="x3" fmla="*/ w 8472 21600" />
- <gd name="x4" fmla="*/ w 8757 21600" />
-
- <gd name="x5" fmla="*/ w 10012 21600" />
- <gd name="x8" fmla="*/ w 12860 21600" />
- <gd name="x9" fmla="*/ w 13917 21600" />
-
- <gd name="x11" fmla="*/ w 16577 21600" />
- <gd name="y1" fmla="*/ h 3890 21600" />
- <gd name="y2" fmla="*/ h 6080 21600" />
- <gd name="y4" fmla="*/ h 7437 21600" />
-
- <gd name="y6" fmla="*/ h 9705 21600" />
- <gd name="y7" fmla="*/ h 12007 21600" />
- <gd name="y10" fmla="*/ h 14277 21600" />
-
- <gd name="y11" fmla="*/ h 14915 21600" />
-
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x3" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="l" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y6" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x5" y="y11" />
- </cxn>
- <cxn ang="cd4">
- <pos x="r" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x11" y="y7" />
- </cxn>
- <cxn ang="0">
- <pos x="x8" y="y2" />
- </cxn>
- </cxnLst>
-
- <rect l="x4" t="y4" r="x9" b="y10" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path w="21600" h="21600">
- <moveTo>
- <pt x="8472" y="0" />
- </moveTo>
- <lnTo>
- <pt x="12860" y="6080" />
- </lnTo>
- <lnTo>
- <pt x="11050" y="6797" />
- </lnTo>
- <lnTo>
- <pt x="16577" y="12007" />
- </lnTo>
- <lnTo>
- <pt x="14767" y="12877" />
- </lnTo>
- <lnTo>
- <pt x="21600" y="21600" />
- </lnTo>
- <lnTo>
- <pt x="10012" y="14915" />
- </lnTo>
- <lnTo>
- <pt x="12222" y="13987" />
- </lnTo>
- <lnTo>
- <pt x="5022" y="9705" />
- </lnTo>
- <lnTo>
- <pt x="7602" y="8382" />
- </lnTo>
- <lnTo>
- <pt x="0" y="3890" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </lightningBolt>
- <line>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="r" y="b" />
- </cxn>
- </cxnLst>
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- </path>
- </pathLst>
- </line>
- <lineInv>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="r" y="t" />
- </cxn>
- </cxnLst>
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- </path>
- </pathLst>
- </lineInv>
- <mathDivide>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 23520" />
-
- <gd name="adj2" fmla="val 5880" />
-
- <gd name="adj3" fmla="val 11760" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
- <gd name="a1" fmla="pin 1000 adj1 36745" />
- <gd name="ma1" fmla="+- 0 0 a1" />
-
- <gd name="ma3h" fmla="+/ 73490 ma1 4" />
-
- <gd name="ma3w" fmla="*/ 36745 w h" />
-
- <gd name="maxAdj3" fmla="min ma3h ma3w" />
- <gd name="a3" fmla="pin 1000 adj3 maxAdj3" />
- <gd name="m4a3" fmla="*/ -4 a3 1" />
-
- <gd name="maxAdj2" fmla="+- 73490 m4a3 a1" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
-
- <gd name="dy1" fmla="*/ h a1 200000" />
-
- <gd name="yg" fmla="*/ h a2 100000" />
-
- <gd name="rad" fmla="*/ h a3 100000" />
-
- <gd name="dx1" fmla="*/ w 73490 200000" />
-
-
- <gd name="y3" fmla="+- vc 0 dy1" />
-
- <gd name="y4" fmla="+- vc dy1 0" />
-
- <gd name="a" fmla="+- yg rad 0" />
- <gd name="y2" fmla="+- y3 0 a" />
-
- <gd name="y1" fmla="+- y2 0 rad" />
-
- <gd name="y5" fmla="+- b 0 y1" />
-
-
- <gd name="x1" fmla="+- hc 0 dx1" />
-
- <gd name="x3" fmla="+- hc dx1 0" />
-
- <gd name="x2" fmla="+- hc 0 rad" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="1000" maxY="36745">
- <pos x="l" y="y3" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="r" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="1000" maxX="maxAdj3">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x3" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y5" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y3" r="x3" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="hc" y="y1" />
- </moveTo>
- <arcTo hR="rad" wR="rad" stAng="3cd4" swAng="21600000" />
- <close />
- <moveTo>
- <pt x="hc" y="y5" />
- </moveTo>
- <arcTo hR="rad" wR="rad" stAng="cd4" swAng="21600000" />
- <close />
- <moveTo>
- <pt x="x1" y="y3" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </mathDivide>
- <mathEqual>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 23520" />
-
- <gd name="adj2" fmla="val 11760" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 36745" />
-
-
- <gd name="2a1" fmla="*/ a1 2 1" />
-
- <gd name="mAdj2" fmla="+- 100000 0 2a1" />
-
- <gd name="a2" fmla="pin 0 adj2 mAdj2" />
- <gd name="dy1" fmla="*/ h a1 100000" />
-
- <gd name="dy2" fmla="*/ h a2 200000" />
-
- <gd name="dx1" fmla="*/ w 73490 200000" />
-
-
- <gd name="y2" fmla="+- vc 0 dy2" />
-
- <gd name="y3" fmla="+- vc dy2 0" />
-
- <gd name="y1" fmla="+- y2 0 dy1" />
-
- <gd name="y4" fmla="+- y3 dy1 0" />
-
-
- <gd name="x1" fmla="+- hc 0 dx1" />
-
- <gd name="x2" fmla="+- hc dx1 0" />
-
-
-
- <gd name="yC1" fmla="+/ y1 y2 2" />
-
- <gd name="yC2" fmla="+/ y3 y4 2" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="36745">
- <pos x="l" y="y1" />
- </ahXY>
-
- <ahXY gdRefY="adj2" minY="0" maxY="mAdj2">
- <pos x="r" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x2" y="yC1" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="yC2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="yC1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="yC2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x1" y="y3" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </mathEqual>
- <mathMinus>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 23520" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="dy1" fmla="*/ h a1 200000" />
-
- <gd name="dx1" fmla="*/ w 73490 200000" />
-
-
- <gd name="y1" fmla="+- vc 0 dy1" />
-
- <gd name="y2" fmla="+- vc dy1 0" />
-
-
- <gd name="x1" fmla="+- hc 0 dx1" />
-
- <gd name="x2" fmla="+- hc dx1 0" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="l" y="y1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </mathMinus>
- <mathMultiply>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 23520" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
-
-
-
-
- <gd name="a1" fmla="pin 0 adj1 51965" />
-
- <gd name="th" fmla="*/ ss a1 100000" />
-
-
- <gd name="a" fmla="at2 w h" />
-
- <gd name="sa" fmla="sin 1 a" />
- <gd name="ca" fmla="cos 1 a" />
- <gd name="ta" fmla="tan 1 a" />
-
-
- <gd name="dl" fmla="mod w h 0" />
-
- <gd name="rw" fmla="*/ dl 51965 100000" />
-
-
-
- <gd name="lM" fmla="+- dl 0 rw" />
- <gd name="xM" fmla="*/ ca lM 2" />
- <gd name="yM" fmla="*/ sa lM 2" />
-
-
- <gd name="dxAM" fmla="*/ sa th 2" />
- <gd name="dyAM" fmla="*/ ca th 2" />
- <gd name="xA" fmla="+- xM 0 dxAM" />
- <gd name="yA" fmla="+- yM dyAM 0" />
-
-
- <gd name="xB" fmla="+- xM dxAM 0" />
- <gd name="yB" fmla="+- yM 0 dyAM" />
-
-
- <gd name="xBC" fmla="+- hc 0 xB" />
- <gd name="yBC" fmla="*/ xBC ta 1" />
- <gd name="yC" fmla="+- yBC yB 0" />
-
-
- <gd name="xD" fmla="+- r 0 xB" />
- <gd name="xE" fmla="+- r 0 xA" />
-
- <gd name="yFE" fmla="+- vc 0 yA" />
- <gd name="xFE" fmla="*/ yFE 1 ta" />
- <gd name="xF" fmla="+- xE 0 xFE" />
- <gd name="xL" fmla="+- xA xFE 0" />
- <gd name="yG" fmla="+- b 0 yA" />
- <gd name="yH" fmla="+- b 0 yB" />
- <gd name="yI" fmla="+- b 0 yC" />
-
-
- <gd name="xC2" fmla="+- r 0 xM" />
-
- <gd name="yC3" fmla="+- b 0 yM" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="51965">
- <pos x="l" y="th" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="xM" y="yM" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="xC2" y="yM" />
- </cxn>
- <cxn ang="0">
- <pos x="xC2" y="yC3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="xM" y="yC3" />
- </cxn>
- </cxnLst>
-
- <rect l="xA" t="yB" r="xE" b="yH" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xA" y="yA" />
- </moveTo>
- <lnTo>
- <pt x="xB" y="yB" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="yC" />
- </lnTo>
- <lnTo>
- <pt x="xD" y="yB" />
- </lnTo>
- <lnTo>
- <pt x="xE" y="yA" />
- </lnTo>
- <lnTo>
- <pt x="xF" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="xE" y="yG" />
- </lnTo>
- <lnTo>
- <pt x="xD" y="yH" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="yI" />
- </lnTo>
- <lnTo>
- <pt x="xB" y="yH" />
- </lnTo>
- <lnTo>
- <pt x="xA" y="yG" />
- </lnTo>
- <lnTo>
- <pt x="xL" y="vc" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </mathMultiply>
- <mathNotEqual>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 23520" />
-
- <gd name="adj2" fmla="val 6600000" />
-
- <gd name="adj3" fmla="val 11760" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="crAng" fmla="pin 4200000 adj2 6600000" />
-
-
- <gd name="2a1" fmla="*/ a1 2 1" />
- <gd name="maxAdj3" fmla="+- 100000 0 2a1" />
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
-
- <gd name="dy1" fmla="*/ h a1 100000" />
-
- <gd name="dy2" fmla="*/ h a3 200000" />
-
- <gd name="dx1" fmla="*/ w 73490 200000" />
-
-
- <gd name="x1" fmla="+- hc 0 dx1" />
-
- <gd name="x8" fmla="+- hc dx1 0" />
-
-
-
- <gd name="y2" fmla="+- vc 0 dy2" />
-
- <gd name="y3" fmla="+- vc dy2 0" />
-
- <gd name="y1" fmla="+- y2 0 dy1" />
-
- <gd name="y4" fmla="+- y3 dy1 0" />
-
-
- <gd name="cadj2" fmla="+- crAng 0 cd4" />
- <gd name="xadj2" fmla="tan hd2 cadj2" />
-
-
-
- <gd name="len" fmla="mod xadj2 hd2 0" />
-
-
-
- <gd name="bhw" fmla="*/ len dy1 hd2" />
-
- <gd name="bhw2" fmla="*/ bhw 1 2" />
- <gd name="x7" fmla="+- hc xadj2 bhw2" />
-
- <gd name="dx67" fmla="*/ xadj2 y1 hd2" />
- <gd name="x6" fmla="+- x7 0 dx67" />
-
- <gd name="dx57" fmla="*/ xadj2 y2 hd2" />
- <gd name="x5" fmla="+- x7 0 dx57" />
-
- <gd name="dx47" fmla="*/ xadj2 y3 hd2" />
- <gd name="x4" fmla="+- x7 0 dx47" />
-
- <gd name="dx37" fmla="*/ xadj2 y4 hd2" />
- <gd name="x3" fmla="+- x7 0 dx37" />
-
- <gd name="dx27" fmla="*/ xadj2 2 1" />
- <gd name="x2" fmla="+- x7 0 dx27" />
-
-
- <gd name="rx7" fmla="+- x7 bhw 0" />
-
- <gd name="rx6" fmla="+- x6 bhw 0" />
-
- <gd name="rx5" fmla="+- x5 bhw 0" />
-
- <gd name="rx4" fmla="+- x4 bhw 0" />
-
- <gd name="rx3" fmla="+- x3 bhw 0" />
-
- <gd name="rx2" fmla="+- x2 bhw 0" />
-
-
-
- <gd name="dx7" fmla="*/ dy1 hd2 len" />
- <gd name="rxt" fmla="+- x7 dx7 0" />
-
- <gd name="lxt" fmla="+- rx7 0 dx7" />
-
- <gd name="rx" fmla="?: cadj2 rxt rx7" />
-
- <gd name="lx" fmla="?: cadj2 x7 lxt" />
-
-
- <gd name="dy3" fmla="*/ dy1 xadj2 len" />
- <gd name="dy4" fmla="+- 0 0 dy3" />
- <gd name="ry" fmla="?: cadj2 dy3 t" />
-
- <gd name="ly" fmla="?: cadj2 t dy4" />
-
-
- <gd name="dlx" fmla="+- w 0 rx" />
-
- <gd name="drx" fmla="+- w 0 lx" />
-
-
- <gd name="dly" fmla="+- h 0 ry" />
-
- <gd name="dry" fmla="+- h 0 ly" />
-
-
-
- <gd name="xC1" fmla="+/ rx lx 2" />
-
- <gd name="xC2" fmla="+/ drx dlx 2" />
-
-
- <gd name="yC1" fmla="+/ ry ly 2" />
-
- <gd name="yC2" fmla="+/ y1 y2 2" />
-
- <gd name="yC3" fmla="+/ y3 y4 2" />
-
- <gd name="yC4" fmla="+/ dry dly 2" />
-
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="50000">
- <pos x="l" y="y1" />
- </ahXY>
- <ahPolar gdRefAng="adj2" minAng="4200000" maxAng="6600000">
- <pos x="lx" y="t" />
- </ahPolar>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x8" y="yC2" />
- </cxn>
- <cxn ang="0">
- <pos x="x8" y="yC3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="xC2" y="yC4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="yC2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="yC3" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="xC1" y="yC1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y1" r="x8" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x6" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="lx" y="ly" />
- </lnTo>
- <lnTo>
- <pt x="rx" y="ry" />
- </lnTo>
- <lnTo>
- <pt x="rx6" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="rx5" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="rx4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="rx3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="drx" y="dry" />
- </lnTo>
- <lnTo>
- <pt x="dlx" y="dly" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </mathNotEqual>
- <mathPlus>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 23520" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 73490" />
- <gd name="dx1" fmla="*/ w 73490 200000" />
-
- <gd name="dy1" fmla="*/ h 73490 200000" />
-
- <gd name="dx2" fmla="*/ ss a1 200000" />
-
-
- <gd name="x1" fmla="+- hc 0 dx1" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
-
- <gd name="x3" fmla="+- hc dx2 0" />
-
- <gd name="x4" fmla="+- hc dx1 0" />
-
-
- <gd name="y1" fmla="+- vc 0 dy1" />
-
- <gd name="y2" fmla="+- vc 0 dx2" />
-
- <gd name="y3" fmla="+- vc dx2 0" />
-
- <gd name="y4" fmla="+- vc dy1 0" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="73490">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y2" r="x4" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </mathPlus>
- <moon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 87500" />
- <gd name="g0" fmla="*/ ss a 100000" />
- <gd name="g0w" fmla="*/ g0 w ss" />
- <gd name="g1" fmla="+- ss 0 g0" />
- <gd name="g2" fmla="*/ g0 g0 g1" />
- <gd name="g3" fmla="*/ ss ss g1" />
- <gd name="g4" fmla="*/ g3 2 1" />
- <gd name="g5" fmla="+- g4 0 g2" />
- <gd name="g6" fmla="+- g5 0 g0" />
- <gd name="g6w" fmla="*/ g6 w ss" />
- <gd name="g7" fmla="*/ g5 1 2" />
- <gd name="g8" fmla="+- g7 0 g0" />
- <gd name="dy1" fmla="*/ g8 hd2 ss" />
-
- <gd name="g10h" fmla="+- vc 0 dy1" />
- <gd name="g11h" fmla="+- vc dy1 0" />
- <gd name="g12" fmla="*/ g0 9598 32768" />
- <gd name="g12w" fmla="*/ g12 w ss" />
- <gd name="g13" fmla="+- ss 0 g12" />
- <gd name="q1" fmla="*/ ss ss 1" />
- <gd name="q2" fmla="*/ g13 g13 1" />
- <gd name="q3" fmla="+- q1 0 q2" />
- <gd name="q4" fmla="sqrt q3" />
- <gd name="dy4" fmla="*/ q4 hd2 ss" />
- <gd name="g15h" fmla="+- vc 0 dy4" />
- <gd name="g16h" fmla="+- vc dy4 0" />
- <gd name="g17w" fmla="+- g6w 0 g0w" />
- <gd name="g18w" fmla="*/ g17w 1 2" />
-
-
- <gd name="dx2p" fmla="+- g0w g18w w" />
- <gd name="dx2" fmla="*/ dx2p -1 1" />
-
- <gd name="dy2" fmla="*/ hd2 -1 1" />
-
- <gd name="stAng1" fmla="at2 dx2 dy2" />
- <gd name="enAngp1" fmla="at2 dx2 hd2" />
- <gd name="enAng1" fmla="+- enAngp1 0 21600000" />
- <gd name="swAng1" fmla="+- enAng1 0 stAng1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="87500">
- <pos x="g0w" y="vc" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="r" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="r" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="g0w" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="g12w" t="g15h" r="g0w" b="g16h" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="r" y="b" />
- </moveTo>
- <arcTo wR="w" hR="hd2" stAng="cd4" swAng="cd2" />
- <arcTo wR="g18w" hR="dy1" stAng="stAng1" swAng="swAng1" />
- <close />
- </path>
- </pathLst>
-
- </moon>
- <nonIsoscelesTrapezoid>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 50000 w ss" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj" />
- <gd name="x1" fmla="*/ ss a1 200000" />
-
- <gd name="x2" fmla="*/ ss a1 100000" />
-
- <gd name="dx3" fmla="*/ ss a2 100000" />
-
- <gd name="x3" fmla="+- r 0 dx3" />
- <gd name="x4" fmla="+/ r x3 2" />
- <gd name="il" fmla="*/ wd3 a1 maxAdj" />
-
- <gd name="adjm" fmla="max a1 a2" />
- <gd name="it" fmla="*/ hd3 adjm maxAdj" />
-
- <gd name="irt" fmla="*/ wd3 a2 maxAdj" />
- <gd name="ir" fmla="+- r 0 irt" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj">
- <pos x="x2" y="t" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj">
- <pos x="x3" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
-
- <rect l="il" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </nonIsoscelesTrapezoid>
- <noSmoking>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 18750" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dr" fmla="*/ ss a 100000" />
- <gd name="iwd2" fmla="+- wd2 0 dr" />
- <gd name="ihd2" fmla="+- hd2 0 dr" />
- <gd name="ang" fmla="at2 w h" />
- <gd name="ct" fmla="cos ihd2 ang" />
- <gd name="st" fmla="sin iwd2 ang" />
- <gd name="m" fmla="mod ct st 0" />
- <gd name="n" fmla="*/ iwd2 ihd2 m" />
- <gd name="drd2" fmla="*/ dr 1 2" />
- <gd name="dang" fmla="at2 n drd2" />
- <gd name="2dang" fmla="*/ dang 2 1" />
- <gd name="swAng" fmla="+- -10800000 2dang 0" />
- <gd name="t3" fmla="at2 w h" />
- <gd name="stAng1" fmla="+- t3 0 dang" />
- <gd name="stAng2" fmla="+- stAng1 0 cd2" />
- <gd name="ct1" fmla="cos ihd2 stAng1" />
- <gd name="st1" fmla="sin iwd2 stAng1" />
- <gd name="m1" fmla="mod ct1 st1 0" />
- <gd name="n1" fmla="*/ iwd2 ihd2 m1" />
- <gd name="dx1" fmla="cos n1 stAng1" />
- <gd name="dy1" fmla="sin n1 stAng1" />
- <gd name="x1" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc dy1 0" />
- <gd name="x2" fmla="+- hc 0 dx1" />
- <gd name="y2" fmla="+- vc 0 dy1" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefR="adj" minR="0" maxR="50000">
- <pos x="dr" y="vc" />
- </ahPolar>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo wR="iwd2" hR="ihd2" stAng="stAng1" swAng="swAng" />
- <close />
- <moveTo>
- <pt x="x2" y="y2" />
- </moveTo>
- <arcTo wR="iwd2" hR="ihd2" stAng="stAng2" swAng="swAng" />
- <close />
- </path>
- </pathLst>
-
- </noSmoking>
- <notchedRightArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 100000 w ss" />
-
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="dx2" fmla="*/ ss a2 100000" />
- <gd name="x2" fmla="+- r 0 dx2" />
- <gd name="dy1" fmla="*/ h a1 200000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc dy1 0" />
- <gd name="x1" fmla="*/ dy1 dx2 hd2" />
- <gd name="x3" fmla="+- r 0 x1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="r" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x1" t="y1" r="x3" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="vc" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </notchedRightArrow>
- <octagon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 29289" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
- <gd name="y2" fmla="+- b 0 x1" />
- <gd name="il" fmla="*/ x1 1 2" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="x1" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="x1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="x1" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </octagon>
- <parallelogram>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 100000 w ss" />
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="x1" fmla="*/ ss a 200000" />
- <gd name="x2" fmla="*/ ss a 100000" />
- <gd name="x6" fmla="+- r 0 x1" />
- <gd name="x5" fmla="+- r 0 x2" />
- <gd name="x3" fmla="*/ x5 1 2" />
- <gd name="x4" fmla="+- r 0 x3" />
- <gd name="il" fmla="*/ wd2 a maxAdj" />
- <gd name="q1" fmla="*/ 5 a maxAdj" />
- <gd name="q2" fmla="+/ 1 q1 12" />
- <gd name="il" fmla="*/ q2 w 1" />
- <gd name="it" fmla="*/ q2 h 1" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 it" />
- <gd name="q3" fmla="*/ h hc x2" />
- <gd name="y1" fmla="pin 0 q3 h" />
- <gd name="y2" fmla="+- b 0 y1" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x4" y="t" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </parallelogram>
- <pentagon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="hf" fmla="val 105146" />
- <gd name="vf" fmla="val 110557" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="swd2" fmla="*/ wd2 hf 100000" />
- <gd name="shd2" fmla="*/ hd2 vf 100000" />
- <gd name="svc" fmla="*/ vc vf 100000" />
- <gd name="dx1" fmla="cos swd2 1080000" />
- <gd name="dx2" fmla="cos swd2 18360000" />
- <gd name="dy1" fmla="sin shd2 1080000" />
- <gd name="dy2" fmla="sin shd2 18360000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- svc 0 dy1" />
- <gd name="y2" fmla="+- svc 0 dy2" />
- <gd name="it" fmla="*/ y1 dx2 dx1" />
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="it" r="x3" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </pentagon>
- <pie>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 0" />
- <gd name="adj2" fmla="val 16200000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="stAng" fmla="pin 0 adj1 21599999" />
- <gd name="enAng" fmla="pin 0 adj2 21599999" />
- <gd name="sw1" fmla="+- enAng 0 stAng" />
- <gd name="sw2" fmla="+- sw1 21600000 0" />
- <gd name="swAng" fmla="?: sw1 sw1 sw2" />
- <gd name="wt1" fmla="sin wd2 stAng" />
- <gd name="ht1" fmla="cos hd2 stAng" />
- <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
- <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
- <gd name="x1" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc dy1 0" />
- <gd name="wt2" fmla="sin wd2 enAng" />
- <gd name="ht2" fmla="cos hd2 enAng" />
- <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
- <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
- <gd name="x2" fmla="+- hc dx2 0" />
- <gd name="y2" fmla="+- vc dy2 0" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
- <pos x="x1" y="y1" />
- </ahPolar>
- <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
- <pos x="x2" y="y2" />
- </ahPolar>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
- <rect l="il" t="ir" r="it" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
- <lnTo>
- <pt x="hc" y="vc" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </pie>
- <pieWedge>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="g1" fmla="cos w 13500000" />
- <gd name="g2" fmla="sin h 13500000" />
- <gd name="x1" fmla="+- r g1 0" />
- <gd name="y1" fmla="+- b g2 0" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="y1" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <arcTo wR="w" hR="h" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </pieWedge>
- <plaque>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
-
- <gd name="y2" fmla="+- b 0 x1" />
- <gd name="il" fmla="*/ x1 70711 100000" />
-
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="x1" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
- <close />
- </path>
- </pathLst>
-
- </plaque>
- <plaqueTabs>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="md" fmla="mod w h 0" />
- <gd name="dx" fmla="*/ 1 md 20" />
-
- <gd name="y1" fmla="+- 0 b dx" />
-
- <gd name="x1" fmla="+- 0 r dx" />
-
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="dx" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="dx" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="dx" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="t" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="dx" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y1" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="b" />
- </cxn>
- </cxnLst>
-
- <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="dx" y="t" />
- </lnTo>
- <arcTo wR="dx" hR="dx" stAng="0" swAng="cd4" />
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <arcTo wR="dx" hR="dx" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="r" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="dx" />
- </lnTo>
- <arcTo wR="dx" hR="dx" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x1" y="b" />
- </moveTo>
- <arcTo wR="dx" hR="dx" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </plaqueTabs>
- <plus>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
- <gd name="y2" fmla="+- b 0 x1" />
- <gd name="d" fmla="+- w 0 h" />
- <gd name="il" fmla="?: d l x1" />
- <gd name="ir" fmla="?: d r x2" />
- <gd name="it" fmla="?: d x1 t" />
- <gd name="ib" fmla="?: d y2 b" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="x1" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </plus>
- <quadArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 22500" />
-
- <gd name="adj2" fmla="val 22500" />
-
- <gd name="adj3" fmla="val 22500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="q1" fmla="+- 100000 0 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ q1 1 2" />
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="x1" fmla="*/ ss a3 100000" />
- <gd name="dx2" fmla="*/ ss a2 100000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x5" fmla="+- hc dx2 0" />
- <gd name="dx3" fmla="*/ ss a1 200000" />
-
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc dx3 0" />
- <gd name="x6" fmla="+- r 0 x1" />
-
- <gd name="y2" fmla="+- vc 0 dx2" />
- <gd name="y5" fmla="+- vc dx2 0" />
- <gd name="y3" fmla="+- vc 0 dx3" />
- <gd name="y4" fmla="+- vc dx3 0" />
- <gd name="y6" fmla="+- b 0 x1" />
- <gd name="il" fmla="*/ dx3 x1 dx2" />
- <gd name="ir" fmla="+- r 0 il" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="x3" y="x1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x2" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="x1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="y3" r="ir" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="x1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y5" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </quadArrow>
- <quadArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 18515" />
-
- <gd name="adj2" fmla="val 18515" />
-
- <gd name="adj3" fmla="val 18515" />
-
- <gd name="adj4" fmla="val 48123" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="+- 50000 0 a2" />
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 2 1" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin a1 adj4 maxAdj4" />
- <gd name="dx2" fmla="*/ ss a2 100000" />
-
- <gd name="dx3" fmla="*/ ss a1 200000" />
-
- <gd name="ah" fmla="*/ ss a3 100000" />
-
- <gd name="dx1" fmla="*/ w a4 200000" />
-
- <gd name="dy1" fmla="*/ h a4 200000" />
-
-
- <gd name="x8" fmla="+- r 0 ah" />
- <gd name="x2" fmla="+- hc 0 dx1" />
- <gd name="x7" fmla="+- hc dx1 0" />
- <gd name="x3" fmla="+- hc 0 dx2" />
- <gd name="x6" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc 0 dx3" />
- <gd name="x5" fmla="+- hc dx3 0" />
-
- <gd name="y8" fmla="+- b 0 ah" />
- <gd name="y2" fmla="+- vc 0 dy1" />
- <gd name="y7" fmla="+- vc dy1 0" />
- <gd name="y3" fmla="+- vc 0 dx2" />
- <gd name="y6" fmla="+- vc dx2 0" />
- <gd name="y4" fmla="+- vc 0 dx3" />
- <gd name="y5" fmla="+- vc dx3 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="x4" y="ah" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x3" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="ah" />
- </ahXY>
- <ahXY gdRefY="adj4" minY="a1" maxY="maxAdj4">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="y2" r="x7" b="y7" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="ah" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="ah" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="ah" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="ah" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="ah" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="ah" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="ah" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="ah" y="y6" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </quadArrowCallout>
- <rect>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </rect>
- <ribbon>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16667" />
-
- <gd name="adj2" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 33333" />
- <gd name="a2" fmla="pin 25000 adj2 75000" />
-
-
- <gd name="x10" fmla="+- r 0 wd8" />
-
- <gd name="dx2" fmla="*/ w a2 200000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
-
- <gd name="x9" fmla="+- hc dx2 0" />
-
- <gd name="x3" fmla="+- x2 wd32 0" />
- <gd name="x8" fmla="+- x9 0 wd32" />
- <gd name="x5" fmla="+- x2 wd8 0" />
-
- <gd name="x6" fmla="+- x9 0 wd8" />
-
- <gd name="x4" fmla="+- x5 0 wd32" />
- <gd name="x7" fmla="+- x6 wd32 0" />
- <gd name="y1" fmla="*/ h a1 200000" />
-
- <gd name="y2" fmla="*/ h a1 100000" />
-
- <gd name="y4" fmla="+- b 0 y2" />
-
- <gd name="y3" fmla="*/ y4 1 2" />
-
- <gd name="hR" fmla="*/ h a1 400000" />
-
- <gd name="y5" fmla="+- b 0 hR" />
- <gd name="y6" fmla="+- y2 0 hR" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="33333">
- <pos x="hc" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="25000" maxX="75000">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd8" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x10" y="y3" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="y2" r="x9" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="t" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x8" y="y2" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x7" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y5" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x3" y="b" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="wd8" y="y3" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="x5" y="hR" />
- </moveTo>
- <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x6" y="hR" />
- </moveTo>
- <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="-5400000" />
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="t" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x8" y="y2" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x7" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y5" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x3" y="b" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="wd8" y="y3" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x5" y="hR" />
- </moveTo>
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <moveTo>
- <pt x="x6" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x6" y="hR" />
- </lnTo>
- <moveTo>
- <pt x="x2" y="y4" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y6" />
- </lnTo>
- <moveTo>
- <pt x="x9" y="y6" />
- </moveTo>
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- </path>
- </pathLst>
-
- </ribbon>
- <ribbon2>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16667" />
-
- <gd name="adj2" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 33333" />
- <gd name="a2" fmla="pin 25000 adj2 75000" />
-
-
- <gd name="x10" fmla="+- r 0 wd8" />
-
- <gd name="dx2" fmla="*/ w a2 200000" />
-
- <gd name="x2" fmla="+- hc 0 dx2" />
-
- <gd name="x9" fmla="+- hc dx2 0" />
-
- <gd name="x3" fmla="+- x2 wd32 0" />
- <gd name="x8" fmla="+- x9 0 wd32" />
- <gd name="x5" fmla="+- x2 wd8 0" />
-
- <gd name="x6" fmla="+- x9 0 wd8" />
-
- <gd name="x4" fmla="+- x5 0 wd32" />
- <gd name="x7" fmla="+- x6 wd32 0" />
- <gd name="dy1" fmla="*/ h a1 200000" />
-
- <gd name="y1" fmla="+- b 0 dy1" />
- <gd name="dy2" fmla="*/ h a1 100000" />
-
- <gd name="y2" fmla="+- b 0 dy2" />
- <gd name="y4" fmla="+- t dy2 0" />
-
- <gd name="y3" fmla="+/ y4 b 2" />
-
- <gd name="hR" fmla="*/ h a1 400000" />
-
-
- <gd name="y6" fmla="+- b 0 hR" />
- <gd name="y7" fmla="+- y1 0 hR" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="33333">
- <pos x="hc" y="y2" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="25000" maxX="75000">
- <pos x="x2" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="wd8" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="x10" y="y3" />
- </cxn>
- </cxnLst>
-
- <rect l="x2" t="t" r="x9" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x4" y="b" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
- <lnTo>
- <pt x="x8" y="y2" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="x7" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="hR" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="0" swAng="-5400000" />
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="wd8" y="y3" />
- </lnTo>
- <close />
- </path>
- <path stroke="false" fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="x5" y="y6" />
- </moveTo>
- <arcTo wR="wd32" hR="hR" stAng="0" swAng="-5400000" />
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x6" y="y6" />
- </moveTo>
- <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="wd8" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="hR" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x8" y="t" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="b" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
- <close />
- <moveTo>
- <pt x="x5" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x5" y="y6" />
- </lnTo>
- <moveTo>
- <pt x="x6" y="y6" />
- </moveTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <moveTo>
- <pt x="x2" y="y7" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <moveTo>
- <pt x="x9" y="y4" />
- </moveTo>
- <lnTo>
- <pt x="x9" y="y7" />
- </lnTo>
- </path>
- </pathLst>
-
- </ribbon2>
- <rightArrow>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 100000 w ss" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="dx1" fmla="*/ ss a2 100000" />
- <gd name="x1" fmla="+- r 0 dx1" />
- <gd name="dy1" fmla="*/ h a1 200000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc dy1 0" />
- <gd name="dx2" fmla="*/ y1 dx1 hd2" />
- <gd name="x2" fmla="+- x1 dx2 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="l" t="y1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </rightArrow>
- <rightArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 64977" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ 100000 w ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 ss w" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
- <gd name="dy1" fmla="*/ ss a2 100000" />
-
- <gd name="dy2" fmla="*/ ss a1 200000" />
-
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc dy2 0" />
- <gd name="y4" fmla="+- vc dy1 0" />
- <gd name="dx3" fmla="*/ ss a3 100000" />
-
- <gd name="x3" fmla="+- r 0 dx3" />
- <gd name="x2" fmla="*/ w a4 100000" />
-
- <gd name="x1" fmla="*/ x2 1 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="x3" y="y2" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="r" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
- <pos x="x3" y="t" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
- <pos x="x2" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </rightArrowCallout>
- <rightBrace>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 8333" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 100000" />
- <gd name="q1" fmla="+- 100000 0 a2" />
- <gd name="q2" fmla="min q1 a2" />
- <gd name="q3" fmla="*/ q2 1 2" />
- <gd name="maxAdj1" fmla="*/ q3 h ss" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="y1" fmla="*/ ss a1 100000" />
- <gd name="y3" fmla="*/ h a2 100000" />
- <gd name="y2" fmla="+- y3 0 y1" />
- <gd name="y4" fmla="+- b 0 y1" />
- <gd name="dx1" fmla="cos wd2 2700000" />
- <gd name="dy1" fmla="sin y1 2700000" />
- <gd name="ir" fmla="+- l dx1 0" />
- <gd name="it" fmla="+- y1 0 dy1" />
- <gd name="ib" fmla="+- b dy1 y1" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
- <pos x="hc" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="100000">
- <pos x="r" y="y3" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="r" y="y3" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="l" y="b" />
- </cxn>
- </cxnLst>
- <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="hc" y="y2" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-5400000" />
- <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="y4" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd4" />
- <close />
- </path>
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="hc" y="y2" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-5400000" />
- <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="hc" y="y4" />
- </lnTo>
- <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd4" />
- </path>
- </pathLst>
- </rightBrace>
- <rightBracket>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 8333" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 50000 h ss" />
-
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="y1" fmla="*/ ss a 100000" />
-
- <gd name="y2" fmla="+- b 0 y1" />
-
- <gd name="dx1" fmla="cos w 2700000" />
- <gd name="dy1" fmla="sin y1 2700000" />
- <gd name="ir" fmla="+- l dx1 0" />
- <gd name="it" fmla="+- y1 0 dy1" />
- <gd name="ib" fmla="+- b dy1 y1" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
- <pos x="r" y="y1" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <arcTo wR="w" hR="y1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="w" hR="y1" stAng="0" swAng="cd4" />
- <close />
- </path>
- <path fill="none">
-
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <arcTo wR="w" hR="y1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="w" hR="y1" stAng="0" swAng="cd4" />
- </path>
- </pathLst>
-
- </rightBracket>
- <round1Rect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="*/ ss a 100000" />
- <gd name="x1" fmla="+- r 0 dx1" />
- <gd name="idx" fmla="*/ dx1 29289 100000" />
- <gd name="ir" fmla="+- r 0 idx" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <arcTo wR="dx1" hR="dx1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </round1Rect>
- <round2DiagRect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16667" />
- <gd name="adj2" fmla="val 0" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="x1" fmla="*/ ss a1 100000" />
- <gd name="y1" fmla="+- b 0 x1" />
- <gd name="a" fmla="*/ ss a2 100000" />
- <gd name="x2" fmla="+- r 0 a" />
- <gd name="y2" fmla="+- b 0 a" />
- <gd name="dx1" fmla="*/ x1 29289 100000" />
- <gd name="dx2" fmla="*/ a 29289 100000" />
- <gd name="d" fmla="+- dx1 0 dx2" />
- <gd name="dx" fmla="?: d dx1 dx2" />
- <gd name="ir" fmla="+- r 0 dx" />
- <gd name="ib" fmla="+- b 0 dx" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="dx" t="dx" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <arcTo wR="a" hR="a" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="a" y="b" />
- </lnTo>
- <arcTo wR="a" hR="a" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="x1" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </round2DiagRect>
- <round2SameRect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16667" />
- <gd name="adj2" fmla="val 0" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="a2" fmla="pin 0 adj2 50000" />
-
- <gd name="tx1" fmla="*/ ss a1 100000" />
- <gd name="tx2" fmla="+- r 0 tx1" />
-
- <gd name="bx1" fmla="*/ ss a2 100000" />
- <gd name="bx2" fmla="+- r 0 bx1" />
- <gd name="by1" fmla="+- b 0 bx1" />
- <gd name="d" fmla="+- tx1 0 bx1" />
- <gd name="tdx" fmla="*/ tx1 29289 100000" />
- <gd name="bdx" fmla="*/ bx1 29289 100000" />
- <gd name="il" fmla="?: d tdx bdx" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 bdx" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="50000">
- <pos x="tx2" y="t" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="bx1" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="tdx" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="tx1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="tx2" y="t" />
- </lnTo>
- <arcTo wR="tx1" hR="tx1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="by1" />
- </lnTo>
- <arcTo wR="bx1" hR="bx1" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="bx1" y="b" />
- </lnTo>
- <arcTo wR="bx1" hR="bx1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="tx1" />
- </lnTo>
- <arcTo wR="tx1" hR="tx1" stAng="cd2" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </round2SameRect>
- <roundRect>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 16667" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="x1" fmla="*/ ss a 100000" />
- <gd name="x2" fmla="+- r 0 x1" />
- <gd name="y2" fmla="+- b 0 x1" />
- <gd name="il" fmla="*/ x1 29289 100000" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="x1" />
- </moveTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
- </roundRect>
- <rtTriangle>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="it" fmla="*/ h 7 12" />
- <gd name="ir" fmla="*/ w 7 12" />
- <gd name="ib" fmla="*/ h 11 12" />
- </gdLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="r" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="hc" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="wd12" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="l" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </rtTriangle>
- <smileyFace>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 4653" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin -4653 adj 4653" />
- <gd name="x1" fmla="*/ w 4969 21699" />
-
- <gd name="x2" fmla="*/ w 6215 21600" />
-
- <gd name="x3" fmla="*/ w 13135 21600" />
-
- <gd name="x4" fmla="*/ w 16640 21600" />
-
- <gd name="y1" fmla="*/ h 7570 21600" />
-
- <gd name="y3" fmla="*/ h 16515 21600" />
-
- <gd name="dy2" fmla="*/ h a 100000" />
-
- <gd name="y2" fmla="+- y3 0 dy2" />
-
- <gd name="y4" fmla="+- y3 dy2 0" />
-
- <gd name="dy3" fmla="*/ h a 50000" />
-
- <gd name="y5" fmla="+- y4 dy3 0" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- <gd name="wR" fmla="*/ w 1125 21600" />
- <gd name="hR" fmla="*/ h 1125 21600" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="-4653" maxY="4653">
- <pos x="hc" y="y4" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="21600000" />
- <close />
- </path>
- <path fill="darkenLess" extrusionOk="false">
-
- <moveTo>
- <pt x="x2" y="y1" />
- </moveTo>
- <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
- <moveTo>
- <pt x="x3" y="y1" />
- </moveTo>
- <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="x1" y="y2" />
- </moveTo>
- <quadBezTo>
- <pt x="hc" y="y5" />
- <pt x="x4" y="y2" />
- </quadBezTo>
- </path>
- <path fill="none">
-
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="21600000" />
- <close />
- </path>
- </pathLst>
-
- </smileyFace>
- <snip1Rect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="*/ ss a 100000" />
- <gd name="x1" fmla="+- r 0 dx1" />
- <gd name="it" fmla="*/ dx1 1 2" />
- <gd name="ir" fmla="+/ x1 r 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="dx1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </snip1Rect>
- <snip2DiagRect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 0" />
- <gd name="adj2" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="lx1" fmla="*/ ss a1 100000" />
- <gd name="lx2" fmla="+- r 0 lx1" />
- <gd name="ly1" fmla="+- b 0 lx1" />
- <gd name="rx1" fmla="*/ ss a2 100000" />
- <gd name="rx2" fmla="+- r 0 rx1" />
- <gd name="ry1" fmla="+- b 0 rx1" />
- <gd name="d" fmla="+- lx1 0 rx1" />
- <gd name="dx" fmla="?: d lx1 rx1" />
- <gd name="il" fmla="*/ dx 1 2" />
-
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="50000">
- <pos x="lx1" y="t" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="rx2" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="lx1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="rx2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="rx1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="ly1" />
- </lnTo>
- <lnTo>
- <pt x="lx2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="rx1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="ry1" />
- </lnTo>
- <lnTo>
- <pt x="l" y="lx1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </snip2DiagRect>
- <snip2SameRect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16667" />
- <gd name="adj2" fmla="val 0" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="tx1" fmla="*/ ss a1 100000" />
- <gd name="tx2" fmla="+- r 0 tx1" />
- <gd name="bx1" fmla="*/ ss a2 100000" />
- <gd name="bx2" fmla="+- r 0 bx1" />
- <gd name="by1" fmla="+- b 0 bx1" />
- <gd name="d" fmla="+- tx1 0 bx1" />
- <gd name="dx" fmla="?: d tx1 bx1" />
- <gd name="il" fmla="*/ dx 1 2" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="it" fmla="*/ tx1 1 2" />
- <gd name="ib" fmla="+/ by1 b 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="50000">
- <pos x="tx2" y="t" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="bx1" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="tx1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="tx2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="tx1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="by1" />
- </lnTo>
- <lnTo>
- <pt x="bx2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="bx1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="by1" />
- </lnTo>
- <lnTo>
- <pt x="l" y="tx1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </snip2SameRect>
- <snipRoundRect>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 16667" />
- <gd name="adj2" fmla="val 16667" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 50000" />
- <gd name="a2" fmla="pin 0 adj2 50000" />
- <gd name="x1" fmla="*/ ss a1 100000" />
- <gd name="dx2" fmla="*/ ss a2 100000" />
- <gd name="x2" fmla="+- r 0 dx2" />
- <gd name="il" fmla="*/ x1 29289 100000" />
-
- <gd name="ir" fmla="+/ x2 r 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="50000">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="50000">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="il" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="dx2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="x1" />
- </lnTo>
- <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </snipRoundRect>
- <squareTabs>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="md" fmla="mod w h 0" />
- <gd name="dx" fmla="*/ 1 md 20" />
-
- <gd name="y1" fmla="+- 0 b dx" />
-
- <gd name="x1" fmla="+- 0 r dx" />
-
- </gdLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd2">
- <pos x="l" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="dx" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="dx" y="dx" />
- </cxn>
- <cxn ang="cd2">
- <pos x="dx" y="x1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="dx" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="dx" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="t" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="dx" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y1" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x1" y="dx" />
- </cxn>
- <cxn ang="0">
- <pos x="x1" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="dx" y="t" />
- </lnTo>
- <lnTo>
- <pt x="dx" y="dx" />
- </lnTo>
- <lnTo>
- <pt x="l" y="dx" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="dx" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="dx" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x1" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="dx" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="dx" />
- </lnTo>
- <close />
- </path>
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </squareTabs>
- <star10>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 42533" />
- <gd name="hf" fmla="val 105146" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="swd2" fmla="*/ wd2 hf 100000" />
- <gd name="dx1" fmla="*/ swd2 95106 100000" />
- <gd name="dx2" fmla="*/ swd2 58779 100000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="dy1" fmla="*/ hd2 80902 100000" />
- <gd name="dy2" fmla="*/ hd2 30902 100000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc dy2 0" />
- <gd name="y4" fmla="+- vc dy1 0" />
- <gd name="iwd2" fmla="*/ swd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx1" fmla="*/ iwd2 80902 100000" />
- <gd name="sdx2" fmla="*/ iwd2 30902 100000" />
- <gd name="sdy1" fmla="*/ ihd2 95106 100000" />
- <gd name="sdy2" fmla="*/ ihd2 58779 100000" />
- <gd name="sx1" fmla="+- hc 0 iwd2" />
- <gd name="sx2" fmla="+- hc 0 sdx1" />
- <gd name="sx3" fmla="+- hc 0 sdx2" />
- <gd name="sx4" fmla="+- hc sdx2 0" />
- <gd name="sx5" fmla="+- hc sdx1 0" />
- <gd name="sx6" fmla="+- hc iwd2 0" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc 0 sdy2" />
- <gd name="sy3" fmla="+- vc sdy2 0" />
- <gd name="sy4" fmla="+- vc sdy1 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="sx2" t="sy2" r="sx5" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="sx2" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="vc" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star10>
- <star12>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 37500" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="cos wd2 1800000" />
-
- <gd name="dy1" fmla="sin hd2 3600000" />
-
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x3" fmla="*/ w 3 4" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y3" fmla="*/ h 3 4" />
- <gd name="y4" fmla="+- vc dy1 0" />
- <gd name="iwd2" fmla="*/ wd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx1" fmla="cos iwd2 900000" />
- <gd name="sdx2" fmla="cos iwd2 2700000" />
- <gd name="sdx3" fmla="cos iwd2 4500000" />
- <gd name="sdy1" fmla="sin ihd2 4500000" />
- <gd name="sdy2" fmla="sin ihd2 2700000" />
- <gd name="sdy3" fmla="sin ihd2 900000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc 0 sdx3" />
- <gd name="sx4" fmla="+- hc sdx3 0" />
- <gd name="sx5" fmla="+- hc sdx2 0" />
- <gd name="sx6" fmla="+- hc sdx1 0" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc 0 sdy2" />
- <gd name="sy3" fmla="+- vc 0 sdy3" />
- <gd name="sy4" fmla="+- vc sdy3 0" />
- <gd name="sy5" fmla="+- vc sdy2 0" />
- <gd name="sy6" fmla="+- vc sdy1 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x4" y="hd4" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="wd4" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="hd4" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="wd4" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="sx2" t="sy2" r="sx5" b="sy5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="hd4" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="wd4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="hd4" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="wd4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy4" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star12>
- <star16>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 37500" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="*/ wd2 92388 100000" />
- <gd name="dx2" fmla="*/ wd2 70711 100000" />
- <gd name="dx3" fmla="*/ wd2 38268 100000" />
- <gd name="dy1" fmla="*/ hd2 92388 100000" />
- <gd name="dy2" fmla="*/ hd2 70711 100000" />
- <gd name="dy3" fmla="*/ hd2 38268 100000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc dx3 0" />
- <gd name="x5" fmla="+- hc dx2 0" />
- <gd name="x6" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc 0 dy3" />
- <gd name="y4" fmla="+- vc dy3 0" />
- <gd name="y5" fmla="+- vc dy2 0" />
- <gd name="y6" fmla="+- vc dy1 0" />
- <gd name="iwd2" fmla="*/ wd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx1" fmla="*/ iwd2 98079 100000" />
- <gd name="sdx2" fmla="*/ iwd2 83147 100000" />
- <gd name="sdx3" fmla="*/ iwd2 55557 100000" />
- <gd name="sdx4" fmla="*/ iwd2 19509 100000" />
- <gd name="sdy1" fmla="*/ ihd2 98079 100000" />
- <gd name="sdy2" fmla="*/ ihd2 83147 100000" />
- <gd name="sdy3" fmla="*/ ihd2 55557 100000" />
- <gd name="sdy4" fmla="*/ ihd2 19509 100000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc 0 sdx3" />
- <gd name="sx4" fmla="+- hc 0 sdx4" />
- <gd name="sx5" fmla="+- hc sdx4 0" />
- <gd name="sx6" fmla="+- hc sdx3 0" />
- <gd name="sx7" fmla="+- hc sdx2 0" />
- <gd name="sx8" fmla="+- hc sdx1 0" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc 0 sdy2" />
- <gd name="sy3" fmla="+- vc 0 sdy3" />
- <gd name="sy4" fmla="+- vc 0 sdy4" />
- <gd name="sy5" fmla="+- vc sdy4 0" />
- <gd name="sy6" fmla="+- vc sdy3 0" />
- <gd name="sy7" fmla="+- vc sdy2 0" />
- <gd name="sy8" fmla="+- vc sdy1 0" />
- <gd name="idx" fmla="cos iwd2 2700000" />
- <gd name="idy" fmla="sin ihd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="ib" fmla="+- vc idy 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x5" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="y3" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="y4" />
- </cxn>
- <cxn ang="0">
- <pos x="x5" y="y5" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x4" y="y6" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y6" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x2" y="y5" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y4" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x3" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x4" y="y1" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx7" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx8" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="sx8" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx7" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy7" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy8" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy8" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy7" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy5" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </star16>
- <star24>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 37500" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="cos wd2 900000" />
- <gd name="dx2" fmla="cos wd2 1800000" />
- <gd name="dx3" fmla="cos wd2 2700000" />
- <gd name="dx4" fmla="val wd4" />
- <gd name="dx5" fmla="cos wd2 4500000" />
- <gd name="dy1" fmla="sin hd2 4500000" />
- <gd name="dy2" fmla="sin hd2 3600000" />
- <gd name="dy3" fmla="sin hd2 2700000" />
- <gd name="dy4" fmla="val hd4" />
- <gd name="dy5" fmla="sin hd2 900000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc 0 dx4" />
- <gd name="x5" fmla="+- hc 0 dx5" />
- <gd name="x6" fmla="+- hc dx5 0" />
- <gd name="x7" fmla="+- hc dx4 0" />
- <gd name="x8" fmla="+- hc dx3 0" />
- <gd name="x9" fmla="+- hc dx2 0" />
- <gd name="x10" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc 0 dy3" />
- <gd name="y4" fmla="+- vc 0 dy4" />
- <gd name="y5" fmla="+- vc 0 dy5" />
- <gd name="y6" fmla="+- vc dy5 0" />
- <gd name="y7" fmla="+- vc dy4 0" />
- <gd name="y8" fmla="+- vc dy3 0" />
- <gd name="y9" fmla="+- vc dy2 0" />
- <gd name="y10" fmla="+- vc dy1 0" />
- <gd name="iwd2" fmla="*/ wd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx1" fmla="*/ iwd2 99144 100000" />
- <gd name="sdx2" fmla="*/ iwd2 92388 100000" />
- <gd name="sdx3" fmla="*/ iwd2 79335 100000" />
- <gd name="sdx4" fmla="*/ iwd2 60876 100000" />
- <gd name="sdx5" fmla="*/ iwd2 38268 100000" />
- <gd name="sdx6" fmla="*/ iwd2 13053 100000" />
- <gd name="sdy1" fmla="*/ ihd2 99144 100000" />
- <gd name="sdy2" fmla="*/ ihd2 92388 100000" />
- <gd name="sdy3" fmla="*/ ihd2 79335 100000" />
- <gd name="sdy4" fmla="*/ ihd2 60876 100000" />
- <gd name="sdy5" fmla="*/ ihd2 38268 100000" />
- <gd name="sdy6" fmla="*/ ihd2 13053 100000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc 0 sdx3" />
- <gd name="sx4" fmla="+- hc 0 sdx4" />
- <gd name="sx5" fmla="+- hc 0 sdx5" />
- <gd name="sx6" fmla="+- hc 0 sdx6" />
- <gd name="sx7" fmla="+- hc sdx6 0" />
- <gd name="sx8" fmla="+- hc sdx5 0" />
- <gd name="sx9" fmla="+- hc sdx4 0" />
- <gd name="sx10" fmla="+- hc sdx3 0" />
- <gd name="sx11" fmla="+- hc sdx2 0" />
- <gd name="sx12" fmla="+- hc sdx1 0" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc 0 sdy2" />
- <gd name="sy3" fmla="+- vc 0 sdy3" />
- <gd name="sy4" fmla="+- vc 0 sdy4" />
- <gd name="sy5" fmla="+- vc 0 sdy5" />
- <gd name="sy6" fmla="+- vc 0 sdy6" />
- <gd name="sy7" fmla="+- vc sdy6 0" />
- <gd name="sy8" fmla="+- vc sdy5 0" />
- <gd name="sy9" fmla="+- vc sdy4 0" />
- <gd name="sy10" fmla="+- vc sdy3 0" />
- <gd name="sy11" fmla="+- vc sdy2 0" />
- <gd name="sy12" fmla="+- vc sdy1 0" />
- <gd name="idx" fmla="cos iwd2 2700000" />
- <gd name="idy" fmla="sin ihd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="ib" fmla="+- vc idy 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="ssd2">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx7" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx8" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx9" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx10" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx11" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="sx12" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="sx12" y="sy7" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="sx11" y="sy8" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="sx10" y="sy9" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="sx9" y="sy10" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y9" />
- </lnTo>
- <lnTo>
- <pt x="sx8" y="sy11" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y10" />
- </lnTo>
- <lnTo>
- <pt x="sx7" y="sy12" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy12" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y10" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy11" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y9" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy10" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy9" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy8" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy7" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star24>
- <star32>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 37500" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="*/ wd2 98079 100000" />
- <gd name="dx2" fmla="*/ wd2 92388 100000" />
- <gd name="dx3" fmla="*/ wd2 83147 100000" />
- <gd name="dx4" fmla="cos wd2 2700000" />
- <gd name="dx5" fmla="*/ wd2 55557 100000" />
- <gd name="dx6" fmla="*/ wd2 38268 100000" />
- <gd name="dx7" fmla="*/ wd2 19509 100000" />
- <gd name="dy1" fmla="*/ hd2 98079 100000" />
- <gd name="dy2" fmla="*/ hd2 92388 100000" />
- <gd name="dy3" fmla="*/ hd2 83147 100000" />
- <gd name="dy4" fmla="sin hd2 2700000" />
- <gd name="dy5" fmla="*/ hd2 55557 100000" />
- <gd name="dy6" fmla="*/ hd2 38268 100000" />
- <gd name="dy7" fmla="*/ hd2 19509 100000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc 0 dx4" />
- <gd name="x5" fmla="+- hc 0 dx5" />
- <gd name="x6" fmla="+- hc 0 dx6" />
- <gd name="x7" fmla="+- hc 0 dx7" />
- <gd name="x8" fmla="+- hc dx7 0" />
- <gd name="x9" fmla="+- hc dx6 0" />
- <gd name="x10" fmla="+- hc dx5 0" />
- <gd name="x11" fmla="+- hc dx4 0" />
- <gd name="x12" fmla="+- hc dx3 0" />
- <gd name="x13" fmla="+- hc dx2 0" />
- <gd name="x14" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc 0 dy2" />
- <gd name="y3" fmla="+- vc 0 dy3" />
- <gd name="y4" fmla="+- vc 0 dy4" />
- <gd name="y5" fmla="+- vc 0 dy5" />
- <gd name="y6" fmla="+- vc 0 dy6" />
- <gd name="y7" fmla="+- vc 0 dy7" />
- <gd name="y8" fmla="+- vc dy7 0" />
- <gd name="y9" fmla="+- vc dy6 0" />
- <gd name="y10" fmla="+- vc dy5 0" />
- <gd name="y11" fmla="+- vc dy4 0" />
- <gd name="y12" fmla="+- vc dy3 0" />
- <gd name="y13" fmla="+- vc dy2 0" />
- <gd name="y14" fmla="+- vc dy1 0" />
- <gd name="iwd2" fmla="*/ wd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx1" fmla="*/ iwd2 99518 100000" />
- <gd name="sdx2" fmla="*/ iwd2 95694 100000" />
- <gd name="sdx3" fmla="*/ iwd2 88192 100000" />
- <gd name="sdx4" fmla="*/ iwd2 77301 100000" />
- <gd name="sdx5" fmla="*/ iwd2 63439 100000" />
- <gd name="sdx6" fmla="*/ iwd2 47140 100000" />
- <gd name="sdx7" fmla="*/ iwd2 29028 100000" />
- <gd name="sdx8" fmla="*/ iwd2 9802 100000" />
- <gd name="sdy1" fmla="*/ ihd2 99518 100000" />
- <gd name="sdy2" fmla="*/ ihd2 95694 100000" />
- <gd name="sdy3" fmla="*/ ihd2 88192 100000" />
- <gd name="sdy4" fmla="*/ ihd2 77301 100000" />
- <gd name="sdy5" fmla="*/ ihd2 63439 100000" />
- <gd name="sdy6" fmla="*/ ihd2 47140 100000" />
- <gd name="sdy7" fmla="*/ ihd2 29028 100000" />
- <gd name="sdy8" fmla="*/ ihd2 9802 100000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc 0 sdx3" />
- <gd name="sx4" fmla="+- hc 0 sdx4" />
- <gd name="sx5" fmla="+- hc 0 sdx5" />
- <gd name="sx6" fmla="+- hc 0 sdx6" />
- <gd name="sx7" fmla="+- hc 0 sdx7" />
- <gd name="sx8" fmla="+- hc 0 sdx8" />
- <gd name="sx9" fmla="+- hc sdx8 0" />
- <gd name="sx10" fmla="+- hc sdx7 0" />
- <gd name="sx11" fmla="+- hc sdx6 0" />
- <gd name="sx12" fmla="+- hc sdx5 0" />
- <gd name="sx13" fmla="+- hc sdx4 0" />
- <gd name="sx14" fmla="+- hc sdx3 0" />
- <gd name="sx15" fmla="+- hc sdx2 0" />
- <gd name="sx16" fmla="+- hc sdx1 0" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc 0 sdy2" />
- <gd name="sy3" fmla="+- vc 0 sdy3" />
- <gd name="sy4" fmla="+- vc 0 sdy4" />
- <gd name="sy5" fmla="+- vc 0 sdy5" />
- <gd name="sy6" fmla="+- vc 0 sdy6" />
- <gd name="sy7" fmla="+- vc 0 sdy7" />
- <gd name="sy8" fmla="+- vc 0 sdy8" />
- <gd name="sy9" fmla="+- vc sdy8 0" />
- <gd name="sy10" fmla="+- vc sdy7 0" />
- <gd name="sy11" fmla="+- vc sdy6 0" />
- <gd name="sy12" fmla="+- vc sdy5 0" />
- <gd name="sy13" fmla="+- vc sdy4 0" />
- <gd name="sy14" fmla="+- vc sdy3 0" />
- <gd name="sy15" fmla="+- vc sdy2 0" />
- <gd name="sy16" fmla="+- vc sdy1 0" />
- <gd name="idx" fmla="cos iwd2 2700000" />
- <gd name="idy" fmla="sin ihd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="ib" fmla="+- vc idy 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="ssd2">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy8" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy7" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx7" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx8" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx9" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx10" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx11" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx12" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x11" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="sx13" y="sy5" />
- </lnTo>
- <lnTo>
- <pt x="x12" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="sx14" y="sy6" />
- </lnTo>
- <lnTo>
- <pt x="x13" y="y6" />
- </lnTo>
- <lnTo>
- <pt x="sx15" y="sy7" />
- </lnTo>
- <lnTo>
- <pt x="x14" y="y7" />
- </lnTo>
- <lnTo>
- <pt x="sx16" y="sy8" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="sx16" y="sy9" />
- </lnTo>
- <lnTo>
- <pt x="x14" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="sx15" y="sy10" />
- </lnTo>
- <lnTo>
- <pt x="x13" y="y9" />
- </lnTo>
- <lnTo>
- <pt x="sx14" y="sy11" />
- </lnTo>
- <lnTo>
- <pt x="x12" y="y10" />
- </lnTo>
- <lnTo>
- <pt x="sx13" y="sy12" />
- </lnTo>
- <lnTo>
- <pt x="x11" y="y11" />
- </lnTo>
- <lnTo>
- <pt x="sx12" y="sy13" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y12" />
- </lnTo>
- <lnTo>
- <pt x="sx11" y="sy14" />
- </lnTo>
- <lnTo>
- <pt x="x9" y="y13" />
- </lnTo>
- <lnTo>
- <pt x="sx10" y="sy15" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y14" />
- </lnTo>
- <lnTo>
- <pt x="sx9" y="sy16" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx8" y="sy16" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y14" />
- </lnTo>
- <lnTo>
- <pt x="sx7" y="sy15" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y13" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy14" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y12" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy13" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y11" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy12" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y10" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy11" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y9" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy10" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y8" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy9" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star32>
- <star4>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 12500" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="iwd2" fmla="*/ wd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx" fmla="cos iwd2 2700000" />
- <gd name="sdy" fmla="sin ihd2 2700000" />
- <gd name="sx1" fmla="+- hc 0 sdx" />
- <gd name="sx2" fmla="+- hc sdx 0" />
- <gd name="sy1" fmla="+- vc 0 sdy" />
- <gd name="sy2" fmla="+- vc sdy 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="sx1" t="sy1" r="sx2" b="sy2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star4>
- <star5>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 19098" />
- <gd name="hf" fmla="val 105146" />
- <gd name="vf" fmla="val 110557" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="swd2" fmla="*/ wd2 hf 100000" />
- <gd name="shd2" fmla="*/ hd2 vf 100000" />
- <gd name="svc" fmla="*/ vc vf 100000" />
- <gd name="dx1" fmla="cos swd2 1080000" />
- <gd name="dx2" fmla="cos swd2 18360000" />
- <gd name="dy1" fmla="sin shd2 1080000" />
- <gd name="dy2" fmla="sin shd2 18360000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- svc 0 dy1" />
- <gd name="y2" fmla="+- svc 0 dy2" />
- <gd name="iwd2" fmla="*/ swd2 a 50000" />
- <gd name="ihd2" fmla="*/ shd2 a 50000" />
- <gd name="sdx1" fmla="cos iwd2 20520000" />
- <gd name="sdx2" fmla="cos iwd2 3240000" />
- <gd name="sdy1" fmla="sin ihd2 3240000" />
- <gd name="sdy2" fmla="sin ihd2 20520000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc sdx2 0" />
- <gd name="sx4" fmla="+- hc sdx1 0" />
- <gd name="sy1" fmla="+- svc 0 sdy1" />
- <gd name="sy2" fmla="+- svc 0 sdy2" />
- <gd name="sy3" fmla="+- svc ihd2 0" />
- <gd name="yAdj" fmla="+- svc 0 ihd2" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y2" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="y1" />
- </cxn>
- </cxnLst>
- <rect l="sx1" t="sy1" r="sx4" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="sx2" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </star5>
- <star6>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 28868" />
- <gd name="hf" fmla="val 115470" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="swd2" fmla="*/ wd2 hf 100000" />
- <gd name="dx1" fmla="cos swd2 1800000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc dx1 0" />
- <gd name="y2" fmla="+- vc hd4 0" />
- <gd name="iwd2" fmla="*/ swd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx2" fmla="*/ iwd2 1 2" />
- <gd name="sx1" fmla="+- hc 0 iwd2" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc sdx2 0" />
- <gd name="sx4" fmla="+- hc iwd2 0" />
- <gd name="sdy1" fmla="sin ihd2 3600000" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc sdy1 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x2" y="hd4" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="hd4" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="sx1" t="sy1" r="sx4" b="sy2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="hd4" />
- </moveTo>
- <lnTo>
- <pt x="sx2" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="hd4" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="vc" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star6>
- <star7>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 34601" />
- <gd name="hf" fmla="val 102572" />
- <gd name="vf" fmla="val 105210" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="swd2" fmla="*/ wd2 hf 100000" />
- <gd name="shd2" fmla="*/ hd2 vf 100000" />
- <gd name="svc" fmla="*/ vc vf 100000" />
- <gd name="dx1" fmla="*/ swd2 97493 100000" />
- <gd name="dx2" fmla="*/ swd2 78183 100000" />
- <gd name="dx3" fmla="*/ swd2 43388 100000" />
- <gd name="dy1" fmla="*/ shd2 62349 100000" />
- <gd name="dy2" fmla="*/ shd2 22252 100000" />
- <gd name="dy3" fmla="*/ shd2 90097 100000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc 0 dx3" />
- <gd name="x4" fmla="+- hc dx3 0" />
- <gd name="x5" fmla="+- hc dx2 0" />
- <gd name="x6" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- svc 0 dy1" />
- <gd name="y2" fmla="+- svc dy2 0" />
- <gd name="y3" fmla="+- svc dy3 0" />
- <gd name="iwd2" fmla="*/ swd2 a 50000" />
- <gd name="ihd2" fmla="*/ shd2 a 50000" />
- <gd name="sdx1" fmla="*/ iwd2 97493 100000" />
- <gd name="sdx2" fmla="*/ iwd2 78183 100000" />
- <gd name="sdx3" fmla="*/ iwd2 43388 100000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc 0 sdx3" />
- <gd name="sx4" fmla="+- hc sdx3 0" />
- <gd name="sx5" fmla="+- hc sdx2 0" />
- <gd name="sx6" fmla="+- hc sdx1 0" />
- <gd name="sdy1" fmla="*/ ihd2 90097 100000" />
- <gd name="sdy2" fmla="*/ ihd2 22252 100000" />
- <gd name="sdy3" fmla="*/ ihd2 62349 100000" />
- <gd name="sy1" fmla="+- svc 0 sdy1" />
- <gd name="sy2" fmla="+- svc 0 sdy2" />
- <gd name="sy3" fmla="+- svc sdy3 0" />
- <gd name="sy4" fmla="+- svc ihd2 0" />
- <gd name="yAdj" fmla="+- svc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="x5" y="y1" />
- </cxn>
- <cxn ang="0">
- <pos x="x6" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x4" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x3" y="y3" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x2" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- </cxnLst>
-
- <rect l="sx2" t="sy1" r="sx5" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x1" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx6" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx5" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star7>
- <star8>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 37500" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 50000" />
- <gd name="dx1" fmla="cos wd2 2700000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc dx1 0" />
- <gd name="dy1" fmla="sin hd2 2700000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc dy1 0" />
- <gd name="iwd2" fmla="*/ wd2 a 50000" />
- <gd name="ihd2" fmla="*/ hd2 a 50000" />
- <gd name="sdx1" fmla="*/ iwd2 92388 100000" />
- <gd name="sdx2" fmla="*/ iwd2 38268 100000" />
- <gd name="sdy1" fmla="*/ ihd2 92388 100000" />
- <gd name="sdy2" fmla="*/ ihd2 38268 100000" />
- <gd name="sx1" fmla="+- hc 0 sdx1" />
- <gd name="sx2" fmla="+- hc 0 sdx2" />
- <gd name="sx3" fmla="+- hc sdx2 0" />
- <gd name="sx4" fmla="+- hc sdx1 0" />
- <gd name="sy1" fmla="+- vc 0 sdy1" />
- <gd name="sy2" fmla="+- vc 0 sdy2" />
- <gd name="sy3" fmla="+- vc sdy2 0" />
- <gd name="sy4" fmla="+- vc sdy1 0" />
- <gd name="yAdj" fmla="+- vc 0 ihd2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="50000">
- <pos x="hc" y="yAdj" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x1" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="y1" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x2" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="sx1" t="sy1" r="sx4" b="sy4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="sx1" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy1" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="sx4" y="sy3" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx3" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="sx2" y="sy4" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="sx1" y="sy3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </star8>
- <straightConnector1>
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path fill="none">
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- </path>
- </pathLst>
- </straightConnector1>
- <stripedRightArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
-
- <gd name="adj2" fmla="val 50000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 84375 w ss" />
-
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="x4" fmla="*/ ss 5 32" />
- <gd name="dx5" fmla="*/ ss a2 100000" />
- <gd name="x5" fmla="+- r 0 dx5" />
- <gd name="dy1" fmla="*/ h a1 200000" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="y2" fmla="+- vc dy1 0" />
- <gd name="dx6" fmla="*/ dy1 dx5 hd2" />
- <gd name="x6" fmla="+- r 0 dx6" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="100000">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x5" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x5" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x5" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x4" t="y1" r="x6" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="ssd32" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="ssd32" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="ssd16" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="ssd8" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="ssd8" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="ssd16" y="y2" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x4" y="y1" />
- </moveTo>
- <lnTo>
- <pt x="x5" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="vc" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x5" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </stripedRightArrow>
- <sun>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 12500 adj 46875" />
- <gd name="g0" fmla="+- 50000 0 a" />
- <gd name="g1" fmla="*/ g0 30274 32768" />
- <gd name="g2" fmla="*/ g0 12540 32768" />
- <gd name="g3" fmla="+- g1 50000 0" />
- <gd name="g4" fmla="+- g2 50000 0" />
- <gd name="g5" fmla="+- 50000 0 g1" />
- <gd name="g6" fmla="+- 50000 0 g2" />
- <gd name="g7" fmla="*/ g0 23170 32768" />
- <gd name="g8" fmla="+- 50000 g7 0" />
- <gd name="g9" fmla="+- 50000 0 g7" />
- <gd name="g10" fmla="*/ g5 3 4" />
- <gd name="g11" fmla="*/ g6 3 4" />
- <gd name="g12" fmla="+- g10 3662 0" />
- <gd name="g13" fmla="+- g11 3662 0" />
- <gd name="g14" fmla="+- g11 12500 0" />
- <gd name="g15" fmla="+- 100000 0 g10" />
- <gd name="g16" fmla="+- 100000 0 g12" />
- <gd name="g17" fmla="+- 100000 0 g13" />
- <gd name="g18" fmla="+- 100000 0 g14" />
- <gd name="ox1" fmla="*/ w 18436 21600" />
- <gd name="oy1" fmla="*/ h 3163 21600" />
- <gd name="ox2" fmla="*/ w 3163 21600" />
- <gd name="oy2" fmla="*/ h 18436 21600" />
- <gd name="x8" fmla="*/ w g8 100000" />
- <gd name="x9" fmla="*/ w g9 100000" />
- <gd name="x10" fmla="*/ w g10 100000" />
- <gd name="x12" fmla="*/ w g12 100000" />
- <gd name="x13" fmla="*/ w g13 100000" />
- <gd name="x14" fmla="*/ w g14 100000" />
- <gd name="x15" fmla="*/ w g15 100000" />
- <gd name="x16" fmla="*/ w g16 100000" />
- <gd name="x17" fmla="*/ w g17 100000" />
- <gd name="x18" fmla="*/ w g18 100000" />
- <gd name="x19" fmla="*/ w a 100000" />
- <gd name="wR" fmla="*/ w g0 100000" />
- <gd name="hR" fmla="*/ h g0 100000" />
- <gd name="y8" fmla="*/ h g8 100000" />
- <gd name="y9" fmla="*/ h g9 100000" />
- <gd name="y10" fmla="*/ h g10 100000" />
- <gd name="y12" fmla="*/ h g12 100000" />
- <gd name="y13" fmla="*/ h g13 100000" />
- <gd name="y14" fmla="*/ h g14 100000" />
- <gd name="y15" fmla="*/ h g15 100000" />
- <gd name="y16" fmla="*/ h g16 100000" />
- <gd name="y17" fmla="*/ h g17 100000" />
- <gd name="y18" fmla="*/ h g18 100000" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="12500" maxX="46875">
- <pos x="x19" y="vc" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="x9" t="y9" r="x8" b="y8" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="r" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x15" y="y18" />
- </lnTo>
- <lnTo>
- <pt x="x15" y="y14" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="ox1" y="oy1" />
- </moveTo>
- <lnTo>
- <pt x="x16" y="y13" />
- </lnTo>
- <lnTo>
- <pt x="x17" y="y12" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="hc" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x18" y="y10" />
- </lnTo>
- <lnTo>
- <pt x="x14" y="y10" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="ox2" y="oy1" />
- </moveTo>
- <lnTo>
- <pt x="x13" y="y12" />
- </lnTo>
- <lnTo>
- <pt x="x12" y="y13" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <lnTo>
- <pt x="x10" y="y14" />
- </lnTo>
- <lnTo>
- <pt x="x10" y="y18" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="ox2" y="oy2" />
- </moveTo>
- <lnTo>
- <pt x="x12" y="y17" />
- </lnTo>
- <lnTo>
- <pt x="x13" y="y16" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="hc" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x14" y="y15" />
- </lnTo>
- <lnTo>
- <pt x="x18" y="y15" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="ox1" y="oy2" />
- </moveTo>
- <lnTo>
- <pt x="x17" y="y16" />
- </lnTo>
- <lnTo>
- <pt x="x16" y="y17" />
- </lnTo>
- <close />
- <moveTo>
- <pt x="x19" y="vc" />
- </moveTo>
- <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
- <close />
- </path>
- </pathLst>
-
- </sun>
- <swooshArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 16667" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
-
-
- <gd name="a1" fmla="pin 1 adj1 75000" />
-
- <gd name="maxAdj2" fmla="*/ 70000 w ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="ad1" fmla="*/ h a1 100000" />
- <gd name="ad2" fmla="*/ ss a2 100000" />
-
- <gd name="xB" fmla="+- r 0 ad2" />
- <gd name="yB" fmla="+- t ssd8 0" />
-
- <gd name="alfa" fmla="*/ cd4 1 14" />
-
- <gd name="dx0" fmla="tan ssd8 alfa" />
- <gd name="xC" fmla="+- xB 0 dx0" />
-
- <gd name="dx1" fmla="tan ad1 alfa" />
-
- <gd name="yF" fmla="+- yB ad1 0" />
- <gd name="xF" fmla="+- xB dx1 0" />
-
- <gd name="xE" fmla="+- xF dx0 0" />
- <gd name="yE" fmla="+- yF ssd8 0" />
-
- <gd name="dy2" fmla="+- yE 0 t" />
- <gd name="dy22" fmla="*/ dy2 1 2" />
- <gd name="dy3" fmla="*/ h 1 20" />
- <gd name="yD" fmla="+- t dy22 dy3" />
-
-
- <gd name="dy4" fmla="*/ hd6 1 1" />
- <gd name="yP1" fmla="+- hd6 dy4 0" />
- <gd name="xP1" fmla="val wd6" />
-
-
- <gd name="dy5" fmla="*/ hd6 1 2" />
- <gd name="yP2" fmla="+- yF dy5 0" />
- <gd name="xP2" fmla="val wd4" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="1" maxY="75000">
- <pos x="xF" y="yF" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="xB" y="yB" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="xC" y="t" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="yD" />
- </cxn>
- <cxn ang="cd4">
- <pos x="xE" y="yE" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <quadBezTo>
- <pt x="xP1" y="yP1" />
- <pt x="xB" y="yB" />
- </quadBezTo>
- <lnTo>
- <pt x="xC" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="yD" />
- </lnTo>
- <lnTo>
- <pt x="xE" y="yE" />
- </lnTo>
- <lnTo>
- <pt x="xF" y="yF" />
- </lnTo>
- <quadBezTo>
- <pt x="xP2" y="yP2" />
- <pt x="l" y="b" />
- </quadBezTo>
- <close />
- </path>
- </pathLst>
-
- </swooshArrow>
- <teardrop>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 100000" />
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 200000" />
- <gd name="r2" fmla="sqrt 2" />
- <gd name="tw" fmla="*/ wd2 r2 1" />
- <gd name="th" fmla="*/ hd2 r2 1" />
- <gd name="sw" fmla="*/ tw a 100000" />
- <gd name="sh" fmla="*/ th a 100000" />
- <gd name="dx1" fmla="cos sw 2700000" />
- <gd name="dy1" fmla="sin sh 2700000" />
- <gd name="x1" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc 0 dy1" />
- <gd name="x2" fmla="+/ hc x1 2" />
- <gd name="y2" fmla="+/ vc y1 2" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="200000">
- <pos x="x1" y="t" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="x1" y="y1" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="vc" />
- </moveTo>
- <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
- <quadBezTo>
- <pt x="x2" y="t" />
- <pt x="x1" y="y1" />
- </quadBezTo>
- <quadBezTo>
- <pt x="r" y="y2" />
- <pt x="r" y="vc" />
- </quadBezTo>
- <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
- <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
- <close />
- </path>
- </pathLst>
-
- </teardrop>
- <trapezoid>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 25000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj" fmla="*/ 50000 w ss" />
- <gd name="a" fmla="pin 0 adj maxAdj" />
- <gd name="x1" fmla="*/ ss a 200000" />
- <gd name="x2" fmla="*/ ss a 100000" />
- <gd name="x3" fmla="+- r 0 x2" />
- <gd name="x4" fmla="+- r 0 x1" />
- <gd name="il" fmla="*/ wd3 a maxAdj" />
- <gd name="it" fmla="*/ hd3 a maxAdj" />
- <gd name="ir" fmla="+- r 0 il" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x4" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </trapezoid>
- <triangle>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 100000" />
- <gd name="x1" fmla="*/ w a 200000" />
- <gd name="x2" fmla="*/ w a 100000" />
- <gd name="x3" fmla="+- x1 wd2 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj" minX="0" maxX="100000">
- <pos x="x2" y="t" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="x2" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="l" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x2" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="r" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="x3" y="vc" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="vc" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </triangle>
- <upArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 64977" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 w ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ 100000 h ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 ss h" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
- <gd name="dx1" fmla="*/ ss a2 100000" />
-
- <gd name="dx2" fmla="*/ ss a1 200000" />
-
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="*/ ss a3 100000" />
-
- <gd name="dy2" fmla="*/ h a4 100000" />
-
- <gd name="y2" fmla="+- b 0 dy2" />
- <gd name="y3" fmla="+/ y2 b 2" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="x2" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y2" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y2" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="y2" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </upArrowCallout>
- <upDownArrow>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="y2" fmla="*/ ss a2 100000" />
- <gd name="y3" fmla="+- b 0 y2" />
- <gd name="dx1" fmla="*/ w a1 200000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc dx1 0" />
- <gd name="dy1" fmla="*/ x1 y2 wd2" />
- <gd name="y1" fmla="+- y2 0 dy1" />
- <gd name="y4" fmla="+- y3 dy1 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="100000">
- <pos x="x1" y="y3" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y3" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y2" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </upDownArrow>
- <upDownArrow>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 50000" />
- <gd name="adj2" fmla="val 50000" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 h ss" />
- <gd name="a1" fmla="pin 0 adj1 100000" />
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="y2" fmla="*/ ss a2 100000" />
- <gd name="y3" fmla="+- b 0 y2" />
- <gd name="dx1" fmla="*/ w a1 200000" />
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc dx1 0" />
- <gd name="dy1" fmla="*/ x1 y2 wd2" />
- <gd name="y1" fmla="+- y2 0 dy1" />
- <gd name="y4" fmla="+- y3 dy1 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="100000">
- <pos x="x1" y="y3" />
- </ahXY>
- <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y2" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="y3" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y3" />
- </cxn>
- <cxn ang="0">
- <pos x="x2" y="vc" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y2" />
- </cxn>
- </cxnLst>
- <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y2" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </upDownArrow>
- <upDownArrowCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 48123" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="maxAdj2" fmla="*/ 50000 w ss" />
-
- <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
-
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="maxAdj3" fmla="*/ 50000 h ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q2" fmla="*/ a3 ss hd2" />
-
- <gd name="maxAdj4" fmla="+- 100000 0 q2" />
-
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
- <gd name="dx1" fmla="*/ ss a2 100000" />
-
- <gd name="dx2" fmla="*/ ss a1 200000" />
-
- <gd name="x1" fmla="+- hc 0 dx1" />
- <gd name="x2" fmla="+- hc 0 dx2" />
- <gd name="x3" fmla="+- hc dx2 0" />
- <gd name="x4" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="*/ ss a3 100000" />
-
- <gd name="y4" fmla="+- b 0 y1" />
-
- <gd name="dy2" fmla="*/ h a4 200000" />
-
- <gd name="y2" fmla="+- vc 0 dy2" />
-
- <gd name="y3" fmla="+- vc dy2 0" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="x2" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
- <pos x="x1" y="t" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="r" y="y1" />
- </ahXY>
- <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
- <pos x="l" y="y2" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="y2" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="y2" />
- </moveTo>
- <lnTo>
- <pt x="x2" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="t" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="x3" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x4" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="hc" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y3" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </upDownArrowCallout>
- <uturnArrow>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 25000" />
-
- <gd name="adj2" fmla="val 25000" />
-
- <gd name="adj3" fmla="val 25000" />
-
- <gd name="adj4" fmla="val 43750" />
-
- <gd name="adj5" fmla="val 75000" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a2" fmla="pin 0 adj2 25000" />
- <gd name="maxAdj1" fmla="*/ a2 2 1" />
- <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
- <gd name="q2" fmla="*/ a1 ss h" />
-
- <gd name="q3" fmla="+- 100000 0 q2" />
-
- <gd name="maxAdj3" fmla="*/ q3 h ss" />
-
- <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
- <gd name="q1" fmla="+- a3 a1 0" />
- <gd name="minAdj5" fmla="*/ q1 ss h" />
- <gd name="a5" fmla="pin minAdj5 adj5 100000" />
- <gd name="th" fmla="*/ ss a1 100000" />
-
- <gd name="aw2" fmla="*/ ss a2 100000" />
-
- <gd name="th2" fmla="*/ th 1 2" />
- <gd name="dh2" fmla="+- aw2 0 th2" />
-
- <gd name="y5" fmla="*/ h a5 100000" />
-
- <gd name="ah" fmla="*/ ss a3 100000" />
-
- <gd name="y4" fmla="+- y5 0 ah" />
- <gd name="x9" fmla="+- r 0 dh2" />
-
- <gd name="bw" fmla="*/ x9 1 2" />
- <gd name="bs" fmla="min bw y4" />
- <gd name="maxAdj4" fmla="*/ bs 100000 ss" />
- <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
-
-
- <gd name="bd" fmla="*/ ss a4 100000" />
-
-
-
- <gd name="bd3" fmla="+- bd 0 th" />
- <gd name="bd2" fmla="max bd3 0" />
- <gd name="x3" fmla="+- th bd2 0" />
-
- <gd name="x8" fmla="+- r 0 aw2" />
-
- <gd name="x6" fmla="+- x8 0 aw2" />
-
- <gd name="x7" fmla="+- x6 dh2 0" />
-
- <gd name="x4" fmla="+- x9 0 bd" />
-
- <gd name="x5" fmla="+- x7 0 bd2" />
-
- <gd name="cx" fmla="+/ th x7 2" />
-
-
-
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
- <pos x="th" y="b" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="0" maxX="25000">
- <pos x="x6" y="b" />
- </ahXY>
- <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
- <pos x="x6" y="y4" />
- </ahXY>
- <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
- <pos x="bd" y="t" />
- </ahXY>
- <ahXY gdRefY="adj5" minY="minAdj5" maxY="100000">
- <pos x="r" y="y5" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="x6" y="y4" />
- </cxn>
- <cxn ang="cd4">
- <pos x="x8" y="y5" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="y4" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="cx" y="t" />
- </cxn>
- <cxn ang="cd4">
- <pos x="th2" y="b" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="b" />
- </moveTo>
- <lnTo>
- <pt x="l" y="bd" />
- </lnTo>
- <arcTo wR="bd" hR="bd" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x4" y="t" />
- </lnTo>
- <arcTo wR="bd" hR="bd" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="x9" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x8" y="y5" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="y4" />
- </lnTo>
- <lnTo>
- <pt x="x7" y="x3" />
- </lnTo>
- <arcTo wR="bd2" hR="bd2" stAng="0" swAng="-5400000" />
- <lnTo>
- <pt x="x3" y="th" />
- </lnTo>
- <arcTo wR="bd2" hR="bd2" stAng="3cd4" swAng="-5400000" />
- <lnTo>
- <pt x="th" y="b" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </uturnArrow>
- <verticalScroll>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj" fmla="val 12500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a" fmla="pin 0 adj 25000" />
- <gd name="ch" fmla="*/ ss a 100000" />
-
- <gd name="ch2" fmla="*/ ch 1 2" />
-
- <gd name="ch4" fmla="*/ ch 1 4" />
-
-
-
-
-
- <gd name="x3" fmla="+- ch ch2 0" />
-
- <gd name="x4" fmla="+- ch ch 0" />
-
- <gd name="x6" fmla="+- r 0 ch" />
-
- <gd name="x7" fmla="+- r 0 ch2" />
-
- <gd name="x5" fmla="+- x6 0 ch2" />
-
-
-
-
-
- <gd name="y3" fmla="+- b 0 ch" />
-
- <gd name="y4" fmla="+- b 0 ch2" />
-
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj" minY="0" maxY="25000">
- <pos x="l" y="ch" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="0">
- <pos x="ch" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x6" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="ch" t="ch" r="x6" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="ch2" y="b" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="ch2" y="y4" />
- </lnTo>
- <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="-10800000" />
- <lnTo>
- <pt x="ch" y="y3" />
- </lnTo>
- <lnTo>
- <pt x="ch" y="ch2" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x7" y="t" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="x6" y="ch" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y4" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
- <close />
- <moveTo>
- <pt x="x4" y="ch2" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
- <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
- <close />
- </path>
- <path fill="darkenLess" stroke="false" extrusionOk="false">
-
- <moveTo>
- <pt x="x4" y="ch2" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
- <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
- <close />
- <moveTo>
- <pt x="ch" y="y4" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="3cd4" />
- <arcTo wR="ch4" hR="ch4" stAng="3cd4" swAng="cd2" />
- <close />
- </path>
- <path fill="none" extrusionOk="false">
-
- <moveTo>
- <pt x="ch" y="y3" />
- </moveTo>
- <lnTo>
- <pt x="ch" y="ch2" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x7" y="t" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="x6" y="ch" />
- </lnTo>
- <lnTo>
- <pt x="x6" y="y4" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="ch2" y="b" />
- </lnTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="cd2" />
- <close />
- <moveTo>
- <pt x="x3" y="t" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
- <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
- <lnTo>
- <pt x="x4" y="ch2" />
- </lnTo>
- <moveTo>
- <pt x="x6" y="ch" />
- </moveTo>
- <lnTo>
- <pt x="x3" y="ch" />
- </lnTo>
- <moveTo>
- <pt x="ch2" y="y3" />
- </moveTo>
- <arcTo wR="ch4" hR="ch4" stAng="3cd4" swAng="cd2" />
- <lnTo>
- <pt x="ch" y="y4" />
- </lnTo>
- <moveTo>
- <pt x="ch2" y="b" />
- </moveTo>
- <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
- <lnTo>
- <pt x="ch" y="y3" />
- </lnTo>
- </path>
- </pathLst>
-
- </verticalScroll>
- <wave>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val 12500" />
-
- <gd name="adj2" fmla="val 0" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="a1" fmla="pin 0 adj1 20000" />
- <gd name="a2" fmla="pin -10000 adj2 10000" />
- <gd name="y1" fmla="*/ h a1 100000" />
-
- <gd name="dy2" fmla="*/ y1 10 3" />
- <gd name="y2" fmla="+- y1 0 dy2" />
-
- <gd name="y3" fmla="+- y1 dy2 0" />
-
- <gd name="y4" fmla="+- b 0 y1" />
-
- <gd name="y5" fmla="+- y4 0 dy2" />
-
- <gd name="y6" fmla="+- y4 dy2 0" />
-
- <gd name="dx1" fmla="*/ w a2 100000" />
-
- <gd name="of2" fmla="*/ w a2 50000" />
-
- <gd name="x1" fmla="abs dx1" />
-
- <gd name="dx2" fmla="?: of2 0 of2" />
- <gd name="x2" fmla="+- l 0 dx2" />
-
- <gd name="dx5" fmla="?: of2 of2 0" />
- <gd name="x5" fmla="+- r 0 dx5" />
-
- <gd name="dx3" fmla="+/ dx2 x5 3" />
-
- <gd name="x3" fmla="+- x2 dx3 0" />
-
- <gd name="x4" fmla="+/ x3 x5 2" />
-
- <gd name="x6" fmla="+- l dx5 0" />
-
- <gd name="x10" fmla="+- r dx2 0" />
-
- <gd name="x7" fmla="+- x6 dx3 0" />
-
- <gd name="x8" fmla="+/ x7 x10 2" />
-
- <gd name="x9" fmla="+- r 0 x1" />
-
- <gd name="xAdj" fmla="+- hc dx1 0" />
- <gd name="xAdj2" fmla="+- hc 0 dx1" />
- <gd name="il" fmla="max x2 x6" />
- <gd name="ir" fmla="min x5 x10" />
- <gd name="it" fmla="*/ h a1 50000" />
- <gd name="ib" fmla="+- b 0 it" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefY="adj1" minY="0" maxY="20000">
- <pos x="l" y="y1" />
- </ahXY>
- <ahXY gdRefX="adj2" minX="-10000" maxX="10000">
- <pos x="xAdj" y="b" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="cd4">
- <pos x="xAdj2" y="y1" />
- </cxn>
- <cxn ang="cd2">
- <pos x="x1" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="xAdj" y="y4" />
- </cxn>
- <cxn ang="0">
- <pos x="x9" y="vc" />
- </cxn>
- </cxnLst>
-
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="x2" y="y1" />
- </moveTo>
- <cubicBezTo>
- <pt x="x3" y="y2" />
- <pt x="x4" y="y3" />
- <pt x="x5" y="y1" />
- </cubicBezTo>
- <lnTo>
- <pt x="x10" y="y4" />
- </lnTo>
- <cubicBezTo>
- <pt x="x8" y="y6" />
- <pt x="x7" y="y5" />
- <pt x="x6" y="y4" />
- </cubicBezTo>
- <close />
- </path>
- </pathLst>
-
- </wave>
- <wedgeEllipseCallout>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val -20833" />
- <gd name="adj2" fmla="val 62500" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dxPos" fmla="*/ w adj1 100000" />
- <gd name="dyPos" fmla="*/ h adj2 100000" />
- <gd name="xPos" fmla="+- hc dxPos 0" />
- <gd name="yPos" fmla="+- vc dyPos 0" />
- <gd name="sdx" fmla="*/ dxPos h 1" />
- <gd name="sdy" fmla="*/ dyPos w 1" />
- <gd name="pang" fmla="at2 sdx sdy" />
- <gd name="stAng" fmla="+- pang 660000 0" />
- <gd name="enAng" fmla="+- pang 0 660000" />
- <gd name="dx1" fmla="cos wd2 stAng" />
- <gd name="dy1" fmla="sin hd2 stAng" />
- <gd name="x1" fmla="+- hc dx1 0" />
- <gd name="y1" fmla="+- vc dy1 0" />
- <gd name="dx2" fmla="cos wd2 enAng" />
- <gd name="dy2" fmla="sin hd2 enAng" />
- <gd name="x2" fmla="+- hc dx2 0" />
- <gd name="y2" fmla="+- vc dy2 0" />
- <gd name="stAng1" fmla="at2 dx1 dy1" />
- <gd name="enAng1" fmla="at2 dx2 dy2" />
- <gd name="swAng1" fmla="+- enAng1 0 stAng1" />
- <gd name="swAng2" fmla="+- swAng1 21600000 0" />
- <gd name="swAng" fmla="?: swAng1 swAng1 swAng2" />
- <gd name="idx" fmla="cos wd2 2700000" />
- <gd name="idy" fmla="sin hd2 2700000" />
- <gd name="il" fmla="+- hc 0 idx" />
- <gd name="ir" fmla="+- hc idx 0" />
- <gd name="it" fmla="+- vc 0 idy" />
- <gd name="ib" fmla="+- vc idy 0" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="xPos" y="yPos" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="il" y="it" />
- </cxn>
- <cxn ang="cd4">
- <pos x="il" y="ib" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="cd4">
- <pos x="ir" y="ib" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="3cd4">
- <pos x="ir" y="it" />
- </cxn>
- <cxn ang="pang">
- <pos x="xPos" y="yPos" />
- </cxn>
- </cxnLst>
- <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="xPos" y="yPos" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="y1" />
- </lnTo>
- <arcTo wR="wd2" hR="hd2" stAng="stAng1" swAng="swAng" />
- <close />
- </path>
- </pathLst>
- </wedgeEllipseCallout>
- <wedgeRectCallout>
-
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val -20833" />
-
- <gd name="adj2" fmla="val 62500" />
-
- </avLst>
-
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dxPos" fmla="*/ w adj1 100000" />
- <gd name="dyPos" fmla="*/ h adj2 100000" />
- <gd name="xPos" fmla="+- hc dxPos 0" />
- <gd name="yPos" fmla="+- vc dyPos 0" />
- <gd name="dx" fmla="+- xPos 0 hc" />
- <gd name="dy" fmla="+- yPos 0 vc" />
- <gd name="dq" fmla="*/ dxPos h w" />
- <gd name="ady" fmla="abs dyPos" />
- <gd name="adq" fmla="abs dq" />
- <gd name="dz" fmla="+- ady 0 adq" />
- <gd name="xg1" fmla="?: dxPos 7 2" />
- <gd name="xg2" fmla="?: dxPos 10 5" />
- <gd name="x1" fmla="*/ w xg1 12" />
- <gd name="x2" fmla="*/ w xg2 12" />
- <gd name="yg1" fmla="?: dyPos 7 2" />
- <gd name="yg2" fmla="?: dyPos 10 5" />
- <gd name="y1" fmla="*/ h yg1 12" />
- <gd name="y2" fmla="*/ h yg2 12" />
- <gd name="t1" fmla="?: dxPos l xPos" />
- <gd name="xl" fmla="?: dz l t1" />
- <gd name="t2" fmla="?: dyPos x1 xPos" />
- <gd name="xt" fmla="?: dz t2 x1" />
- <gd name="t3" fmla="?: dxPos xPos r" />
- <gd name="xr" fmla="?: dz r t3" />
- <gd name="t4" fmla="?: dyPos xPos x1" />
- <gd name="xb" fmla="?: dz t4 x1" />
- <gd name="t5" fmla="?: dxPos y1 yPos" />
- <gd name="yl" fmla="?: dz y1 t5" />
- <gd name="t6" fmla="?: dyPos t yPos" />
- <gd name="yt" fmla="?: dz t6 t" />
- <gd name="t7" fmla="?: dxPos yPos y1" />
- <gd name="yr" fmla="?: dz y1 t7" />
- <gd name="t8" fmla="?: dyPos yPos b" />
- <gd name="yb" fmla="?: dz t8 b" />
- </gdLst>
-
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="xPos" y="yPos" />
- </ahXY>
- </ahLst>
-
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="xPos" y="yPos" />
- </cxn>
- </cxnLst>
-
- <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
-
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="t" />
- </moveTo>
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="xt" y="yt" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="t" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="xr" y="yr" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="b" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="xb" y="yb" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="b" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="xl" y="yl" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
-
- </wedgeRectCallout>
- <wedgeRoundRectCallout>
- <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="adj1" fmla="val -20833" />
- <gd name="adj2" fmla="val 62500" />
- <gd name="adj3" fmla="val 16667" />
- </avLst>
- <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <gd name="dxPos" fmla="*/ w adj1 100000" />
- <gd name="dyPos" fmla="*/ h adj2 100000" />
- <gd name="xPos" fmla="+- hc dxPos 0" />
- <gd name="yPos" fmla="+- vc dyPos 0" />
- <gd name="dq" fmla="*/ dxPos h w" />
- <gd name="ady" fmla="abs dyPos" />
- <gd name="adq" fmla="abs dq" />
- <gd name="dz" fmla="+- ady 0 adq" />
- <gd name="xg1" fmla="?: dxPos 7 2" />
- <gd name="xg2" fmla="?: dxPos 10 5" />
- <gd name="x1" fmla="*/ w xg1 12" />
- <gd name="x2" fmla="*/ w xg2 12" />
- <gd name="yg1" fmla="?: dyPos 7 2" />
- <gd name="yg2" fmla="?: dyPos 10 5" />
- <gd name="y1" fmla="*/ h yg1 12" />
- <gd name="y2" fmla="*/ h yg2 12" />
- <gd name="t1" fmla="?: dxPos l xPos" />
- <gd name="xl" fmla="?: dz l t1" />
- <gd name="t2" fmla="?: dyPos x1 xPos" />
- <gd name="xt" fmla="?: dz t2 x1" />
- <gd name="t3" fmla="?: dxPos xPos r" />
- <gd name="xr" fmla="?: dz r t3" />
- <gd name="t4" fmla="?: dyPos xPos x1" />
- <gd name="xb" fmla="?: dz t4 x1" />
- <gd name="t5" fmla="?: dxPos y1 yPos" />
- <gd name="yl" fmla="?: dz y1 t5" />
- <gd name="t6" fmla="?: dyPos t yPos" />
- <gd name="yt" fmla="?: dz t6 t" />
- <gd name="t7" fmla="?: dxPos yPos y1" />
- <gd name="yr" fmla="?: dz y1 t7" />
- <gd name="t8" fmla="?: dyPos yPos b" />
- <gd name="yb" fmla="?: dz t8 b" />
- <gd name="u1" fmla="*/ ss adj3 100000" />
- <gd name="u2" fmla="+- r 0 u1" />
- <gd name="v2" fmla="+- b 0 u1" />
- <gd name="il" fmla="*/ u1 29289 100000" />
- <gd name="ir" fmla="+- r 0 il" />
- <gd name="ib" fmla="+- b 0 il" />
- </gdLst>
- <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
- <pos x="xPos" y="yPos" />
- </ahXY>
- </ahLst>
- <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <cxn ang="3cd4">
- <pos x="hc" y="t" />
- </cxn>
- <cxn ang="cd2">
- <pos x="l" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="hc" y="b" />
- </cxn>
- <cxn ang="0">
- <pos x="r" y="vc" />
- </cxn>
- <cxn ang="cd4">
- <pos x="xPos" y="yPos" />
- </cxn>
- </cxnLst>
- <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
- <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
- <path>
- <moveTo>
- <pt x="l" y="u1" />
- </moveTo>
- <arcTo wR="u1" hR="u1" stAng="cd2" swAng="cd4" />
- <lnTo>
- <pt x="x1" y="t" />
- </lnTo>
- <lnTo>
- <pt x="xt" y="yt" />
- </lnTo>
- <lnTo>
- <pt x="x2" y="t" />
- </lnTo>
- <lnTo>
- <pt x="u2" y="t" />
- </lnTo>
- <arcTo wR="u1" hR="u1" stAng="3cd4" swAng="cd4" />
- <lnTo>
- <pt x="r" y="y1" />
- </lnTo>
- <lnTo>
- <pt x="xr" y="yr" />
- </lnTo>
- <lnTo>
- <pt x="r" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="r" y="v2" />
- </lnTo>
- <arcTo wR="u1" hR="u1" stAng="0" swAng="cd4" />
- <lnTo>
- <pt x="x2" y="b" />
- </lnTo>
- <lnTo>
- <pt x="xb" y="yb" />
- </lnTo>
- <lnTo>
- <pt x="x1" y="b" />
- </lnTo>
- <lnTo>
- <pt x="u1" y="b" />
- </lnTo>
- <arcTo wR="u1" hR="u1" stAng="cd4" swAng="cd4" />
- <lnTo>
- <pt x="l" y="y2" />
- </lnTo>
- <lnTo>
- <pt x="xl" y="yl" />
- </lnTo>
- <lnTo>
- <pt x="l" y="y1" />
- </lnTo>
- <close />
- </path>
- </pathLst>
- </wedgeRoundRectCallout>
-</presetShapeDefinitons>
+<?xml version="1.0" encoding="utf-8"?>
+<presetShapeDefinitons>
+ <accentBorderCallout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentBorderCallout1>
+ <accentBorderCallout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentBorderCallout2>
+ <accentBorderCallout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentBorderCallout3>
+ <accentCallout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentCallout1>
+ <accentCallout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentCallout2>
+ <accentCallout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentCallout3>
+ <actionButtonBackPrevious>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </actionButtonBackPrevious>
+ <actionButtonBeginning>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 8" />
+ <gd name="g15" fmla="*/ g13 1 4" />
+ <gd name="g16" fmla="+- g11 g14 0" />
+ <gd name="g17" fmla="+- g11 g15 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g16" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g17" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g16" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g17" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g16" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonBeginning>
+ <actionButtonBlank>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonBlank>
+ <actionButtonDocument>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="dx1" fmla="*/ ss 9 32" />
+ <gd name="g11" fmla="+- hc 0 dx1" />
+ <gd name="g12" fmla="+- hc dx1 0" />
+ <gd name="g13" fmla="*/ ss 3 16" />
+ <gd name="g14" fmla="+- g12 0 g13" />
+ <gd name="g15" fmla="+- g9 g13 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="g11" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g14" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g14" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g14" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g12" y="g15" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonDocument>
+ <actionButtonEnd>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 3 4" />
+ <gd name="g15" fmla="*/ g13 7 8" />
+ <gd name="g16" fmla="+- g11 g14 0" />
+ <gd name="g17" fmla="+- g11 g15 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g17" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g16" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g17" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g16" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g17" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonEnd>
+ <actionButtonForwardNext>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g12" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </actionButtonForwardNext>
+ <actionButtonHelp>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 7" />
+ <gd name="g15" fmla="*/ g13 3 14" />
+ <gd name="g16" fmla="*/ g13 2 7" />
+ <gd name="g19" fmla="*/ g13 3 7" />
+ <gd name="g20" fmla="*/ g13 4 7" />
+ <gd name="g21" fmla="*/ g13 17 28" />
+ <gd name="g23" fmla="*/ g13 21 28" />
+ <gd name="g24" fmla="*/ g13 11 14" />
+ <gd name="g27" fmla="+- g9 g16 0" />
+ <gd name="g29" fmla="+- g9 g21 0" />
+ <gd name="g30" fmla="+- g9 g23 0" />
+ <gd name="g31" fmla="+- g9 g24 0" />
+ <gd name="g33" fmla="+- g11 g15 0" />
+ <gd name="g36" fmla="+- g11 g19 0" />
+ <gd name="g37" fmla="+- g11 g20 0" />
+ <gd name="g41" fmla="*/ g13 1 14" />
+ <gd name="g42" fmla="*/ g13 3 28" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g33" y="g27" />
+ </moveTo>
+
+ <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
+ <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g29" />
+ </lnTo>
+ <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g31" />
+ </moveTo>
+
+ <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g33" y="g27" />
+ </moveTo>
+
+ <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
+ <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g29" />
+ </lnTo>
+ <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g31" />
+ </moveTo>
+
+ <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g33" y="g27" />
+ </moveTo>
+
+ <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
+ <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g29" />
+ </lnTo>
+ <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g31" />
+ </moveTo>
+
+ <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonHelp>
+ <actionButtonHome>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 16" />
+ <gd name="g15" fmla="*/ g13 1 8" />
+ <gd name="g16" fmla="*/ g13 3 16" />
+ <gd name="g17" fmla="*/ g13 5 16" />
+ <gd name="g18" fmla="*/ g13 7 16" />
+ <gd name="g19" fmla="*/ g13 9 16" />
+ <gd name="g20" fmla="*/ g13 11 16" />
+ <gd name="g21" fmla="*/ g13 3 4" />
+ <gd name="g22" fmla="*/ g13 13 16" />
+ <gd name="g23" fmla="*/ g13 7 8" />
+ <gd name="g24" fmla="+- g9 g14 0" />
+ <gd name="g25" fmla="+- g9 g16 0" />
+ <gd name="g26" fmla="+- g9 g17 0" />
+ <gd name="g27" fmla="+- g9 g21 0" />
+ <gd name="g28" fmla="+- g11 g15 0" />
+ <gd name="g29" fmla="+- g11 g18 0" />
+ <gd name="g30" fmla="+- g11 g19 0" />
+ <gd name="g31" fmla="+- g11 g20 0" />
+ <gd name="g32" fmla="+- g11 g22 0" />
+ <gd name="g33" fmla="+- g11 g23 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g26" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g25" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="g32" y="g26" />
+ </moveTo>
+ <lnTo>
+ <pt x="g32" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g25" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g28" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g28" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g29" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g29" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g29" y="g27" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g30" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g29" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g31" y="g25" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g26" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="vc" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g31" y="g25" />
+ </moveTo>
+ <lnTo>
+ <pt x="g32" y="g26" />
+ </lnTo>
+
+ <moveTo>
+ <pt x="g33" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g28" y="vc" />
+ </lnTo>
+
+ <moveTo>
+ <pt x="g29" y="g10" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g29" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g10" />
+ </lnTo>
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonHome>
+ <actionButtonInformation>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 32" />
+ <gd name="g17" fmla="*/ g13 5 16" />
+ <gd name="g18" fmla="*/ g13 3 8" />
+ <gd name="g19" fmla="*/ g13 13 32" />
+ <gd name="g20" fmla="*/ g13 19 32" />
+ <gd name="g22" fmla="*/ g13 11 16" />
+ <gd name="g23" fmla="*/ g13 13 16" />
+ <gd name="g24" fmla="*/ g13 7 8" />
+ <gd name="g25" fmla="+- g9 g14 0" />
+ <gd name="g28" fmla="+- g9 g17 0" />
+ <gd name="g29" fmla="+- g9 g18 0" />
+ <gd name="g30" fmla="+- g9 g23 0" />
+ <gd name="g31" fmla="+- g9 g24 0" />
+ <gd name="g32" fmla="+- g11 g17 0" />
+ <gd name="g34" fmla="+- g11 g19 0" />
+ <gd name="g35" fmla="+- g11 g20 0" />
+ <gd name="g37" fmla="+- g11 g22 0" />
+ <gd name="g38" fmla="*/ g13 3 32" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g25" />
+ </moveTo>
+
+ <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
+ <moveTo>
+ <pt x="g32" y="g28" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g32" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g28" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lighten" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g25" />
+ </moveTo>
+
+ <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
+ <moveTo>
+ <pt x="g32" y="g28" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g35" y="g28" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g29" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g25" />
+ </moveTo>
+
+ <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
+ <moveTo>
+ <pt x="g32" y="g28" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g35" y="g28" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g29" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonInformation>
+ <actionButtonMovie>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1455 21600" />
+ <gd name="g15" fmla="*/ g13 1905 21600" />
+ <gd name="g16" fmla="*/ g13 2325 21600" />
+ <gd name="g17" fmla="*/ g13 16155 21600" />
+ <gd name="g18" fmla="*/ g13 17010 21600" />
+ <gd name="g19" fmla="*/ g13 19335 21600" />
+ <gd name="g20" fmla="*/ g13 19725 21600" />
+ <gd name="g21" fmla="*/ g13 20595 21600" />
+ <gd name="g22" fmla="*/ g13 5280 21600" />
+ <gd name="g23" fmla="*/ g13 5730 21600" />
+ <gd name="g24" fmla="*/ g13 6630 21600" />
+ <gd name="g25" fmla="*/ g13 7492 21600" />
+ <gd name="g26" fmla="*/ g13 9067 21600" />
+ <gd name="g27" fmla="*/ g13 9555 21600" />
+ <gd name="g28" fmla="*/ g13 13342 21600" />
+ <gd name="g29" fmla="*/ g13 14580 21600" />
+ <gd name="g30" fmla="*/ g13 15592 21600" />
+ <gd name="g31" fmla="+- g11 g14 0" />
+ <gd name="g32" fmla="+- g11 g15 0" />
+ <gd name="g33" fmla="+- g11 g16 0" />
+ <gd name="g34" fmla="+- g11 g17 0" />
+ <gd name="g35" fmla="+- g11 g18 0" />
+ <gd name="g36" fmla="+- g11 g19 0" />
+ <gd name="g37" fmla="+- g11 g20 0" />
+ <gd name="g38" fmla="+- g11 g21 0" />
+ <gd name="g39" fmla="+- g9 g22 0" />
+ <gd name="g40" fmla="+- g9 g23 0" />
+ <gd name="g41" fmla="+- g9 g24 0" />
+ <gd name="g42" fmla="+- g9 g25 0" />
+ <gd name="g43" fmla="+- g9 g26 0" />
+ <gd name="g44" fmla="+- g9 g27 0" />
+ <gd name="g45" fmla="+- g9 g28 0" />
+ <gd name="g46" fmla="+- g9 g29 0" />
+ <gd name="g47" fmla="+- g9 g30 0" />
+ <gd name="g48" fmla="+- g9 g31 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="g39" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g39" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g39" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g39" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g39" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g31" y="g39" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g44" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonMovie>
+ <actionButtonReturn>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 7 8" />
+ <gd name="g15" fmla="*/ g13 3 4" />
+ <gd name="g16" fmla="*/ g13 5 8" />
+ <gd name="g17" fmla="*/ g13 3 8" />
+ <gd name="g18" fmla="*/ g13 1 4" />
+ <gd name="g19" fmla="+- g9 g15 0" />
+ <gd name="g20" fmla="+- g9 g16 0" />
+ <gd name="g21" fmla="+- g9 g18 0" />
+ <gd name="g22" fmla="+- g11 g14 0" />
+ <gd name="g23" fmla="+- g11 g15 0" />
+ <gd name="g24" fmla="+- g11 g16 0" />
+ <gd name="g25" fmla="+- g11 g17 0" />
+ <gd name="g26" fmla="+- g11 g18 0" />
+ <gd name="g27" fmla="*/ g13 1 8" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g12" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g23" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g20" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="g25" y="g19" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="g26" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g20" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="g10" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g22" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g23" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g20" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="g25" y="g19" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="g26" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g20" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="g10" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g22" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g22" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g22" y="g20" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="g11" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g26" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g26" y="g20" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="g19" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g23" y="g9" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonReturn>
+ <actionButtonSound>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 8" />
+ <gd name="g15" fmla="*/ g13 5 16" />
+ <gd name="g16" fmla="*/ g13 5 8" />
+ <gd name="g17" fmla="*/ g13 11 16" />
+ <gd name="g18" fmla="*/ g13 3 4" />
+ <gd name="g19" fmla="*/ g13 7 8" />
+ <gd name="g20" fmla="+- g9 g14 0" />
+ <gd name="g21" fmla="+- g9 g15 0" />
+ <gd name="g22" fmla="+- g9 g17 0" />
+ <gd name="g23" fmla="+- g9 g19 0" />
+ <gd name="g24" fmla="+- g11 g15 0" />
+ <gd name="g25" fmla="+- g11 g16 0" />
+ <gd name="g26" fmla="+- g11 g18 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="g21" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g21" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g21" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g22" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g26" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g20" />
+ </lnTo>
+ <moveTo>
+ <pt x="g26" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <moveTo>
+ <pt x="g26" y="g22" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g23" />
+ </lnTo>
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonSound>
+ <arc>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16200000" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="enAng" fmla="pin 0 adj2 21599999" />
+ <gd name="sw11" fmla="+- enAng 0 stAng" />
+ <gd name="sw12" fmla="+- sw11 21600000 0" />
+ <gd name="swAng" fmla="?: sw11 sw11 sw12" />
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="wt2" fmla="sin wd2 enAng" />
+ <gd name="ht2" fmla="cos hd2 enAng" />
+ <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+ <gd name="y2" fmla="+- vc dy2 0" />
+ <gd name="sw0" fmla="+- 21600000 0 stAng" />
+ <gd name="da1" fmla="+- swAng 0 sw0" />
+ <gd name="g1" fmla="max x1 x2" />
+ <gd name="ir" fmla="?: da1 r g1" />
+ <gd name="sw1" fmla="+- cd4 0 stAng" />
+ <gd name="sw2" fmla="+- 27000000 0 stAng" />
+ <gd name="sw3" fmla="?: sw1 sw1 sw2" />
+ <gd name="da2" fmla="+- swAng 0 sw3" />
+ <gd name="g5" fmla="max y1 y2" />
+ <gd name="ib" fmla="?: da2 b g5" />
+ <gd name="sw4" fmla="+- cd2 0 stAng" />
+ <gd name="sw5" fmla="+- 32400000 0 stAng" />
+ <gd name="sw6" fmla="?: sw4 sw4 sw5" />
+ <gd name="da3" fmla="+- swAng 0 sw6" />
+ <gd name="g9" fmla="min x1 x2" />
+ <gd name="il" fmla="?: da3 l g9" />
+ <gd name="sw7" fmla="+- 3cd4 0 stAng" />
+ <gd name="sw8" fmla="+- 37800000 0 stAng" />
+ <gd name="sw9" fmla="?: sw7 sw7 sw8" />
+ <gd name="da4" fmla="+- swAng 0 sw9" />
+ <gd name="g13" fmla="min y1 y2" />
+ <gd name="it" fmla="?: da4 t g13" />
+ <gd name="cang1" fmla="+- stAng 0 cd4" />
+ <gd name="cang2" fmla="+- enAng cd4 0" />
+ <gd name="cang3" fmla="+/ cang1 cang2 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cang1">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cang3">
+ <pos x="hc" y="vc" />
+ </cxn>
+ <cxn ang="cang2">
+ <pos x="x2" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="hc" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ </path>
+ </pathLst>
+ </arc>
+ <bentArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 43750" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="a3" fmla="pin 0 adj3 50000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw2" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="dh2" fmla="+- aw2 0 th2" />
+
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+ <gd name="bw" fmla="+- r 0 ah" />
+
+ <gd name="bh" fmla="+- b 0 dh2" />
+
+ <gd name="bs" fmla="min bw bh" />
+
+ <gd name="maxAdj4" fmla="*/ 100000 bs ss" />
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+
+ <gd name="bd" fmla="*/ ss a4 100000" />
+
+
+ <gd name="bd3" fmla="+- bd 0 th" />
+ <gd name="bd2" fmla="max bd3 0" />
+ <gd name="x3" fmla="+- th bd2 0" />
+ <gd name="x4" fmla="+- r 0 ah" />
+
+
+ <gd name="y3" fmla="+- dh2 th 0" />
+ <gd name="y4" fmla="+- y3 dh2 0" />
+ <gd name="y5" fmla="+- dh2 bd 0" />
+ <gd name="y6" fmla="+- y3 bd2 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="th" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="50000">
+ <pos x="r" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="50000">
+ <pos x="x4" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="bd" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="th2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="aw2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="l" y="y5" />
+ </lnTo>
+ <arcTo wR="bd" hR="bd" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="dh2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="aw2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <arcTo wR="bd2" hR="bd2" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="th" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </bentArrow>
+ <bentConnector2>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </bentConnector2>
+ <bentConnector3>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w adj1 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x1" y="vc" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </bentConnector3>
+ <bentConnector4>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w adj1 100000" />
+ <gd name="x2" fmla="+/ x1 r 2" />
+ <gd name="y2" fmla="*/ h adj2 100000" />
+ <gd name="y1" fmla="+/ t y2 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </bentConnector4>
+ <bentConnector5>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 50000" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w adj1 100000" />
+
+ <gd name="x3" fmla="*/ w adj3 100000" />
+
+ <gd name="x2" fmla="+/ x1 x3 2" />
+
+ <gd name="y2" fmla="*/ h adj2 100000" />
+
+ <gd name="y1" fmla="+/ t y2 2" />
+
+ <gd name="y3" fmla="+/ b y2 2" />
+
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="-2147483647" maxX="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </bentConnector5>
+ <bentUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="a3" fmla="pin 0 adj3 50000" />
+ <gd name="y1" fmla="*/ ss a3 100000" />
+ <gd name="dx1" fmla="*/ ss a2 50000" />
+
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="dx3" fmla="*/ ss a2 100000" />
+
+ <gd name="x3" fmla="+- r 0 dx3" />
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x2" fmla="+- x3 0 dx2" />
+ <gd name="x4" fmla="+- x3 dx2 0" />
+ <gd name="dy2" fmla="*/ ss a1 100000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="x0" fmla="*/ x4 1 2" />
+ <gd name="y3" fmla="+/ y2 b 2" />
+ <gd name="y15" fmla="+/ y1 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="50000">
+ <pos x="l" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="50000">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x0" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y15" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="x4" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </bentUpArrow>
+ <bevel>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+
+
+
+ <gd name="x2" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- b 0 x1" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="x1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="x1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x1" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lightenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lighten" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x1" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <moveTo>
+ <pt x="r" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </bevel>
+ <blockArc>
+
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 10800000" />
+
+ <gd name="adj2" fmla="val 0" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="istAng" fmla="pin 0 adj2 21599999" />
+ <gd name="a3" fmla="pin 0 adj3 50000" />
+ <gd name="sw11" fmla="+- istAng 0 stAng" />
+
+ <gd name="sw12" fmla="+- sw11 21600000 0" />
+
+ <gd name="swAng" fmla="?: sw11 sw11 sw12" />
+
+ <gd name="iswAng" fmla="+- 0 0 swAng" />
+
+
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="wt3" fmla="sin wd2 istAng" />
+ <gd name="ht3" fmla="cos hd2 istAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="dx3" fmla="cat2 wd2 ht3 wt3" />
+ <gd name="dy3" fmla="sat2 hd2 ht3 wt3" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+
+ <gd name="y1" fmla="+- vc dy1 0" />
+
+ <gd name="x3" fmla="+- hc dx3 0" />
+
+ <gd name="y3" fmla="+- vc dy3 0" />
+
+
+ <gd name="dr" fmla="*/ ss a3 100000" />
+ <gd name="iwd2" fmla="+- wd2 0 dr" />
+ <gd name="ihd2" fmla="+- hd2 0 dr" />
+ <gd name="wt2" fmla="sin iwd2 istAng" />
+ <gd name="ht2" fmla="cos ihd2 istAng" />
+ <gd name="wt4" fmla="sin iwd2 stAng" />
+ <gd name="ht4" fmla="cos ihd2 stAng" />
+ <gd name="dx2" fmla="cat2 iwd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 ihd2 ht2 wt2" />
+ <gd name="dx4" fmla="cat2 iwd2 ht4 wt4" />
+ <gd name="dy4" fmla="sat2 ihd2 ht4 wt4" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+
+ <gd name="y2" fmla="+- vc dy2 0" />
+
+ <gd name="x4" fmla="+- hc dx4 0" />
+
+ <gd name="y4" fmla="+- vc dy4 0" />
+
+
+ <gd name="sw0" fmla="+- 21600000 0 stAng" />
+ <gd name="da1" fmla="+- swAng 0 sw0" />
+ <gd name="g1" fmla="max x1 x2" />
+ <gd name="g2" fmla="max x3 x4" />
+ <gd name="g3" fmla="max g1 g2" />
+ <gd name="ir" fmla="?: da1 r g3" />
+
+ <gd name="sw1" fmla="+- cd4 0 stAng" />
+ <gd name="sw2" fmla="+- 27000000 0 stAng" />
+ <gd name="sw3" fmla="?: sw1 sw1 sw2" />
+ <gd name="da2" fmla="+- swAng 0 sw3" />
+ <gd name="g5" fmla="max y1 y2" />
+ <gd name="g6" fmla="max y3 y4" />
+ <gd name="g7" fmla="max g5 g6" />
+ <gd name="ib" fmla="?: da2 b g7" />
+
+ <gd name="sw4" fmla="+- cd2 0 stAng" />
+ <gd name="sw5" fmla="+- 32400000 0 stAng" />
+ <gd name="sw6" fmla="?: sw4 sw4 sw5" />
+ <gd name="da3" fmla="+- swAng 0 sw6" />
+ <gd name="g9" fmla="min x1 x2" />
+ <gd name="g10" fmla="min x3 x4" />
+ <gd name="g11" fmla="min g9 g10" />
+ <gd name="il" fmla="?: da3 l g11" />
+
+ <gd name="sw7" fmla="+- 3cd4 0 stAng" />
+ <gd name="sw8" fmla="+- 37800000 0 stAng" />
+ <gd name="sw9" fmla="?: sw7 sw7 sw8" />
+ <gd name="da4" fmla="+- swAng 0 sw9" />
+ <gd name="g13" fmla="min y1 y2" />
+ <gd name="g14" fmla="min y3 y4" />
+ <gd name="g15" fmla="min g13 g14" />
+ <gd name="it" fmla="?: da4 t g15" />
+
+ <gd name="x5" fmla="+/ x1 x4 2" />
+
+ <gd name="y5" fmla="+/ y1 y4 2" />
+
+ <gd name="x6" fmla="+/ x3 x2 2" />
+
+ <gd name="y6" fmla="+/ y3 y2 2" />
+
+ <gd name="cang1" fmla="+- stAng 0 cd4" />
+ <gd name="cang2" fmla="+- istAng cd4 0" />
+ <gd name="cang3" fmla="+/ cang1 cang2 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefR="adj3" minR="0" maxR="50000" gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cang1">
+ <pos x="x5" y="y5" />
+ </cxn>
+ <cxn ang="cang2">
+ <pos x="x6" y="y6" />
+ </cxn>
+ <cxn ang="cang3">
+ <pos x="hc" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="istAng" swAng="iswAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </blockArc>
+ <borderCallout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </borderCallout1>
+ <borderCallout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </borderCallout2>
+ <borderCallout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </borderCallout3>
+ <bracePair>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 8333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 25000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="*/ ss a 50000" />
+ <gd name="x3" fmla="+- r 0 x2" />
+ <gd name="x4" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- vc 0 x1" />
+ <gd name="y3" fmla="+- vc x1 0" />
+ <gd name="y4" fmla="+- b 0 x1" />
+ <gd name="it" fmla="*/ x1 29289 100000" />
+
+ <gd name="il" fmla="+- x1 it 0" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="25000">
+ <pos x="l" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x2" y="b" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="x2" y="b" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <moveTo>
+ <pt x="x3" y="t" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </bracePair>
+ <bracketPair>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 29289 100000" />
+
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="l" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <moveTo>
+ <pt x="x2" y="t" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </bracketPair>
+ <callout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </callout1>
+ <callout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </callout2>
+ <callout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </callout3>
+ <can>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 h ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="y1" fmla="*/ ss a 200000" />
+ <gd name="y2" fmla="+- y1 y1 0" />
+ <gd name="y3" fmla="+- b 0 y1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
+ <pos x="hc" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-10800000" />
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ <path stroke="false" fill="lighten" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd2" />
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </can>
+ <chartPlus>
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="5" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="10" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="5" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="5" />
+ </lnTo>
+ </path>
+ <path w="10" h="10" stroke="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="0" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </chartPlus>
+ <chartStar>
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="10" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <moveTo>
+ <pt x="5" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="10" />
+ </lnTo>
+ </path>
+ <path w="10" h="10" stroke="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="0" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </chartStar>
+ <chartX>
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="10" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ </path>
+ <path w="10" h="10" stroke="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="0" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </chartX>
+ <chevron>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 100000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="x3" fmla="*/ x2 1 2" />
+ <gd name="dx" fmla="+- x2 0 x1" />
+ <gd name="il" fmla="?: dx x1 l" />
+ <gd name="ir" fmla="?: dx x2 r" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </chevron>
+ <chord>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 2700000" />
+
+ <gd name="adj2" fmla="val 16200000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="enAng" fmla="pin 0 adj2 21599999" />
+ <gd name="sw1" fmla="+- enAng 0 stAng" />
+
+ <gd name="sw2" fmla="+- sw1 21600000 0" />
+
+ <gd name="swAng" fmla="?: sw1 sw1 sw2" />
+
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="wt2" fmla="sin wd2 enAng" />
+ <gd name="ht2" fmla="cos hd2 enAng" />
+ <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+
+ <gd name="y1" fmla="+- vc dy1 0" />
+
+ <gd name="x2" fmla="+- hc dx2 0" />
+
+ <gd name="y2" fmla="+- vc dy2 0" />
+
+ <gd name="x3" fmla="+/ x1 x2 2" />
+ <gd name="y3" fmla="+/ y1 y2 2" />
+ <gd name="midAng0" fmla="*/ swAng 1 2" />
+ <gd name="midAng" fmla="+- stAng midAng0 cd2" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="stAng">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="enAng">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="midAng">
+ <pos x="x3" y="y3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </chord>
+ <circularArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val 1142319" />
+
+ <gd name="adj3" fmla="val 20457681" />
+
+ <gd name="adj4" fmla="val 10800000" />
+
+ <gd name="adj5" fmla="val 12500" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a5" fmla="pin 0 adj5 25000" />
+
+ <gd name="maxAdj1" fmla="*/ a5 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="enAng" fmla="pin 1 adj3 21599999" />
+ <gd name="stAng" fmla="pin 0 adj4 21599999" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="thh" fmla="*/ ss a5 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+
+
+ <gd name="rw1" fmla="+- wd2 th2 thh" />
+
+ <gd name="rh1" fmla="+- hd2 th2 thh" />
+
+ <gd name="rw2" fmla="+- rw1 0 th" />
+
+ <gd name="rh2" fmla="+- rh1 0 th" />
+
+ <gd name="rw3" fmla="+- rw2 th2 0" />
+
+ <gd name="rh3" fmla="+- rh2 th2 0" />
+
+
+ <gd name="wtH" fmla="sin rw3 enAng" />
+ <gd name="htH" fmla="cos rh3 enAng" />
+ <gd name="dxH" fmla="cat2 rw3 htH wtH" />
+ <gd name="dyH" fmla="sat2 rh3 htH wtH" />
+ <gd name="xH" fmla="+- hc dxH 0" />
+
+ <gd name="yH" fmla="+- vc dyH 0" />
+
+
+ <gd name="rI" fmla="min rw2 rh2" />
+
+ <gd name="u1" fmla="*/ dxH dxH 1" />
+ <gd name="u2" fmla="*/ dyH dyH 1" />
+ <gd name="u3" fmla="*/ rI rI 1" />
+ <gd name="u4" fmla="+- u1 0 u3" />
+ <gd name="u5" fmla="+- u2 0 u3" />
+ <gd name="u6" fmla="*/ u4 u5 u1" />
+ <gd name="u7" fmla="*/ u6 1 u2" />
+ <gd name="u8" fmla="+- 1 0 u7" />
+ <gd name="u9" fmla="sqrt u8" />
+ <gd name="u10" fmla="*/ u4 1 dxH" />
+ <gd name="u11" fmla="*/ u10 1 dyH" />
+ <gd name="u12" fmla="+/ 1 u9 u11" />
+ <gd name="u13" fmla="at2 1 u12" />
+ <gd name="u14" fmla="+- u13 21600000 0" />
+ <gd name="u15" fmla="?: u13 u13 u14" />
+ <gd name="u16" fmla="+- u15 0 enAng" />
+
+ <gd name="u17" fmla="+- u16 21600000 0" />
+ <gd name="u18" fmla="?: u16 u16 u17" />
+ <gd name="u19" fmla="+- u18 0 cd2" />
+ <gd name="u20" fmla="+- u18 0 21600000" />
+ <gd name="u21" fmla="?: u19 u20 u18" />
+ <gd name="maxAng" fmla="abs u21" />
+ <gd name="aAng" fmla="pin 0 adj2 maxAng" />
+
+ <gd name="ptAng" fmla="+- enAng aAng 0" />
+
+
+ <gd name="wtA" fmla="sin rw3 ptAng" />
+ <gd name="htA" fmla="cos rh3 ptAng" />
+ <gd name="dxA" fmla="cat2 rw3 htA wtA" />
+ <gd name="dyA" fmla="sat2 rh3 htA wtA" />
+ <gd name="xA" fmla="+- hc dxA 0" />
+
+ <gd name="yA" fmla="+- vc dyA 0" />
+
+
+ <gd name="wtE" fmla="sin rw1 stAng" />
+ <gd name="htE" fmla="cos rh1 stAng" />
+ <gd name="dxE" fmla="cat2 rw1 htE wtE" />
+ <gd name="dyE" fmla="sat2 rh1 htE wtE" />
+ <gd name="xE" fmla="+- hc dxE 0" />
+
+ <gd name="yE" fmla="+- vc dyE 0" />
+
+
+ <gd name="dxG" fmla="cos thh ptAng" />
+ <gd name="dyG" fmla="sin thh ptAng" />
+ <gd name="xG" fmla="+- xH dxG 0" />
+
+ <gd name="yG" fmla="+- yH dyG 0" />
+
+
+ <gd name="dxB" fmla="cos thh ptAng" />
+ <gd name="dyB" fmla="sin thh ptAng" />
+ <gd name="xB" fmla="+- xH 0 dxB 0" />
+
+ <gd name="yB" fmla="+- yH 0 dyB 0" />
+
+
+ <gd name="sx1" fmla="+- xB 0 hc" />
+
+ <gd name="sy1" fmla="+- yB 0 vc" />
+
+ <gd name="sx2" fmla="+- xG 0 hc" />
+
+ <gd name="sy2" fmla="+- yG 0 vc" />
+
+
+ <gd name="rO" fmla="min rw1 rh1" />
+
+ <gd name="x1O" fmla="*/ sx1 rO rw1" />
+
+ <gd name="y1O" fmla="*/ sy1 rO rh1" />
+
+ <gd name="x2O" fmla="*/ sx2 rO rw1" />
+
+ <gd name="y2O" fmla="*/ sy2 rO rh1" />
+
+
+ <gd name="dxO" fmla="+- x2O 0 x1O" />
+ <gd name="dyO" fmla="+- y2O 0 y1O" />
+ <gd name="dO" fmla="mod dxO dyO 0" />
+
+ <gd name="q1" fmla="*/ x1O y2O 1" />
+ <gd name="q2" fmla="*/ x2O y1O 1" />
+ <gd name="DO" fmla="+- q1 0 q2" />
+
+
+ <gd name="q3" fmla="*/ rO rO 1" />
+
+ <gd name="q4" fmla="*/ dO dO 1" />
+
+ <gd name="q5" fmla="*/ q3 q4 1" />
+
+ <gd name="q6" fmla="*/ DO DO 1" />
+
+ <gd name="q7" fmla="+- q5 0 q6" />
+
+ <gd name="q8" fmla="max q7 0" />
+
+ <gd name="sdelO" fmla="sqrt q8" />
+
+ <gd name="ndyO" fmla="*/ dyO -1 1" />
+ <gd name="sdyO" fmla="?: ndyO -1 1" />
+
+ <gd name="q9" fmla="*/ sdyO dxO 1" />
+
+ <gd name="q10" fmla="*/ q9 sdelO 1" />
+
+ <gd name="q11" fmla="*/ DO dyO 1" />
+
+ <gd name="dxF1" fmla="+/ q11 q10 q4" />
+
+ <gd name="q12" fmla="+- q11 0 q10" />
+ <gd name="dxF2" fmla="*/ q12 1 q4" />
+
+
+ <gd name="adyO" fmla="abs dyO" />
+ <gd name="q13" fmla="*/ adyO sdelO 1" />
+
+ <gd name="q14" fmla="*/ DO dxO -1" />
+
+ <gd name="dyF1" fmla="+/ q14 q13 q4" />
+
+ <gd name="q15" fmla="+- q14 0 q13" />
+ <gd name="dyF2" fmla="*/ q15 1 q4" />
+
+
+
+ <gd name="q16" fmla="+- x2O 0 dxF1" />
+ <gd name="q17" fmla="+- x2O 0 dxF2" />
+ <gd name="q18" fmla="+- y2O 0 dyF1" />
+ <gd name="q19" fmla="+- y2O 0 dyF2" />
+ <gd name="q20" fmla="mod q16 q18 0" />
+
+ <gd name="q21" fmla="mod q17 q19 0" />
+
+ <gd name="q22" fmla="+- q21 0 q20" />
+ <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
+
+ <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
+
+ <gd name="sdxF" fmla="*/ dxF rw1 rO" />
+
+ <gd name="sdyF" fmla="*/ dyF rh1 rO" />
+
+ <gd name="xF" fmla="+- hc sdxF 0" />
+
+ <gd name="yF" fmla="+- vc sdyF 0" />
+
+
+
+
+ <gd name="x1I" fmla="*/ sx1 rI rw2" />
+
+ <gd name="y1I" fmla="*/ sy1 rI rh2" />
+
+ <gd name="x2I" fmla="*/ sx2 rI rw2" />
+
+ <gd name="y2I" fmla="*/ sy2 rI rh2" />
+
+
+ <gd name="dxI" fmla="+- x2I 0 x1I" />
+ <gd name="dyI" fmla="+- y2I 0 y1I" />
+ <gd name="dI" fmla="mod dxI dyI 0" />
+ <gd name="v1" fmla="*/ x1I y2I 1" />
+ <gd name="v2" fmla="*/ x2I y1I 1" />
+ <gd name="DI" fmla="+- v1 0 v2" />
+
+ <gd name="v3" fmla="*/ rI rI 1" />
+ <gd name="v4" fmla="*/ dI dI 1" />
+ <gd name="v5" fmla="*/ v3 v4 1" />
+ <gd name="v6" fmla="*/ DI DI 1" />
+ <gd name="v7" fmla="+- v5 0 v6" />
+ <gd name="v8" fmla="max v7 0" />
+ <gd name="sdelI" fmla="sqrt v8" />
+ <gd name="v9" fmla="*/ sdyO dxI 1" />
+ <gd name="v10" fmla="*/ v9 sdelI 1" />
+ <gd name="v11" fmla="*/ DI dyI 1" />
+ <gd name="dxC1" fmla="+/ v11 v10 v4" />
+ <gd name="v12" fmla="+- v11 0 v10" />
+ <gd name="dxC2" fmla="*/ v12 1 v4" />
+
+ <gd name="adyI" fmla="abs dyI" />
+ <gd name="v13" fmla="*/ adyI sdelI 1" />
+ <gd name="v14" fmla="*/ DI dxI -1" />
+ <gd name="dyC1" fmla="+/ v14 v13 v4" />
+ <gd name="v15" fmla="+- v14 0 v13" />
+ <gd name="dyC2" fmla="*/ v15 1 v4" />
+
+ <gd name="v16" fmla="+- x1I 0 dxC1" />
+ <gd name="v17" fmla="+- x1I 0 dxC2" />
+ <gd name="v18" fmla="+- y1I 0 dyC1" />
+ <gd name="v19" fmla="+- y1I 0 dyC2" />
+ <gd name="v20" fmla="mod v16 v18 0" />
+ <gd name="v21" fmla="mod v17 v19 0" />
+ <gd name="v22" fmla="+- v21 0 v20" />
+ <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
+ <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
+ <gd name="sdxC" fmla="*/ dxC rw2 rI" />
+ <gd name="sdyC" fmla="*/ dyC rh2 rI" />
+ <gd name="xC" fmla="+- hc sdxC 0" />
+
+ <gd name="yC" fmla="+- vc sdyC 0" />
+
+
+ <gd name="ist0" fmla="at2 sdxC sdyC" />
+ <gd name="ist1" fmla="+- ist0 21600000 0" />
+ <gd name="istAng" fmla="?: ist0 ist0 ist1" />
+ <gd name="isw1" fmla="+- stAng 0 istAng" />
+ <gd name="isw2" fmla="+- isw1 0 21600000" />
+ <gd name="iswAng" fmla="?: isw1 isw2 isw1" />
+
+
+ <gd name="p1" fmla="+- xF 0 xC" />
+ <gd name="p2" fmla="+- yF 0 yC" />
+ <gd name="p3" fmla="mod p1 p2 0" />
+ <gd name="p4" fmla="*/ p3 1 2" />
+ <gd name="p5" fmla="+- p4 0 thh" />
+ <gd name="xGp" fmla="?: p5 xF xG" />
+ <gd name="yGp" fmla="?: p5 yF yG" />
+ <gd name="xBp" fmla="?: p5 xC xB" />
+ <gd name="yBp" fmla="?: p5 yC yB" />
+
+ <gd name="en0" fmla="at2 sdxF sdyF" />
+ <gd name="en1" fmla="+- en0 21600000 0" />
+ <gd name="en2" fmla="?: en0 en0 en1" />
+ <gd name="sw0" fmla="+- en2 0 stAng" />
+ <gd name="sw1" fmla="+- sw0 21600000 0" />
+ <gd name="swAng" fmla="?: sw0 sw0 sw1" />
+
+ <gd name="wtI" fmla="sin rw3 stAng" />
+ <gd name="htI" fmla="cos rh3 stAng" />
+ <gd name="dxI" fmla="cat2 rw3 htI wtI" />
+ <gd name="dyI" fmla="sat2 rh3 htI wtI" />
+ <gd name="xI" fmla="+- hc dxI 0" />
+
+ <gd name="yI" fmla="+- vc dyI 0" />
+
+
+ <gd name="aI" fmla="+- stAng 0 cd4" />
+ <gd name="aA" fmla="+- ptAng cd4 0" />
+ <gd name="aB" fmla="+- ptAng cd2 0" />
+
+ <gd name="idx" fmla="cos rw1 2700000" />
+ <gd name="idy" fmla="sin rh1 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="maxAng">
+ <pos x="xA" y="yA" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
+ <pos x="xE" y="yE" />
+ </ahPolar>
+ <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
+ <pos x="xF" y="yF" />
+ </ahPolar>
+ <ahPolar gdRefR="adj5" minR="0" maxR="25000">
+ <pos x="xB" y="yB" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="aI">
+ <pos x="xI" y="yI" />
+ </cxn>
+ <cxn ang="ptAng">
+ <pos x="xGp" y="yGp" />
+ </cxn>
+ <cxn ang="aA">
+ <pos x="xA" y="yA" />
+ </cxn>
+ <cxn ang="aB">
+ <pos x="xBp" y="yBp" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xE" y="yE" />
+ </moveTo>
+ <arcTo wR="rw1" hR="rh1" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="xGp" y="yGp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xBp" y="yBp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC" y="yC" />
+ </lnTo>
+ <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </circularArrow>
+ <cloud>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="il" fmla="*/ w 2977 21600" />
+ <gd name="it" fmla="*/ h 3262 21600" />
+ <gd name="ir" fmla="*/ w 17087 21600" />
+ <gd name="ib" fmla="*/ h 17337 21600" />
+ <gd name="g27" fmla="*/ w 67 21600" />
+ <gd name="g28" fmla="*/ h 21577 21600" />
+ <gd name="g29" fmla="*/ w 21582 21600" />
+ <gd name="g30" fmla="*/ h 1235 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="g29" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="g28" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="g27" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="g30" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="43200" h="43200">
+ <moveTo>
+ <pt x="3900" y="14370" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-11429249" swAng="7426832" />
+ <arcTo wR="5333" hR="7267" stAng="-8646143" swAng="5396714" />
+ <arcTo wR="4365" hR="5945" stAng="-8748475" swAng="5983381" />
+ <arcTo wR="4857" hR="6595" stAng="-7859164" swAng="7034504" />
+ <arcTo wR="5333" hR="7273" stAng="-4722533" swAng="6541615" />
+ <arcTo wR="6775" hR="9220" stAng="-2776035" swAng="7816140" />
+ <arcTo wR="5785" hR="7867" stAng="37501" swAng="6842000" />
+ <arcTo wR="6752" hR="9215" stAng="1347096" swAng="6910353" />
+ <arcTo wR="7720" hR="10543" stAng="3974558" swAng="4542661" />
+ <arcTo wR="4360" hR="5918" stAng="-16496525" swAng="8804134" />
+ <arcTo wR="4345" hR="5945" stAng="-14809710" swAng="9151131" />
+ <close />
+ </path>
+ <path w="43200" h="43200" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="4693" y="26177" />
+ </moveTo>
+ <arcTo wR="4345" hR="5945" stAng="5204520" swAng="1585770" />
+ <moveTo>
+ <pt x="6928" y="34899" />
+ </moveTo>
+ <arcTo wR="4360" hR="5918" stAng="4416628" swAng="686848" />
+ <moveTo>
+ <pt x="16478" y="39090" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="8257449" swAng="844866" />
+ <moveTo>
+ <pt x="28827" y="34751" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="387196" swAng="959901" />
+ <moveTo>
+ <pt x="34129" y="22954" />
+ </moveTo>
+ <arcTo wR="5785" hR="7867" stAng="-4217541" swAng="4255042" />
+ <moveTo>
+ <pt x="41798" y="15354" />
+ </moveTo>
+ <arcTo wR="5333" hR="7273" stAng="1819082" swAng="1665090" />
+ <moveTo>
+ <pt x="38324" y="5426" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-824660" swAng="891534" />
+ <moveTo>
+ <pt x="29078" y="3952" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-8950887" swAng="1091722" />
+ <moveTo>
+ <pt x="22141" y="4720" />
+ </moveTo>
+ <arcTo wR="4365" hR="5945" stAng="-9809656" swAng="1061181" />
+ <moveTo>
+ <pt x="14000" y="5192" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-4002417" swAng="739161" />
+ <moveTo>
+ <pt x="4127" y="15789" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="9459261" swAng="711490" />
+ </path>
+ </pathLst>
+
+ </cloud>
+ <cloudCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+
+ <gd name="adj2" fmla="val 62500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="ht" fmla="cat2 hd2 dxPos dyPos" />
+ <gd name="wt" fmla="sat2 wd2 dxPos dyPos" />
+ <gd name="g2" fmla="cat2 wd2 ht wt" />
+ <gd name="g3" fmla="sat2 hd2 ht wt" />
+ <gd name="g4" fmla="+- hc g2 0" />
+
+ <gd name="g5" fmla="+- vc g3 0" />
+
+ <gd name="g6" fmla="+- g4 0 xPos" />
+
+ <gd name="g7" fmla="+- g5 0 yPos" />
+
+ <gd name="g8" fmla="mod g6 g7 0" />
+
+ <gd name="g9" fmla="*/ ss 6600 21600" />
+
+ <gd name="g10" fmla="+- g8 0 g9" />
+
+ <gd name="g11" fmla="*/ g10 1 3" />
+
+ <gd name="g12" fmla="*/ ss 1800 21600" />
+
+ <gd name="g13" fmla="+- g11 g12 0" />
+
+ <gd name="g14" fmla="*/ g13 g6 g8" />
+
+ <gd name="g15" fmla="*/ g13 g7 g8" />
+
+ <gd name="g16" fmla="+- g14 xPos 0" />
+
+ <gd name="g17" fmla="+- g15 yPos 0" />
+
+ <gd name="g18" fmla="*/ ss 4800 21600" />
+
+ <gd name="g19" fmla="*/ g11 2 1" />
+
+ <gd name="g20" fmla="+- g18 g19 0" />
+
+ <gd name="g21" fmla="*/ g20 g6 g8" />
+ <gd name="g22" fmla="*/ g20 g7 g8" />
+ <gd name="g23" fmla="+- g21 xPos 0" />
+ <gd name="g24" fmla="+- g22 yPos 0" />
+ <gd name="g25" fmla="*/ ss 1200 21600" />
+ <gd name="g26" fmla="*/ ss 600 21600" />
+
+ <gd name="x23" fmla="+- xPos g26 0" />
+ <gd name="x24" fmla="+- g16 g25 0" />
+ <gd name="x25" fmla="+- g23 g12 0" />
+ <gd name="il" fmla="*/ w 2977 21600" />
+ <gd name="it" fmla="*/ h 3262 21600" />
+ <gd name="ir" fmla="*/ w 17087 21600" />
+ <gd name="ib" fmla="*/ h 17337 21600" />
+
+ <gd name="g27" fmla="*/ w 67 21600" />
+ <gd name="g28" fmla="*/ h 21577 21600" />
+ <gd name="g29" fmla="*/ w 21582 21600" />
+ <gd name="g30" fmla="*/ h 1235 21600" />
+ <gd name="pang" fmla="at2 dxPos dyPos" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="g27" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="g28" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="g29" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="g30" />
+ </cxn>
+ <cxn ang="pang">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="43200" h="43200">
+ <moveTo>
+ <pt x="3900" y="14370" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-11429249" swAng="7426832" />
+ <arcTo wR="5333" hR="7267" stAng="-8646143" swAng="5396714" />
+ <arcTo wR="4365" hR="5945" stAng="-8748475" swAng="5983381" />
+ <arcTo wR="4857" hR="6595" stAng="-7859164" swAng="7034504" />
+ <arcTo wR="5333" hR="7273" stAng="-4722533" swAng="6541615" />
+ <arcTo wR="6775" hR="9220" stAng="-2776035" swAng="7816140" />
+ <arcTo wR="5785" hR="7867" stAng="37501" swAng="6842000" />
+ <arcTo wR="6752" hR="9215" stAng="1347096" swAng="6910353" />
+ <arcTo wR="7720" hR="10543" stAng="3974558" swAng="4542661" />
+ <arcTo wR="4360" hR="5918" stAng="-16496525" swAng="8804134" />
+ <arcTo wR="4345" hR="5945" stAng="-14809710" swAng="9151131" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x23" y="yPos" />
+ </moveTo>
+ <arcTo wR="g26" hR="g26" stAng="0" swAng="21600000" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x24" y="g17" />
+ </moveTo>
+ <arcTo wR="g25" hR="g25" stAng="0" swAng="21600000" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x25" y="g24" />
+ </moveTo>
+ <arcTo wR="g12" hR="g12" stAng="0" swAng="21600000" />
+ <close />
+ </path>
+ <path w="43200" h="43200" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="4693" y="26177" />
+ </moveTo>
+ <arcTo wR="4345" hR="5945" stAng="5204520" swAng="1585770" />
+ <moveTo>
+ <pt x="6928" y="34899" />
+ </moveTo>
+ <arcTo wR="4360" hR="5918" stAng="4416628" swAng="686848" />
+ <moveTo>
+ <pt x="16478" y="39090" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="8257449" swAng="844866" />
+ <moveTo>
+ <pt x="28827" y="34751" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="387196" swAng="959901" />
+ <moveTo>
+ <pt x="34129" y="22954" />
+ </moveTo>
+ <arcTo wR="5785" hR="7867" stAng="-4217541" swAng="4255042" />
+ <moveTo>
+ <pt x="41798" y="15354" />
+ </moveTo>
+ <arcTo wR="5333" hR="7273" stAng="1819082" swAng="1665090" />
+ <moveTo>
+ <pt x="38324" y="5426" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-824660" swAng="891534" />
+ <moveTo>
+ <pt x="29078" y="3952" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-8950887" swAng="1091722" />
+ <moveTo>
+ <pt x="22141" y="4720" />
+ </moveTo>
+ <arcTo wR="4365" hR="5945" stAng="-9809656" swAng="1061181" />
+ <moveTo>
+ <pt x="14000" y="5192" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-4002417" swAng="739161" />
+ <moveTo>
+ <pt x="4127" y="15789" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="9459261" swAng="711490" />
+ </path>
+ </pathLst>
+
+ </cloudCallout>
+ <corner>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj1" fmla="*/ 100000 h ss" />
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x1" fmla="*/ ss a2 100000" />
+ <gd name="dy1" fmla="*/ ss a1 100000" />
+ <gd name="y1" fmla="+- b 0 dy1" />
+ <gd name="cx1" fmla="*/ x1 1 2" />
+ <gd name="cy1" fmla="+/ y1 b 2" />
+ <gd name="d" fmla="+- w 0 h" />
+ <gd name="it" fmla="?: d y1 t" />
+ <gd name="ir" fmla="?: d r x1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="cy1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="cx1" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </corner>
+ <cornerTabs>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="md" fmla="mod w h 0" />
+ <gd name="dx" fmla="*/ 1 md 20" />
+
+ <gd name="y1" fmla="+- 0 b dx" />
+
+ <gd name="x1" fmla="+- 0 r dx" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="dx" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="dx" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="r" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </cornerTabs>
+ <cube>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 100000" />
+ <gd name="y1" fmla="*/ ss a 100000" />
+ <gd name="y4" fmla="+- b 0 y1" />
+ <gd name="y2" fmla="*/ y4 1 2" />
+ <gd name="y3" fmla="+/ y1 b 2" />
+ <gd name="x4" fmla="+- r 0 y1" />
+ <gd name="x2" fmla="*/ x4 1 2" />
+ <gd name="x3" fmla="+/ y1 r 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="y1" r="x4" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lightenLess" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="y1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="y1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </cube>
+ <curvedConnector2>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="wd2" y="t" />
+ <pt x="r" y="hd2" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+ </curvedConnector2>
+ <curvedConnector3>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w adj1 100000" />
+ <gd name="x1" fmla="+/ l x2 2" />
+ <gd name="x3" fmla="+/ r x2 2" />
+ <gd name="y3" fmla="*/ h 3 4" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x2" y="vc" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x1" y="t" />
+ <pt x="x2" y="hd4" />
+ <pt x="x2" y="vc" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x2" y="y3" />
+ <pt x="x3" y="b" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+ </curvedConnector3>
+ <curvedConnector4>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w adj1 100000" />
+ <gd name="x1" fmla="+/ l x2 2" />
+ <gd name="x3" fmla="+/ r x2 2" />
+ <gd name="x4" fmla="+/ x2 x3 2" />
+ <gd name="x5" fmla="+/ x3 r 2" />
+ <gd name="y4" fmla="*/ h adj2 100000" />
+ <gd name="y1" fmla="+/ t y4 2" />
+ <gd name="y2" fmla="+/ t y1 2" />
+ <gd name="y3" fmla="+/ y1 y4 2" />
+ <gd name="y5" fmla="+/ b y4 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y4" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x1" y="t" />
+ <pt x="x2" y="y2" />
+ <pt x="x2" y="y1" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x2" y="y3" />
+ <pt x="x4" y="y4" />
+ <pt x="x3" y="y4" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x5" y="y4" />
+ <pt x="r" y="y5" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+ </curvedConnector4>
+ <curvedConnector5>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 50000" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x3" fmla="*/ w adj1 100000" />
+ <gd name="x6" fmla="*/ w adj3 100000" />
+ <gd name="x1" fmla="+/ x3 x6 2" />
+ <gd name="x2" fmla="+/ l x3 2" />
+ <gd name="x4" fmla="+/ x3 x1 2" />
+ <gd name="x5" fmla="+/ x6 x1 2" />
+ <gd name="x7" fmla="+/ x6 r 2" />
+ <gd name="y4" fmla="*/ h adj2 100000" />
+ <gd name="y1" fmla="+/ t y4 2" />
+ <gd name="y2" fmla="+/ t y1 2" />
+ <gd name="y3" fmla="+/ y1 y4 2" />
+ <gd name="y5" fmla="+/ b y4 2" />
+ <gd name="y6" fmla="+/ y5 y4 2" />
+ <gd name="y7" fmla="+/ y5 b 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x3" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="-2147483647" maxX="2147483647">
+ <pos x="x6" y="y5" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x2" y="t" />
+ <pt x="x3" y="y2" />
+ <pt x="x3" y="y1" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x3" y="y3" />
+ <pt x="x4" y="y4" />
+ <pt x="x1" y="y4" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x5" y="y4" />
+ <pt x="x6" y="y6" />
+ <pt x="x6" y="y5" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x6" y="y7" />
+ <pt x="x7" y="b" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+
+ </curvedConnector5>
+ <curvedDownArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="wR" fmla="+- wd2 0 q1" />
+
+ <gd name="q7" fmla="*/ wR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idy" fmla="*/ q11 h q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idy ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss adj3 100000" />
+
+
+
+
+
+ <gd name="x3" fmla="+- wR th 0" />
+
+ <gd name="q2" fmla="*/ h h 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dx" fmla="*/ q5 wR h" />
+ <gd name="x5" fmla="+- wR dx 0" />
+
+ <gd name="x7" fmla="+- x3 dx 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="x4" fmla="+- x5 0 dh" />
+
+ <gd name="x8" fmla="+- x7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="x6" fmla="+- r 0 aw2" />
+
+ <gd name="y1" fmla="+- b 0 ah" />
+ <gd name="swAng" fmla="at2 ah dx" />
+
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="iy" fmla="+- b 0 idy" />
+
+ <gd name="ix" fmla="+/ wR x3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idy q12" />
+ <gd name="stAng" fmla="+- 3cd4 swAng 0" />
+ <gd name="stAng2" fmla="+- 3cd4 0 dang2" />
+ <gd name="swAng2" fmla="+- dang2 0 cd4" />
+ <gd name="swAng3" fmla="+- cd4 dang2 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="adj2">
+ <pos x="x7" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x4" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="ix" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="q12" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x6" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="y1" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x6" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng" swAng="mswAng" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="3cd4" swAng="swAng" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="ix" y="iy" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="swAng3" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="ix" y="iy" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="3cd4" swAng="swAng" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng" swAng="mswAng" />
+ </path>
+ </pathLst>
+
+ </curvedDownArrow>
+ <curvedLeftArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 a2" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="hR" fmla="+- hd2 0 q1" />
+
+ <gd name="q7" fmla="*/ hR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idx" fmla="*/ q11 w q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idx ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+
+
+
+
+ <gd name="y3" fmla="+- hR th 0" />
+
+ <gd name="q2" fmla="*/ w w 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dy" fmla="*/ q5 hR w" />
+ <gd name="y5" fmla="+- hR dy 0" />
+
+ <gd name="y7" fmla="+- y3 dy 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="y4" fmla="+- y5 0 dh" />
+
+ <gd name="y8" fmla="+- y7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="y6" fmla="+- b 0 aw2" />
+
+ <gd name="x1" fmla="+- l ah 0" />
+ <gd name="swAng" fmla="at2 ah dy" />
+
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="ix" fmla="+- l idx 0" />
+
+ <gd name="iy" fmla="+/ hR y3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idx q12" />
+ <gd name="swAng2" fmla="+- dang2 0 swAng" />
+ <gd name="swAng3" fmla="+- swAng dang2 0" />
+ <gd name="stAng3" fmla="+- 0 0 dang2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="a2">
+ <pos x="x1" y="y5" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="q12" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="cd3">
+ <pos x="l" y="y6" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y8" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="iy" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y6" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="swAng" swAng="swAng2" />
+ <arcTo wR="w" hR="hR" stAng="stAng3" swAng="swAng3" />
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="y3" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="cd4" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="y3" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="0" swAng="swAng" />
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="swAng" swAng="swAng2" />
+ </path>
+ </pathLst>
+
+ </curvedLeftArrow>
+ <curvedRightArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 a2" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="hR" fmla="+- hd2 0 q1" />
+
+ <gd name="q7" fmla="*/ hR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idx" fmla="*/ q11 w q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idx ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+
+
+
+
+ <gd name="y3" fmla="+- hR th 0" />
+
+ <gd name="q2" fmla="*/ w w 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dy" fmla="*/ q5 hR w" />
+ <gd name="y5" fmla="+- hR dy 0" />
+
+ <gd name="y7" fmla="+- y3 dy 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="y4" fmla="+- y5 0 dh" />
+
+ <gd name="y8" fmla="+- y7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="y6" fmla="+- b 0 aw2" />
+
+ <gd name="x1" fmla="+- r 0 ah" />
+ <gd name="swAng" fmla="at2 ah dy" />
+
+ <gd name="stAng" fmla="+- cd2 0 swAng" />
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="ix" fmla="+- r 0 idx" />
+
+ <gd name="iy" fmla="+/ hR y3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idx q12" />
+ <gd name="swAng2" fmla="+- dang2 0 cd4" />
+ <gd name="swAng3" fmla="+- cd4 dang2 0" />
+ <gd name="stAng3" fmla="+- cd2 0 dang2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="a2">
+ <pos x="x1" y="y5" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="iy" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y8" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y6" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="q12" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="hR" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="cd2" swAng="mswAng" />
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y7" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="stAng" swAng="swAng" />
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="th" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="swAng2" />
+ <arcTo wR="w" hR="hR" stAng="stAng3" swAng="swAng3" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="hR" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="cd2" swAng="mswAng" />
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y7" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="l" y="hR" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="th" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="swAng2" />
+ </path>
+ </pathLst>
+
+ </curvedRightArrow>
+ <curvedUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="wR" fmla="+- wd2 0 q1" />
+
+ <gd name="q7" fmla="*/ wR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idy" fmla="*/ q11 h q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idy ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss adj3 100000" />
+
+
+
+
+
+ <gd name="x3" fmla="+- wR th 0" />
+
+ <gd name="q2" fmla="*/ h h 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dx" fmla="*/ q5 wR h" />
+ <gd name="x5" fmla="+- wR dx 0" />
+
+ <gd name="x7" fmla="+- x3 dx 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="x4" fmla="+- x5 0 dh" />
+
+ <gd name="x8" fmla="+- x7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="x6" fmla="+- r 0 aw2" />
+
+ <gd name="y1" fmla="+- t ah 0" />
+ <gd name="swAng" fmla="at2 ah dx" />
+
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="iy" fmla="+- t idy 0" />
+
+ <gd name="ix" fmla="+/ wR x3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idy q12" />
+ <gd name="swAng2" fmla="+- dang2 0 swAng" />
+ <gd name="mswAng2" fmla="+- 0 0 swAng2" />
+ <gd name="stAng3" fmla="+- cd4 0 swAng" />
+ <gd name="swAng3" fmla="+- swAng dang2 0" />
+ <gd name="stAng2" fmla="+- cd4 0 dang2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="a2">
+ <pos x="x7" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x4" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x6" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="q12" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ix" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="y1" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x6" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng3" swAng="swAng3" />
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="wR" y="b" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="th" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="-5400000" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="ix" y="iy" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng3" swAng="swAng" />
+ <lnTo>
+ <pt x="wR" y="b" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="th" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="-5400000" />
+ </path>
+ </pathLst>
+
+ </curvedUpArrow>
+ <decagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="vf" fmla="val 105146" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="dx1" fmla="cos wd2 2160000" />
+ <gd name="dx2" fmla="cos wd2 4320000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="sin shd2 4320000" />
+ <gd name="dy2" fmla="sin shd2 2160000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y2" r="x4" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </decagon>
+ <diagStripe>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 100000" />
+ <gd name="x2" fmla="*/ w a 100000" />
+ <gd name="x1" fmla="*/ x2 1 2" />
+ <gd name="x3" fmla="+/ x2 r 2" />
+ <gd name="y2" fmla="*/ h a 100000" />
+ <gd name="y1" fmla="*/ y2 1 2" />
+ <gd name="y3" fmla="+/ y2 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="100000">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="hc" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="x3" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </diagStripe>
+ <diamond>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </diamond>
+ <dodecagon>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w 2894 21600" />
+ <gd name="x2" fmla="*/ w 7906 21600" />
+ <gd name="x3" fmla="*/ w 13694 21600" />
+ <gd name="x4" fmla="*/ w 18706 21600" />
+ <gd name="y1" fmla="*/ h 2894 21600" />
+ <gd name="y2" fmla="*/ h 7906 21600" />
+ <gd name="y3" fmla="*/ h 13694 21600" />
+ <gd name="y4" fmla="*/ h 18706 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x4" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </dodecagon>
+ <donut>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dr" fmla="*/ ss a 100000" />
+ <gd name="iwd2" fmla="+- wd2 0 dr" />
+ <gd name="ihd2" fmla="+- hd2 0 dr" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefR="adj" minR="0" maxR="50000">
+ <pos x="dr" y="vc" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ <moveTo>
+ <pt x="dr" y="vc" />
+ </moveTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="iwd2" hR="ihd2" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="iwd2" hR="ihd2" stAng="0" swAng="-5400000" />
+ <arcTo wR="iwd2" hR="ihd2" stAng="3cd4" swAng="-5400000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </donut>
+ <doubleWave>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 6250" />
+
+ <gd name="adj2" fmla="val 0" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 12500" />
+ <gd name="a2" fmla="pin -10000 adj2 10000" />
+ <gd name="y1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ y1 10 3" />
+ <gd name="y2" fmla="+- y1 0 dy2" />
+
+ <gd name="y3" fmla="+- y1 dy2 0" />
+
+ <gd name="y4" fmla="+- b 0 y1" />
+
+ <gd name="y5" fmla="+- y4 0 dy2" />
+
+ <gd name="y6" fmla="+- y4 dy2 0" />
+
+ <gd name="dx1" fmla="*/ w a2 100000" />
+
+ <gd name="of2" fmla="*/ w a2 50000" />
+
+ <gd name="x1" fmla="abs dx1" />
+
+ <gd name="dx2" fmla="?: of2 0 of2" />
+ <gd name="x2" fmla="+- l 0 dx2" />
+
+ <gd name="dx8" fmla="?: of2 of2 0" />
+ <gd name="x8" fmla="+- r 0 dx8" />
+
+ <gd name="dx3" fmla="+/ dx2 x8 6" />
+ <gd name="x3" fmla="+- x2 dx3 0" />
+
+ <gd name="dx4" fmla="+/ dx2 x8 3" />
+ <gd name="x4" fmla="+- x2 dx4 0" />
+
+ <gd name="x5" fmla="+/ x2 x8 2" />
+
+ <gd name="x6" fmla="+- x5 dx3 0" />
+
+ <gd name="x7" fmla="+/ x6 x8 2" />
+
+ <gd name="x9" fmla="+- l dx8 0" />
+
+ <gd name="x15" fmla="+- r dx2 0" />
+
+ <gd name="x10" fmla="+- x9 dx3 0" />
+
+ <gd name="x11" fmla="+- x9 dx4 0" />
+
+ <gd name="x12" fmla="+/ x9 x15 2" />
+
+ <gd name="x13" fmla="+- x12 dx3 0" />
+
+ <gd name="x14" fmla="+/ x13 x15 2" />
+
+ <gd name="x16" fmla="+- r 0 x1" />
+
+ <gd name="xAdj" fmla="+- hc dx1 0" />
+ <gd name="il" fmla="max x2 x9" />
+ <gd name="ir" fmla="min x8 x15" />
+ <gd name="it" fmla="*/ h a1 50000" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="12500">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="-10000" maxX="10000">
+ <pos x="xAdj" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="x12" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x5" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x16" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x2" y="y1" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x3" y="y2" />
+ <pt x="x4" y="y3" />
+ <pt x="x5" y="y1" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x6" y="y2" />
+ <pt x="x7" y="y3" />
+ <pt x="x8" y="y1" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="x15" y="y4" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="x14" y="y6" />
+ <pt x="x13" y="y5" />
+ <pt x="x12" y="y4" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x11" y="y6" />
+ <pt x="x10" y="y5" />
+ <pt x="x9" y="y4" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </doubleWave>
+ <downArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+ <gd name="y1" fmla="+- b 0 dy1" />
+ <gd name="dx1" fmla="*/ w a1 200000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy2" fmla="*/ x1 dy1 wd2" />
+ <gd name="y2" fmla="+- y1 dy2 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="100000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="t" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </downArrow>
+ <downArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss h" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="dy3" fmla="*/ ss a3 100000" />
+
+ <gd name="y3" fmla="+- b 0 dy3" />
+ <gd name="y2" fmla="*/ h a4 100000" />
+
+ <gd name="y1" fmla="*/ y2 1 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x2" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </downArrowCallout>
+ <ellipse>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+ </ellipse>
+ <ellipseRibbon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+ <gd name="q10" fmla="+- 100000 0 a1" />
+ <gd name="q11" fmla="*/ q10 1 2" />
+ <gd name="q12" fmla="+- a1 0 q11" />
+ <gd name="minAdj3" fmla="max 0 q12" />
+ <gd name="a3" fmla="pin minAdj3 adj3 a1" />
+
+
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- x2 wd8 0" />
+
+ <gd name="x4" fmla="+- r 0 x3" />
+
+ <gd name="x5" fmla="+- r 0 x2" />
+
+ <gd name="x6" fmla="+- r 0 wd8" />
+
+ <gd name="dy1" fmla="*/ h a3 100000" />
+
+ <gd name="f1" fmla="*/ 4 dy1 w" />
+
+ <gd name="q1" fmla="*/ x3 x3 w" />
+ <gd name="q2" fmla="+- x3 0 q1" />
+ <gd name="y1" fmla="*/ f1 q2 1" />
+
+ <gd name="cx1" fmla="*/ x3 1 2" />
+
+ <gd name="cy1" fmla="*/ f1 cx1 1" />
+
+ <gd name="cx2" fmla="+- r 0 cx1" />
+
+
+
+ <gd name="q1" fmla="*/ h a1 100000" />
+
+ <gd name="dy3" fmla="+- q1 0 dy1" />
+
+ <gd name="q3" fmla="*/ x2 x2 w" />
+ <gd name="q4" fmla="+- x2 0 q3" />
+ <gd name="q5" fmla="*/ f1 q4 1" />
+ <gd name="y3" fmla="+- q5 dy3 0" />
+
+
+
+ <gd name="q6" fmla="+- dy1 dy3 y3" />
+ <gd name="q7" fmla="+- q6 dy1 0" />
+ <gd name="cy3" fmla="+- q7 dy3 0" />
+
+ <gd name="rh" fmla="+- b 0 q1" />
+
+ <gd name="q8" fmla="*/ dy1 14 16" />
+ <gd name="y2" fmla="+/ q8 rh 2" />
+
+
+ <gd name="y5" fmla="+- q5 rh 0" />
+
+ <gd name="y6" fmla="+- y3 rh 0" />
+
+ <gd name="cx4" fmla="*/ x2 1 2" />
+
+ <gd name="q9" fmla="*/ f1 cx4 1" />
+ <gd name="cy4" fmla="+- q9 rh 0" />
+
+ <gd name="cx5" fmla="+- r 0 cx4" />
+
+
+
+
+
+ <gd name="cy6" fmla="+- cy3 rh 0" />
+
+ <gd name="y7" fmla="+- y1 dy3 0" />
+ <gd name="cy7" fmla="+- q1 q1 y7" />
+ <gd name="y8" fmla="+- b 0 dy1" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="hc" y="q1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="75000">
+ <pos x="x2" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="minAdj3" maxY="a1">
+ <pos x="l" y="y8" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="q1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="q1" r="x5" b="y6" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="x3" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="r" y="t" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="rh" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="x5" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x2" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="l" y="rh" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x3" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy7" />
+ <pt x="x3" y="y7" />
+ </quadBezTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="x3" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="r" y="t" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="rh" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="x5" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x2" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="l" y="rh" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x2" y="y5" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <moveTo>
+ <pt x="x5" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y7" />
+ </lnTo>
+ <moveTo>
+ <pt x="x4" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ellipseRibbon>
+ <ellipseRibbon2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+ <gd name="q10" fmla="+- 100000 0 a1" />
+ <gd name="q11" fmla="*/ q10 1 2" />
+ <gd name="q12" fmla="+- a1 0 q11" />
+ <gd name="minAdj3" fmla="max 0 q12" />
+ <gd name="a3" fmla="pin minAdj3 adj3 a1" />
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- x2 wd8 0" />
+
+ <gd name="x4" fmla="+- r 0 x3" />
+
+ <gd name="x5" fmla="+- r 0 x2" />
+
+ <gd name="x6" fmla="+- r 0 wd8" />
+
+ <gd name="dy1" fmla="*/ h a3 100000" />
+
+ <gd name="f1" fmla="*/ 4 dy1 w" />
+
+ <gd name="q1" fmla="*/ x3 x3 w" />
+ <gd name="q2" fmla="+- x3 0 q1" />
+ <gd name="u1" fmla="*/ f1 q2 1" />
+
+ <gd name="y1" fmla="+- b 0 u1" />
+ <gd name="cx1" fmla="*/ x3 1 2" />
+
+ <gd name="cu1" fmla="*/ f1 cx1 1" />
+
+ <gd name="cy1" fmla="+- b 0 cu1" />
+ <gd name="cx2" fmla="+- r 0 cx1" />
+
+
+
+ <gd name="q1" fmla="*/ h a1 100000" />
+
+ <gd name="dy3" fmla="+- q1 0 dy1" />
+
+ <gd name="q3" fmla="*/ x2 x2 w" />
+ <gd name="q4" fmla="+- x2 0 q3" />
+ <gd name="q5" fmla="*/ f1 q4 1" />
+ <gd name="u3" fmla="+- q5 dy3 0" />
+
+ <gd name="y3" fmla="+- b 0 u3" />
+
+
+ <gd name="q6" fmla="+- dy1 dy3 u3" />
+ <gd name="q7" fmla="+- q6 dy1 0" />
+ <gd name="cu3" fmla="+- q7 dy3 0" />
+
+ <gd name="cy3" fmla="+- b 0 cu3" />
+ <gd name="rh" fmla="+- b 0 q1" />
+
+ <gd name="q8" fmla="*/ dy1 14 16" />
+ <gd name="u2" fmla="+/ q8 rh 2" />
+
+ <gd name="y2" fmla="+- b 0 u2" />
+
+ <gd name="u5" fmla="+- q5 rh 0" />
+
+ <gd name="y5" fmla="+- b 0 u5" />
+ <gd name="u6" fmla="+- u3 rh 0" />
+
+ <gd name="y6" fmla="+- b 0 u6" />
+ <gd name="cx4" fmla="*/ x2 1 2" />
+
+ <gd name="q9" fmla="*/ f1 cx4 1" />
+ <gd name="cu4" fmla="+- q9 rh 0" />
+
+ <gd name="cy4" fmla="+- b 0 cu4" />
+ <gd name="cx5" fmla="+- r 0 cx4" />
+
+
+
+
+
+ <gd name="cu6" fmla="+- cu3 rh 0" />
+
+ <gd name="cy6" fmla="+- b 0 cu6" />
+ <gd name="u7" fmla="+- u1 dy3 0" />
+ <gd name="y7" fmla="+- b 0 u7" />
+ <gd name="cu7" fmla="+- q1 q1 u7" />
+ <gd name="cy7" fmla="+- b 0 cu7" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="hc" y="rh" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="100000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="minAdj3" maxY="a1">
+ <pos x="l" y="dy1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="rh" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y6" r="x5" b="rh" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="x3" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="r" y="b" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="q1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="x5" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x2" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="l" y="q1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x3" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy7" />
+ <pt x="x3" y="y7" />
+ </quadBezTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="q1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="x2" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x5" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="r" y="q1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="x4" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x2" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="l" y="b" />
+ </quadBezTo>
+ <close />
+ <moveTo>
+ <pt x="x2" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <moveTo>
+ <pt x="x5" y="y5" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y3" />
+ </lnTo>
+ <moveTo>
+ <pt x="x3" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ellipseRibbon2>
+ <flowChartAlternateProcess>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="+- r 0 ssd6" />
+ <gd name="y2" fmla="+- b 0 ssd6" />
+ <gd name="il" fmla="*/ ssd6 29289 100000" />
+
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="ssd6" />
+ </moveTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="ssd6" y="b" />
+ </lnTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartAlternateProcess>
+ <flowChartCollate>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="2" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="2" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartCollate>
+ <flowChartConnector>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartConnector>
+ <flowChartDecision>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDecision>
+ <flowChartDelay>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDelay>
+ <flowChartDisplay>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 5 6" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="6" h="6">
+ <moveTo>
+ <pt x="0" y="3" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDisplay>
+ <flowChartDocument>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h 17322 21600" />
+ <gd name="y2" fmla="*/ h 20172 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="17322" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="10800" y="17322" />
+ <pt x="10800" y="23922" />
+ <pt x="0" y="20172" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDocument>
+ <flowChartExtract>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 3 4" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="vc" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="2" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartExtract>
+ <flowChartInputOutput>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x3" fmla="*/ w 2 5" />
+ <gd name="x4" fmla="*/ w 3 5" />
+ <gd name="x5" fmla="*/ w 4 5" />
+ <gd name="x6" fmla="*/ w 9 10" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd10" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd5" t="t" r="x5" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="5" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="4" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartInputOutput>
+ <flowChartInternalStorage>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd8" t="hd8" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="8" h="8">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="8" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="8" y="1" />
+ </lnTo>
+ </path>
+ <path fill="none" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartInternalStorage>
+ <flowChartMagneticDisk>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y3" fmla="*/ h 5 6" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd3" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <arcTo wR="3" hR="1" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="6" y="5" />
+ </lnTo>
+ <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="6" y="1" />
+ </moveTo>
+ <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
+ </path>
+ <path fill="none" w="6" h="6">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <arcTo wR="3" hR="1" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="6" y="5" />
+ </lnTo>
+ <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMagneticDisk>
+ <flowChartMagneticDrum>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 2 3" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="5" y="6" />
+ </moveTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ </path>
+ <path fill="none" w="6" h="6">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMagneticDrum>
+ <flowChartMagneticTape>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="ang1" fmla="at2 w h" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="hc" y="b" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="ang1" />
+ <lnTo>
+ <pt x="r" y="ib" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMagneticTape>
+ <flowChartManualInput>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd10" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd5" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartManualInput>
+ <flowChartManualOperation>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x3" fmla="*/ w 4 5" />
+ <gd name="x4" fmla="*/ w 9 10" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd10" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd5" t="t" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="4" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartManualOperation>
+ <flowChartMerge>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="t" r="x2" b="vc" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMerge>
+ <flowChartMultidocument>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y2" fmla="*/ h 3675 21600" />
+ <gd name="y8" fmla="*/ h 20782 21600" />
+ <gd name="x3" fmla="*/ w 9298 21600" />
+ <gd name="x4" fmla="*/ w 12286 21600" />
+ <gd name="x5" fmla="*/ w 18595 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y8" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="x5" b="y8" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="21600" h="21600">
+
+ <moveTo>
+ <pt x="0" y="20782" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="9298" y="23542" />
+ <pt x="9298" y="18022" />
+ <pt x="18595" y="18022" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="18595" y="3675" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="3675" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="1532" y="3675" />
+ </moveTo>
+ <lnTo>
+ <pt x="1532" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="16252" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="19298" y="16252" />
+ <pt x="18595" y="16352" />
+ <pt x="18595" y="16352" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="18595" y="3675" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="2972" y="1815" />
+ </moveTo>
+ <lnTo>
+ <pt x="2972" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="14392" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="20800" y="14392" />
+ <pt x="20000" y="14467" />
+ <pt x="20000" y="14467" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="20000" y="1815" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="21600" h="21600">
+
+ <moveTo>
+ <pt x="0" y="3675" />
+ </moveTo>
+ <lnTo>
+ <pt x="18595" y="3675" />
+ </lnTo>
+ <lnTo>
+ <pt x="18595" y="18022" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="9298" y="18022" />
+ <pt x="9298" y="23542" />
+ <pt x="0" y="20782" />
+ </cubicBezTo>
+ <close />
+ <moveTo>
+ <pt x="1532" y="3675" />
+ </moveTo>
+ <lnTo>
+ <pt x="1532" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="16252" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="19298" y="16252" />
+ <pt x="18595" y="16352" />
+ <pt x="18595" y="16352" />
+ </cubicBezTo>
+ <moveTo>
+ <pt x="2972" y="1815" />
+ </moveTo>
+ <lnTo>
+ <pt x="2972" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="14392" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="20800" y="14392" />
+ <pt x="20000" y="14467" />
+ <pt x="20000" y="14467" />
+ </cubicBezTo>
+ </path>
+ <path stroke="false" fill="none" w="21600" h="21600">
+
+ <moveTo>
+ <pt x="0" y="20782" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="9298" y="23542" />
+ <pt x="9298" y="18022" />
+ <pt x="18595" y="18022" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="18595" y="16352" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="18595" y="16352" />
+ <pt x="19298" y="16252" />
+ <pt x="20000" y="16252" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="20000" y="14467" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="20000" y="14467" />
+ <pt x="20800" y="14392" />
+ <pt x="21600" y="14392" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2972" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2972" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="1532" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="1532" y="3675" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="3675" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMultidocument>
+ <flowChartOfflineStorage>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x4" fmla="*/ w 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd4" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="t" r="x4" b="vc" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="5" h="5">
+
+ <moveTo>
+ <pt x="2" y="4" />
+ </moveTo>
+ <lnTo>
+ <pt x="3" y="4" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="true" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOfflineStorage>
+ <flowChartOffpageConnector>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h 4 5" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="8" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="8" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOffpageConnector>
+ <flowChartOnlineStorage>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 5 6" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="6" h="6">
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="6" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOnlineStorage>
+ <flowChartOr>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="hc" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOr>
+ <flowChartPredefinedProcess>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 7 8" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd8" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="8" h="8">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="8" />
+ </lnTo>
+ <moveTo>
+ <pt x="7" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="7" y="8" />
+ </lnTo>
+ </path>
+ <path fill="none" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPredefinedProcess>
+ <flowChartPreparation>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 4 5" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd5" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10">
+ <moveTo>
+ <pt x="0" y="5" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="8" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="8" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="10" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPreparation>
+ <flowChartProcess>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="1" h="1">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartProcess>
+ <flowChartPunchedCard>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd5" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPunchedCard>
+ <flowChartPunchedTape>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y2" fmla="*/ h 9 10" />
+ <gd name="ib" fmla="*/ h 4 5" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd10" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd5" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="20" h="20">
+ <moveTo>
+ <pt x="0" y="2" />
+ </moveTo>
+ <arcTo wR="5" hR="2" stAng="cd2" swAng="-10800000" />
+ <arcTo wR="5" hR="2" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="20" y="18" />
+ </lnTo>
+ <arcTo wR="5" hR="2" stAng="0" swAng="-10800000" />
+ <arcTo wR="5" hR="2" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPunchedTape>
+ <flowChartSort>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ </path>
+ <path fill="none" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartSort>
+ <flowChartSummingJunction>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="il" y="it" />
+ </moveTo>
+ <lnTo>
+ <pt x="ir" y="ib" />
+ </lnTo>
+ <moveTo>
+ <pt x="ir" y="it" />
+ </moveTo>
+ <lnTo>
+ <pt x="il" y="ib" />
+ </lnTo>
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartSummingJunction>
+ <flowChartTerminator>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="il" fmla="*/ w 1018 21600" />
+ <gd name="ir" fmla="*/ w 20582 21600" />
+ <gd name="it" fmla="*/ h 3163 21600" />
+ <gd name="ib" fmla="*/ h 18437 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="3475" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="18125" y="0" />
+ </lnTo>
+ <arcTo wR="3475" hR="10800" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="3475" y="21600" />
+ </lnTo>
+ <arcTo wR="3475" hR="10800" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartTerminator>
+ <foldedCorner>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dy2" fmla="*/ ss a 100000" />
+ <gd name="dy1" fmla="*/ dy2 1 5" />
+ <gd name="x1" fmla="+- r 0 dy2" />
+ <gd name="x2" fmla="+- x1 dy1 0" />
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y1" fmla="+- y2 dy1 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </foldedCorner>
+ <frame>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="x1" fmla="*/ ss a1 100000" />
+
+ <gd name="x4" fmla="+- r 0 x1" />
+
+
+
+ <gd name="y4" fmla="+- b 0 x1" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="x1" r="x4" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x1" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="x1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </frame>
+ <funnel>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="d" fmla="*/ ss 1 20" />
+
+
+ <gd name="rw2" fmla="+- wd2 0 d" />
+
+ <gd name="rh2" fmla="+- hd4 0 d" />
+
+
+
+ <gd name="t1" fmla="cos wd2 480000" />
+
+ <gd name="t2" fmla="sin hd4 480000" />
+
+ <gd name="da" fmla="at2 t1 t2" />
+
+
+ <gd name="2da" fmla="*/ da 2 1" />
+ <gd name="stAng1" fmla="+- cd2 0 da" />
+ <gd name="swAng1" fmla="+- cd2 2da 0" />
+
+
+ <gd name="swAng3" fmla="+- cd2 0 2da" />
+
+
+ <gd name="rw3" fmla="*/ wd2 1 4" />
+ <gd name="rh3" fmla="*/ hd4 1 4" />
+
+
+ <gd name="ct1" fmla="cos hd4 stAng1" />
+ <gd name="st1" fmla="sin wd2 stAng1" />
+ <gd name="m1" fmla="mod ct1 st1 0" />
+ <gd name="n1" fmla="*/ wd2 hd4 m1" />
+ <gd name="dx1" fmla="cos n1 stAng1" />
+ <gd name="dy1" fmla="sin n1 stAng1" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- hd4 dy1 0" />
+
+
+ <gd name="ct3" fmla="cos rh3 da" />
+ <gd name="st3" fmla="sin rw3 da" />
+ <gd name="m3" fmla="mod ct3 st3 0" />
+ <gd name="n3" fmla="*/ rw3 rh3 m3" />
+ <gd name="dx3" fmla="cos n3 da" />
+ <gd name="dy3" fmla="sin n3 da" />
+ <gd name="x3" fmla="+- hc dx3 0" />
+ <gd name="vc3" fmla="+- b 0 rh3" />
+ <gd name="y2" fmla="+- vc3 dy3 0" />
+
+
+ <gd name="x2" fmla="+- wd2 0 rw2" />
+
+ <gd name="cd" fmla="*/ cd2 2 1" />
+ </gdLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo hR="hd4" wR="wd2" stAng="stAng1" swAng="swAng1" />
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <arcTo hR="rh3" wR="rw3" stAng="da" swAng="swAng3" />
+ <close />
+ <moveTo>
+ <pt x="x2" y="hd4" />
+ </moveTo>
+ <arcTo hR="rh2" wR="rw2" stAng="cd2" swAng="-21600000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </funnel>
+ <gear6>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 15000" />
+
+ <gd name="adj2" fmla="val 3526" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+
+
+ <gd name="a1" fmla="pin 0 adj1 20000" />
+ <gd name="a2" fmla="pin 0 adj2 5358" />
+
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+ <gd name="lFD" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="l2" fmla="*/ lFD 1 2" />
+ <gd name="l3" fmla="+- th2 l2 0" />
+
+
+ <gd name="rh" fmla="+- hd2 0 th" />
+ <gd name="rw" fmla="+- wd2 0 th" />
+
+
+ <gd name="dr" fmla="+- rw 0 rh" />
+ <gd name="maxr" fmla="?: dr rh rw" />
+ <gd name="ha" fmla="at2 maxr l3" />
+
+
+ <gd name="aA1" fmla="+- 19800000 0 ha" />
+ <gd name="aD1" fmla="+- 19800000 ha 0" />
+
+
+ <gd name="ta11" fmla="cos rw aA1" />
+ <gd name="ta12" fmla="sin rh aA1" />
+ <gd name="bA1" fmla="at2 ta11 ta12" />
+
+ <gd name="cta1" fmla="cos rh bA1" />
+ <gd name="sta1" fmla="sin rw bA1" />
+ <gd name="ma1" fmla="mod cta1 sta1 0" />
+ <gd name="na1" fmla="*/ rw rh ma1" />
+ <gd name="dxa1" fmla="cos na1 bA1" />
+ <gd name="dya1" fmla="sin na1 bA1" />
+ <gd name="xA1" fmla="+- hc dxa1 0" />
+ <gd name="yA1" fmla="+- vc dya1 0" />
+
+
+ <gd name="td11" fmla="cos rw aD1" />
+ <gd name="td12" fmla="sin rh aD1" />
+ <gd name="bD1" fmla="at2 td11 td12" />
+
+ <gd name="ctd1" fmla="cos rh bD1" />
+ <gd name="std1" fmla="sin rw bD1" />
+ <gd name="md1" fmla="mod ctd1 std1 0" />
+ <gd name="nd1" fmla="*/ rw rh md1" />
+ <gd name="dxd1" fmla="cos nd1 bD1" />
+ <gd name="dyd1" fmla="sin nd1 bD1" />
+ <gd name="xD1" fmla="+- hc dxd1 0" />
+ <gd name="yD1" fmla="+- vc dyd1 0" />
+
+
+ <gd name="xAD1" fmla="+- xA1 0 xD1" />
+ <gd name="yAD1" fmla="+- yA1 0 yD1" />
+ <gd name="lAD1" fmla="mod xAD1 yAD1 0" />
+ <gd name="a1" fmla="at2 yAD1 xAD1" />
+
+
+ <gd name="dxF1" fmla="sin lFD a1" />
+ <gd name="dyF1" fmla="cos lFD a1" />
+ <gd name="xF1" fmla="+- xD1 dxF1 0" />
+ <gd name="yF1" fmla="+- yD1 dyF1 0" />
+ <gd name="xE1" fmla="+- xA1 0 dxF1" />
+ <gd name="yE1" fmla="+- yA1 0 dyF1" />
+
+
+ <gd name="yC1t" fmla="sin th a1" />
+ <gd name="xC1t" fmla="cos th a1" />
+ <gd name="yC1" fmla="+- yF1 yC1t 0" />
+ <gd name="xC1" fmla="+- xF1 0 xC1t" />
+
+
+ <gd name="yB1" fmla="+- yE1 yC1t 0" />
+ <gd name="xB1" fmla="+- xE1 0 xC1t" />
+
+
+ <gd name="aD6" fmla="+- 3cd4 ha 0" />
+
+
+ <gd name="td61" fmla="cos rw aD6" />
+ <gd name="td62" fmla="sin rh aD6" />
+ <gd name="bD6" fmla="at2 td61 td62" />
+
+ <gd name="ctd6" fmla="cos rh bD6" />
+ <gd name="std6" fmla="sin rw bD6" />
+ <gd name="md6" fmla="mod ctd6 std6 0" />
+ <gd name="nd6" fmla="*/ rw rh md6" />
+ <gd name="dxd6" fmla="cos nd6 bD6" />
+ <gd name="dyd6" fmla="sin nd6 bD6" />
+ <gd name="xD6" fmla="+- hc dxd6 0" />
+ <gd name="yD6" fmla="+- vc dyd6 0" />
+
+
+ <gd name="xA6" fmla="+- hc 0 dxd6" />
+
+
+ <gd name="xF6" fmla="+- xD6 0 lFD" />
+ <gd name="xE6" fmla="+- xA6 lFD 0" />
+
+
+ <gd name="yC6" fmla="+- yD6 0 th" />
+
+ <gd name="swAng1" fmla="+- bA1 0 bD6" />
+
+
+ <gd name="aA2" fmla="+- 1800000 0 ha" />
+ <gd name="aD2" fmla="+- 1800000 ha 0" />
+
+
+ <gd name="ta21" fmla="cos rw aA2" />
+ <gd name="ta22" fmla="sin rh aA2" />
+ <gd name="bA2" fmla="at2 ta21 ta22" />
+
+ <gd name="yA2" fmla="+- h 0 yD1" />
+
+
+ <gd name="td21" fmla="cos rw aD2" />
+ <gd name="td22" fmla="sin rh aD2" />
+ <gd name="bD2" fmla="at2 td21 td22" />
+
+ <gd name="yD2" fmla="+- h 0 yA1" />
+
+
+ <gd name="yC2" fmla="+- h 0 yB1" />
+
+
+ <gd name="yB2" fmla="+- h 0 yC1" />
+ <gd name="xB2" fmla="val xC1" />
+
+ <gd name="swAng2" fmla="+- bA2 0 bD1" />
+
+
+ <gd name="aD3" fmla="+- cd4 ha 0" />
+
+ <gd name="td31" fmla="cos rw aD3" />
+ <gd name="td32" fmla="sin rh aD3" />
+ <gd name="bD3" fmla="at2 td31 td32" />
+
+
+ <gd name="yD3" fmla="+- h 0 yD6" />
+
+
+ <gd name="yB3" fmla="+- h 0 yC6" />
+
+
+ <gd name="aD4" fmla="+- 9000000 ha 0" />
+
+ <gd name="td41" fmla="cos rw aD4" />
+ <gd name="td42" fmla="sin rh aD4" />
+ <gd name="bD4" fmla="at2 td41 td42" />
+
+
+ <gd name="xD4" fmla="+- w 0 xD1" />
+
+
+ <gd name="xC4" fmla="+- w 0 xC1" />
+
+
+ <gd name="xB4" fmla="+- w 0 xB1" />
+
+
+ <gd name="aD5" fmla="+- 12600000 ha 0" />
+
+ <gd name="td51" fmla="cos rw aD5" />
+ <gd name="td52" fmla="sin rh aD5" />
+ <gd name="bD5" fmla="at2 td51 td52" />
+
+
+ <gd name="xD5" fmla="+- w 0 xA1" />
+
+
+ <gd name="xC5" fmla="+- w 0 xB1" />
+
+
+ <gd name="xB5" fmla="+- w 0 xC1" />
+
+
+ <gd name="xCxn1" fmla="+/ xB1 xC1 2" />
+ <gd name="yCxn1" fmla="+/ yB1 yC1 2" />
+ <gd name="yCxn2" fmla="+- b 0 yCxn1" />
+ <gd name="xCxn4" fmla="+/ r 0 xCxn1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="20000">
+ <pos x="xD6" y="yD6" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="5358">
+ <pos x="xA6" y="yD6" />
+ </ahXY>
+
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="19800000">
+ <pos x="xCxn1" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="1800000">
+ <pos x="xCxn1" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="cd4">
+ <pos x="hc" y="yB3" />
+ </cxn>
+
+ <cxn ang="9000000">
+ <pos x="xCxn4" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="12600000">
+ <pos x="xCxn4" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="3cd4">
+ <pos x="hc" y="yC6" />
+ </cxn>
+
+ </cxnLst>
+
+ <rect l="xD5" t="yA1" r="xA1" b="yD2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xA1" y="yA1" />
+ </moveTo>
+ <lnTo>
+ <pt x="xB1" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC1" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD1" y="yD1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD1" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xC1" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xB1" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA1" y="yD2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD2" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xF6" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE6" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA6" y="yD3" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD3" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xB4" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC4" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD4" y="yA2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD4" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xB5" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC5" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD5" y="yA1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD5" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xE6" y="yC6" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF6" y="yC6" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD6" y="yD6" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD6" swAng="swAng1" />
+ <close />
+ </path>
+ </pathLst>
+
+ </gear6>
+ <gear9>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 10000" />
+
+ <gd name="adj2" fmla="val 1763" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+
+
+ <gd name="a1" fmla="pin 0 adj1 20000" />
+ <gd name="a2" fmla="pin 0 adj2 2679" />
+
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+ <gd name="lFD" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="l2" fmla="*/ lFD 1 2" />
+ <gd name="l3" fmla="+- th2 l2 0" />
+
+
+ <gd name="rh" fmla="+- hd2 0 th" />
+ <gd name="rw" fmla="+- wd2 0 th" />
+
+
+ <gd name="dr" fmla="+- rw 0 rh" />
+ <gd name="maxr" fmla="?: dr rh rw" />
+ <gd name="ha" fmla="at2 maxr l3" />
+
+
+ <gd name="aA1" fmla="+- 18600000 0 ha" />
+ <gd name="aD1" fmla="+- 18600000 ha 0" />
+
+
+ <gd name="ta11" fmla="cos rw aA1" />
+ <gd name="ta12" fmla="sin rh aA1" />
+ <gd name="bA1" fmla="at2 ta11 ta12" />
+
+ <gd name="cta1" fmla="cos rh bA1" />
+ <gd name="sta1" fmla="sin rw bA1" />
+ <gd name="ma1" fmla="mod cta1 sta1 0" />
+ <gd name="na1" fmla="*/ rw rh ma1" />
+ <gd name="dxa1" fmla="cos na1 bA1" />
+ <gd name="dya1" fmla="sin na1 bA1" />
+ <gd name="xA1" fmla="+- hc dxa1 0" />
+ <gd name="yA1" fmla="+- vc dya1 0" />
+
+
+ <gd name="td11" fmla="cos rw aD1" />
+ <gd name="td12" fmla="sin rh aD1" />
+ <gd name="bD1" fmla="at2 td11 td12" />
+
+ <gd name="ctd1" fmla="cos rh bD1" />
+ <gd name="std1" fmla="sin rw bD1" />
+ <gd name="md1" fmla="mod ctd1 std1 0" />
+ <gd name="nd1" fmla="*/ rw rh md1" />
+ <gd name="dxd1" fmla="cos nd1 bD1" />
+ <gd name="dyd1" fmla="sin nd1 bD1" />
+ <gd name="xD1" fmla="+- hc dxd1 0" />
+ <gd name="yD1" fmla="+- vc dyd1 0" />
+
+
+ <gd name="xAD1" fmla="+- xA1 0 xD1" />
+ <gd name="yAD1" fmla="+- yA1 0 yD1" />
+ <gd name="lAD1" fmla="mod xAD1 yAD1 0" />
+ <gd name="a1" fmla="at2 yAD1 xAD1" />
+
+
+ <gd name="dxF1" fmla="sin lFD a1" />
+ <gd name="dyF1" fmla="cos lFD a1" />
+ <gd name="xF1" fmla="+- xD1 dxF1 0" />
+ <gd name="yF1" fmla="+- yD1 dyF1 0" />
+ <gd name="xE1" fmla="+- xA1 0 dxF1" />
+ <gd name="yE1" fmla="+- yA1 0 dyF1" />
+
+
+ <gd name="yC1t" fmla="sin th a1" />
+ <gd name="xC1t" fmla="cos th a1" />
+ <gd name="yC1" fmla="+- yF1 yC1t 0" />
+ <gd name="xC1" fmla="+- xF1 0 xC1t" />
+
+
+ <gd name="yB1" fmla="+- yE1 yC1t 0" />
+ <gd name="xB1" fmla="+- xE1 0 xC1t" />
+
+
+ <gd name="aA2" fmla="+- 21000000 0 ha" />
+ <gd name="aD2" fmla="+- 21000000 ha 0" />
+
+
+ <gd name="ta21" fmla="cos rw aA2" />
+ <gd name="ta22" fmla="sin rh aA2" />
+ <gd name="bA2" fmla="at2 ta21 ta22" />
+
+ <gd name="cta2" fmla="cos rh bA2" />
+ <gd name="sta2" fmla="sin rw bA2" />
+ <gd name="ma2" fmla="mod cta2 sta2 0" />
+ <gd name="na2" fmla="*/ rw rh ma2" />
+ <gd name="dxa2" fmla="cos na2 bA2" />
+ <gd name="dya2" fmla="sin na2 bA2" />
+ <gd name="xA2" fmla="+- hc dxa2 0" />
+ <gd name="yA2" fmla="+- vc dya2 0" />
+
+
+ <gd name="td21" fmla="cos rw aD2" />
+ <gd name="td22" fmla="sin rh aD2" />
+ <gd name="bD2" fmla="at2 td21 td22" />
+
+ <gd name="ctd2" fmla="cos rh bD2" />
+ <gd name="std2" fmla="sin rw bD2" />
+ <gd name="md2" fmla="mod ctd2 std2 0" />
+ <gd name="nd2" fmla="*/ rw rh md2" />
+ <gd name="dxd2" fmla="cos nd2 bD2" />
+ <gd name="dyd2" fmla="sin nd2 bD2" />
+ <gd name="xD2" fmla="+- hc dxd2 0" />
+ <gd name="yD2" fmla="+- vc dyd2 0" />
+
+
+ <gd name="xAD2" fmla="+- xA2 0 xD2" />
+ <gd name="yAD2" fmla="+- yA2 0 yD2" />
+ <gd name="lAD2" fmla="mod xAD2 yAD2 0" />
+ <gd name="a2" fmla="at2 yAD2 xAD2" />
+
+
+ <gd name="dxF2" fmla="sin lFD a2" />
+ <gd name="dyF2" fmla="cos lFD a2" />
+ <gd name="xF2" fmla="+- xD2 dxF2 0" />
+ <gd name="yF2" fmla="+- yD2 dyF2 0" />
+ <gd name="xE2" fmla="+- xA2 0 dxF2" />
+ <gd name="yE2" fmla="+- yA2 0 dyF2" />
+
+
+ <gd name="yC2t" fmla="sin th a2" />
+ <gd name="xC2t" fmla="cos th a2" />
+ <gd name="yC2" fmla="+- yF2 yC2t 0" />
+ <gd name="xC2" fmla="+- xF2 0 xC2t" />
+
+
+ <gd name="yB2" fmla="+- yE2 yC2t 0" />
+ <gd name="xB2" fmla="+- xE2 0 xC2t" />
+
+ <gd name="swAng1" fmla="+- bA2 0 bD1" />
+
+
+ <gd name="aA3" fmla="+- 1800000 0 ha" />
+ <gd name="aD3" fmla="+- 1800000 ha 0" />
+
+
+ <gd name="ta31" fmla="cos rw aA3" />
+ <gd name="ta32" fmla="sin rh aA3" />
+ <gd name="bA3" fmla="at2 ta31 ta32" />
+
+ <gd name="cta3" fmla="cos rh bA3" />
+ <gd name="sta3" fmla="sin rw bA3" />
+ <gd name="ma3" fmla="mod cta3 sta3 0" />
+ <gd name="na3" fmla="*/ rw rh ma3" />
+ <gd name="dxa3" fmla="cos na3 bA3" />
+ <gd name="dya3" fmla="sin na3 bA3" />
+ <gd name="xA3" fmla="+- hc dxa3 0" />
+ <gd name="yA3" fmla="+- vc dya3 0" />
+
+
+ <gd name="td31" fmla="cos rw aD3" />
+ <gd name="td32" fmla="sin rh aD3" />
+ <gd name="bD3" fmla="at2 td31 td32" />
+
+ <gd name="ctd3" fmla="cos rh bD3" />
+ <gd name="std3" fmla="sin rw bD3" />
+ <gd name="md3" fmla="mod ctd3 std3 0" />
+ <gd name="nd3" fmla="*/ rw rh md3" />
+ <gd name="dxd3" fmla="cos nd3 bD3" />
+ <gd name="dyd3" fmla="sin nd3 bD3" />
+ <gd name="xD3" fmla="+- hc dxd3 0" />
+ <gd name="yD3" fmla="+- vc dyd3 0" />
+
+
+ <gd name="xAD3" fmla="+- xA3 0 xD3" />
+ <gd name="yAD3" fmla="+- yA3 0 yD3" />
+ <gd name="lAD3" fmla="mod xAD3 yAD3 0" />
+ <gd name="a3" fmla="at2 yAD3 xAD3" />
+
+
+ <gd name="dxF3" fmla="sin lFD a3" />
+ <gd name="dyF3" fmla="cos lFD a3" />
+ <gd name="xF3" fmla="+- xD3 dxF3 0" />
+ <gd name="yF3" fmla="+- yD3 dyF3 0" />
+ <gd name="xE3" fmla="+- xA3 0 dxF3" />
+ <gd name="yE3" fmla="+- yA3 0 dyF3" />
+
+
+ <gd name="yC3t" fmla="sin th a3" />
+ <gd name="xC3t" fmla="cos th a3" />
+ <gd name="yC3" fmla="+- yF3 yC3t 0" />
+ <gd name="xC3" fmla="+- xF3 0 xC3t" />
+
+
+ <gd name="yB3" fmla="+- yE3 yC3t 0" />
+ <gd name="xB3" fmla="+- xE3 0 xC3t" />
+
+ <gd name="swAng2" fmla="+- bA3 0 bD2" />
+
+
+ <gd name="aA4" fmla="+- 4200000 0 ha" />
+ <gd name="aD4" fmla="+- 4200000 ha 0" />
+
+
+ <gd name="ta41" fmla="cos rw aA4" />
+ <gd name="ta42" fmla="sin rh aA4" />
+ <gd name="bA4" fmla="at2 ta41 ta42" />
+
+ <gd name="cta4" fmla="cos rh bA4" />
+ <gd name="sta4" fmla="sin rw bA4" />
+ <gd name="ma4" fmla="mod cta4 sta4 0" />
+ <gd name="na4" fmla="*/ rw rh ma4" />
+ <gd name="dxa4" fmla="cos na4 bA4" />
+ <gd name="dya4" fmla="sin na4 bA4" />
+ <gd name="xA4" fmla="+- hc dxa4 0" />
+ <gd name="yA4" fmla="+- vc dya4 0" />
+
+
+ <gd name="td41" fmla="cos rw aD4" />
+ <gd name="td42" fmla="sin rh aD4" />
+ <gd name="bD4" fmla="at2 td41 td42" />
+
+ <gd name="ctd4" fmla="cos rh bD4" />
+ <gd name="std4" fmla="sin rw bD4" />
+ <gd name="md4" fmla="mod ctd4 std4 0" />
+ <gd name="nd4" fmla="*/ rw rh md4" />
+ <gd name="dxd4" fmla="cos nd4 bD4" />
+ <gd name="dyd4" fmla="sin nd4 bD4" />
+ <gd name="xD4" fmla="+- hc dxd4 0" />
+ <gd name="yD4" fmla="+- vc dyd4 0" />
+
+
+ <gd name="xAD4" fmla="+- xA4 0 xD4" />
+ <gd name="yAD4" fmla="+- yA4 0 yD4" />
+ <gd name="lAD4" fmla="mod xAD4 yAD4 0" />
+ <gd name="a4" fmla="at2 yAD4 xAD4" />
+
+
+ <gd name="dxF4" fmla="sin lFD a4" />
+ <gd name="dyF4" fmla="cos lFD a4" />
+ <gd name="xF4" fmla="+- xD4 dxF4 0" />
+ <gd name="yF4" fmla="+- yD4 dyF4 0" />
+ <gd name="xE4" fmla="+- xA4 0 dxF4" />
+ <gd name="yE4" fmla="+- yA4 0 dyF4" />
+
+
+ <gd name="yC4t" fmla="sin th a4" />
+ <gd name="xC4t" fmla="cos th a4" />
+ <gd name="yC4" fmla="+- yF4 yC4t 0" />
+ <gd name="xC4" fmla="+- xF4 0 xC4t" />
+
+
+ <gd name="yB4" fmla="+- yE4 yC4t 0" />
+ <gd name="xB4" fmla="+- xE4 0 xC4t" />
+
+ <gd name="swAng3" fmla="+- bA4 0 bD3" />
+
+
+ <gd name="aA5" fmla="+- 6600000 0 ha" />
+ <gd name="aD5" fmla="+- 6600000 ha 0" />
+
+ <gd name="ta51" fmla="cos rw aA5" />
+ <gd name="ta52" fmla="sin rh aA5" />
+ <gd name="bA5" fmla="at2 ta51 ta52" />
+
+ <gd name="td51" fmla="cos rw aD5" />
+ <gd name="td52" fmla="sin rh aD5" />
+ <gd name="bD5" fmla="at2 td51 td52" />
+
+
+ <gd name="xD5" fmla="+- w 0 xA4" />
+
+
+ <gd name="xC5" fmla="+- w 0 xB4" />
+
+
+ <gd name="xB5" fmla="+- w 0 xC4" />
+
+ <gd name="swAng4" fmla="+- bA5 0 bD4" />
+
+
+ <gd name="aD6" fmla="+- 9000000 ha 0" />
+
+ <gd name="td61" fmla="cos rw aD6" />
+ <gd name="td62" fmla="sin rh aD6" />
+ <gd name="bD6" fmla="at2 td61 td62" />
+
+
+ <gd name="xD6" fmla="+- w 0 xA3" />
+
+
+ <gd name="xC6" fmla="+- w 0 xB3" />
+
+
+ <gd name="xB6" fmla="+- w 0 xC3" />
+
+
+ <gd name="aD7" fmla="+- 11400000 ha 0" />
+
+ <gd name="td71" fmla="cos rw aD7" />
+ <gd name="td72" fmla="sin rh aD7" />
+ <gd name="bD7" fmla="at2 td71 td72" />
+
+
+ <gd name="xD7" fmla="+- w 0 xA2" />
+
+
+ <gd name="xC7" fmla="+- w 0 xB2" />
+
+
+ <gd name="xB7" fmla="+- w 0 xC2" />
+
+
+ <gd name="aD8" fmla="+- 13800000 ha 0" />
+
+ <gd name="td81" fmla="cos rw aD8" />
+ <gd name="td82" fmla="sin rh aD8" />
+ <gd name="bD8" fmla="at2 td81 td82" />
+
+
+ <gd name="xA8" fmla="+- w 0 xD1" />
+
+ <gd name="xD8" fmla="+- w 0 xA1" />
+
+
+ <gd name="xC8" fmla="+- w 0 xB1" />
+
+
+ <gd name="xB8" fmla="+- w 0 xC1" />
+
+
+ <gd name="aA9" fmla="+- 3cd4 0 ha" />
+ <gd name="aD9" fmla="+- 3cd4 ha 0" />
+
+
+ <gd name="td91" fmla="cos rw aD9" />
+ <gd name="td92" fmla="sin rh aD9" />
+ <gd name="bD9" fmla="at2 td91 td92" />
+
+ <gd name="ctd9" fmla="cos rh bD9" />
+ <gd name="std9" fmla="sin rw bD9" />
+ <gd name="md9" fmla="mod ctd9 std9 0" />
+ <gd name="nd9" fmla="*/ rw rh md9" />
+ <gd name="dxd9" fmla="cos nd9 bD9" />
+ <gd name="dyd9" fmla="sin nd9 bD9" />
+ <gd name="xD9" fmla="+- hc dxd9 0" />
+ <gd name="yD9" fmla="+- vc dyd9 0" />
+
+
+ <gd name="ta91" fmla="cos rw aA9" />
+ <gd name="ta92" fmla="sin rh aA9" />
+ <gd name="bA9" fmla="at2 ta91 ta92" />
+
+ <gd name="xA9" fmla="+- hc 0 dxd9" />
+
+
+ <gd name="xF9" fmla="+- xD9 0 lFD" />
+ <gd name="xE9" fmla="+- xA9 lFD 0" />
+
+
+ <gd name="yC9" fmla="+- yD9 0 th" />
+
+ <gd name="swAng5" fmla="+- bA9 0 bD8" />
+
+
+ <gd name="xCxn1" fmla="+/ xB1 xC1 2" />
+ <gd name="yCxn1" fmla="+/ yB1 yC1 2" />
+ <gd name="xCxn2" fmla="+/ xB2 xC2 2" />
+ <gd name="yCxn2" fmla="+/ yB2 yC2 2" />
+ <gd name="xCxn3" fmla="+/ xB3 xC3 2" />
+ <gd name="yCxn3" fmla="+/ yB3 yC3 2" />
+ <gd name="xCxn4" fmla="+/ xB4 xC4 2" />
+ <gd name="yCxn4" fmla="+/ yB4 yC4 2" />
+ <gd name="xCxn5" fmla="+/ r 0 xCxn4" />
+ <gd name="xCxn6" fmla="+/ r 0 xCxn3" />
+ <gd name="xCxn7" fmla="+/ r 0 xCxn2" />
+ <gd name="xCxn8" fmla="+/ r 0 xCxn1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="20000">
+ <pos x="xD9" y="yD9" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="2679">
+ <pos x="xA9" y="yD9" />
+ </ahXY>
+
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="18600000">
+ <pos x="xCxn1" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="21000000">
+ <pos x="xCxn2" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="1800000">
+ <pos x="xCxn3" y="yCxn3" />
+ </cxn>
+
+ <cxn ang="4200000">
+ <pos x="xCxn4" y="yCxn4" />
+ </cxn>
+
+ <cxn ang="6600000">
+ <pos x="xCxn5" y="yCxn4" />
+ </cxn>
+
+ <cxn ang="9000000">
+ <pos x="xCxn6" y="yCxn3" />
+ </cxn>
+
+ <cxn ang="11400000">
+ <pos x="xCxn7" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="13800000">
+ <pos x="xCxn8" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="3cd4">
+ <pos x="hc" y="yC9" />
+ </cxn>
+
+ </cxnLst>
+
+ <rect l="xA8" t="yD1" r="xD1" b="yD3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xA1" y="yA1" />
+ </moveTo>
+ <lnTo>
+ <pt x="xB1" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC1" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD1" y="yD1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD1" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xB2" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC2" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD2" y="yD2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD2" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xB3" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC3" y="yC3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD3" y="yD3" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD3" swAng="swAng3" />
+
+ <lnTo>
+ <pt x="xB4" y="yB4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC4" y="yC4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD4" y="yD4" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD4" swAng="swAng4" />
+
+ <lnTo>
+ <pt x="xB5" y="yC4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC5" y="yB4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD5" y="yA4" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD5" swAng="swAng3" />
+
+ <lnTo>
+ <pt x="xB6" y="yC3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC6" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD6" y="yA3" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD6" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xB7" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC7" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD7" y="yA2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD7" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xB8" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC8" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD8" y="yA1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD8" swAng="swAng5" />
+
+ <lnTo>
+ <pt x="xE9" y="yC9" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF9" y="yC9" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD9" y="yD9" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD9" swAng="swAng5" />
+ <close />
+ </path>
+ </pathLst>
+
+ </gear9>
+ <halfFrame>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 33333" />
+
+ <gd name="adj2" fmla="val 33333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x1" fmla="*/ ss a2 100000" />
+ <gd name="g1" fmla="*/ h x1 w" />
+ <gd name="g2" fmla="+- h 0 g1" />
+ <gd name="maxAdj1" fmla="*/ 100000 g2 ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="y1" fmla="*/ ss a1 100000" />
+ <gd name="dx2" fmla="*/ y1 w h" />
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="dy2" fmla="*/ x1 h w" />
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="cx1" fmla="*/ x1 1 2" />
+ <gd name="cy1" fmla="+/ y2 b 2" />
+ <gd name="cx2" fmla="+/ x2 r 2" />
+ <gd name="cy2" fmla="*/ y1 1 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="cx2" y="cy2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="cx1" y="cy1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </halfFrame>
+ <heart>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx1" fmla="*/ w 49 48" />
+ <gd name="dx2" fmla="*/ w 10 48" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- t 0 hd3" />
+
+
+ <gd name="il" fmla="*/ w 1 6" />
+ <gd name="ir" fmla="*/ w 5 6" />
+ <gd name="ib" fmla="*/ h 2 3" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="hc" y="hd4" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x3" y="y1" />
+ <pt x="x4" y="hd4" />
+ <pt x="hc" y="b" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x1" y="hd4" />
+ <pt x="x2" y="y1" />
+ <pt x="hc" y="hd4" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </heart>
+ <heptagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="hf" fmla="val 102572" />
+ <gd name="vf" fmla="val 105210" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="*/ swd2 97493 100000" />
+ <gd name="dx2" fmla="*/ swd2 78183 100000" />
+ <gd name="dx3" fmla="*/ swd2 43388 100000" />
+ <gd name="dy1" fmla="*/ shd2 62349 100000" />
+ <gd name="dy2" fmla="*/ shd2 22252 100000" />
+ <gd name="dy3" fmla="*/ shd2 90097 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="x6" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc dy2 0" />
+ <gd name="y3" fmla="+- svc dy3 0" />
+ <gd name="ib" fmla="+- b 0 y1" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x5" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y1" r="x5" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </heptagon>
+ <hexagon>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ <gd name="vf" fmla="val 115470" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="dy1" fmla="sin shd2 3600000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="q1" fmla="*/ maxAdj -1 2" />
+ <gd name="q2" fmla="+- a q1 0" />
+ <gd name="q3" fmla="?: q2 4 2" />
+ <gd name="q4" fmla="?: q2 3 2" />
+ <gd name="q5" fmla="?: q2 q1 0" />
+ <gd name="q6" fmla="+/ a q5 q1" />
+ <gd name="q7" fmla="*/ q6 q4 -1" />
+ <gd name="q8" fmla="+- q3 q7 0" />
+ <gd name="il" fmla="*/ w q8 24" />
+ <gd name="it" fmla="*/ h q8 24" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </hexagon>
+ <homePlate>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 100000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="dx1" fmla="*/ ss a 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="ir" fmla="+/ x1 r 2" />
+ <gd name="x2" fmla="*/ x1 1 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </homePlate>
+ <horizontalScroll>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 25000" />
+ <gd name="ch" fmla="*/ ss a 100000" />
+
+ <gd name="ch2" fmla="*/ ch 1 2" />
+
+ <gd name="ch4" fmla="*/ ch 1 4" />
+
+
+
+
+
+ <gd name="y3" fmla="+- ch ch2 0" />
+
+ <gd name="y4" fmla="+- ch ch 0" />
+
+ <gd name="y6" fmla="+- b 0 ch" />
+
+ <gd name="y7" fmla="+- b 0 ch2" />
+
+ <gd name="y5" fmla="+- y6 0 ch2" />
+
+
+
+
+
+ <gd name="x3" fmla="+- r 0 ch" />
+
+ <gd name="x4" fmla="+- r 0 ch2" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="25000">
+ <pos x="ch" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="hc" y="ch" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y6" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="ch" t="ch" r="x4" b="y6" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="ch2" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="cd2" />
+ <lnTo>
+ <pt x="x3" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="ch2" y="ch" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="l" y="y7" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="-10800000" />
+ <lnTo>
+ <pt x="ch" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y6" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <close />
+ <moveTo>
+ <pt x="ch2" y="y4" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="-10800000" />
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="ch2" y="y4" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="x4" y="ch" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-16200000" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd2" swAng="-10800000" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="y3" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="y5" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="ch" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="ch" y="y7" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="x3" y="ch" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="ch" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <moveTo>
+ <pt x="x4" y="ch" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="cd2" />
+ <moveTo>
+ <pt x="ch2" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="ch2" y="y3" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="cd2" swAng="cd2" />
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd2" />
+ <moveTo>
+ <pt x="ch" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="ch" y="y6" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </horizontalScroll>
+ <irregularSeal1>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x5" fmla="*/ w 4627 21600" />
+ <gd name="x12" fmla="*/ w 8485 21600" />
+ <gd name="x21" fmla="*/ w 16702 21600" />
+ <gd name="x24" fmla="*/ w 14522 21600" />
+ <gd name="y3" fmla="*/ h 6320 21600" />
+ <gd name="y6" fmla="*/ h 8615 21600" />
+ <gd name="y9" fmla="*/ h 13937 21600" />
+ <gd name="y18" fmla="*/ h 13290 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x24" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y6" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x12" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y18" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x5" t="y3" r="x21" b="y9" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="10800" y="5800" />
+ </moveTo>
+ <lnTo>
+ <pt x="14522" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="14155" y="5325" />
+ </lnTo>
+ <lnTo>
+ <pt x="18380" y="4457" />
+ </lnTo>
+ <lnTo>
+ <pt x="16702" y="7315" />
+ </lnTo>
+ <lnTo>
+ <pt x="21097" y="8137" />
+ </lnTo>
+ <lnTo>
+ <pt x="17607" y="10475" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="13290" />
+ </lnTo>
+ <lnTo>
+ <pt x="16837" y="12942" />
+ </lnTo>
+ <lnTo>
+ <pt x="18145" y="18095" />
+ </lnTo>
+ <lnTo>
+ <pt x="14020" y="14457" />
+ </lnTo>
+ <lnTo>
+ <pt x="13247" y="19737" />
+ </lnTo>
+ <lnTo>
+ <pt x="10532" y="14935" />
+ </lnTo>
+ <lnTo>
+ <pt x="8485" y="21600" />
+ </lnTo>
+ <lnTo>
+ <pt x="7715" y="15627" />
+ </lnTo>
+ <lnTo>
+ <pt x="4762" y="17617" />
+ </lnTo>
+ <lnTo>
+ <pt x="5667" y="13937" />
+ </lnTo>
+ <lnTo>
+ <pt x="135" y="14587" />
+ </lnTo>
+ <lnTo>
+ <pt x="3722" y="11775" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="8615" />
+ </lnTo>
+ <lnTo>
+ <pt x="4627" y="7617" />
+ </lnTo>
+ <lnTo>
+ <pt x="370" y="2295" />
+ </lnTo>
+ <lnTo>
+ <pt x="7312" y="6320" />
+ </lnTo>
+ <lnTo>
+ <pt x="8352" y="2295" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </irregularSeal1>
+ <irregularSeal2>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 9722 21600" />
+ <gd name="x5" fmla="*/ w 5372 21600" />
+ <gd name="x16" fmla="*/ w 11612 21600" />
+ <gd name="x19" fmla="*/ w 14640 21600" />
+ <gd name="y2" fmla="*/ h 1887 21600" />
+ <gd name="y3" fmla="*/ h 6382 21600" />
+ <gd name="y8" fmla="*/ h 12877 21600" />
+ <gd name="y14" fmla="*/ h 19712 21600" />
+ <gd name="y16" fmla="*/ h 18842 21600" />
+ <gd name="y17" fmla="*/ h 15935 21600" />
+ <gd name="y24" fmla="*/ h 6645 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y8" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x16" y="y16" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y24" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x5" t="y3" r="x19" b="y17" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="11462" y="4342" />
+ </moveTo>
+ <lnTo>
+ <pt x="14790" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="14525" y="5777" />
+ </lnTo>
+ <lnTo>
+ <pt x="18007" y="3172" />
+ </lnTo>
+ <lnTo>
+ <pt x="16380" y="6532" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="6645" />
+ </lnTo>
+ <lnTo>
+ <pt x="16985" y="9402" />
+ </lnTo>
+ <lnTo>
+ <pt x="18270" y="11290" />
+ </lnTo>
+ <lnTo>
+ <pt x="16380" y="12310" />
+ </lnTo>
+ <lnTo>
+ <pt x="18877" y="15632" />
+ </lnTo>
+ <lnTo>
+ <pt x="14640" y="14350" />
+ </lnTo>
+ <lnTo>
+ <pt x="14942" y="17370" />
+ </lnTo>
+ <lnTo>
+ <pt x="12180" y="15935" />
+ </lnTo>
+ <lnTo>
+ <pt x="11612" y="18842" />
+ </lnTo>
+ <lnTo>
+ <pt x="9872" y="17370" />
+ </lnTo>
+ <lnTo>
+ <pt x="8700" y="19712" />
+ </lnTo>
+ <lnTo>
+ <pt x="7527" y="18125" />
+ </lnTo>
+ <lnTo>
+ <pt x="4917" y="21600" />
+ </lnTo>
+ <lnTo>
+ <pt x="4805" y="18240" />
+ </lnTo>
+ <lnTo>
+ <pt x="1285" y="17825" />
+ </lnTo>
+ <lnTo>
+ <pt x="3330" y="15370" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="12877" />
+ </lnTo>
+ <lnTo>
+ <pt x="3935" y="11592" />
+ </lnTo>
+ <lnTo>
+ <pt x="1172" y="8270" />
+ </lnTo>
+ <lnTo>
+ <pt x="5372" y="7817" />
+ </lnTo>
+ <lnTo>
+ <pt x="4502" y="3625" />
+ </lnTo>
+ <lnTo>
+ <pt x="8550" y="6382" />
+ </lnTo>
+ <lnTo>
+ <pt x="9722" y="1887" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </irregularSeal2>
+ <leftArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- l dx2 0" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="dx1" fmla="*/ y1 dx2 hd2" />
+ <gd name="x1" fmla="+- x2 0 dx1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </leftArrow>
+ <leftArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 w ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss w" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+
+ <gd name="dy2" fmla="*/ ss a1 200000" />
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+
+ <gd name="dx2" fmla="*/ w a4 100000" />
+
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="x3" fmla="+/ x2 r 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x1" y="y2" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftArrowCallout>
+ <leftBrace>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 8333" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 100000" />
+ <gd name="q1" fmla="+- 100000 0 a2" />
+ <gd name="q2" fmla="min q1 a2" />
+ <gd name="q3" fmla="*/ q2 1 2" />
+ <gd name="maxAdj1" fmla="*/ q3 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="y1" fmla="*/ ss a1 100000" />
+ <gd name="y3" fmla="*/ h a2 100000" />
+ <gd name="y4" fmla="+- y3 y1 0" />
+ <gd name="dx1" fmla="cos wd2 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="il" fmla="+- r 0 dx1" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="hc" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="100000">
+ <pos x="l" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y1" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y1" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd4" />
+ </path>
+ </pathLst>
+ </leftBrace>
+ <leftBracket>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 8333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 h ss" />
+
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="y1" fmla="*/ ss a 100000" />
+
+ <gd name="y2" fmla="+- b 0 y1" />
+
+ <gd name="dx1" fmla="cos w 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="il" fmla="+- r 0 dx1" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="cd2" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </leftBracket>
+ <leftCircularArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val -1142319" />
+
+ <gd name="adj3" fmla="val 1142319" />
+
+ <gd name="adj4" fmla="val 10800000" />
+
+ <gd name="adj5" fmla="val 12500" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a5" fmla="pin 0 adj5 25000" />
+
+ <gd name="maxAdj1" fmla="*/ a5 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="enAng" fmla="pin 1 adj3 21599999" />
+ <gd name="stAng" fmla="pin 0 adj4 21599999" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="thh" fmla="*/ ss a5 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+
+
+ <gd name="rw1" fmla="+- wd2 th2 thh" />
+
+ <gd name="rh1" fmla="+- hd2 th2 thh" />
+
+ <gd name="rw2" fmla="+- rw1 0 th" />
+
+ <gd name="rh2" fmla="+- rh1 0 th" />
+
+ <gd name="rw3" fmla="+- rw2 th2 0" />
+
+ <gd name="rh3" fmla="+- rh2 th2 0" />
+
+
+ <gd name="wtH" fmla="sin rw3 enAng" />
+ <gd name="htH" fmla="cos rh3 enAng" />
+ <gd name="dxH" fmla="cat2 rw3 htH wtH" />
+ <gd name="dyH" fmla="sat2 rh3 htH wtH" />
+ <gd name="xH" fmla="+- hc dxH 0" />
+
+ <gd name="yH" fmla="+- vc dyH 0" />
+
+
+ <gd name="rI" fmla="min rw2 rh2" />
+
+ <gd name="u1" fmla="*/ dxH dxH 1" />
+ <gd name="u2" fmla="*/ dyH dyH 1" />
+ <gd name="u3" fmla="*/ rI rI 1" />
+ <gd name="u4" fmla="+- u1 0 u3" />
+ <gd name="u5" fmla="+- u2 0 u3" />
+ <gd name="u6" fmla="*/ u4 u5 u1" />
+ <gd name="u7" fmla="*/ u6 1 u2" />
+ <gd name="u8" fmla="+- 1 0 u7" />
+ <gd name="u9" fmla="sqrt u8" />
+ <gd name="u10" fmla="*/ u4 1 dxH" />
+ <gd name="u11" fmla="*/ u10 1 dyH" />
+ <gd name="u12" fmla="+/ 1 u9 u11" />
+ <gd name="u13" fmla="at2 1 u12" />
+ <gd name="u14" fmla="+- u13 21600000 0" />
+ <gd name="u15" fmla="?: u13 u13 u14" />
+ <gd name="u16" fmla="+- u15 0 enAng" />
+
+ <gd name="u17" fmla="+- u16 21600000 0" />
+ <gd name="u18" fmla="?: u16 u16 u17" />
+ <gd name="u19" fmla="+- u18 0 cd2" />
+ <gd name="u20" fmla="+- u18 0 21600000" />
+ <gd name="u21" fmla="?: u19 u20 u18" />
+ <gd name="u22" fmla="abs u21" />
+ <gd name="minAng" fmla="*/ u22 -1 1" />
+ <gd name="u23" fmla="abs adj2" />
+ <gd name="a2" fmla="*/ u23 -1 1" />
+ <gd name="aAng" fmla="pin minAng a2 0" />
+
+ <gd name="ptAng" fmla="+- enAng aAng 0" />
+
+
+ <gd name="wtA" fmla="sin rw3 ptAng" />
+ <gd name="htA" fmla="cos rh3 ptAng" />
+ <gd name="dxA" fmla="cat2 rw3 htA wtA" />
+ <gd name="dyA" fmla="sat2 rh3 htA wtA" />
+ <gd name="xA" fmla="+- hc dxA 0" />
+
+ <gd name="yA" fmla="+- vc dyA 0" />
+
+
+ <gd name="wtE" fmla="sin rw1 stAng" />
+ <gd name="htE" fmla="cos rh1 stAng" />
+ <gd name="dxE" fmla="cat2 rw1 htE wtE" />
+ <gd name="dyE" fmla="sat2 rh1 htE wtE" />
+ <gd name="xE" fmla="+- hc dxE 0" />
+
+ <gd name="yE" fmla="+- vc dyE 0" />
+
+
+ <gd name="wtD" fmla="sin rw2 stAng" />
+ <gd name="htD" fmla="cos rh2 stAng" />
+ <gd name="dxD" fmla="cat2 rw2 htD wtD" />
+ <gd name="dyD" fmla="sat2 rh2 htD wtD" />
+ <gd name="xD" fmla="+- hc dxD 0" />
+
+ <gd name="yD" fmla="+- vc dyD 0" />
+
+
+ <gd name="dxG" fmla="cos thh ptAng" />
+ <gd name="dyG" fmla="sin thh ptAng" />
+ <gd name="xG" fmla="+- xH dxG 0" />
+
+ <gd name="yG" fmla="+- yH dyG 0" />
+
+
+ <gd name="dxB" fmla="cos thh ptAng" />
+ <gd name="dyB" fmla="sin thh ptAng" />
+ <gd name="xB" fmla="+- xH 0 dxB 0" />
+
+ <gd name="yB" fmla="+- yH 0 dyB 0" />
+
+
+ <gd name="sx1" fmla="+- xB 0 hc" />
+
+ <gd name="sy1" fmla="+- yB 0 vc" />
+
+ <gd name="sx2" fmla="+- xG 0 hc" />
+
+ <gd name="sy2" fmla="+- yG 0 vc" />
+
+
+ <gd name="rO" fmla="min rw1 rh1" />
+
+ <gd name="x1O" fmla="*/ sx1 rO rw1" />
+
+ <gd name="y1O" fmla="*/ sy1 rO rh1" />
+
+ <gd name="x2O" fmla="*/ sx2 rO rw1" />
+
+ <gd name="y2O" fmla="*/ sy2 rO rh1" />
+
+
+ <gd name="dxO" fmla="+- x2O 0 x1O" />
+ <gd name="dyO" fmla="+- y2O 0 y1O" />
+ <gd name="dO" fmla="mod dxO dyO 0" />
+
+ <gd name="q1" fmla="*/ x1O y2O 1" />
+ <gd name="q2" fmla="*/ x2O y1O 1" />
+ <gd name="DO" fmla="+- q1 0 q2" />
+
+
+ <gd name="q3" fmla="*/ rO rO 1" />
+
+ <gd name="q4" fmla="*/ dO dO 1" />
+
+ <gd name="q5" fmla="*/ q3 q4 1" />
+
+ <gd name="q6" fmla="*/ DO DO 1" />
+
+ <gd name="q7" fmla="+- q5 0 q6" />
+
+ <gd name="q8" fmla="max q7 0" />
+
+ <gd name="sdelO" fmla="sqrt q8" />
+
+ <gd name="ndyO" fmla="*/ dyO -1 1" />
+ <gd name="sdyO" fmla="?: ndyO -1 1" />
+
+ <gd name="q9" fmla="*/ sdyO dxO 1" />
+
+ <gd name="q10" fmla="*/ q9 sdelO 1" />
+
+ <gd name="q11" fmla="*/ DO dyO 1" />
+
+ <gd name="dxF1" fmla="+/ q11 q10 q4" />
+
+ <gd name="q12" fmla="+- q11 0 q10" />
+ <gd name="dxF2" fmla="*/ q12 1 q4" />
+
+
+ <gd name="adyO" fmla="abs dyO" />
+ <gd name="q13" fmla="*/ adyO sdelO 1" />
+
+ <gd name="q14" fmla="*/ DO dxO -1" />
+
+ <gd name="dyF1" fmla="+/ q14 q13 q4" />
+
+ <gd name="q15" fmla="+- q14 0 q13" />
+ <gd name="dyF2" fmla="*/ q15 1 q4" />
+
+
+
+ <gd name="q16" fmla="+- x2O 0 dxF1" />
+ <gd name="q17" fmla="+- x2O 0 dxF2" />
+ <gd name="q18" fmla="+- y2O 0 dyF1" />
+ <gd name="q19" fmla="+- y2O 0 dyF2" />
+ <gd name="q20" fmla="mod q16 q18 0" />
+
+ <gd name="q21" fmla="mod q17 q19 0" />
+
+ <gd name="q22" fmla="+- q21 0 q20" />
+ <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
+
+ <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
+
+ <gd name="sdxF" fmla="*/ dxF rw1 rO" />
+
+ <gd name="sdyF" fmla="*/ dyF rh1 rO" />
+
+ <gd name="xF" fmla="+- hc sdxF 0" />
+
+ <gd name="yF" fmla="+- vc sdyF 0" />
+
+
+
+
+ <gd name="x1I" fmla="*/ sx1 rI rw2" />
+
+ <gd name="y1I" fmla="*/ sy1 rI rh2" />
+
+ <gd name="x2I" fmla="*/ sx2 rI rw2" />
+
+ <gd name="y2I" fmla="*/ sy2 rI rh2" />
+
+
+ <gd name="dxI" fmla="+- x2I 0 x1I" />
+ <gd name="dyI" fmla="+- y2I 0 y1I" />
+ <gd name="dI" fmla="mod dxI dyI 0" />
+ <gd name="v1" fmla="*/ x1I y2I 1" />
+ <gd name="v2" fmla="*/ x2I y1I 1" />
+ <gd name="DI" fmla="+- v1 0 v2" />
+
+ <gd name="v3" fmla="*/ rI rI 1" />
+ <gd name="v4" fmla="*/ dI dI 1" />
+ <gd name="v5" fmla="*/ v3 v4 1" />
+ <gd name="v6" fmla="*/ DI DI 1" />
+ <gd name="v7" fmla="+- v5 0 v6" />
+ <gd name="v8" fmla="max v7 0" />
+ <gd name="sdelI" fmla="sqrt v8" />
+ <gd name="v9" fmla="*/ sdyO dxI 1" />
+ <gd name="v10" fmla="*/ v9 sdelI 1" />
+ <gd name="v11" fmla="*/ DI dyI 1" />
+ <gd name="dxC1" fmla="+/ v11 v10 v4" />
+ <gd name="v12" fmla="+- v11 0 v10" />
+ <gd name="dxC2" fmla="*/ v12 1 v4" />
+
+ <gd name="adyI" fmla="abs dyI" />
+ <gd name="v13" fmla="*/ adyI sdelI 1" />
+ <gd name="v14" fmla="*/ DI dxI -1" />
+ <gd name="dyC1" fmla="+/ v14 v13 v4" />
+ <gd name="v15" fmla="+- v14 0 v13" />
+ <gd name="dyC2" fmla="*/ v15 1 v4" />
+
+ <gd name="v16" fmla="+- x1I 0 dxC1" />
+ <gd name="v17" fmla="+- x1I 0 dxC2" />
+ <gd name="v18" fmla="+- y1I 0 dyC1" />
+ <gd name="v19" fmla="+- y1I 0 dyC2" />
+ <gd name="v20" fmla="mod v16 v18 0" />
+ <gd name="v21" fmla="mod v17 v19 0" />
+ <gd name="v22" fmla="+- v21 0 v20" />
+ <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
+ <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
+ <gd name="sdxC" fmla="*/ dxC rw2 rI" />
+ <gd name="sdyC" fmla="*/ dyC rh2 rI" />
+ <gd name="xC" fmla="+- hc sdxC 0" />
+
+ <gd name="yC" fmla="+- vc sdyC 0" />
+
+
+ <gd name="ist0" fmla="at2 sdxC sdyC" />
+ <gd name="ist1" fmla="+- ist0 21600000 0" />
+ <gd name="istAng0" fmla="?: ist0 ist0 ist1" />
+ <gd name="isw1" fmla="+- stAng 0 istAng0" />
+ <gd name="isw2" fmla="+- isw1 21600000 0" />
+ <gd name="iswAng0" fmla="?: isw1 isw1 isw2" />
+
+ <gd name="istAng" fmla="+- istAng0 iswAng0 0" />
+ <gd name="iswAng" fmla="+- 0 0 iswAng0" />
+
+ <gd name="p1" fmla="+- xF 0 xC" />
+ <gd name="p2" fmla="+- yF 0 yC" />
+ <gd name="p3" fmla="mod p1 p2 0" />
+ <gd name="p4" fmla="*/ p3 1 2" />
+ <gd name="p5" fmla="+- p4 0 thh" />
+ <gd name="xGp" fmla="?: p5 xF xG" />
+ <gd name="yGp" fmla="?: p5 yF yG" />
+ <gd name="xBp" fmla="?: p5 xC xB" />
+ <gd name="yBp" fmla="?: p5 yC yB" />
+
+ <gd name="en0" fmla="at2 sdxF sdyF" />
+ <gd name="en1" fmla="+- en0 21600000 0" />
+ <gd name="en2" fmla="?: en0 en0 en1" />
+ <gd name="sw0" fmla="+- en2 0 stAng" />
+ <gd name="sw1" fmla="+- sw0 0 21600000" />
+ <gd name="swAng" fmla="?: sw0 sw1 sw0" />
+
+
+ <gd name="stAng0" fmla="+- stAng swAng 0" />
+
+ <gd name="swAng0" fmla="+- 0 0 swAng" />
+
+
+ <gd name="wtI" fmla="sin rw3 stAng" />
+ <gd name="htI" fmla="cos rh3 stAng" />
+ <gd name="dxI" fmla="cat2 rw3 htI wtI" />
+ <gd name="dyI" fmla="sat2 rh3 htI wtI" />
+ <gd name="xI" fmla="+- hc dxI 0" />
+
+ <gd name="yI" fmla="+- vc dyI 0" />
+
+
+ <gd name="aI" fmla="+- stAng cd4 0" />
+ <gd name="aA" fmla="+- ptAng 0 cd4" />
+ <gd name="aB" fmla="+- ptAng cd2 0" />
+
+ <gd name="idx" fmla="cos rw1 2700000" />
+ <gd name="idy" fmla="sin rh1 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj2" minAng="minAng" maxAng="0">
+ <pos x="xA" y="yA" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
+ <pos x="xE" y="yE" />
+ </ahPolar>
+ <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
+ <pos x="xF" y="yF" />
+ </ahPolar>
+ <ahPolar gdRefR="adj5" minR="0" maxR="25000">
+ <pos x="xB" y="yB" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="aI">
+ <pos x="xI" y="yI" />
+ </cxn>
+ <cxn ang="ptAng">
+ <pos x="xGp" y="yGp" />
+ </cxn>
+ <cxn ang="aA">
+ <pos x="xA" y="yA" />
+ </cxn>
+ <cxn ang="aB">
+ <pos x="xBp" y="yBp" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xE" y="yE" />
+ </moveTo>
+ <lnTo>
+ <pt x="xD" y="yD" />
+ </lnTo>
+ <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
+ <lnTo>
+ <pt x="xBp" y="yBp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xGp" y="yGp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF" y="yF" />
+ </lnTo>
+ <arcTo wR="rw1" hR="rh1" stAng="stAng0" swAng="swAng0" />
+ <close />
+ </path>
+ </pathLst>
+
+ </leftCircularArrow>
+ <leftRightArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x2" fmla="*/ ss a2 100000" />
+ <gd name="x3" fmla="+- r 0 x2" />
+ <gd name="dy" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy" />
+ <gd name="y2" fmla="+- vc dy 0" />
+ <gd name="dx1" fmla="*/ y1 x2 hd2" />
+ <gd name="x1" fmla="+- x2 0 dx1" />
+ <gd name="x4" fmla="+- x3 dx1 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="x3" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="x4" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </leftRightArrow>
+ <leftRightArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 48123" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 50000 w ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss wd2" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+
+ <gd name="dy2" fmla="*/ ss a1 200000" />
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+
+ <gd name="x4" fmla="+- r 0 x1" />
+
+ <gd name="dx2" fmla="*/ w a4 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- hc dx2 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x1" y="y2" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="t" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftRightArrowCallout>
+ <leftRightCircularArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val 1142319" />
+
+ <gd name="adj3" fmla="val 20457681" />
+
+ <gd name="adj4" fmla="val 11942319" />
+
+ <gd name="adj5" fmla="val 12500" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a5" fmla="pin 0 adj5 25000" />
+
+ <gd name="maxAdj1" fmla="*/ a5 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="enAng" fmla="pin 1 adj3 21599999" />
+ <gd name="stAng" fmla="pin 0 adj4 21599999" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="thh" fmla="*/ ss a5 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+
+
+ <gd name="rw1" fmla="+- wd2 th2 thh" />
+
+ <gd name="rh1" fmla="+- hd2 th2 thh" />
+
+ <gd name="rw2" fmla="+- rw1 0 th" />
+
+ <gd name="rh2" fmla="+- rh1 0 th" />
+
+ <gd name="rw3" fmla="+- rw2 th2 0" />
+
+ <gd name="rh3" fmla="+- rh2 th2 0" />
+
+
+ <gd name="wtH" fmla="sin rw3 enAng" />
+ <gd name="htH" fmla="cos rh3 enAng" />
+ <gd name="dxH" fmla="cat2 rw3 htH wtH" />
+ <gd name="dyH" fmla="sat2 rh3 htH wtH" />
+ <gd name="xH" fmla="+- hc dxH 0" />
+
+ <gd name="yH" fmla="+- vc dyH 0" />
+
+
+ <gd name="rI" fmla="min rw2 rh2" />
+
+ <gd name="u1" fmla="*/ dxH dxH 1" />
+ <gd name="u2" fmla="*/ dyH dyH 1" />
+ <gd name="u3" fmla="*/ rI rI 1" />
+ <gd name="u4" fmla="+- u1 0 u3" />
+ <gd name="u5" fmla="+- u2 0 u3" />
+ <gd name="u6" fmla="*/ u4 u5 u1" />
+ <gd name="u7" fmla="*/ u6 1 u2" />
+ <gd name="u8" fmla="+- 1 0 u7" />
+ <gd name="u9" fmla="sqrt u8" />
+ <gd name="u10" fmla="*/ u4 1 dxH" />
+ <gd name="u11" fmla="*/ u10 1 dyH" />
+ <gd name="u12" fmla="+/ 1 u9 u11" />
+ <gd name="u13" fmla="at2 1 u12" />
+ <gd name="u14" fmla="+- u13 21600000 0" />
+ <gd name="u15" fmla="?: u13 u13 u14" />
+ <gd name="u16" fmla="+- u15 0 enAng" />
+
+ <gd name="u17" fmla="+- u16 21600000 0" />
+ <gd name="u18" fmla="?: u16 u16 u17" />
+ <gd name="u19" fmla="+- u18 0 cd2" />
+ <gd name="u20" fmla="+- u18 0 21600000" />
+ <gd name="u21" fmla="?: u19 u20 u18" />
+ <gd name="maxAng" fmla="abs u21" />
+ <gd name="aAng" fmla="pin 0 adj2 maxAng" />
+
+ <gd name="ptAng" fmla="+- enAng aAng 0" />
+
+
+ <gd name="wtA" fmla="sin rw3 ptAng" />
+ <gd name="htA" fmla="cos rh3 ptAng" />
+ <gd name="dxA" fmla="cat2 rw3 htA wtA" />
+ <gd name="dyA" fmla="sat2 rh3 htA wtA" />
+ <gd name="xA" fmla="+- hc dxA 0" />
+
+ <gd name="yA" fmla="+- vc dyA 0" />
+
+
+ <gd name="dxG" fmla="cos thh ptAng" />
+ <gd name="dyG" fmla="sin thh ptAng" />
+ <gd name="xG" fmla="+- xH dxG 0" />
+
+ <gd name="yG" fmla="+- yH dyG 0" />
+
+
+ <gd name="dxB" fmla="cos thh ptAng" />
+ <gd name="dyB" fmla="sin thh ptAng" />
+ <gd name="xB" fmla="+- xH 0 dxB 0" />
+
+ <gd name="yB" fmla="+- yH 0 dyB 0" />
+
+
+ <gd name="sx1" fmla="+- xB 0 hc" />
+
+ <gd name="sy1" fmla="+- yB 0 vc" />
+
+ <gd name="sx2" fmla="+- xG 0 hc" />
+
+ <gd name="sy2" fmla="+- yG 0 vc" />
+
+
+ <gd name="rO" fmla="min rw1 rh1" />
+
+ <gd name="x1O" fmla="*/ sx1 rO rw1" />
+
+ <gd name="y1O" fmla="*/ sy1 rO rh1" />
+
+ <gd name="x2O" fmla="*/ sx2 rO rw1" />
+
+ <gd name="y2O" fmla="*/ sy2 rO rh1" />
+
+
+ <gd name="dxO" fmla="+- x2O 0 x1O" />
+ <gd name="dyO" fmla="+- y2O 0 y1O" />
+ <gd name="dO" fmla="mod dxO dyO 0" />
+
+ <gd name="q1" fmla="*/ x1O y2O 1" />
+ <gd name="q2" fmla="*/ x2O y1O 1" />
+ <gd name="DO" fmla="+- q1 0 q2" />
+
+
+ <gd name="q3" fmla="*/ rO rO 1" />
+
+ <gd name="q4" fmla="*/ dO dO 1" />
+
+ <gd name="q5" fmla="*/ q3 q4 1" />
+
+ <gd name="q6" fmla="*/ DO DO 1" />
+
+ <gd name="q7" fmla="+- q5 0 q6" />
+
+ <gd name="q8" fmla="max q7 0" />
+
+ <gd name="sdelO" fmla="sqrt q8" />
+
+ <gd name="ndyO" fmla="*/ dyO -1 1" />
+ <gd name="sdyO" fmla="?: ndyO -1 1" />
+
+ <gd name="q9" fmla="*/ sdyO dxO 1" />
+
+ <gd name="q10" fmla="*/ q9 sdelO 1" />
+
+ <gd name="q11" fmla="*/ DO dyO 1" />
+
+ <gd name="dxF1" fmla="+/ q11 q10 q4" />
+
+ <gd name="q12" fmla="+- q11 0 q10" />
+ <gd name="dxF2" fmla="*/ q12 1 q4" />
+
+
+ <gd name="adyO" fmla="abs dyO" />
+ <gd name="q13" fmla="*/ adyO sdelO 1" />
+
+ <gd name="q14" fmla="*/ DO dxO -1" />
+
+ <gd name="dyF1" fmla="+/ q14 q13 q4" />
+
+ <gd name="q15" fmla="+- q14 0 q13" />
+ <gd name="dyF2" fmla="*/ q15 1 q4" />
+
+
+
+ <gd name="q16" fmla="+- x2O 0 dxF1" />
+ <gd name="q17" fmla="+- x2O 0 dxF2" />
+ <gd name="q18" fmla="+- y2O 0 dyF1" />
+ <gd name="q19" fmla="+- y2O 0 dyF2" />
+ <gd name="q20" fmla="mod q16 q18 0" />
+
+ <gd name="q21" fmla="mod q17 q19 0" />
+
+ <gd name="q22" fmla="+- q21 0 q20" />
+ <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
+
+ <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
+
+ <gd name="sdxF" fmla="*/ dxF rw1 rO" />
+
+ <gd name="sdyF" fmla="*/ dyF rh1 rO" />
+
+ <gd name="xF" fmla="+- hc sdxF 0" />
+
+ <gd name="yF" fmla="+- vc sdyF 0" />
+
+
+
+
+ <gd name="x1I" fmla="*/ sx1 rI rw2" />
+
+ <gd name="y1I" fmla="*/ sy1 rI rh2" />
+
+ <gd name="x2I" fmla="*/ sx2 rI rw2" />
+
+ <gd name="y2I" fmla="*/ sy2 rI rh2" />
+
+
+ <gd name="dxI" fmla="+- x2I 0 x1I" />
+ <gd name="dyI" fmla="+- y2I 0 y1I" />
+ <gd name="dI" fmla="mod dxI dyI 0" />
+ <gd name="v1" fmla="*/ x1I y2I 1" />
+ <gd name="v2" fmla="*/ x2I y1I 1" />
+ <gd name="DI" fmla="+- v1 0 v2" />
+
+ <gd name="v3" fmla="*/ rI rI 1" />
+ <gd name="v4" fmla="*/ dI dI 1" />
+ <gd name="v5" fmla="*/ v3 v4 1" />
+ <gd name="v6" fmla="*/ DI DI 1" />
+ <gd name="v7" fmla="+- v5 0 v6" />
+ <gd name="v8" fmla="max v7 0" />
+ <gd name="sdelI" fmla="sqrt v8" />
+ <gd name="v9" fmla="*/ sdyO dxI 1" />
+ <gd name="v10" fmla="*/ v9 sdelI 1" />
+ <gd name="v11" fmla="*/ DI dyI 1" />
+ <gd name="dxC1" fmla="+/ v11 v10 v4" />
+ <gd name="v12" fmla="+- v11 0 v10" />
+ <gd name="dxC2" fmla="*/ v12 1 v4" />
+
+ <gd name="adyI" fmla="abs dyI" />
+ <gd name="v13" fmla="*/ adyI sdelI 1" />
+ <gd name="v14" fmla="*/ DI dxI -1" />
+ <gd name="dyC1" fmla="+/ v14 v13 v4" />
+ <gd name="v15" fmla="+- v14 0 v13" />
+ <gd name="dyC2" fmla="*/ v15 1 v4" />
+
+ <gd name="v16" fmla="+- x1I 0 dxC1" />
+ <gd name="v17" fmla="+- x1I 0 dxC2" />
+ <gd name="v18" fmla="+- y1I 0 dyC1" />
+ <gd name="v19" fmla="+- y1I 0 dyC2" />
+ <gd name="v20" fmla="mod v16 v18 0" />
+ <gd name="v21" fmla="mod v17 v19 0" />
+ <gd name="v22" fmla="+- v21 0 v20" />
+ <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
+ <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
+ <gd name="sdxC" fmla="*/ dxC rw2 rI" />
+ <gd name="sdyC" fmla="*/ dyC rh2 rI" />
+ <gd name="xC" fmla="+- hc sdxC 0" />
+
+ <gd name="yC" fmla="+- vc sdyC 0" />
+
+
+ <gd name="wtI" fmla="sin rw3 stAng" />
+ <gd name="htI" fmla="cos rh3 stAng" />
+ <gd name="dxI" fmla="cat2 rw3 htI wtI" />
+ <gd name="dyI" fmla="sat2 rh3 htI wtI" />
+ <gd name="xI" fmla="+- hc dxI 0" />
+
+ <gd name="yI" fmla="+- vc dyI 0" />
+
+
+ <gd name="lptAng" fmla="+- stAng 0 aAng" />
+
+
+ <gd name="wtL" fmla="sin rw3 lptAng" />
+ <gd name="htL" fmla="cos rh3 lptAng" />
+ <gd name="dxL" fmla="cat2 rw3 htL wtL" />
+ <gd name="dyL" fmla="sat2 rh3 htL wtL" />
+ <gd name="xL" fmla="+- hc dxL 0" />
+
+ <gd name="yL" fmla="+- vc dyL 0" />
+
+
+ <gd name="dxK" fmla="cos thh lptAng" />
+ <gd name="dyK" fmla="sin thh lptAng" />
+ <gd name="xK" fmla="+- xI dxK 0" />
+
+ <gd name="yK" fmla="+- yI dyK 0" />
+
+
+ <gd name="dxJ" fmla="cos thh lptAng" />
+ <gd name="dyJ" fmla="sin thh lptAng" />
+ <gd name="xJ" fmla="+- xI 0 dxJ 0" />
+
+ <gd name="yJ" fmla="+- yI 0 dyJ 0" />
+
+
+ <gd name="p1" fmla="+- xF 0 xC" />
+ <gd name="p2" fmla="+- yF 0 yC" />
+ <gd name="p3" fmla="mod p1 p2 0" />
+ <gd name="p4" fmla="*/ p3 1 2" />
+ <gd name="p5" fmla="+- p4 0 thh" />
+ <gd name="xGp" fmla="?: p5 xF xG" />
+ <gd name="yGp" fmla="?: p5 yF yG" />
+ <gd name="xBp" fmla="?: p5 xC xB" />
+ <gd name="yBp" fmla="?: p5 yC yB" />
+
+ <gd name="en0" fmla="at2 sdxF sdyF" />
+ <gd name="en1" fmla="+- en0 21600000 0" />
+ <gd name="en2" fmla="?: en0 en0 en1" />
+ <gd name="od0" fmla="+- en2 0 enAng" />
+ <gd name="od1" fmla="+- od0 21600000 0" />
+ <gd name="od2" fmla="?: od0 od0 od1" />
+
+ <gd name="st0" fmla="+- stAng 0 od2" />
+ <gd name="st1" fmla="+- st0 21600000 0" />
+ <gd name="st2" fmla="?: st0 st0 st1" />
+
+ <gd name="sw0" fmla="+- en2 0 st2" />
+ <gd name="sw1" fmla="+- sw0 21600000 0" />
+ <gd name="swAng" fmla="?: sw0 sw0 sw1" />
+
+
+ <gd name="ist0" fmla="at2 sdxC sdyC" />
+ <gd name="ist1" fmla="+- ist0 21600000 0" />
+ <gd name="istAng" fmla="?: ist0 ist0 ist1" />
+
+ <gd name="id0" fmla="+- istAng 0 enAng" />
+ <gd name="id1" fmla="+- id0 0 21600000" />
+ <gd name="id2" fmla="?: id0 id1 id0" />
+
+ <gd name="ien0" fmla="+- stAng 0 id2" />
+ <gd name="ien1" fmla="+- ien0 0 21600000" />
+ <gd name="ien2" fmla="?: ien1 ien1 ien0" />
+
+ <gd name="isw1" fmla="+- ien2 0 istAng" />
+ <gd name="isw2" fmla="+- isw1 0 21600000" />
+ <gd name="iswAng" fmla="?: isw1 isw2 isw1" />
+
+
+ <gd name="wtE" fmla="sin rw1 st2" />
+ <gd name="htE" fmla="cos rh1 st2" />
+ <gd name="dxE" fmla="cat2 rw1 htE wtE" />
+ <gd name="dyE" fmla="sat2 rh1 htE wtE" />
+ <gd name="xE" fmla="+- hc dxE 0" />
+
+ <gd name="yE" fmla="+- vc dyE 0" />
+
+
+ <gd name="wtD" fmla="sin rw2 ien2" />
+ <gd name="htD" fmla="cos rh2 ien2" />
+ <gd name="dxD" fmla="cat2 rw2 htD wtD" />
+ <gd name="dyD" fmla="sat2 rh2 htD wtD" />
+ <gd name="xD" fmla="+- hc dxD 0" />
+
+ <gd name="yD" fmla="+- vc dyD 0" />
+
+
+ <gd name="xKp" fmla="?: p5 xE xK" />
+ <gd name="yKp" fmla="?: p5 yE yK" />
+ <gd name="xJp" fmla="?: p5 xD xJ" />
+ <gd name="yJp" fmla="?: p5 yD yJ" />
+
+ <gd name="aL" fmla="+- lptAng 0 cd4" />
+ <gd name="aA" fmla="+- ptAng cd4 0" />
+ <gd name="aB" fmla="+- ptAng cd2 0" />
+ <gd name="aJ" fmla="+- lptAng cd2 0" />
+
+ <gd name="idx" fmla="cos rw1 2700000" />
+ <gd name="idy" fmla="sin rh1 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="maxAng">
+ <pos x="xA" y="yA" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
+ <pos x="xE" y="yE" />
+ </ahPolar>
+ <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
+ <pos x="xF" y="yF" />
+ </ahPolar>
+ <ahPolar gdRefR="adj5" minR="0" maxR="25000">
+ <pos x="xB" y="yB" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="aL">
+ <pos x="xL" y="yL" />
+ </cxn>
+ <cxn ang="lptAng">
+ <pos x="xKp" y="yKp" />
+ </cxn>
+ <cxn ang="ptAng">
+ <pos x="xGp" y="yGp" />
+ </cxn>
+ <cxn ang="aA">
+ <pos x="xA" y="yA" />
+ </cxn>
+ <cxn ang="aB">
+ <pos x="xBp" y="yBp" />
+ </cxn>
+ <cxn ang="aJ">
+ <pos x="xJp" y="yJp" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xL" y="yL" />
+ </moveTo>
+ <lnTo>
+ <pt x="xKp" y="yKp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yE" />
+ </lnTo>
+ <arcTo wR="rw1" hR="rh1" stAng="st2" swAng="swAng" />
+ <lnTo>
+ <pt x="xGp" y="yGp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xBp" y="yBp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC" y="yC" />
+ </lnTo>
+ <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
+ <lnTo>
+ <pt x="xJp" y="yJp" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftRightCircularArrow>
+ <leftRightRibbon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 16667" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a3" fmla="pin 0 adj3 33333" />
+ <gd name="maxAdj1" fmla="+- 100000 0 a3" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+
+ <gd name="w1" fmla="+- wd2 0 wd32" />
+ <gd name="maxAdj2" fmla="*/ 100000 w1 ss" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+
+ <gd name="x1" fmla="*/ ss a2 100000" />
+
+ <gd name="x4" fmla="+- r 0 x1" />
+
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="dy2" fmla="*/ h a3 -200000" />
+
+ <gd name="ly1" fmla="+- vc dy2 dy1" />
+
+ <gd name="ry4" fmla="+- vc dy1 dy2" />
+
+ <gd name="ly2" fmla="+- ly1 dy1 0" />
+
+ <gd name="ry3" fmla="+- b 0 ly2" />
+
+ <gd name="ly4" fmla="*/ ly2 2 1" />
+
+ <gd name="ry1" fmla="+- b 0 ly4" />
+
+ <gd name="ly3" fmla="+- ly4 0 ly1" />
+
+ <gd name="ry2" fmla="+- b 0 ly3" />
+
+
+ <gd name="hR" fmla="*/ a3 ss 400000" />
+
+ <gd name="x2" fmla="+- hc 0 wd32" />
+
+ <gd name="x3" fmla="+- hc wd32 0" />
+
+ <gd name="y1" fmla="+- ly1 hR 0" />
+
+ <gd name="y2" fmla="+- ry2 0 hR" />
+
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x4" y="ry2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="33333">
+ <pos x="x3" y="ry2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="ry3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="ly4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="ly2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="ry1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="ly1" r="x4" b="ry4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="ly2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ly1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x4" y="ry2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="ry3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ry4" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly4" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x3" y="ry2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="ly2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ly1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x4" y="ry2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="ry3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ry4" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly4" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="ry2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x2" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="ly3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </leftRightRibbon>
+ <leftRightUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="q1" fmla="+- 100000 0 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ q1 1 2" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x6" fmla="+- r 0 x1" />
+
+ <gd name="dy2" fmla="*/ ss a2 50000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y4" fmla="+- b 0 dx2" />
+ <gd name="y3" fmla="+- y4 0 dx3" />
+ <gd name="y5" fmla="+- y4 dx3 0" />
+ <gd name="il" fmla="*/ dx3 x1 dx2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x3" y="x1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y5" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y4" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="y3" r="ir" b="y5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftRightUpArrow>
+ <leftUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="+- 100000 0 maxAdj1" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+
+ <gd name="dx2" fmla="*/ ss a2 50000" />
+
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="y2" fmla="+- b 0 dx2" />
+ <gd name="dx4" fmla="*/ ss a2 100000" />
+
+ <gd name="x4" fmla="+- r 0 dx4" />
+ <gd name="y4" fmla="+- b 0 dx4" />
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="x3" fmla="+- x4 0 dx3" />
+ <gd name="x5" fmla="+- x4 dx3 0" />
+ <gd name="y3" fmla="+- y4 0 dx3" />
+ <gd name="y5" fmla="+- y4 dx3 0" />
+ <gd name="il" fmla="*/ dx3 x1 dx4" />
+ <gd name="cx1" fmla="+/ x1 x5 2" />
+ <gd name="cy1" fmla="+/ x1 y5 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="x3" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="x1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="cx1" y="y5" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x5" y="cy1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="x1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="y3" r="x4" b="y5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftUpArrow>
+ <lightningBolt>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w 5022 21600" />
+ <gd name="x3" fmla="*/ w 8472 21600" />
+ <gd name="x4" fmla="*/ w 8757 21600" />
+
+ <gd name="x5" fmla="*/ w 10012 21600" />
+ <gd name="x8" fmla="*/ w 12860 21600" />
+ <gd name="x9" fmla="*/ w 13917 21600" />
+
+ <gd name="x11" fmla="*/ w 16577 21600" />
+ <gd name="y1" fmla="*/ h 3890 21600" />
+ <gd name="y2" fmla="*/ h 6080 21600" />
+ <gd name="y4" fmla="*/ h 7437 21600" />
+
+ <gd name="y6" fmla="*/ h 9705 21600" />
+ <gd name="y7" fmla="*/ h 12007 21600" />
+ <gd name="y10" fmla="*/ h 14277 21600" />
+
+ <gd name="y11" fmla="*/ h 14915 21600" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y6" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x5" y="y11" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x11" y="y7" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x4" t="y4" r="x9" b="y10" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="8472" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="12860" y="6080" />
+ </lnTo>
+ <lnTo>
+ <pt x="11050" y="6797" />
+ </lnTo>
+ <lnTo>
+ <pt x="16577" y="12007" />
+ </lnTo>
+ <lnTo>
+ <pt x="14767" y="12877" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="21600" />
+ </lnTo>
+ <lnTo>
+ <pt x="10012" y="14915" />
+ </lnTo>
+ <lnTo>
+ <pt x="12222" y="13987" />
+ </lnTo>
+ <lnTo>
+ <pt x="5022" y="9705" />
+ </lnTo>
+ <lnTo>
+ <pt x="7602" y="8382" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="3890" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </lightningBolt>
+ <line>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </line>
+ <lineInv>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ </cxnLst>
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </lineInv>
+ <mathDivide>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ <gd name="adj2" fmla="val 5880" />
+
+ <gd name="adj3" fmla="val 11760" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="a1" fmla="pin 1000 adj1 36745" />
+ <gd name="ma1" fmla="+- 0 0 a1" />
+
+ <gd name="ma3h" fmla="+/ 73490 ma1 4" />
+
+ <gd name="ma3w" fmla="*/ 36745 w h" />
+
+ <gd name="maxAdj3" fmla="min ma3h ma3w" />
+ <gd name="a3" fmla="pin 1000 adj3 maxAdj3" />
+ <gd name="m4a3" fmla="*/ -4 a3 1" />
+
+ <gd name="maxAdj2" fmla="+- 73490 m4a3 a1" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="yg" fmla="*/ h a2 100000" />
+
+ <gd name="rad" fmla="*/ h a3 100000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="y3" fmla="+- vc 0 dy1" />
+
+ <gd name="y4" fmla="+- vc dy1 0" />
+
+ <gd name="a" fmla="+- yg rad 0" />
+ <gd name="y2" fmla="+- y3 0 a" />
+
+ <gd name="y1" fmla="+- y2 0 rad" />
+
+ <gd name="y5" fmla="+- b 0 y1" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x3" fmla="+- hc dx1 0" />
+
+ <gd name="x2" fmla="+- hc 0 rad" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="1000" maxY="36745">
+ <pos x="l" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="1000" maxX="maxAdj3">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x3" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y5" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y3" r="x3" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="hc" y="y1" />
+ </moveTo>
+ <arcTo hR="rad" wR="rad" stAng="3cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="y5" />
+ </moveTo>
+ <arcTo hR="rad" wR="rad" stAng="cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="x1" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathDivide>
+ <mathEqual>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ <gd name="adj2" fmla="val 11760" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 36745" />
+
+
+ <gd name="2a1" fmla="*/ a1 2 1" />
+
+ <gd name="mAdj2" fmla="+- 100000 0 2a1" />
+
+ <gd name="a2" fmla="pin 0 adj2 mAdj2" />
+ <gd name="dy1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ h a2 200000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="y2" fmla="+- vc 0 dy2" />
+
+ <gd name="y3" fmla="+- vc dy2 0" />
+
+ <gd name="y1" fmla="+- y2 0 dy1" />
+
+ <gd name="y4" fmla="+- y3 dy1 0" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x2" fmla="+- hc dx1 0" />
+
+
+
+ <gd name="yC1" fmla="+/ y1 y2 2" />
+
+ <gd name="yC2" fmla="+/ y3 y4 2" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="36745">
+ <pos x="l" y="y1" />
+ </ahXY>
+
+ <ahXY gdRefY="adj2" minY="0" maxY="mAdj2">
+ <pos x="r" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x2" y="yC1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="yC2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x1" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathEqual>
+ <mathMinus>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+
+ <gd name="y2" fmla="+- vc dy1 0" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x2" fmla="+- hc dx1 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathMinus>
+ <mathMultiply>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+
+
+
+ <gd name="a1" fmla="pin 0 adj1 51965" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+
+ <gd name="a" fmla="at2 w h" />
+
+ <gd name="sa" fmla="sin 1 a" />
+ <gd name="ca" fmla="cos 1 a" />
+ <gd name="ta" fmla="tan 1 a" />
+
+
+ <gd name="dl" fmla="mod w h 0" />
+
+ <gd name="rw" fmla="*/ dl 51965 100000" />
+
+
+
+ <gd name="lM" fmla="+- dl 0 rw" />
+ <gd name="xM" fmla="*/ ca lM 2" />
+ <gd name="yM" fmla="*/ sa lM 2" />
+
+
+ <gd name="dxAM" fmla="*/ sa th 2" />
+ <gd name="dyAM" fmla="*/ ca th 2" />
+ <gd name="xA" fmla="+- xM 0 dxAM" />
+ <gd name="yA" fmla="+- yM dyAM 0" />
+
+
+ <gd name="xB" fmla="+- xM dxAM 0" />
+ <gd name="yB" fmla="+- yM 0 dyAM" />
+
+
+ <gd name="xBC" fmla="+- hc 0 xB" />
+ <gd name="yBC" fmla="*/ xBC ta 1" />
+ <gd name="yC" fmla="+- yBC yB 0" />
+
+
+ <gd name="xD" fmla="+- r 0 xB" />
+ <gd name="xE" fmla="+- r 0 xA" />
+
+ <gd name="yFE" fmla="+- vc 0 yA" />
+ <gd name="xFE" fmla="*/ yFE 1 ta" />
+ <gd name="xF" fmla="+- xE 0 xFE" />
+ <gd name="xL" fmla="+- xA xFE 0" />
+ <gd name="yG" fmla="+- b 0 yA" />
+ <gd name="yH" fmla="+- b 0 yB" />
+ <gd name="yI" fmla="+- b 0 yC" />
+
+
+ <gd name="xC2" fmla="+- r 0 xM" />
+
+ <gd name="yC3" fmla="+- b 0 yM" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="51965">
+ <pos x="l" y="th" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="xM" y="yM" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xC2" y="yM" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="xC2" y="yC3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xM" y="yC3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="xA" t="yB" r="xE" b="yH" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xA" y="yA" />
+ </moveTo>
+ <lnTo>
+ <pt x="xB" y="yB" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="yC" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD" y="yB" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yG" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD" y="yH" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="yI" />
+ </lnTo>
+ <lnTo>
+ <pt x="xB" y="yH" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yG" />
+ </lnTo>
+ <lnTo>
+ <pt x="xL" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathMultiply>
+ <mathNotEqual>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ <gd name="adj2" fmla="val 6600000" />
+
+ <gd name="adj3" fmla="val 11760" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="crAng" fmla="pin 4200000 adj2 6600000" />
+
+
+ <gd name="2a1" fmla="*/ a1 2 1" />
+ <gd name="maxAdj3" fmla="+- 100000 0 2a1" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+
+ <gd name="dy1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ h a3 200000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x8" fmla="+- hc dx1 0" />
+
+
+
+ <gd name="y2" fmla="+- vc 0 dy2" />
+
+ <gd name="y3" fmla="+- vc dy2 0" />
+
+ <gd name="y1" fmla="+- y2 0 dy1" />
+
+ <gd name="y4" fmla="+- y3 dy1 0" />
+
+
+ <gd name="cadj2" fmla="+- crAng 0 cd4" />
+ <gd name="xadj2" fmla="tan hd2 cadj2" />
+
+
+
+ <gd name="len" fmla="mod xadj2 hd2 0" />
+
+
+
+ <gd name="bhw" fmla="*/ len dy1 hd2" />
+
+ <gd name="bhw2" fmla="*/ bhw 1 2" />
+ <gd name="x7" fmla="+- hc xadj2 bhw2" />
+
+ <gd name="dx67" fmla="*/ xadj2 y1 hd2" />
+ <gd name="x6" fmla="+- x7 0 dx67" />
+
+ <gd name="dx57" fmla="*/ xadj2 y2 hd2" />
+ <gd name="x5" fmla="+- x7 0 dx57" />
+
+ <gd name="dx47" fmla="*/ xadj2 y3 hd2" />
+ <gd name="x4" fmla="+- x7 0 dx47" />
+
+ <gd name="dx37" fmla="*/ xadj2 y4 hd2" />
+ <gd name="x3" fmla="+- x7 0 dx37" />
+
+ <gd name="dx27" fmla="*/ xadj2 2 1" />
+ <gd name="x2" fmla="+- x7 0 dx27" />
+
+
+ <gd name="rx7" fmla="+- x7 bhw 0" />
+
+ <gd name="rx6" fmla="+- x6 bhw 0" />
+
+ <gd name="rx5" fmla="+- x5 bhw 0" />
+
+ <gd name="rx4" fmla="+- x4 bhw 0" />
+
+ <gd name="rx3" fmla="+- x3 bhw 0" />
+
+ <gd name="rx2" fmla="+- x2 bhw 0" />
+
+
+
+ <gd name="dx7" fmla="*/ dy1 hd2 len" />
+ <gd name="rxt" fmla="+- x7 dx7 0" />
+
+ <gd name="lxt" fmla="+- rx7 0 dx7" />
+
+ <gd name="rx" fmla="?: cadj2 rxt rx7" />
+
+ <gd name="lx" fmla="?: cadj2 x7 lxt" />
+
+
+ <gd name="dy3" fmla="*/ dy1 xadj2 len" />
+ <gd name="dy4" fmla="+- 0 0 dy3" />
+ <gd name="ry" fmla="?: cadj2 dy3 t" />
+
+ <gd name="ly" fmla="?: cadj2 t dy4" />
+
+
+ <gd name="dlx" fmla="+- w 0 rx" />
+
+ <gd name="drx" fmla="+- w 0 lx" />
+
+
+ <gd name="dly" fmla="+- h 0 ry" />
+
+ <gd name="dry" fmla="+- h 0 ly" />
+
+
+
+ <gd name="xC1" fmla="+/ rx lx 2" />
+
+ <gd name="xC2" fmla="+/ drx dlx 2" />
+
+
+ <gd name="yC1" fmla="+/ ry ly 2" />
+
+ <gd name="yC2" fmla="+/ y1 y2 2" />
+
+ <gd name="yC3" fmla="+/ y3 y4 2" />
+
+ <gd name="yC4" fmla="+/ dry dly 2" />
+
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="50000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahPolar gdRefAng="adj2" minAng="4200000" maxAng="6600000">
+ <pos x="lx" y="t" />
+ </ahPolar>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x8" y="yC2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="yC3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xC2" y="yC4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xC1" y="yC1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x8" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x6" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="lx" y="ly" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx" y="ry" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx6" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="drx" y="dry" />
+ </lnTo>
+ <lnTo>
+ <pt x="dlx" y="dly" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathNotEqual>
+ <mathPlus>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 73490" />
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+ <gd name="dy1" fmla="*/ h 73490 200000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- hc dx2 0" />
+
+ <gd name="x4" fmla="+- hc dx1 0" />
+
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+
+ <gd name="y2" fmla="+- vc 0 dx2" />
+
+ <gd name="y3" fmla="+- vc dx2 0" />
+
+ <gd name="y4" fmla="+- vc dy1 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="73490">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y2" r="x4" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathPlus>
+ <moon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 87500" />
+ <gd name="g0" fmla="*/ ss a 100000" />
+ <gd name="g0w" fmla="*/ g0 w ss" />
+ <gd name="g1" fmla="+- ss 0 g0" />
+ <gd name="g2" fmla="*/ g0 g0 g1" />
+ <gd name="g3" fmla="*/ ss ss g1" />
+ <gd name="g4" fmla="*/ g3 2 1" />
+ <gd name="g5" fmla="+- g4 0 g2" />
+ <gd name="g6" fmla="+- g5 0 g0" />
+ <gd name="g6w" fmla="*/ g6 w ss" />
+ <gd name="g7" fmla="*/ g5 1 2" />
+ <gd name="g8" fmla="+- g7 0 g0" />
+ <gd name="dy1" fmla="*/ g8 hd2 ss" />
+
+ <gd name="g10h" fmla="+- vc 0 dy1" />
+ <gd name="g11h" fmla="+- vc dy1 0" />
+ <gd name="g12" fmla="*/ g0 9598 32768" />
+ <gd name="g12w" fmla="*/ g12 w ss" />
+ <gd name="g13" fmla="+- ss 0 g12" />
+ <gd name="q1" fmla="*/ ss ss 1" />
+ <gd name="q2" fmla="*/ g13 g13 1" />
+ <gd name="q3" fmla="+- q1 0 q2" />
+ <gd name="q4" fmla="sqrt q3" />
+ <gd name="dy4" fmla="*/ q4 hd2 ss" />
+ <gd name="g15h" fmla="+- vc 0 dy4" />
+ <gd name="g16h" fmla="+- vc dy4 0" />
+ <gd name="g17w" fmla="+- g6w 0 g0w" />
+ <gd name="g18w" fmla="*/ g17w 1 2" />
+
+
+ <gd name="dx2p" fmla="+- g0w g18w w" />
+ <gd name="dx2" fmla="*/ dx2p -1 1" />
+
+ <gd name="dy2" fmla="*/ hd2 -1 1" />
+
+ <gd name="stAng1" fmla="at2 dx2 dy2" />
+ <gd name="enAngp1" fmla="at2 dx2 hd2" />
+ <gd name="enAng1" fmla="+- enAngp1 0 21600000" />
+ <gd name="swAng1" fmla="+- enAng1 0 stAng1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="87500">
+ <pos x="g0w" y="vc" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="g0w" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="g12w" t="g15h" r="g0w" b="g16h" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="hd2" stAng="cd4" swAng="cd2" />
+ <arcTo wR="g18w" hR="dy1" stAng="stAng1" swAng="swAng1" />
+ <close />
+ </path>
+ </pathLst>
+
+ </moon>
+ <nonIsoscelesTrapezoid>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 w ss" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj" />
+ <gd name="x1" fmla="*/ ss a1 200000" />
+
+ <gd name="x2" fmla="*/ ss a1 100000" />
+
+ <gd name="dx3" fmla="*/ ss a2 100000" />
+
+ <gd name="x3" fmla="+- r 0 dx3" />
+ <gd name="x4" fmla="+/ r x3 2" />
+ <gd name="il" fmla="*/ wd3 a1 maxAdj" />
+
+ <gd name="adjm" fmla="max a1 a2" />
+ <gd name="it" fmla="*/ hd3 adjm maxAdj" />
+
+ <gd name="irt" fmla="*/ wd3 a2 maxAdj" />
+ <gd name="ir" fmla="+- r 0 irt" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj">
+ <pos x="x3" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="il" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </nonIsoscelesTrapezoid>
+ <noSmoking>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 18750" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dr" fmla="*/ ss a 100000" />
+ <gd name="iwd2" fmla="+- wd2 0 dr" />
+ <gd name="ihd2" fmla="+- hd2 0 dr" />
+ <gd name="ang" fmla="at2 w h" />
+ <gd name="ct" fmla="cos ihd2 ang" />
+ <gd name="st" fmla="sin iwd2 ang" />
+ <gd name="m" fmla="mod ct st 0" />
+ <gd name="n" fmla="*/ iwd2 ihd2 m" />
+ <gd name="drd2" fmla="*/ dr 1 2" />
+ <gd name="dang" fmla="at2 n drd2" />
+ <gd name="2dang" fmla="*/ dang 2 1" />
+ <gd name="swAng" fmla="+- -10800000 2dang 0" />
+ <gd name="t3" fmla="at2 w h" />
+ <gd name="stAng1" fmla="+- t3 0 dang" />
+ <gd name="stAng2" fmla="+- stAng1 0 cd2" />
+ <gd name="ct1" fmla="cos ihd2 stAng1" />
+ <gd name="st1" fmla="sin iwd2 stAng1" />
+ <gd name="m1" fmla="mod ct1 st1 0" />
+ <gd name="n1" fmla="*/ iwd2 ihd2 m1" />
+ <gd name="dx1" fmla="cos n1 stAng1" />
+ <gd name="dy1" fmla="sin n1 stAng1" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="x2" fmla="+- hc 0 dx1" />
+ <gd name="y2" fmla="+- vc 0 dy1" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefR="adj" minR="0" maxR="50000">
+ <pos x="dr" y="vc" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="stAng1" swAng="swAng" />
+ <close />
+ <moveTo>
+ <pt x="x2" y="y2" />
+ </moveTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="stAng2" swAng="swAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </noSmoking>
+ <notchedRightArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="x1" fmla="*/ dy1 dx2 hd2" />
+ <gd name="x3" fmla="+- r 0 x1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x3" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </notchedRightArrow>
+ <octagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 29289" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 1 2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="x1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="x1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </octagon>
+ <parallelogram>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 100000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="x1" fmla="*/ ss a 200000" />
+ <gd name="x2" fmla="*/ ss a 100000" />
+ <gd name="x6" fmla="+- r 0 x1" />
+ <gd name="x5" fmla="+- r 0 x2" />
+ <gd name="x3" fmla="*/ x5 1 2" />
+ <gd name="x4" fmla="+- r 0 x3" />
+ <gd name="il" fmla="*/ wd2 a maxAdj" />
+ <gd name="q1" fmla="*/ 5 a maxAdj" />
+ <gd name="q2" fmla="+/ 1 q1 12" />
+ <gd name="il" fmla="*/ q2 w 1" />
+ <gd name="it" fmla="*/ q2 h 1" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 it" />
+ <gd name="q3" fmla="*/ h hc x2" />
+ <gd name="y1" fmla="pin 0 q3 h" />
+ <gd name="y2" fmla="+- b 0 y1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </parallelogram>
+ <pentagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="hf" fmla="val 105146" />
+ <gd name="vf" fmla="val 110557" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="cos swd2 1080000" />
+ <gd name="dx2" fmla="cos swd2 18360000" />
+ <gd name="dy1" fmla="sin shd2 1080000" />
+ <gd name="dy2" fmla="sin shd2 18360000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc 0 dy2" />
+ <gd name="it" fmla="*/ y1 dx2 dx1" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="it" r="x3" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </pentagon>
+ <pie>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 0" />
+ <gd name="adj2" fmla="val 16200000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="enAng" fmla="pin 0 adj2 21599999" />
+ <gd name="sw1" fmla="+- enAng 0 stAng" />
+ <gd name="sw2" fmla="+- sw1 21600000 0" />
+ <gd name="swAng" fmla="?: sw1 sw1 sw2" />
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="wt2" fmla="sin wd2 enAng" />
+ <gd name="ht2" fmla="cos hd2 enAng" />
+ <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+ <gd name="y2" fmla="+- vc dy2 0" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="ir" r="it" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="hc" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </pie>
+ <pieWedge>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="g1" fmla="cos w 13500000" />
+ <gd name="g2" fmla="sin h 13500000" />
+ <gd name="x1" fmla="+- r g1 0" />
+ <gd name="y1" fmla="+- b g2 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="h" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </pieWedge>
+ <plaque>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 70711 100000" />
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </plaque>
+ <plaqueTabs>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="md" fmla="mod w h 0" />
+ <gd name="dx" fmla="*/ 1 md 20" />
+
+ <gd name="y1" fmla="+- 0 b dx" />
+
+ <gd name="x1" fmla="+- 0 r dx" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="dx" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="dx" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="t" />
+ </lnTo>
+ <arcTo wR="dx" hR="dx" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <arcTo wR="dx" hR="dx" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="r" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="dx" />
+ </lnTo>
+ <arcTo wR="dx" hR="dx" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <arcTo wR="dx" hR="dx" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </plaqueTabs>
+ <plus>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="d" fmla="+- w 0 h" />
+ <gd name="il" fmla="?: d l x1" />
+ <gd name="ir" fmla="?: d r x2" />
+ <gd name="it" fmla="?: d x1 t" />
+ <gd name="ib" fmla="?: d y2 b" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </plus>
+ <quadArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 22500" />
+
+ <gd name="adj2" fmla="val 22500" />
+
+ <gd name="adj3" fmla="val 22500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="q1" fmla="+- 100000 0 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ q1 1 2" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x6" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- vc 0 dx2" />
+ <gd name="y5" fmla="+- vc dx2 0" />
+ <gd name="y3" fmla="+- vc 0 dx3" />
+ <gd name="y4" fmla="+- vc dx3 0" />
+ <gd name="y6" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ dx3 x1 dx2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x3" y="x1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="y3" r="ir" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </quadArrow>
+ <quadArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 18515" />
+
+ <gd name="adj2" fmla="val 18515" />
+
+ <gd name="adj3" fmla="val 18515" />
+
+ <gd name="adj4" fmla="val 48123" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="+- 50000 0 a2" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 2 1" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin a1 adj4 maxAdj4" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+ <gd name="dx1" fmla="*/ w a4 200000" />
+
+ <gd name="dy1" fmla="*/ h a4 200000" />
+
+
+ <gd name="x8" fmla="+- r 0 ah" />
+ <gd name="x2" fmla="+- hc 0 dx1" />
+ <gd name="x7" fmla="+- hc dx1 0" />
+ <gd name="x3" fmla="+- hc 0 dx2" />
+ <gd name="x6" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc 0 dx3" />
+ <gd name="x5" fmla="+- hc dx3 0" />
+
+ <gd name="y8" fmla="+- b 0 ah" />
+ <gd name="y2" fmla="+- vc 0 dy1" />
+ <gd name="y7" fmla="+- vc dy1 0" />
+ <gd name="y3" fmla="+- vc 0 dx2" />
+ <gd name="y6" fmla="+- vc dx2 0" />
+ <gd name="y4" fmla="+- vc 0 dx3" />
+ <gd name="y5" fmla="+- vc dx3 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x4" y="ah" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x3" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="ah" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="a1" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y2" r="x7" b="y7" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="ah" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="ah" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="ah" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="ah" y="y6" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </quadArrowCallout>
+ <rect>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </rect>
+ <ribbon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 33333" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+
+
+ <gd name="x10" fmla="+- r 0 wd8" />
+
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x9" fmla="+- hc dx2 0" />
+
+ <gd name="x3" fmla="+- x2 wd32 0" />
+ <gd name="x8" fmla="+- x9 0 wd32" />
+ <gd name="x5" fmla="+- x2 wd8 0" />
+
+ <gd name="x6" fmla="+- x9 0 wd8" />
+
+ <gd name="x4" fmla="+- x5 0 wd32" />
+ <gd name="x7" fmla="+- x6 wd32 0" />
+ <gd name="y1" fmla="*/ h a1 200000" />
+
+ <gd name="y2" fmla="*/ h a1 100000" />
+
+ <gd name="y4" fmla="+- b 0 y2" />
+
+ <gd name="y3" fmla="*/ y4 1 2" />
+
+ <gd name="hR" fmla="*/ h a1 400000" />
+
+ <gd name="y5" fmla="+- b 0 hR" />
+ <gd name="y6" fmla="+- y2 0 hR" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="33333">
+ <pos x="hc" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="75000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x10" y="y3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y2" r="x9" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y5" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x5" y="hR" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x6" y="hR" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y5" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x5" y="hR" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x6" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x6" y="hR" />
+ </lnTo>
+ <moveTo>
+ <pt x="x2" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <moveTo>
+ <pt x="x9" y="y6" />
+ </moveTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ribbon>
+ <ribbon2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 33333" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+
+
+ <gd name="x10" fmla="+- r 0 wd8" />
+
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x9" fmla="+- hc dx2 0" />
+
+ <gd name="x3" fmla="+- x2 wd32 0" />
+ <gd name="x8" fmla="+- x9 0 wd32" />
+ <gd name="x5" fmla="+- x2 wd8 0" />
+
+ <gd name="x6" fmla="+- x9 0 wd8" />
+
+ <gd name="x4" fmla="+- x5 0 wd32" />
+ <gd name="x7" fmla="+- x6 wd32 0" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="y1" fmla="+- b 0 dy1" />
+ <gd name="dy2" fmla="*/ h a1 100000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y4" fmla="+- t dy2 0" />
+
+ <gd name="y3" fmla="+/ y4 b 2" />
+
+ <gd name="hR" fmla="*/ h a1 400000" />
+
+
+ <gd name="y6" fmla="+- b 0 hR" />
+ <gd name="y7" fmla="+- y1 0 hR" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="33333">
+ <pos x="hc" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="75000">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x10" y="y3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="t" r="x9" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="hR" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x5" y="y6" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x6" y="y6" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="hR" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x8" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="x5" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <moveTo>
+ <pt x="x6" y="y6" />
+ </moveTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x2" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <moveTo>
+ <pt x="x9" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x9" y="y7" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ribbon2>
+ <rightArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="dx2" fmla="*/ y1 dx1 hd2" />
+ <gd name="x2" fmla="+- x1 dx2 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="y1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </rightArrow>
+ <rightArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 w ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss w" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+
+ <gd name="dy2" fmla="*/ ss a1 200000" />
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="dx3" fmla="*/ ss a3 100000" />
+
+ <gd name="x3" fmla="+- r 0 dx3" />
+ <gd name="x2" fmla="*/ w a4 100000" />
+
+ <gd name="x1" fmla="*/ x2 1 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x3" y="y2" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x3" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </rightArrowCallout>
+ <rightBrace>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 8333" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 100000" />
+ <gd name="q1" fmla="+- 100000 0 a2" />
+ <gd name="q2" fmla="min q1 a2" />
+ <gd name="q3" fmla="*/ q2 1 2" />
+ <gd name="maxAdj1" fmla="*/ q3 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="y1" fmla="*/ ss a1 100000" />
+ <gd name="y3" fmla="*/ h a2 100000" />
+ <gd name="y2" fmla="+- y3 0 y1" />
+ <gd name="y4" fmla="+- b 0 y1" />
+ <gd name="dx1" fmla="cos wd2 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="ir" fmla="+- l dx1 0" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="hc" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="100000">
+ <pos x="r" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y2" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y2" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+ </rightBrace>
+ <rightBracket>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 8333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 h ss" />
+
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="y1" fmla="*/ ss a 100000" />
+
+ <gd name="y2" fmla="+- b 0 y1" />
+
+ <gd name="dx1" fmla="cos w 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="ir" fmla="+- l dx1 0" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
+ <pos x="r" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </rightBracket>
+ <round1Rect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ ss a 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="idx" fmla="*/ dx1 29289 100000" />
+ <gd name="ir" fmla="+- r 0 idx" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <arcTo wR="dx1" hR="dx1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </round1Rect>
+ <round2DiagRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="x1" fmla="*/ ss a1 100000" />
+ <gd name="y1" fmla="+- b 0 x1" />
+ <gd name="a" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- r 0 a" />
+ <gd name="y2" fmla="+- b 0 a" />
+ <gd name="dx1" fmla="*/ x1 29289 100000" />
+ <gd name="dx2" fmla="*/ a 29289 100000" />
+ <gd name="d" fmla="+- dx1 0 dx2" />
+ <gd name="dx" fmla="?: d dx1 dx2" />
+ <gd name="ir" fmla="+- r 0 dx" />
+ <gd name="ib" fmla="+- b 0 dx" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="a" hR="a" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="a" y="b" />
+ </lnTo>
+ <arcTo wR="a" hR="a" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </round2DiagRect>
+ <round2SameRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+
+ <gd name="tx1" fmla="*/ ss a1 100000" />
+ <gd name="tx2" fmla="+- r 0 tx1" />
+
+ <gd name="bx1" fmla="*/ ss a2 100000" />
+ <gd name="bx2" fmla="+- r 0 bx1" />
+ <gd name="by1" fmla="+- b 0 bx1" />
+ <gd name="d" fmla="+- tx1 0 bx1" />
+ <gd name="tdx" fmla="*/ tx1 29289 100000" />
+ <gd name="bdx" fmla="*/ bx1 29289 100000" />
+ <gd name="il" fmla="?: d tdx bdx" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 bdx" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="tx2" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="bx1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="tdx" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="tx1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="tx2" y="t" />
+ </lnTo>
+ <arcTo wR="tx1" hR="tx1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="by1" />
+ </lnTo>
+ <arcTo wR="bx1" hR="bx1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="bx1" y="b" />
+ </lnTo>
+ <arcTo wR="bx1" hR="bx1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="tx1" />
+ </lnTo>
+ <arcTo wR="tx1" hR="tx1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </round2SameRect>
+ <roundRect>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 29289 100000" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+ </roundRect>
+ <rtTriangle>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="it" fmla="*/ h 7 12" />
+ <gd name="ir" fmla="*/ w 7 12" />
+ <gd name="ib" fmla="*/ h 11 12" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="hc" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="wd12" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </rtTriangle>
+ <smileyFace>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 4653" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin -4653 adj 4653" />
+ <gd name="x1" fmla="*/ w 4969 21699" />
+
+ <gd name="x2" fmla="*/ w 6215 21600" />
+
+ <gd name="x3" fmla="*/ w 13135 21600" />
+
+ <gd name="x4" fmla="*/ w 16640 21600" />
+
+ <gd name="y1" fmla="*/ h 7570 21600" />
+
+ <gd name="y3" fmla="*/ h 16515 21600" />
+
+ <gd name="dy2" fmla="*/ h a 100000" />
+
+ <gd name="y2" fmla="+- y3 0 dy2" />
+
+ <gd name="y4" fmla="+- y3 dy2 0" />
+
+ <gd name="dy3" fmla="*/ h a 50000" />
+
+ <gd name="y5" fmla="+- y4 dy3 0" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="wR" fmla="*/ w 1125 21600" />
+ <gd name="hR" fmla="*/ h 1125 21600" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="-4653" maxY="4653">
+ <pos x="hc" y="y4" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="21600000" />
+ <close />
+ </path>
+ <path fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x2" y="y1" />
+ </moveTo>
+ <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="hc" y="y5" />
+ <pt x="x4" y="y2" />
+ </quadBezTo>
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="21600000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </smileyFace>
+ <snip1Rect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ ss a 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="it" fmla="*/ dx1 1 2" />
+ <gd name="ir" fmla="+/ x1 r 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </snip1Rect>
+ <snip2DiagRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 0" />
+ <gd name="adj2" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="lx1" fmla="*/ ss a1 100000" />
+ <gd name="lx2" fmla="+- r 0 lx1" />
+ <gd name="ly1" fmla="+- b 0 lx1" />
+ <gd name="rx1" fmla="*/ ss a2 100000" />
+ <gd name="rx2" fmla="+- r 0 rx1" />
+ <gd name="ry1" fmla="+- b 0 rx1" />
+ <gd name="d" fmla="+- lx1 0 rx1" />
+ <gd name="dx" fmla="?: d lx1 rx1" />
+ <gd name="il" fmla="*/ dx 1 2" />
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="lx1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="rx2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="lx1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="rx2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="rx1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="ly1" />
+ </lnTo>
+ <lnTo>
+ <pt x="lx2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="ry1" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="lx1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </snip2DiagRect>
+ <snip2SameRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="tx1" fmla="*/ ss a1 100000" />
+ <gd name="tx2" fmla="+- r 0 tx1" />
+ <gd name="bx1" fmla="*/ ss a2 100000" />
+ <gd name="bx2" fmla="+- r 0 bx1" />
+ <gd name="by1" fmla="+- b 0 bx1" />
+ <gd name="d" fmla="+- tx1 0 bx1" />
+ <gd name="dx" fmla="?: d tx1 bx1" />
+ <gd name="il" fmla="*/ dx 1 2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="it" fmla="*/ tx1 1 2" />
+ <gd name="ib" fmla="+/ by1 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="tx2" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="bx1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="tx1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="tx2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="tx1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="by1" />
+ </lnTo>
+ <lnTo>
+ <pt x="bx2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="bx1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="by1" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="tx1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </snip2SameRect>
+ <snipRoundRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="x1" fmla="*/ ss a1 100000" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="il" fmla="*/ x1 29289 100000" />
+
+ <gd name="ir" fmla="+/ x2 r 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </snipRoundRect>
+ <squareTabs>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="md" fmla="mod w h 0" />
+ <gd name="dx" fmla="*/ 1 md 20" />
+
+ <gd name="y1" fmla="+- 0 b dx" />
+
+ <gd name="x1" fmla="+- 0 r dx" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="dx" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="dx" y="x1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="dx" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="dx" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x1" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x1" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="dx" y="dx" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="dx" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </squareTabs>
+ <star10>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 42533" />
+ <gd name="hf" fmla="val 105146" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="dx1" fmla="*/ swd2 95106 100000" />
+ <gd name="dx2" fmla="*/ swd2 58779 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="*/ hd2 80902 100000" />
+ <gd name="dy2" fmla="*/ hd2 30902 100000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 80902 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 30902 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 95106 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 58779 100000" />
+ <gd name="sx1" fmla="+- hc 0 iwd2" />
+ <gd name="sx2" fmla="+- hc 0 sdx1" />
+ <gd name="sx3" fmla="+- hc 0 sdx2" />
+ <gd name="sx4" fmla="+- hc sdx2 0" />
+ <gd name="sx5" fmla="+- hc sdx1 0" />
+ <gd name="sx6" fmla="+- hc iwd2 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc sdy2 0" />
+ <gd name="sy4" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx2" t="sy2" r="sx5" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star10>
+ <star12>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="cos wd2 1800000" />
+
+ <gd name="dy1" fmla="sin hd2 3600000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x3" fmla="*/ w 3 4" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y3" fmla="*/ h 3 4" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="cos iwd2 900000" />
+ <gd name="sdx2" fmla="cos iwd2 2700000" />
+ <gd name="sdx3" fmla="cos iwd2 4500000" />
+ <gd name="sdy1" fmla="sin ihd2 4500000" />
+ <gd name="sdy2" fmla="sin ihd2 2700000" />
+ <gd name="sdy3" fmla="sin ihd2 900000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc sdx3 0" />
+ <gd name="sx5" fmla="+- hc sdx2 0" />
+ <gd name="sx6" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc sdy3 0" />
+ <gd name="sy5" fmla="+- vc sdy2 0" />
+ <gd name="sy6" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="hd4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="wd4" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="hd4" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="wd4" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx2" t="sy2" r="sx5" b="sy5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="hd4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="hd4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star12>
+ <star16>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ wd2 92388 100000" />
+ <gd name="dx2" fmla="*/ wd2 70711 100000" />
+ <gd name="dx3" fmla="*/ wd2 38268 100000" />
+ <gd name="dy1" fmla="*/ hd2 92388 100000" />
+ <gd name="dy2" fmla="*/ hd2 70711 100000" />
+ <gd name="dy3" fmla="*/ hd2 38268 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="x6" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc 0 dy3" />
+ <gd name="y4" fmla="+- vc dy3 0" />
+ <gd name="y5" fmla="+- vc dy2 0" />
+ <gd name="y6" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 98079 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 83147 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 55557 100000" />
+ <gd name="sdx4" fmla="*/ iwd2 19509 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 98079 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 83147 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 55557 100000" />
+ <gd name="sdy4" fmla="*/ ihd2 19509 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc 0 sdx4" />
+ <gd name="sx5" fmla="+- hc sdx4 0" />
+ <gd name="sx6" fmla="+- hc sdx3 0" />
+ <gd name="sx7" fmla="+- hc sdx2 0" />
+ <gd name="sx8" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc 0 sdy4" />
+ <gd name="sy5" fmla="+- vc sdy4 0" />
+ <gd name="sy6" fmla="+- vc sdy3 0" />
+ <gd name="sy7" fmla="+- vc sdy2 0" />
+ <gd name="sy8" fmla="+- vc sdy1 0" />
+ <gd name="idx" fmla="cos iwd2 2700000" />
+ <gd name="idy" fmla="sin ihd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x5" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x5" y="y5" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y6" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y6" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y5" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </star16>
+ <star24>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="cos wd2 900000" />
+ <gd name="dx2" fmla="cos wd2 1800000" />
+ <gd name="dx3" fmla="cos wd2 2700000" />
+ <gd name="dx4" fmla="val wd4" />
+ <gd name="dx5" fmla="cos wd2 4500000" />
+ <gd name="dy1" fmla="sin hd2 4500000" />
+ <gd name="dy2" fmla="sin hd2 3600000" />
+ <gd name="dy3" fmla="sin hd2 2700000" />
+ <gd name="dy4" fmla="val hd4" />
+ <gd name="dy5" fmla="sin hd2 900000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc 0 dx4" />
+ <gd name="x5" fmla="+- hc 0 dx5" />
+ <gd name="x6" fmla="+- hc dx5 0" />
+ <gd name="x7" fmla="+- hc dx4 0" />
+ <gd name="x8" fmla="+- hc dx3 0" />
+ <gd name="x9" fmla="+- hc dx2 0" />
+ <gd name="x10" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc 0 dy3" />
+ <gd name="y4" fmla="+- vc 0 dy4" />
+ <gd name="y5" fmla="+- vc 0 dy5" />
+ <gd name="y6" fmla="+- vc dy5 0" />
+ <gd name="y7" fmla="+- vc dy4 0" />
+ <gd name="y8" fmla="+- vc dy3 0" />
+ <gd name="y9" fmla="+- vc dy2 0" />
+ <gd name="y10" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 99144 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 92388 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 79335 100000" />
+ <gd name="sdx4" fmla="*/ iwd2 60876 100000" />
+ <gd name="sdx5" fmla="*/ iwd2 38268 100000" />
+ <gd name="sdx6" fmla="*/ iwd2 13053 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 99144 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 92388 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 79335 100000" />
+ <gd name="sdy4" fmla="*/ ihd2 60876 100000" />
+ <gd name="sdy5" fmla="*/ ihd2 38268 100000" />
+ <gd name="sdy6" fmla="*/ ihd2 13053 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc 0 sdx4" />
+ <gd name="sx5" fmla="+- hc 0 sdx5" />
+ <gd name="sx6" fmla="+- hc 0 sdx6" />
+ <gd name="sx7" fmla="+- hc sdx6 0" />
+ <gd name="sx8" fmla="+- hc sdx5 0" />
+ <gd name="sx9" fmla="+- hc sdx4 0" />
+ <gd name="sx10" fmla="+- hc sdx3 0" />
+ <gd name="sx11" fmla="+- hc sdx2 0" />
+ <gd name="sx12" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc 0 sdy4" />
+ <gd name="sy5" fmla="+- vc 0 sdy5" />
+ <gd name="sy6" fmla="+- vc 0 sdy6" />
+ <gd name="sy7" fmla="+- vc sdy6 0" />
+ <gd name="sy8" fmla="+- vc sdy5 0" />
+ <gd name="sy9" fmla="+- vc sdy4 0" />
+ <gd name="sy10" fmla="+- vc sdy3 0" />
+ <gd name="sy11" fmla="+- vc sdy2 0" />
+ <gd name="sy12" fmla="+- vc sdy1 0" />
+ <gd name="idx" fmla="cos iwd2 2700000" />
+ <gd name="idy" fmla="sin ihd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="ssd2">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy9" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy9" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy7" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star24>
+ <star32>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ wd2 98079 100000" />
+ <gd name="dx2" fmla="*/ wd2 92388 100000" />
+ <gd name="dx3" fmla="*/ wd2 83147 100000" />
+ <gd name="dx4" fmla="cos wd2 2700000" />
+ <gd name="dx5" fmla="*/ wd2 55557 100000" />
+ <gd name="dx6" fmla="*/ wd2 38268 100000" />
+ <gd name="dx7" fmla="*/ wd2 19509 100000" />
+ <gd name="dy1" fmla="*/ hd2 98079 100000" />
+ <gd name="dy2" fmla="*/ hd2 92388 100000" />
+ <gd name="dy3" fmla="*/ hd2 83147 100000" />
+ <gd name="dy4" fmla="sin hd2 2700000" />
+ <gd name="dy5" fmla="*/ hd2 55557 100000" />
+ <gd name="dy6" fmla="*/ hd2 38268 100000" />
+ <gd name="dy7" fmla="*/ hd2 19509 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc 0 dx4" />
+ <gd name="x5" fmla="+- hc 0 dx5" />
+ <gd name="x6" fmla="+- hc 0 dx6" />
+ <gd name="x7" fmla="+- hc 0 dx7" />
+ <gd name="x8" fmla="+- hc dx7 0" />
+ <gd name="x9" fmla="+- hc dx6 0" />
+ <gd name="x10" fmla="+- hc dx5 0" />
+ <gd name="x11" fmla="+- hc dx4 0" />
+ <gd name="x12" fmla="+- hc dx3 0" />
+ <gd name="x13" fmla="+- hc dx2 0" />
+ <gd name="x14" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc 0 dy3" />
+ <gd name="y4" fmla="+- vc 0 dy4" />
+ <gd name="y5" fmla="+- vc 0 dy5" />
+ <gd name="y6" fmla="+- vc 0 dy6" />
+ <gd name="y7" fmla="+- vc 0 dy7" />
+ <gd name="y8" fmla="+- vc dy7 0" />
+ <gd name="y9" fmla="+- vc dy6 0" />
+ <gd name="y10" fmla="+- vc dy5 0" />
+ <gd name="y11" fmla="+- vc dy4 0" />
+ <gd name="y12" fmla="+- vc dy3 0" />
+ <gd name="y13" fmla="+- vc dy2 0" />
+ <gd name="y14" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 99518 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 95694 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 88192 100000" />
+ <gd name="sdx4" fmla="*/ iwd2 77301 100000" />
+ <gd name="sdx5" fmla="*/ iwd2 63439 100000" />
+ <gd name="sdx6" fmla="*/ iwd2 47140 100000" />
+ <gd name="sdx7" fmla="*/ iwd2 29028 100000" />
+ <gd name="sdx8" fmla="*/ iwd2 9802 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 99518 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 95694 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 88192 100000" />
+ <gd name="sdy4" fmla="*/ ihd2 77301 100000" />
+ <gd name="sdy5" fmla="*/ ihd2 63439 100000" />
+ <gd name="sdy6" fmla="*/ ihd2 47140 100000" />
+ <gd name="sdy7" fmla="*/ ihd2 29028 100000" />
+ <gd name="sdy8" fmla="*/ ihd2 9802 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc 0 sdx4" />
+ <gd name="sx5" fmla="+- hc 0 sdx5" />
+ <gd name="sx6" fmla="+- hc 0 sdx6" />
+ <gd name="sx7" fmla="+- hc 0 sdx7" />
+ <gd name="sx8" fmla="+- hc 0 sdx8" />
+ <gd name="sx9" fmla="+- hc sdx8 0" />
+ <gd name="sx10" fmla="+- hc sdx7 0" />
+ <gd name="sx11" fmla="+- hc sdx6 0" />
+ <gd name="sx12" fmla="+- hc sdx5 0" />
+ <gd name="sx13" fmla="+- hc sdx4 0" />
+ <gd name="sx14" fmla="+- hc sdx3 0" />
+ <gd name="sx15" fmla="+- hc sdx2 0" />
+ <gd name="sx16" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc 0 sdy4" />
+ <gd name="sy5" fmla="+- vc 0 sdy5" />
+ <gd name="sy6" fmla="+- vc 0 sdy6" />
+ <gd name="sy7" fmla="+- vc 0 sdy7" />
+ <gd name="sy8" fmla="+- vc 0 sdy8" />
+ <gd name="sy9" fmla="+- vc sdy8 0" />
+ <gd name="sy10" fmla="+- vc sdy7 0" />
+ <gd name="sy11" fmla="+- vc sdy6 0" />
+ <gd name="sy12" fmla="+- vc sdy5 0" />
+ <gd name="sy13" fmla="+- vc sdy4 0" />
+ <gd name="sy14" fmla="+- vc sdy3 0" />
+ <gd name="sy15" fmla="+- vc sdy2 0" />
+ <gd name="sy16" fmla="+- vc sdy1 0" />
+ <gd name="idx" fmla="cos iwd2 2700000" />
+ <gd name="idy" fmla="sin ihd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="ssd2">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x11" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx13" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x12" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx14" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x13" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx15" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x14" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx16" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx16" y="sy9" />
+ </lnTo>
+ <lnTo>
+ <pt x="x14" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx15" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x13" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx14" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x12" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx13" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x11" y="y11" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy13" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y12" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy14" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y13" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy15" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y14" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy16" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy16" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y14" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy15" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y13" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy14" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y12" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy13" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y11" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy9" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star32>
+ <star4>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx" fmla="cos iwd2 2700000" />
+ <gd name="sdy" fmla="sin ihd2 2700000" />
+ <gd name="sx1" fmla="+- hc 0 sdx" />
+ <gd name="sx2" fmla="+- hc sdx 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy" />
+ <gd name="sy2" fmla="+- vc sdy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx1" t="sy1" r="sx2" b="sy2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star4>
+ <star5>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 19098" />
+ <gd name="hf" fmla="val 105146" />
+ <gd name="vf" fmla="val 110557" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="cos swd2 1080000" />
+ <gd name="dx2" fmla="cos swd2 18360000" />
+ <gd name="dy1" fmla="sin shd2 1080000" />
+ <gd name="dy2" fmla="sin shd2 18360000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc 0 dy2" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ shd2 a 50000" />
+ <gd name="sdx1" fmla="cos iwd2 20520000" />
+ <gd name="sdx2" fmla="cos iwd2 3240000" />
+ <gd name="sdy1" fmla="sin ihd2 3240000" />
+ <gd name="sdy2" fmla="sin ihd2 20520000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc sdx2 0" />
+ <gd name="sx4" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- svc 0 sdy1" />
+ <gd name="sy2" fmla="+- svc 0 sdy2" />
+ <gd name="sy3" fmla="+- svc ihd2 0" />
+ <gd name="yAdj" fmla="+- svc 0 ihd2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="sx1" t="sy1" r="sx4" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </star5>
+ <star6>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 28868" />
+ <gd name="hf" fmla="val 115470" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="dx1" fmla="cos swd2 1800000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="y2" fmla="+- vc hd4 0" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx2" fmla="*/ iwd2 1 2" />
+ <gd name="sx1" fmla="+- hc 0 iwd2" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc sdx2 0" />
+ <gd name="sx4" fmla="+- hc iwd2 0" />
+ <gd name="sdy1" fmla="sin ihd2 3600000" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x2" y="hd4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="hd4" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx1" t="sy1" r="sx4" b="sy2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="hd4" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="hd4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star6>
+ <star7>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 34601" />
+ <gd name="hf" fmla="val 102572" />
+ <gd name="vf" fmla="val 105210" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="*/ swd2 97493 100000" />
+ <gd name="dx2" fmla="*/ swd2 78183 100000" />
+ <gd name="dx3" fmla="*/ swd2 43388 100000" />
+ <gd name="dy1" fmla="*/ shd2 62349 100000" />
+ <gd name="dy2" fmla="*/ shd2 22252 100000" />
+ <gd name="dy3" fmla="*/ shd2 90097 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="x6" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc dy2 0" />
+ <gd name="y3" fmla="+- svc dy3 0" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ shd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 97493 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 78183 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 43388 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc sdx3 0" />
+ <gd name="sx5" fmla="+- hc sdx2 0" />
+ <gd name="sx6" fmla="+- hc sdx1 0" />
+ <gd name="sdy1" fmla="*/ ihd2 90097 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 22252 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 62349 100000" />
+ <gd name="sy1" fmla="+- svc 0 sdy1" />
+ <gd name="sy2" fmla="+- svc 0 sdy2" />
+ <gd name="sy3" fmla="+- svc sdy3 0" />
+ <gd name="sy4" fmla="+- svc ihd2 0" />
+ <gd name="yAdj" fmla="+- svc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x5" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx2" t="sy1" r="sx5" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star7>
+ <star8>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="cos wd2 2700000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="sin hd2 2700000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 92388 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 38268 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 92388 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 38268 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc sdx2 0" />
+ <gd name="sx4" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc sdy2 0" />
+ <gd name="sy4" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx1" t="sy1" r="sx4" b="sy4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star8>
+ <straightConnector1>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </straightConnector1>
+ <stripedRightArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 84375 w ss" />
+
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x4" fmla="*/ ss 5 32" />
+ <gd name="dx5" fmla="*/ ss a2 100000" />
+ <gd name="x5" fmla="+- r 0 dx5" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="dx6" fmla="*/ dy1 dx5 hd2" />
+ <gd name="x6" fmla="+- r 0 dx6" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x5" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x5" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x5" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x4" t="y1" r="x6" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="ssd32" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="ssd32" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ssd16" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="ssd8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="ssd8" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="ssd16" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </stripedRightArrow>
+ <sun>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 12500 adj 46875" />
+ <gd name="g0" fmla="+- 50000 0 a" />
+ <gd name="g1" fmla="*/ g0 30274 32768" />
+ <gd name="g2" fmla="*/ g0 12540 32768" />
+ <gd name="g3" fmla="+- g1 50000 0" />
+ <gd name="g4" fmla="+- g2 50000 0" />
+ <gd name="g5" fmla="+- 50000 0 g1" />
+ <gd name="g6" fmla="+- 50000 0 g2" />
+ <gd name="g7" fmla="*/ g0 23170 32768" />
+ <gd name="g8" fmla="+- 50000 g7 0" />
+ <gd name="g9" fmla="+- 50000 0 g7" />
+ <gd name="g10" fmla="*/ g5 3 4" />
+ <gd name="g11" fmla="*/ g6 3 4" />
+ <gd name="g12" fmla="+- g10 3662 0" />
+ <gd name="g13" fmla="+- g11 3662 0" />
+ <gd name="g14" fmla="+- g11 12500 0" />
+ <gd name="g15" fmla="+- 100000 0 g10" />
+ <gd name="g16" fmla="+- 100000 0 g12" />
+ <gd name="g17" fmla="+- 100000 0 g13" />
+ <gd name="g18" fmla="+- 100000 0 g14" />
+ <gd name="ox1" fmla="*/ w 18436 21600" />
+ <gd name="oy1" fmla="*/ h 3163 21600" />
+ <gd name="ox2" fmla="*/ w 3163 21600" />
+ <gd name="oy2" fmla="*/ h 18436 21600" />
+ <gd name="x8" fmla="*/ w g8 100000" />
+ <gd name="x9" fmla="*/ w g9 100000" />
+ <gd name="x10" fmla="*/ w g10 100000" />
+ <gd name="x12" fmla="*/ w g12 100000" />
+ <gd name="x13" fmla="*/ w g13 100000" />
+ <gd name="x14" fmla="*/ w g14 100000" />
+ <gd name="x15" fmla="*/ w g15 100000" />
+ <gd name="x16" fmla="*/ w g16 100000" />
+ <gd name="x17" fmla="*/ w g17 100000" />
+ <gd name="x18" fmla="*/ w g18 100000" />
+ <gd name="x19" fmla="*/ w a 100000" />
+ <gd name="wR" fmla="*/ w g0 100000" />
+ <gd name="hR" fmla="*/ h g0 100000" />
+ <gd name="y8" fmla="*/ h g8 100000" />
+ <gd name="y9" fmla="*/ h g9 100000" />
+ <gd name="y10" fmla="*/ h g10 100000" />
+ <gd name="y12" fmla="*/ h g12 100000" />
+ <gd name="y13" fmla="*/ h g13 100000" />
+ <gd name="y14" fmla="*/ h g14 100000" />
+ <gd name="y15" fmla="*/ h g15 100000" />
+ <gd name="y16" fmla="*/ h g16 100000" />
+ <gd name="y17" fmla="*/ h g17 100000" />
+ <gd name="y18" fmla="*/ h g18 100000" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="12500" maxX="46875">
+ <pos x="x19" y="vc" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x9" t="y9" r="x8" b="y8" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="r" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x15" y="y18" />
+ </lnTo>
+ <lnTo>
+ <pt x="x15" y="y14" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox1" y="oy1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x16" y="y13" />
+ </lnTo>
+ <lnTo>
+ <pt x="x17" y="y12" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x18" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x14" y="y10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox2" y="oy1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x13" y="y12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x12" y="y13" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x10" y="y14" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y18" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox2" y="oy2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x12" y="y17" />
+ </lnTo>
+ <lnTo>
+ <pt x="x13" y="y16" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x14" y="y15" />
+ </lnTo>
+ <lnTo>
+ <pt x="x18" y="y15" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox1" y="oy2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x17" y="y16" />
+ </lnTo>
+ <lnTo>
+ <pt x="x16" y="y17" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x19" y="vc" />
+ </moveTo>
+ <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </sun>
+ <swooshArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 16667" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+ <gd name="a1" fmla="pin 1 adj1 75000" />
+
+ <gd name="maxAdj2" fmla="*/ 70000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="ad1" fmla="*/ h a1 100000" />
+ <gd name="ad2" fmla="*/ ss a2 100000" />
+
+ <gd name="xB" fmla="+- r 0 ad2" />
+ <gd name="yB" fmla="+- t ssd8 0" />
+
+ <gd name="alfa" fmla="*/ cd4 1 14" />
+
+ <gd name="dx0" fmla="tan ssd8 alfa" />
+ <gd name="xC" fmla="+- xB 0 dx0" />
+
+ <gd name="dx1" fmla="tan ad1 alfa" />
+
+ <gd name="yF" fmla="+- yB ad1 0" />
+ <gd name="xF" fmla="+- xB dx1 0" />
+
+ <gd name="xE" fmla="+- xF dx0 0" />
+ <gd name="yE" fmla="+- yF ssd8 0" />
+
+ <gd name="dy2" fmla="+- yE 0 t" />
+ <gd name="dy22" fmla="*/ dy2 1 2" />
+ <gd name="dy3" fmla="*/ h 1 20" />
+ <gd name="yD" fmla="+- t dy22 dy3" />
+
+
+ <gd name="dy4" fmla="*/ hd6 1 1" />
+ <gd name="yP1" fmla="+- hd6 dy4 0" />
+ <gd name="xP1" fmla="val wd6" />
+
+
+ <gd name="dy5" fmla="*/ hd6 1 2" />
+ <gd name="yP2" fmla="+- yF dy5 0" />
+ <gd name="xP2" fmla="val wd4" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="1" maxY="75000">
+ <pos x="xF" y="yF" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="xB" y="yB" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xC" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="yD" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xE" y="yE" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="xP1" y="yP1" />
+ <pt x="xB" y="yB" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="xC" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="yD" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yE" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF" y="yF" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="xP2" y="yP2" />
+ <pt x="l" y="b" />
+ </quadBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </swooshArrow>
+ <teardrop>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 100000" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 200000" />
+ <gd name="r2" fmla="sqrt 2" />
+ <gd name="tw" fmla="*/ wd2 r2 1" />
+ <gd name="th" fmla="*/ hd2 r2 1" />
+ <gd name="sw" fmla="*/ tw a 100000" />
+ <gd name="sh" fmla="*/ th a 100000" />
+ <gd name="dx1" fmla="cos sw 2700000" />
+ <gd name="dy1" fmla="sin sh 2700000" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="x2" fmla="+/ hc x1 2" />
+ <gd name="y2" fmla="+/ vc y1 2" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="200000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <quadBezTo>
+ <pt x="x2" y="t" />
+ <pt x="x1" y="y1" />
+ </quadBezTo>
+ <quadBezTo>
+ <pt x="r" y="y2" />
+ <pt x="r" y="vc" />
+ </quadBezTo>
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </teardrop>
+ <trapezoid>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="x1" fmla="*/ ss a 200000" />
+ <gd name="x2" fmla="*/ ss a 100000" />
+ <gd name="x3" fmla="+- r 0 x2" />
+ <gd name="x4" fmla="+- r 0 x1" />
+ <gd name="il" fmla="*/ wd3 a maxAdj" />
+ <gd name="it" fmla="*/ hd3 a maxAdj" />
+ <gd name="ir" fmla="+- r 0 il" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </trapezoid>
+ <triangle>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 100000" />
+ <gd name="x1" fmla="*/ w a 200000" />
+ <gd name="x2" fmla="*/ w a 100000" />
+ <gd name="x3" fmla="+- x1 wd2 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="100000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x3" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="vc" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </triangle>
+ <upArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss h" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="*/ ss a3 100000" />
+
+ <gd name="dy2" fmla="*/ h a4 100000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y3" fmla="+/ y2 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </upArrowCallout>
+ <upDownArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="y2" fmla="*/ ss a2 100000" />
+ <gd name="y3" fmla="+- b 0 y2" />
+ <gd name="dx1" fmla="*/ w a1 200000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="*/ x1 y2 wd2" />
+ <gd name="y1" fmla="+- y2 0 dy1" />
+ <gd name="y4" fmla="+- y3 dy1 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="100000">
+ <pos x="x1" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </upDownArrow>
+ <upDownArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="y2" fmla="*/ ss a2 100000" />
+ <gd name="y3" fmla="+- b 0 y2" />
+ <gd name="dx1" fmla="*/ w a1 200000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="*/ x1 y2 wd2" />
+ <gd name="y1" fmla="+- y2 0 dy1" />
+ <gd name="y4" fmla="+- y3 dy1 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="100000">
+ <pos x="x1" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </upDownArrow>
+ <upDownArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 48123" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 50000 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss hd2" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="*/ ss a3 100000" />
+
+ <gd name="y4" fmla="+- b 0 y1" />
+
+ <gd name="dy2" fmla="*/ h a4 200000" />
+
+ <gd name="y2" fmla="+- vc 0 dy2" />
+
+ <gd name="y3" fmla="+- vc dy2 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </upDownArrowCallout>
+ <uturnArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 43750" />
+
+ <gd name="adj5" fmla="val 75000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 25000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="q2" fmla="*/ a1 ss h" />
+
+ <gd name="q3" fmla="+- 100000 0 q2" />
+
+ <gd name="maxAdj3" fmla="*/ q3 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q1" fmla="+- a3 a1 0" />
+ <gd name="minAdj5" fmla="*/ q1 ss h" />
+ <gd name="a5" fmla="pin minAdj5 adj5 100000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw2" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="dh2" fmla="+- aw2 0 th2" />
+
+ <gd name="y5" fmla="*/ h a5 100000" />
+
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+ <gd name="y4" fmla="+- y5 0 ah" />
+ <gd name="x9" fmla="+- r 0 dh2" />
+
+ <gd name="bw" fmla="*/ x9 1 2" />
+ <gd name="bs" fmla="min bw y4" />
+ <gd name="maxAdj4" fmla="*/ bs 100000 ss" />
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+
+
+ <gd name="bd" fmla="*/ ss a4 100000" />
+
+
+
+ <gd name="bd3" fmla="+- bd 0 th" />
+ <gd name="bd2" fmla="max bd3 0" />
+ <gd name="x3" fmla="+- th bd2 0" />
+
+ <gd name="x8" fmla="+- r 0 aw2" />
+
+ <gd name="x6" fmla="+- x8 0 aw2" />
+
+ <gd name="x7" fmla="+- x6 dh2 0" />
+
+ <gd name="x4" fmla="+- x9 0 bd" />
+
+ <gd name="x5" fmla="+- x7 0 bd2" />
+
+ <gd name="cx" fmla="+/ th x7 2" />
+
+
+
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="th" y="b" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="25000">
+ <pos x="x6" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="x6" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="bd" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj5" minY="minAdj5" maxY="100000">
+ <pos x="r" y="y5" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="x6" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x8" y="y5" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y4" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="cx" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="th2" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="l" y="bd" />
+ </lnTo>
+ <arcTo wR="bd" hR="bd" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <arcTo wR="bd" hR="bd" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="x3" />
+ </lnTo>
+ <arcTo wR="bd2" hR="bd2" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="x3" y="th" />
+ </lnTo>
+ <arcTo wR="bd2" hR="bd2" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="th" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </uturnArrow>
+ <verticalScroll>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 25000" />
+ <gd name="ch" fmla="*/ ss a 100000" />
+
+ <gd name="ch2" fmla="*/ ch 1 2" />
+
+ <gd name="ch4" fmla="*/ ch 1 4" />
+
+
+
+
+
+ <gd name="x3" fmla="+- ch ch2 0" />
+
+ <gd name="x4" fmla="+- ch ch 0" />
+
+ <gd name="x6" fmla="+- r 0 ch" />
+
+ <gd name="x7" fmla="+- r 0 ch2" />
+
+ <gd name="x5" fmla="+- x6 0 ch2" />
+
+
+
+
+
+ <gd name="y3" fmla="+- b 0 ch" />
+
+ <gd name="y4" fmla="+- b 0 ch2" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="25000">
+ <pos x="l" y="ch" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="ch" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x6" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="ch" t="ch" r="x6" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="ch2" y="b" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="ch2" y="y4" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="ch" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="ch" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x7" y="t" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x6" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <close />
+ <moveTo>
+ <pt x="x4" y="ch2" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x4" y="ch2" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="ch" y="y4" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="3cd4" />
+ <arcTo wR="ch4" hR="ch4" stAng="3cd4" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="ch" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="ch" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x7" y="t" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x6" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="ch2" y="b" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="x3" y="t" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x4" y="ch2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x6" y="ch" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="ch" />
+ </lnTo>
+ <moveTo>
+ <pt x="ch2" y="y3" />
+ </moveTo>
+ <arcTo wR="ch4" hR="ch4" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="ch" y="y4" />
+ </lnTo>
+ <moveTo>
+ <pt x="ch2" y="b" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="ch" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </verticalScroll>
+ <wave>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val 0" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 20000" />
+ <gd name="a2" fmla="pin -10000 adj2 10000" />
+ <gd name="y1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ y1 10 3" />
+ <gd name="y2" fmla="+- y1 0 dy2" />
+
+ <gd name="y3" fmla="+- y1 dy2 0" />
+
+ <gd name="y4" fmla="+- b 0 y1" />
+
+ <gd name="y5" fmla="+- y4 0 dy2" />
+
+ <gd name="y6" fmla="+- y4 dy2 0" />
+
+ <gd name="dx1" fmla="*/ w a2 100000" />
+
+ <gd name="of2" fmla="*/ w a2 50000" />
+
+ <gd name="x1" fmla="abs dx1" />
+
+ <gd name="dx2" fmla="?: of2 0 of2" />
+ <gd name="x2" fmla="+- l 0 dx2" />
+
+ <gd name="dx5" fmla="?: of2 of2 0" />
+ <gd name="x5" fmla="+- r 0 dx5" />
+
+ <gd name="dx3" fmla="+/ dx2 x5 3" />
+
+ <gd name="x3" fmla="+- x2 dx3 0" />
+
+ <gd name="x4" fmla="+/ x3 x5 2" />
+
+ <gd name="x6" fmla="+- l dx5 0" />
+
+ <gd name="x10" fmla="+- r dx2 0" />
+
+ <gd name="x7" fmla="+- x6 dx3 0" />
+
+ <gd name="x8" fmla="+/ x7 x10 2" />
+
+ <gd name="x9" fmla="+- r 0 x1" />
+
+ <gd name="xAdj" fmla="+- hc dx1 0" />
+ <gd name="xAdj2" fmla="+- hc 0 dx1" />
+ <gd name="il" fmla="max x2 x6" />
+ <gd name="ir" fmla="min x5 x10" />
+ <gd name="it" fmla="*/ h a1 50000" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="20000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="-10000" maxX="10000">
+ <pos x="xAdj" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="xAdj2" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xAdj" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x9" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x2" y="y1" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x3" y="y2" />
+ <pt x="x4" y="y3" />
+ <pt x="x5" y="y1" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="x10" y="y4" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="x8" y="y6" />
+ <pt x="x7" y="y5" />
+ <pt x="x6" y="y4" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </wave>
+ <wedgeEllipseCallout>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+ <gd name="adj2" fmla="val 62500" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="sdx" fmla="*/ dxPos h 1" />
+ <gd name="sdy" fmla="*/ dyPos w 1" />
+ <gd name="pang" fmla="at2 sdx sdy" />
+ <gd name="stAng" fmla="+- pang 660000 0" />
+ <gd name="enAng" fmla="+- pang 0 660000" />
+ <gd name="dx1" fmla="cos wd2 stAng" />
+ <gd name="dy1" fmla="sin hd2 stAng" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="dx2" fmla="cos wd2 enAng" />
+ <gd name="dy2" fmla="sin hd2 enAng" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+ <gd name="y2" fmla="+- vc dy2 0" />
+ <gd name="stAng1" fmla="at2 dx1 dy1" />
+ <gd name="enAng1" fmla="at2 dx2 dy2" />
+ <gd name="swAng1" fmla="+- enAng1 0 stAng1" />
+ <gd name="swAng2" fmla="+- swAng1 21600000 0" />
+ <gd name="swAng" fmla="?: swAng1 swAng1 swAng2" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ <cxn ang="pang">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xPos" y="yPos" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng1" swAng="swAng" />
+ <close />
+ </path>
+ </pathLst>
+ </wedgeEllipseCallout>
+ <wedgeRectCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+
+ <gd name="adj2" fmla="val 62500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="dx" fmla="+- xPos 0 hc" />
+ <gd name="dy" fmla="+- yPos 0 vc" />
+ <gd name="dq" fmla="*/ dxPos h w" />
+ <gd name="ady" fmla="abs dyPos" />
+ <gd name="adq" fmla="abs dq" />
+ <gd name="dz" fmla="+- ady 0 adq" />
+ <gd name="xg1" fmla="?: dxPos 7 2" />
+ <gd name="xg2" fmla="?: dxPos 10 5" />
+ <gd name="x1" fmla="*/ w xg1 12" />
+ <gd name="x2" fmla="*/ w xg2 12" />
+ <gd name="yg1" fmla="?: dyPos 7 2" />
+ <gd name="yg2" fmla="?: dyPos 10 5" />
+ <gd name="y1" fmla="*/ h yg1 12" />
+ <gd name="y2" fmla="*/ h yg2 12" />
+ <gd name="t1" fmla="?: dxPos l xPos" />
+ <gd name="xl" fmla="?: dz l t1" />
+ <gd name="t2" fmla="?: dyPos x1 xPos" />
+ <gd name="xt" fmla="?: dz t2 x1" />
+ <gd name="t3" fmla="?: dxPos xPos r" />
+ <gd name="xr" fmla="?: dz r t3" />
+ <gd name="t4" fmla="?: dyPos xPos x1" />
+ <gd name="xb" fmla="?: dz t4 x1" />
+ <gd name="t5" fmla="?: dxPos y1 yPos" />
+ <gd name="yl" fmla="?: dz y1 t5" />
+ <gd name="t6" fmla="?: dyPos t yPos" />
+ <gd name="yt" fmla="?: dz t6 t" />
+ <gd name="t7" fmla="?: dxPos yPos y1" />
+ <gd name="yr" fmla="?: dz y1 t7" />
+ <gd name="t8" fmla="?: dyPos yPos b" />
+ <gd name="yb" fmla="?: dz t8 b" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="xt" y="yt" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xr" y="yr" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="xb" y="yb" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xl" y="yl" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </wedgeRectCallout>
+ <wedgeRoundRectCallout>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+ <gd name="adj2" fmla="val 62500" />
+ <gd name="adj3" fmla="val 16667" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="dq" fmla="*/ dxPos h w" />
+ <gd name="ady" fmla="abs dyPos" />
+ <gd name="adq" fmla="abs dq" />
+ <gd name="dz" fmla="+- ady 0 adq" />
+ <gd name="xg1" fmla="?: dxPos 7 2" />
+ <gd name="xg2" fmla="?: dxPos 10 5" />
+ <gd name="x1" fmla="*/ w xg1 12" />
+ <gd name="x2" fmla="*/ w xg2 12" />
+ <gd name="yg1" fmla="?: dyPos 7 2" />
+ <gd name="yg2" fmla="?: dyPos 10 5" />
+ <gd name="y1" fmla="*/ h yg1 12" />
+ <gd name="y2" fmla="*/ h yg2 12" />
+ <gd name="t1" fmla="?: dxPos l xPos" />
+ <gd name="xl" fmla="?: dz l t1" />
+ <gd name="t2" fmla="?: dyPos x1 xPos" />
+ <gd name="xt" fmla="?: dz t2 x1" />
+ <gd name="t3" fmla="?: dxPos xPos r" />
+ <gd name="xr" fmla="?: dz r t3" />
+ <gd name="t4" fmla="?: dyPos xPos x1" />
+ <gd name="xb" fmla="?: dz t4 x1" />
+ <gd name="t5" fmla="?: dxPos y1 yPos" />
+ <gd name="yl" fmla="?: dz y1 t5" />
+ <gd name="t6" fmla="?: dyPos t yPos" />
+ <gd name="yt" fmla="?: dz t6 t" />
+ <gd name="t7" fmla="?: dxPos yPos y1" />
+ <gd name="yr" fmla="?: dz y1 t7" />
+ <gd name="t8" fmla="?: dyPos yPos b" />
+ <gd name="yb" fmla="?: dz t8 b" />
+ <gd name="u1" fmla="*/ ss adj3 100000" />
+ <gd name="u2" fmla="+- r 0 u1" />
+ <gd name="v2" fmla="+- b 0 u1" />
+ <gd name="il" fmla="*/ u1 29289 100000" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="u1" />
+ </moveTo>
+ <arcTo wR="u1" hR="u1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="xt" y="yt" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="u2" y="t" />
+ </lnTo>
+ <arcTo wR="u1" hR="u1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xr" y="yr" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="v2" />
+ </lnTo>
+ <arcTo wR="u1" hR="u1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="xb" y="yb" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="u1" y="b" />
+ </lnTo>
+ <arcTo wR="u1" hR="u1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xl" y="yl" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </wedgeRoundRectCallout>
+</presetShapeDefinitons>
diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index 68c20cca6b9c..d33572230f1d 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile$
- * $Revision$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -62,13 +59,13 @@
#include <tools/stream.hxx>
#include <tools/string.hxx>
#include <vcl/cvtgrf.hxx>
-#include <vcl/fontcvt.hxx>
+#include <unotools/fontcvt.hxx>
#include <vcl/graph.hxx>
#include <vcl/outdev.hxx>
-#include <goodies/grfmgr.hxx>
+#include <svtools/grfmgr.hxx>
#include <rtl/strbuf.hxx>
#include <sfx2/app.hxx>
-#include <svtools/languageoptions.hxx>
+#include <svl/languageoptions.hxx>
#include <svx/escherex.hxx>
#include <svx/svdoashp.hxx>
#include <svx/svxenum.hxx>
diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index ecc0b2a4cab2..a629d89639fa 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile$
- * $Revision$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/attributelist.cxx b/oox/source/helper/attributelist.cxx
index 61fb47aab9ca..4e121497c452 100644
--- a/oox/source/helper/attributelist.cxx
+++ b/oox/source/helper/attributelist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attributelist.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/binaryinputstream.cxx b/oox/source/helper/binaryinputstream.cxx
index 5f7f0c29591e..5ba4a8b0b73b 100644
--- a/oox/source/helper/binaryinputstream.cxx
+++ b/oox/source/helper/binaryinputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binaryinputstream.cxx,v $
- * $Revision: 1.4.22.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/binaryoutputstream.cxx b/oox/source/helper/binaryoutputstream.cxx
index 474b33965fb5..be6bc6d67577 100644
--- a/oox/source/helper/binaryoutputstream.cxx
+++ b/oox/source/helper/binaryoutputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binaryoutputstream.cxx,v $
- * $Revision: 1.4.22.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/binarystreambase.cxx b/oox/source/helper/binarystreambase.cxx
index 238baded3434..be6b17d3aab9 100644
--- a/oox/source/helper/binarystreambase.cxx
+++ b/oox/source/helper/binarystreambase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: binarystreambase.cxx,v $
- * $Revision: 1.3.22.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/containerhelper.cxx b/oox/source/helper/containerhelper.cxx
index e09fe77bcc2f..359bc87e09e9 100644
--- a/oox/source/helper/containerhelper.cxx
+++ b/oox/source/helper/containerhelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: containerhelper.cxx,v $
- * $Revision: 1.4.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/graphichelper.cxx b/oox/source/helper/graphichelper.cxx
index 6d8d5a678a18..3e54cd16c2bc 100644
--- a/oox/source/helper/graphichelper.cxx
+++ b/oox/source/helper/graphichelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: graphichelper.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/makefile.mk b/oox/source/helper/makefile.mk
index b172cad3d9d4..4a91a7a47764 100644
--- a/oox/source/helper/makefile.mk
+++ b/oox/source/helper/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3.22.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/modelobjecthelper.cxx b/oox/source/helper/modelobjecthelper.cxx
index e6e45492eb60..d1996991090a 100644
--- a/oox/source/helper/modelobjecthelper.cxx
+++ b/oox/source/helper/modelobjecthelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: modelobjecthelper.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/olestorage.cxx b/oox/source/helper/olestorage.cxx
index 93ff538a2939..fe660b27ff2b 100644
--- a/oox/source/helper/olestorage.cxx
+++ b/oox/source/helper/olestorage.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olestorage.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/progressbar.cxx b/oox/source/helper/progressbar.cxx
index 346dd6c526b7..6934f2dcf8d3 100644
--- a/oox/source/helper/progressbar.cxx
+++ b/oox/source/helper/progressbar.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: progressbar.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/propertymap.cxx b/oox/source/helper/propertymap.cxx
index a40b4a737bd3..9ff791fd21f3 100644
--- a/oox/source/helper/propertymap.cxx
+++ b/oox/source/helper/propertymap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: propertymap.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/propertyset.cxx b/oox/source/helper/propertyset.cxx
index e7bb19107036..5477224b9461 100644
--- a/oox/source/helper/propertyset.cxx
+++ b/oox/source/helper/propertyset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: propertyset.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/recordinputstream.cxx b/oox/source/helper/recordinputstream.cxx
index ee1138d3c751..617e7f95876e 100644
--- a/oox/source/helper/recordinputstream.cxx
+++ b/oox/source/helper/recordinputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: recordinputstream.cxx,v $
- * $Revision: 1.4.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/storagebase.cxx b/oox/source/helper/storagebase.cxx
index 028daeb027fb..6f174a74593c 100644
--- a/oox/source/helper/storagebase.cxx
+++ b/oox/source/helper/storagebase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: storagebase.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/helper/zipstorage.cxx b/oox/source/helper/zipstorage.cxx
index 5dd3aa67109b..c90b2071b133 100644
--- a/oox/source/helper/zipstorage.cxx
+++ b/oox/source/helper/zipstorage.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: zipstorage.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ole/axbinaryreader.cxx b/oox/source/ole/axbinaryreader.cxx
new file mode 100644
index 000000000000..f49776ef70e5
--- /dev/null
+++ b/oox/source/ole/axbinaryreader.cxx
@@ -0,0 +1,213 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "oox/ole/axbinaryreader.hxx"
+#include "oox/ole/olehelper.hxx"
+
+using ::rtl::OUString;
+
+namespace oox {
+namespace ole {
+
+// ============================================================================
+
+namespace {
+
+const sal_uInt32 AX_STRING_SIZEMASK = 0x7FFFFFFF;
+const sal_uInt32 AX_STRING_COMPRESSED = 0x80000000;
+
+} // namespace
+
+// ============================================================================
+
+AxAlignedInputStream::AxAlignedInputStream( BinaryInputStream& rInStrm ) :
+ mrInStrm( rInStrm ),
+ mnStrmPos( 0 )
+{
+}
+
+sal_Int64 AxAlignedInputStream::tell() const
+{
+ return mnStrmPos;
+}
+
+void AxAlignedInputStream::seek( sal_Int64 nPos )
+{
+ mbEof = mbEof || (nPos < mnStrmPos);
+ if( !mbEof )
+ skip( static_cast< sal_Int32 >( nPos - mnStrmPos ) );
+}
+
+sal_Int32 AxAlignedInputStream::readData( StreamDataSequence& orData, sal_Int32 nBytes )
+{
+ sal_Int32 nReadSize = mrInStrm.readData( orData, nBytes );
+ mnStrmPos += nReadSize;
+ return nReadSize;
+}
+
+sal_Int32 AxAlignedInputStream::readMemory( void* opMem, sal_Int32 nBytes )
+{
+ sal_Int32 nReadSize = mrInStrm.readMemory( opMem, nBytes );
+ mnStrmPos += nReadSize;
+ return nReadSize;
+}
+
+void AxAlignedInputStream::skip( sal_Int32 nBytes )
+{
+ mrInStrm.skip( nBytes );
+ mnStrmPos += nBytes;
+}
+
+void AxAlignedInputStream::align( size_t nSize )
+{
+ skip( static_cast< sal_Int32 >( (nSize - (mnStrmPos % nSize)) % nSize ) );
+}
+
+// ============================================================================
+
+AxBinaryPropertyReader::ComplexProperty::~ComplexProperty()
+{
+}
+
+bool AxBinaryPropertyReader::PairProperty::readProperty( AxAlignedInputStream& rInStrm )
+{
+ rInStrm >> mrnValue1 >> mrnValue2;
+ return true;
+}
+
+bool AxBinaryPropertyReader::StringProperty::readProperty( AxAlignedInputStream& rInStrm )
+{
+ bool bCompressed = getFlag( mnSize, AX_STRING_COMPRESSED );
+ sal_uInt32 nBufSize = mnSize & AX_STRING_SIZEMASK;
+ sal_Int64 nEndPos = rInStrm.tell() + nBufSize;
+ sal_Int32 nChars = static_cast< sal_Int32 >( nBufSize / (bCompressed ? 1 : 2) );
+ bool bValidChars = nChars <= 65536;
+ OSL_ENSURE( bValidChars, "StringProperty::readProperty - string too long" );
+ nChars = ::std::min< sal_Int32 >( nChars, 65536 );
+ mrValue = bCompressed ?
+ // ISO-8859-1 maps all byte values xx to the same Unicode code point U+00xx
+ rInStrm.readCharArrayUC( nChars, RTL_TEXTENCODING_ISO_8859_1 ) :
+ rInStrm.readUnicodeArray( nChars );
+ rInStrm.seek( nEndPos );
+ return bValidChars;
+}
+
+bool AxBinaryPropertyReader::PictureProperty::readProperty( AxAlignedInputStream& rInStrm )
+{
+ return OleHelper::importStdPic( mrPicData, rInStrm, true );
+}
+
+// ----------------------------------------------------------------------------
+
+AxBinaryPropertyReader::AxBinaryPropertyReader( BinaryInputStream& rInStrm, bool b64BitPropFlags ) :
+ maInStrm( rInStrm ),
+ mbValid( true )
+{
+ // version and size of property block
+ maInStrm.skip( 2 );
+ sal_uInt16 nBlockSize = maInStrm.readValue< sal_uInt16 >();
+ mnPropsEnd = maInStrm.tell() + nBlockSize;
+ // flagfield containing existing properties
+ if( b64BitPropFlags )
+ maInStrm >> mnPropFlags;
+ else
+ mnPropFlags = maInStrm.readuInt32();
+ mnNextProp = 1;
+}
+
+void AxBinaryPropertyReader::readBoolProperty( bool& orbValue, bool bReverse )
+{
+ // there is no data, the boolean value is equivalent to the property flag itself
+ orbValue = startNextProperty() != bReverse;
+}
+
+void AxBinaryPropertyReader::readPairProperty( sal_Int32& ornValue1, sal_Int32& ornValue2 )
+{
+ if( startNextProperty() )
+ maLargeProps.push_back( ComplexPropVector::value_type( new PairProperty( ornValue1, ornValue2 ) ) );
+}
+
+void AxBinaryPropertyReader::readStringProperty( OUString& orValue )
+{
+ if( startNextProperty() )
+ {
+ sal_uInt32 nSize = maInStrm.readAligned< sal_uInt32 >();
+ maLargeProps.push_back( ComplexPropVector::value_type( new StringProperty( orValue, nSize ) ) );
+ }
+}
+
+void AxBinaryPropertyReader::readPictureProperty( StreamDataSequence& orPicData )
+{
+ if( startNextProperty() )
+ {
+ sal_Int16 nData = maInStrm.readAligned< sal_Int16 >();
+ if( ensureValid( nData == -1 ) )
+ maStreamProps.push_back( ComplexPropVector::value_type( new PictureProperty( orPicData ) ) );
+ }
+}
+
+bool AxBinaryPropertyReader::finalizeImport()
+{
+ // read large properties
+ maInStrm.align( 4 );
+ if( ensureValid( mnPropFlags == 0 ) && !maLargeProps.empty() )
+ {
+ for( ComplexPropVector::iterator aIt = maLargeProps.begin(), aEnd = maLargeProps.end(); ensureValid() && (aIt != aEnd); ++aIt )
+ {
+ ensureValid( (*aIt)->readProperty( maInStrm ) );
+ maInStrm.align( 4 );
+ }
+ }
+ maInStrm.seek( mnPropsEnd );
+
+ // read stream properties (no stream alignment between properties!)
+ if( ensureValid() && !maStreamProps.empty() )
+ for( ComplexPropVector::iterator aIt = maStreamProps.begin(), aEnd = maStreamProps.end(); ensureValid() && (aIt != aEnd); ++aIt )
+ ensureValid( (*aIt)->readProperty( maInStrm ) );
+
+ return mbValid;
+}
+
+bool AxBinaryPropertyReader::ensureValid( bool bCondition )
+{
+ mbValid = mbValid && bCondition && !maInStrm.isEof();
+ return mbValid;
+}
+
+bool AxBinaryPropertyReader::startNextProperty()
+{
+ bool bHasProp = getFlag( mnPropFlags, mnNextProp );
+ setFlag( mnPropFlags, mnNextProp, false );
+ mnNextProp <<= 1;
+ return ensureValid() && bHasProp;
+}
+
+// ============================================================================
+
+} // namespace ole
+} // namespace oox
+
diff --git a/oox/source/ole/axcontrol.cxx b/oox/source/ole/axcontrol.cxx
index 2495305d1c35..9f99bf625333 100644
--- a/oox/source/ole/axcontrol.cxx
+++ b/oox/source/ole/axcontrol.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axcontrol.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -52,6 +49,7 @@
#include "oox/helper/propertymap.hxx"
#include "oox/helper/propertyset.hxx"
#include "oox/core/filterbase.hxx"
+#include "oox/ole/axbinaryreader.hxx"
#include "oox/ole/axcontrolhelper.hxx"
#include "oox/ole/olehelper.hxx"
@@ -254,25 +252,20 @@ void lclConvertVisualEffect( AxControlHelper& /*rHelper*/, PropertyMap& rPropMap
// ----------------------------------------------------------------------------
-/** Converts the AX picture to UNO properties. */
+/** Converts the passed picture stream to UNO properties. */
void lclConvertPicture( AxControlHelper& rHelper, PropertyMap& rPropMap, const StreamDataSequence& rPicData )
{
if( rPicData.hasElements() )
{
- SequenceInputStream aInStrm( rPicData );
- StreamDataSequence aPictureData;
- if( OleHelper::importStdPic( aPictureData, aInStrm, true ) )
- {
- OUString aGraphicUrl = rHelper.getFilter().getGraphicHelper().importGraphicObject( aPictureData );
- if( aGraphicUrl.getLength() > 0 )
- rPropMap.setProperty( PROP_ImageURL, aGraphicUrl );
- }
+ OUString aGraphicUrl = rHelper.getFilter().getGraphicHelper().importGraphicObject( rPicData );
+ if( aGraphicUrl.getLength() > 0 )
+ rPropMap.setProperty( PROP_ImageURL, aGraphicUrl );
}
}
// ----------------------------------------------------------------------------
-/** Converts the AX picture and position to UNO properties. */
+/** Converts the passed picture stream and position to UNO properties. */
void lclConvertPicture( AxControlHelper& rHelper, PropertyMap& rPropMap, const StreamDataSequence& rPicData, sal_uInt32 nPicPos )
{
// the picture
@@ -303,7 +296,7 @@ void lclConvertPicture( AxControlHelper& rHelper, PropertyMap& rPropMap, const S
// ----------------------------------------------------------------------------
-/** Converts the AX picture and position to UNO properties. */
+/** Converts the passed picture stream and position to UNO properties. */
void lclConvertPicture( AxControlHelper& rHelper, PropertyMap& rPropMap, const StreamDataSequence& rPicData, sal_Int32 nPicSizeMode, sal_Int32 /*nPicAlign*/, bool /*bPicTiling*/ )
{
// the picture
@@ -392,7 +385,11 @@ void AxControlModelBase::importProperty( sal_Int32 nPropId, const OUString& rVal
}
}
-void AxControlModelBase::importPictureData( sal_Int32 /*nPropId*/, const StreamDataSequence& /*rDataSeq*/ )
+void AxControlModelBase::importBinaryModel( BinaryInputStream& /*rInStrm*/ )
+{
+}
+
+void AxControlModelBase::importPictureData( sal_Int32 /*nPropId*/, BinaryInputStream& /*rInStrm*/ )
{
}
@@ -423,6 +420,20 @@ void AxFontDataModel::importProperty( sal_Int32 nPropId, const OUString& rValue
}
}
+void AxFontDataModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm );
+ aReader.readStringProperty( maFontName );
+ aReader.readIntProperty< sal_uInt32 >( mnFontEffects );
+ aReader.readIntProperty< sal_Int32 >( mnFontHeight );
+ aReader.skipIntProperty< sal_Int32 >(); // font offset
+ aReader.readIntProperty< sal_uInt8 >( mnFontCharSet );
+ aReader.skipIntProperty< sal_uInt8 >(); // font pitch/family
+ aReader.readIntProperty< sal_uInt8 >( mnHorAlign );
+ aReader.skipIntProperty< sal_uInt16 >(); // font weight
+ aReader.finalizeImport();
+}
+
void AxFontDataModel::convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const
{
namespace cssa = ::com::sun::star::awt;
@@ -491,15 +502,33 @@ void AxCommandButtonModel::importProperty( sal_Int32 nPropId, const OUString& rV
}
}
-void AxCommandButtonModel::importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq )
+void AxCommandButtonModel::importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm )
{
switch( nPropId )
{
- case XML_Picture: maPictureData = rDataSeq; break;
- default: AxFontDataModel::importPictureData( nPropId, rDataSeq );
+ case XML_Picture: OleHelper::importStdPic( maPictureData, rInStrm, true ); break;
+ default: AxFontDataModel::importPictureData( nPropId, rInStrm );
}
}
+void AxCommandButtonModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm );
+ aReader.readIntProperty< sal_uInt32 >( mnTextColor );
+ aReader.readIntProperty< sal_uInt32 >( mnBackColor );
+ aReader.readIntProperty< sal_uInt32 >( mnFlags );
+ aReader.readStringProperty( maCaption );
+ aReader.readIntProperty< sal_uInt32 >( mnPicturePos );
+ aReader.readPairProperty( mnWidth, mnHeight );
+ aReader.skipIntProperty< sal_uInt8 >(); // mouse pointer
+ aReader.readPictureProperty( maPictureData );
+ aReader.skipIntProperty< sal_uInt16 >(); // accelerator
+ aReader.readBoolProperty( mbFocusOnClick, true ); // binary flag means "do not take focus"
+ aReader.skipPictureProperty(); // mouse icon
+ if( aReader.finalizeImport() )
+ AxFontDataModel::importBinaryModel( rInStrm );
+}
+
OUString AxCommandButtonModel::getServiceName() const
{
return CREATE_OUSTRING( "com.sun.star.form.component.CommandButton" );
@@ -545,6 +574,26 @@ void AxLabelModel::importProperty( sal_Int32 nPropId, const OUString& rValue )
}
}
+void AxLabelModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm );
+ aReader.readIntProperty< sal_uInt32 >( mnTextColor );
+ aReader.readIntProperty< sal_uInt32 >( mnBackColor );
+ aReader.readIntProperty< sal_uInt32 >( mnFlags );
+ aReader.readStringProperty( maCaption );
+ aReader.skipIntProperty< sal_uInt32 >(); // picture position
+ aReader.readPairProperty( mnWidth, mnHeight );
+ aReader.skipIntProperty< sal_uInt8 >(); // mouse pointer
+ aReader.readIntProperty< sal_uInt32 >( mnBorderColor );
+ aReader.readIntProperty< sal_uInt16 >( mnBorderStyle );
+ aReader.readIntProperty< sal_uInt16 >( mnSpecialEffect );
+ aReader.skipPictureProperty(); // picture
+ aReader.skipIntProperty< sal_uInt16 >(); // accelerator
+ aReader.skipPictureProperty(); // mouse icon
+ if( aReader.finalizeImport() )
+ AxFontDataModel::importBinaryModel( rInStrm );
+}
+
OUString AxLabelModel::getServiceName() const
{
return CREATE_OUSTRING( "com.sun.star.form.component.FixedText" );
@@ -592,15 +641,36 @@ void AxImageModel::importProperty( sal_Int32 nPropId, const OUString& rValue )
}
}
-void AxImageModel::importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq )
+void AxImageModel::importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm )
{
switch( nPropId )
{
- case XML_Picture: maPictureData = rDataSeq; break;
- default: AxControlModelBase::importPictureData( nPropId, rDataSeq );
+ case XML_Picture: OleHelper::importStdPic( maPictureData, rInStrm, true ); break;
+ default: AxControlModelBase::importPictureData( nPropId, rInStrm );
}
}
+void AxImageModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm );
+ aReader.skipUndefinedProperty();
+ aReader.skipUndefinedProperty();
+ aReader.skipBoolProperty(); // auto-size
+ aReader.readIntProperty< sal_uInt32 >( mnBorderColor );
+ aReader.readIntProperty< sal_uInt32 >( mnBackColor );
+ aReader.readIntProperty< sal_uInt8 >( mnBorderStyle );
+ aReader.skipIntProperty< sal_uInt8 >(); // mouse pointer
+ aReader.readIntProperty< sal_uInt8 >( mnPicSizeMode );
+ aReader.readIntProperty< sal_uInt8 >( mnSpecialEffect );
+ aReader.readPairProperty( mnWidth, mnHeight );
+ aReader.readPictureProperty( maPictureData );
+ aReader.readIntProperty< sal_uInt8 >( mnPicAlign );
+ aReader.readBoolProperty( mbPicTiling );
+ aReader.readIntProperty< sal_uInt32 >( mnFlags );
+ aReader.skipPictureProperty(); // mouse icon
+ aReader.finalizeImport();
+}
+
OUString AxImageModel::getServiceName() const
{
return CREATE_OUSTRING( "com.sun.star.form.component.DatabaseImageControl" );
@@ -662,15 +732,55 @@ void AxMorphDataModel::importProperty( sal_Int32 nPropId, const OUString& rValue
}
}
-void AxMorphDataModel::importPictureData( sal_Int32 nPropId, const StreamDataSequence& rDataSeq )
+void AxMorphDataModel::importPictureData( sal_Int32 nPropId, BinaryInputStream& rInStrm )
{
switch( nPropId )
{
- case XML_Picture: maPictureData = rDataSeq; break;
- default: AxFontDataModel::importPictureData( nPropId, rDataSeq );
+ case XML_Picture: OleHelper::importStdPic( maPictureData, rInStrm, true ); break;
+ default: AxFontDataModel::importPictureData( nPropId, rInStrm );
}
}
+void AxMorphDataModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm, true );
+ aReader.readIntProperty< sal_uInt32 >( mnFlags );
+ aReader.readIntProperty< sal_uInt32 >( mnBackColor );
+ aReader.readIntProperty< sal_uInt32 >( mnTextColor );
+ aReader.readIntProperty< sal_Int32 >( mnMaxLength );
+ aReader.readIntProperty< sal_uInt8 >( mnBorderStyle );
+ aReader.readIntProperty< sal_uInt8 >( mnScrollBars );
+ aReader.readIntProperty< sal_uInt8 >( mnDisplayStyle );
+ aReader.skipIntProperty< sal_uInt8 >(); // mouse pointer
+ aReader.readPairProperty( mnWidth, mnHeight );
+ aReader.readIntProperty< sal_uInt16 >( mnPasswordChar );
+ aReader.skipIntProperty< sal_uInt32 >(); // list width
+ aReader.skipIntProperty< sal_uInt16 >(); // bound column
+ aReader.skipIntProperty< sal_Int16 >(); // text column
+ aReader.skipIntProperty< sal_Int16 >(); // column count
+ aReader.readIntProperty< sal_uInt16 >( mnListRows );
+ aReader.skipIntProperty< sal_uInt16 >(); // column info count
+ aReader.readIntProperty< sal_uInt8 >( mnMatchEntry );
+ aReader.skipIntProperty< sal_uInt8 >(); // list style
+ aReader.readIntProperty< sal_uInt8 >( mnShowDropButton );
+ aReader.skipUndefinedProperty();
+ aReader.skipIntProperty< sal_uInt8 >(); // drop down style
+ aReader.readIntProperty< sal_uInt8 >( mnMultiSelect );
+ aReader.readStringProperty( maValue );
+ aReader.readStringProperty( maCaption );
+ aReader.readIntProperty< sal_uInt32 >( mnPicturePos );
+ aReader.readIntProperty< sal_uInt32 >( mnBorderColor );
+ aReader.readIntProperty< sal_uInt32 >( mnSpecialEffect );
+ aReader.skipPictureProperty(); // mouse icon
+ aReader.readPictureProperty( maPictureData );
+ aReader.skipIntProperty< sal_uInt16 >(); // accelerator
+ aReader.skipUndefinedProperty();
+ aReader.skipBoolProperty();
+ aReader.readStringProperty( maGroupName );
+ if( aReader.finalizeImport() )
+ AxFontDataModel::importBinaryModel( rInStrm );
+}
+
void AxMorphDataModel::convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const
{
rPropMap.setProperty( PROP_TextColor, rHelper.convertColor( mnTextColor ) );
@@ -865,6 +975,27 @@ void AxSpinButtonModel::importProperty( sal_Int32 nPropId, const OUString& rValu
}
}
+void AxSpinButtonModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm );
+ aReader.readIntProperty< sal_uInt32 >( mnArrowColor );
+ aReader.readIntProperty< sal_uInt32 >( mnBackColor );
+ aReader.readIntProperty< sal_uInt32 >( mnFlags );
+ aReader.readPairProperty( mnWidth, mnHeight );
+ aReader.skipIntProperty< sal_uInt32 >(); // unused
+ aReader.readIntProperty< sal_Int32 >( mnMin );
+ aReader.readIntProperty< sal_Int32 >( mnMax );
+ aReader.readIntProperty< sal_Int32 >( mnPosition );
+ aReader.skipIntProperty< sal_uInt32 >(); // prev enabled
+ aReader.skipIntProperty< sal_uInt32 >(); // next enabled
+ aReader.readIntProperty< sal_Int32 >( mnSmallChange );
+ aReader.readIntProperty< sal_Int32 >( mnOrientation );
+ aReader.readIntProperty< sal_Int32 >( mnDelay );
+ aReader.skipPictureProperty(); // mouse icon
+ aReader.skipIntProperty< sal_uInt8 >(); // mouse pointer
+ aReader.finalizeImport();
+}
+
void AxSpinButtonModel::convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const
{
sal_Int32 nMin = ::std::min( mnMin, mnMax );
@@ -924,6 +1055,29 @@ void AxScrollBarModel::importProperty( sal_Int32 nPropId, const OUString& rValue
}
}
+void AxScrollBarModel::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ AxBinaryPropertyReader aReader( rInStrm );
+ aReader.readIntProperty< sal_uInt32 >( mnArrowColor );
+ aReader.readIntProperty< sal_uInt32 >( mnBackColor );
+ aReader.readIntProperty< sal_uInt32 >( mnFlags );
+ aReader.readPairProperty( mnWidth, mnHeight );
+ aReader.skipIntProperty< sal_uInt8 >(); // mouse pointer
+ aReader.readIntProperty< sal_Int32 >( mnMin );
+ aReader.readIntProperty< sal_Int32 >( mnMax );
+ aReader.readIntProperty< sal_Int32 >( mnPosition );
+ aReader.skipIntProperty< sal_uInt32 >(); // unused
+ aReader.skipIntProperty< sal_uInt32 >(); // prev enabled
+ aReader.skipIntProperty< sal_uInt32 >(); // next enabled
+ aReader.readIntProperty< sal_Int32 >( mnSmallChange );
+ aReader.readIntProperty< sal_Int32 >( mnLargeChange );
+ aReader.readIntProperty< sal_Int32 >( mnOrientation );
+ aReader.readIntProperty< sal_Int16 >( mnPropThumb );
+ aReader.readIntProperty< sal_Int32 >( mnDelay );
+ aReader.skipPictureProperty(); // mouse icon
+ aReader.finalizeImport();
+}
+
void AxScrollBarModel::convertProperties( AxControlHelper& rHelper, PropertyMap& rPropMap ) const
{
sal_Int32 nMin = ::std::min( mnMin, mnMax );
@@ -962,27 +1116,28 @@ AxControl::~AxControl()
AxControlModelBase* AxControl::createModel( const OUString& rClassId )
{
// TODO: move into a factory
- if( rClassId.equalsIgnoreAsciiCaseAscii( "{D7053240-CE69-11CD-A777-00DD01143C57}" ) ) // Forms.CommandButton.1
+ maClassId = rClassId.toAsciiUpperCase();
+ if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{D7053240-CE69-11CD-A777-00DD01143C57}" ) ) ) // Forms.CommandButton.1
mxModel.reset( new AxCommandButtonModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{978C9E23-D4B0-11CE-BF2D-00AA003F40D0}" ) ) // Forms.Label.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{978C9E23-D4B0-11CE-BF2D-00AA003F40D0}" ) ) ) // Forms.Label.1
mxModel.reset( new AxLabelModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{4C599241-6926-101B-9992-00000B65C6F9}" ) ) // Forms.Image.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{4C599241-6926-101B-9992-00000B65C6F9}" ) ) ) // Forms.Image.1
mxModel.reset( new AxImageModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{8BD21D60-EC42-11CE-9E0D-00AA006002F3}" ) ) // Forms.ToggleButton.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{8BD21D60-EC42-11CE-9E0D-00AA006002F3}" ) ) ) // Forms.ToggleButton.1
mxModel.reset( new AxToggleButtonModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{8BD21D40-EC42-11CE-9E0D-00AA006002F3}" ) ) // Forms.CheckBox.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{8BD21D40-EC42-11CE-9E0D-00AA006002F3}" ) ) ) // Forms.CheckBox.1
mxModel.reset( new AxCheckBoxModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{8BD21D50-EC42-11CE-9E0D-00AA006002F3}" ) ) // Forms.OptionButton.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{8BD21D50-EC42-11CE-9E0D-00AA006002F3}" ) ) ) // Forms.OptionButton.1
mxModel.reset( new AxOptionButtonModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{8BD21D10-EC42-11CE-9E0D-00AA006002F3}" ) ) // Forms.TextBox.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{8BD21D10-EC42-11CE-9E0D-00AA006002F3}" ) ) ) // Forms.TextBox.1
mxModel.reset( new AxTextBoxModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{8BD21D20-EC42-11CE-9E0D-00AA006002F3}" ) ) // Forms.ListBox.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{8BD21D20-EC42-11CE-9E0D-00AA006002F3}" ) ) ) // Forms.ListBox.1
mxModel.reset( new AxListBoxModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{8BD21D30-EC42-11CE-9E0D-00AA006002F3}" ) ) // Forms.ComboBox.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{8BD21D30-EC42-11CE-9E0D-00AA006002F3}" ) ) ) // Forms.ComboBox.1
mxModel.reset( new AxComboBoxModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{79176FB0-B7F2-11CE-97EF-00AA006D2776}" ) ) // Forms.SpinButton.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{79176FB0-B7F2-11CE-97EF-00AA006D2776}" ) ) ) // Forms.SpinButton.1
mxModel.reset( new AxSpinButtonModel );
- else if( rClassId.equalsIgnoreAsciiCaseAscii( "{DFD181E0-5E2F-11CE-A449-00AA004A803D}" ) ) // Forms.ScrollBar.1
+ else if( maClassId.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{DFD181E0-5E2F-11CE-A449-00AA004A803D}" ) ) ) // Forms.ScrollBar.1
mxModel.reset( new AxScrollBarModel );
else
mxModel.reset();
@@ -990,6 +1145,12 @@ AxControlModelBase* AxControl::createModel( const OUString& rClassId )
return mxModel.get();
}
+void AxControl::importBinaryModel( BinaryInputStream& rInStrm )
+{
+ if( AxControlModelBase* pModel = createModel( OleHelper::importGuid( rInStrm ) ) )
+ pModel->importBinaryModel( rInStrm );
+}
+
Reference< XControlModel > AxControl::convertAndInsert( AxControlHelper& rHelper ) const
{
Reference< XControlModel > xCtrlModel;
diff --git a/oox/source/ole/axcontrolfragment.cxx b/oox/source/ole/axcontrolfragment.cxx
index ff1b1e1c8117..e641ec40d71b 100644
--- a/oox/source/ole/axcontrolfragment.cxx
+++ b/oox/source/ole/axcontrolfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axcontrolfragment.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -79,9 +76,8 @@ ContextHandlerRef AxControlPropertyContext::onCreateContext( sal_Int32 nElement,
OUString aPicturePath = getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
if( aPicturePath.getLength() > 0 )
{
- StreamDataSequence aPictureData;
- if( getFilter().importBinaryData( aPictureData, aPicturePath ) )
- mrModel.importPictureData( mnPropId, aPictureData );
+ BinaryXInputStream aInStrm( getFilter().openInputStream( aPicturePath ), true );
+ mrModel.importPictureData( mnPropId, aInStrm );
}
}
break;
@@ -101,11 +97,30 @@ ContextHandlerRef AxControlFragment::onCreateContext( sal_Int32 nElement, const
{
if( isRootElement() && (nElement == AX_TOKEN( ocx )) )
{
- if( rAttribs.getToken( AX_TOKEN( persistence ), XML_TOKEN_INVALID ) == XML_persistPropertyBag )
+ OUString aClassId = rAttribs.getString( AX_TOKEN( classid ), OUString() );
+ switch( rAttribs.getToken( AX_TOKEN( persistence ), XML_TOKEN_INVALID ) )
{
- OUString aClassId = rAttribs.getString( AX_TOKEN( classid ), OUString() );
- if( AxControlModelBase* pModel = mrControl.createModel( aClassId ) )
- return new AxControlPropertyContext( *this, *pModel );
+ case XML_persistPropertyBag:
+ if( AxControlModelBase* pModel = mrControl.createModel( aClassId ) )
+ return new AxControlPropertyContext( *this, *pModel );
+ break;
+
+ case XML_persistStreamInit:
+ {
+ OUString aFragmentPath = getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
+ if( aFragmentPath.getLength() > 0 )
+ {
+ BinaryXInputStream aInStrm( getFilter().openInputStream( aFragmentPath ), true );
+ if( !aInStrm.isEof() )
+ {
+ mrControl.importBinaryModel( aInStrm );
+ // binary stream contains a copy of the class ID, must be equal to attribute value
+ OSL_ENSURE( !mrControl.getModel() || aClassId.equalsIgnoreAsciiCase( mrControl.getClassId() ),
+ "AxControlFragment::importBinaryControl - form control class ID mismatch" );
+ }
+ }
+ }
+ break;
}
}
return 0;
diff --git a/oox/source/ole/axcontrolhelper.cxx b/oox/source/ole/axcontrolhelper.cxx
index cd8180728074..1ffb4343aaf5 100644
--- a/oox/source/ole/axcontrolhelper.cxx
+++ b/oox/source/ole/axcontrolhelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: axcontrolhelper.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -93,8 +90,10 @@ AxControlHelper::~AxControlHelper()
Reference< XForm > AxControlHelper::getControlForm() const
{
if( !mbHasFormQuerried )
+ {
+ mbHasFormQuerried = true;
mxForm = createControlForm(); // virtual call
- mbHasFormQuerried = true;
+ }
return mxForm;
}
diff --git a/oox/source/ole/makefile.mk b/oox/source/ole/makefile.mk
index 6d466e1f39ab..5fe0c08dbd6f 100644
--- a/oox/source/ole/makefile.mk
+++ b/oox/source/ole/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.1.2.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -45,6 +41,7 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
SLOFILES = \
+ $(SLO)$/axbinaryreader.obj \
$(SLO)$/axcontrol.obj \
$(SLO)$/axcontrolfragment.obj \
$(SLO)$/axcontrolhelper.obj \
diff --git a/oox/source/ole/olehelper.cxx b/oox/source/ole/olehelper.cxx
index c0eb37003d9a..f26fb9d0cec3 100644
--- a/oox/source/ole/olehelper.cxx
+++ b/oox/source/ole/olehelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olehelper.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,6 +39,7 @@ namespace ole {
namespace {
+const sal_Char* const OLE_GUID_STDFONT = "{0BE35203-8F91-11CE-9DE3-00AA004BB851}";
const sal_Char* const OLE_GUID_STDPIC = "{0BE35204-8F91-11CE-9DE3-00AA004BB851}";
const sal_Char* const OLE_GUID_STDHLINK = "{79EAC9D0-BAF9-11CE-8C82-00AA004BA90B}";
const sal_Char* const OLE_GUID_URLMONIKER = "{79EAC9E0-BAF9-11CE-8C82-00AA004BA90B}";
diff --git a/oox/source/ole/oleobjecthelper.cxx b/oox/source/ole/oleobjecthelper.cxx
index c261c1ee46f1..5ef65fe2292e 100644
--- a/oox/source/ole/oleobjecthelper.cxx
+++ b/oox/source/ole/oleobjecthelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: olehelper.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ole/vbainputstream.cxx b/oox/source/ole/vbainputstream.cxx
index 6dc8aad88f4f..b2c8d5c64859 100644
--- a/oox/source/ole/vbainputstream.cxx
+++ b/oox/source/ole/vbainputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vbainputstream.cxx,v $
- * $Revision: 1.1.2.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/animationspersist.cxx b/oox/source/ppt/animationspersist.cxx
index 5f0c9430c6c3..456b0616af1c 100644
--- a/oox/source/ppt/animationspersist.cxx
+++ b/oox/source/ppt/animationspersist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: animationspersist.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/animationtypes.cxx b/oox/source/ppt/animationtypes.cxx
index 79b48f5f76d2..80d87dd49ad2 100644
--- a/oox/source/ppt/animationtypes.cxx
+++ b/oox/source/ppt/animationtypes.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: animationtypes.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/animationtypes.hxx b/oox/source/ppt/animationtypes.hxx
index dfff62597cd1..a2c57b53267f 100644
--- a/oox/source/ppt/animationtypes.hxx
+++ b/oox/source/ppt/animationtypes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: animationtypes.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/animvariantcontext.cxx b/oox/source/ppt/animvariantcontext.cxx
index f3b9de2dbf7a..ea639c8c6f5c 100644
--- a/oox/source/ppt/animvariantcontext.cxx
+++ b/oox/source/ppt/animvariantcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: animvariantcontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/animvariantcontext.hxx b/oox/source/ppt/animvariantcontext.hxx
index 692c269b8b1c..48fff797744f 100644
--- a/oox/source/ppt/animvariantcontext.hxx
+++ b/oox/source/ppt/animvariantcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: animvariantcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/backgroundproperties.cxx b/oox/source/ppt/backgroundproperties.cxx
index 14ca161c8337..5b6fc4076a80 100644
--- a/oox/source/ppt/backgroundproperties.cxx
+++ b/oox/source/ppt/backgroundproperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: backgroundproperties.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/buildlistcontext.cxx b/oox/source/ppt/buildlistcontext.cxx
index 9e872089887b..61148265dfbe 100644
--- a/oox/source/ppt/buildlistcontext.cxx
+++ b/oox/source/ppt/buildlistcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: buildlistcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/buildlistcontext.hxx b/oox/source/ppt/buildlistcontext.hxx
index b155574e579d..8b8d5c52b068 100644
--- a/oox/source/ppt/buildlistcontext.hxx
+++ b/oox/source/ppt/buildlistcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: buildlistcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/commonbehaviorcontext.cxx b/oox/source/ppt/commonbehaviorcontext.cxx
index 8590b16d73e1..36841bab5aae 100644
--- a/oox/source/ppt/commonbehaviorcontext.cxx
+++ b/oox/source/ppt/commonbehaviorcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commonbehaviorcontext.cxx,v $
- * $Revision: 1.5.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/commonbehaviorcontext.hxx b/oox/source/ppt/commonbehaviorcontext.hxx
index f9db31d1cdd2..95e47342a76e 100644
--- a/oox/source/ppt/commonbehaviorcontext.hxx
+++ b/oox/source/ppt/commonbehaviorcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commonbehaviorcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/commontimenodecontext.cxx b/oox/source/ppt/commontimenodecontext.cxx
index b24cb1a6ba54..d7de40255298 100644
--- a/oox/source/ppt/commontimenodecontext.cxx
+++ b/oox/source/ppt/commontimenodecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commontimenodecontext.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/commontimenodecontext.hxx b/oox/source/ppt/commontimenodecontext.hxx
index 7b796908fd2a..e8c55fa2d944 100644
--- a/oox/source/ppt/commontimenodecontext.hxx
+++ b/oox/source/ppt/commontimenodecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commontimenodecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/conditioncontext.cxx b/oox/source/ppt/conditioncontext.cxx
index 8c49785486e5..e52d8b27a464 100644
--- a/oox/source/ppt/conditioncontext.cxx
+++ b/oox/source/ppt/conditioncontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: conditioncontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/conditioncontext.hxx b/oox/source/ppt/conditioncontext.hxx
index 2d6f4a7aeea2..b89e587a9571 100644
--- a/oox/source/ppt/conditioncontext.hxx
+++ b/oox/source/ppt/conditioncontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: conditioncontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/customshowlistcontext.cxx b/oox/source/ppt/customshowlistcontext.cxx
index 7b6f12c5f837..613000d07d41 100644
--- a/oox/source/ppt/customshowlistcontext.cxx
+++ b/oox/source/ppt/customshowlistcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: customshowlistcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/customshowlistcontext.hxx b/oox/source/ppt/customshowlistcontext.hxx
index aacb15d675c3..a423b18f2f5d 100644
--- a/oox/source/ppt/customshowlistcontext.hxx
+++ b/oox/source/ppt/customshowlistcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: customshowlistcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/headerfootercontext.cxx b/oox/source/ppt/headerfootercontext.cxx
index 9214e2d3b4ba..69f23b77c0da 100644
--- a/oox/source/ppt/headerfootercontext.cxx
+++ b/oox/source/ppt/headerfootercontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile:$
- * $Revision:$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/headerfootercontext.hxx b/oox/source/ppt/headerfootercontext.hxx
index 3bf07315c62e..52e5bb9ab55e 100644
--- a/oox/source/ppt/headerfootercontext.hxx
+++ b/oox/source/ppt/headerfootercontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile:$
- * $Revision:$
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/layoutfragmenthandler.cxx b/oox/source/ppt/layoutfragmenthandler.cxx
index 98ff039a9099..d291550ac321 100644
--- a/oox/source/ppt/layoutfragmenthandler.cxx
+++ b/oox/source/ppt/layoutfragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: layoutfragmenthandler.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/makefile.mk b/oox/source/ppt/makefile.mk
index fd2946d54826..8d902ed51337 100644
--- a/oox/source/ppt/makefile.mk
+++ b/oox/source/ppt/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptfilterhelpers.cxx b/oox/source/ppt/pptfilterhelpers.cxx
index fcf39ea7d56a..40040e985a4c 100644
--- a/oox/source/ppt/pptfilterhelpers.cxx
+++ b/oox/source/ppt/pptfilterhelpers.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptfilterhelpers.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptfilterhelpers.hxx b/oox/source/ppt/pptfilterhelpers.hxx
index 1b60e34727a0..c36c66df5ae7 100644
--- a/oox/source/ppt/pptfilterhelpers.hxx
+++ b/oox/source/ppt/pptfilterhelpers.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptfilterhelpers.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptimport.cxx b/oox/source/ppt/pptimport.cxx
index 0e463099e9c5..79341081f1d0 100644
--- a/oox/source/ppt/pptimport.cxx
+++ b/oox/source/ppt/pptimport.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptimport.cxx,v $
- * $Revision: 1.8.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index a5a17468a5af..016857161696 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshape.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptshapecontext.cxx b/oox/source/ppt/pptshapecontext.cxx
index 0b481f8c91cf..472f5292770e 100644
--- a/oox/source/ppt/pptshapecontext.cxx
+++ b/oox/source/ppt/pptshapecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshapecontext.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptshapegroupcontext.cxx b/oox/source/ppt/pptshapegroupcontext.cxx
index 761d8529f1cb..4113b399e6eb 100644
--- a/oox/source/ppt/pptshapegroupcontext.cxx
+++ b/oox/source/ppt/pptshapegroupcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshapegroupcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/pptshapepropertiescontext.cxx b/oox/source/ppt/pptshapepropertiescontext.cxx
index 1c669dc126a8..b4af0f08a555 100644
--- a/oox/source/ppt/pptshapepropertiescontext.cxx
+++ b/oox/source/ppt/pptshapepropertiescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pptshapepropertiescontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx
index 2cd4fb4d2e5b..786836fbc554 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: presentationfragmenthandler.cxx,v $
- * $Revision: 1.5.14.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/slidefragmenthandler.cxx b/oox/source/ppt/slidefragmenthandler.cxx
index 4127eb32a218..62fbc1a87725 100644
--- a/oox/source/ppt/slidefragmenthandler.cxx
+++ b/oox/source/ppt/slidefragmenthandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidefragmenthandler.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/slidemastertextstylescontext.cxx b/oox/source/ppt/slidemastertextstylescontext.cxx
index af9cf741e934..b771998922cc 100644
--- a/oox/source/ppt/slidemastertextstylescontext.cxx
+++ b/oox/source/ppt/slidemastertextstylescontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidemastertextstylescontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/slidepersist.cxx b/oox/source/ppt/slidepersist.cxx
index 002938e2b513..c91a1bd1fd79 100644
--- a/oox/source/ppt/slidepersist.cxx
+++ b/oox/source/ppt/slidepersist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidepersist.cxx,v $
- * $Revision: 1.7.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/slidetimingcontext.cxx b/oox/source/ppt/slidetimingcontext.cxx
index 7fc20d0066e2..b64d79c949cf 100644
--- a/oox/source/ppt/slidetimingcontext.cxx
+++ b/oox/source/ppt/slidetimingcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidetimingcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/slidetransition.cxx b/oox/source/ppt/slidetransition.cxx
index f64e6eb25b50..bdfc1621e486 100644
--- a/oox/source/ppt/slidetransition.cxx
+++ b/oox/source/ppt/slidetransition.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidetransition.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/slidetransitioncontext.cxx b/oox/source/ppt/slidetransitioncontext.cxx
index 3d22ad670af2..92993d754ada 100644
--- a/oox/source/ppt/slidetransitioncontext.cxx
+++ b/oox/source/ppt/slidetransitioncontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: slidetransitioncontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/soundactioncontext.cxx b/oox/source/ppt/soundactioncontext.cxx
index 0df2ed896685..281eb848629c 100644
--- a/oox/source/ppt/soundactioncontext.cxx
+++ b/oox/source/ppt/soundactioncontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: soundactioncontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/timeanimvaluecontext.cxx b/oox/source/ppt/timeanimvaluecontext.cxx
index 80341df3bc1d..5699d8a44cc3 100644
--- a/oox/source/ppt/timeanimvaluecontext.cxx
+++ b/oox/source/ppt/timeanimvaluecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timeanimvaluecontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/timeanimvaluecontext.hxx b/oox/source/ppt/timeanimvaluecontext.hxx
index 99f0881afe01..0c6391e4c175 100644
--- a/oox/source/ppt/timeanimvaluecontext.hxx
+++ b/oox/source/ppt/timeanimvaluecontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timeanimvaluecontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/timenode.cxx b/oox/source/ppt/timenode.cxx
index 0fe214b4de6b..51a53d9631a2 100644
--- a/oox/source/ppt/timenode.cxx
+++ b/oox/source/ppt/timenode.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timenode.cxx,v $
- * $Revision: 1.4.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/timenodelistcontext.cxx b/oox/source/ppt/timenodelistcontext.cxx
index 12fe9809ba5d..3edca28aecac 100644
--- a/oox/source/ppt/timenodelistcontext.cxx
+++ b/oox/source/ppt/timenodelistcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timenodelistcontext.cxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/timetargetelementcontext.cxx b/oox/source/ppt/timetargetelementcontext.cxx
index 59a544df951e..884b6d30fa61 100644
--- a/oox/source/ppt/timetargetelementcontext.cxx
+++ b/oox/source/ppt/timetargetelementcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timetargetelementcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/ppt/timetargetelementcontext.hxx b/oox/source/ppt/timetargetelementcontext.hxx
index 125e13fd1794..05295e4298ea 100644
--- a/oox/source/ppt/timetargetelementcontext.hxx
+++ b/oox/source/ppt/timetargetelementcontext.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: timetargetelementcontext.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/FastTokenHandlerService.cxx b/oox/source/shape/FastTokenHandlerService.cxx
index d97ec886f88a..6c6fcfa53d6e 100644
--- a/oox/source/shape/FastTokenHandlerService.cxx
+++ b/oox/source/shape/FastTokenHandlerService.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FastTokenHandlerService.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/FastTokenHandlerService.hxx b/oox/source/shape/FastTokenHandlerService.hxx
index c41403539d11..b822654fdcfb 100644
--- a/oox/source/shape/FastTokenHandlerService.hxx
+++ b/oox/source/shape/FastTokenHandlerService.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FastTokenHandlerService.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/ShapeContextHandler.cxx b/oox/source/shape/ShapeContextHandler.cxx
index 8f8f9cc228e2..42efee474d90 100644
--- a/oox/source/shape/ShapeContextHandler.cxx
+++ b/oox/source/shape/ShapeContextHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ShapeContextHandler.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/ShapeContextHandler.hxx b/oox/source/shape/ShapeContextHandler.hxx
index 47b2cf1951de..c9cf67283c37 100644
--- a/oox/source/shape/ShapeContextHandler.hxx
+++ b/oox/source/shape/ShapeContextHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ShapeContextHandler.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/ShapeFilterBase.cxx b/oox/source/shape/ShapeFilterBase.cxx
index 9105b6ca38eb..7ed001ffc96c 100644
--- a/oox/source/shape/ShapeFilterBase.cxx
+++ b/oox/source/shape/ShapeFilterBase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ShapeFilterBase.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/ShapeFilterBase.hxx b/oox/source/shape/ShapeFilterBase.hxx
index 1a2edcb461f2..09cbc75e01aa 100644
--- a/oox/source/shape/ShapeFilterBase.hxx
+++ b/oox/source/shape/ShapeFilterBase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ShapeFilterBase.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/shape/makefile.mk b/oox/source/shape/makefile.mk
index 8822f686e7a4..f5a3af5542c0 100644
--- a/oox/source/shape/makefile.mk
+++ b/oox/source/shape/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/token/makefile.mk b/oox/source/token/makefile.mk
index cda48a6b11a0..3c2e9201ea33 100644
--- a/oox/source/token/makefile.mk
+++ b/oox/source/token/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/token/propertylist.cxx b/oox/source/token/propertylist.cxx
index 153b15f32461..0ffc902fcdc0 100644
--- a/oox/source/token/propertylist.cxx
+++ b/oox/source/token/propertylist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tokenmap.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/token/tokenmap.cxx b/oox/source/token/tokenmap.cxx
index c01e3662a0d4..339ff5c40b44 100644
--- a/oox/source/token/tokenmap.cxx
+++ b/oox/source/token/tokenmap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tokenmap.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/makefile.mk b/oox/source/vml/makefile.mk
index e4bc963cb1f6..2b47a1c930db 100644
--- a/oox/source/vml/makefile.mk
+++ b/oox/source/vml/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmldrawing.cxx b/oox/source/vml/vmldrawing.cxx
index f7d9827851f9..9c1bb761532a 100644
--- a/oox/source/vml/vmldrawing.cxx
+++ b/oox/source/vml/vmldrawing.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawing.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmldrawingfragment.cxx b/oox/source/vml/vmldrawingfragment.cxx
index 6eab7efdba0e..aae5b5c40556 100644
--- a/oox/source/vml/vmldrawingfragment.cxx
+++ b/oox/source/vml/vmldrawingfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawingfragmenthandler.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmlformatting.cxx b/oox/source/vml/vmlformatting.cxx
index a45054a77b52..be3f3dd19e8c 100644
--- a/oox/source/vml/vmlformatting.cxx
+++ b/oox/source/vml/vmlformatting.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmlformatting.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmlinputstream.cxx b/oox/source/vml/vmlinputstream.cxx
index 56964ad4ab19..d80058c8f3e0 100644
--- a/oox/source/vml/vmlinputstream.cxx
+++ b/oox/source/vml/vmlinputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawing.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx
index fe07172599a9..014f1edf4c45 100644
--- a/oox/source/vml/vmlshape.cxx
+++ b/oox/source/vml/vmlshape.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmlshape.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmlshapecontainer.cxx b/oox/source/vml/vmlshapecontainer.cxx
index 3b9346f3096a..6b1711f3c0f9 100644
--- a/oox/source/vml/vmlshapecontainer.cxx
+++ b/oox/source/vml/vmlshapecontainer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmlshapecontainer.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/vml/vmlshapecontext.cxx b/oox/source/vml/vmlshapecontext.cxx
index 725af97777c3..09aa19902366 100644
--- a/oox/source/vml/vmlshapecontext.cxx
+++ b/oox/source/vml/vmlshapecontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: vmldrawingfragmenthandler.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/addressconverter.cxx b/oox/source/xls/addressconverter.cxx
index 06bce7716967..5a379000fe9e 100644
--- a/oox/source/xls/addressconverter.cxx
+++ b/oox/source/xls/addressconverter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: addressconverter.cxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/autofiltercontext.cxx b/oox/source/xls/autofiltercontext.cxx
index 4ea712c32d59..4ae31fc94c56 100644
--- a/oox/source/xls/autofiltercontext.cxx
+++ b/oox/source/xls/autofiltercontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: autofiltercontext.cxx,v $
- * $Revision: 1.5.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/biffcodec.cxx b/oox/source/xls/biffcodec.cxx
index a589b1b3218f..2021c21cb08c 100644
--- a/oox/source/xls/biffcodec.cxx
+++ b/oox/source/xls/biffcodec.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffcodec.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/biffdetector.cxx b/oox/source/xls/biffdetector.cxx
index c7c466f067e6..82c7cb822d83 100644
--- a/oox/source/xls/biffdetector.cxx
+++ b/oox/source/xls/biffdetector.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffdetector.cxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/biffhelper.cxx b/oox/source/xls/biffhelper.cxx
index a12909ed9ef0..f69cac731ee7 100644
--- a/oox/source/xls/biffhelper.cxx
+++ b/oox/source/xls/biffhelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffhelper.cxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/biffinputstream.cxx b/oox/source/xls/biffinputstream.cxx
index 681b751279fc..fec36d4fa54d 100644
--- a/oox/source/xls/biffinputstream.cxx
+++ b/oox/source/xls/biffinputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffinputstream.cxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/biffoutputstream.cxx b/oox/source/xls/biffoutputstream.cxx
index ef17d0e4d103..5ec8834c5336 100644
--- a/oox/source/xls/biffoutputstream.cxx
+++ b/oox/source/xls/biffoutputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: biffoutputstream.cxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/chartsheetfragment.cxx b/oox/source/xls/chartsheetfragment.cxx
index 7e5b9198c1da..4980312900fd 100644
--- a/oox/source/xls/chartsheetfragment.cxx
+++ b/oox/source/xls/chartsheetfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: chartsheetfragment.cxx,v $
- * $Revision: 1.4.4.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/commentsbuffer.cxx b/oox/source/xls/commentsbuffer.cxx
index c8f11d55154e..190309649789 100644
--- a/oox/source/xls/commentsbuffer.cxx
+++ b/oox/source/xls/commentsbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablebuffer.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/commentsfragment.cxx b/oox/source/xls/commentsfragment.cxx
index 843211ba09b8..c87d3028b7cb 100644
--- a/oox/source/xls/commentsfragment.cxx
+++ b/oox/source/xls/commentsfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: commentsfragment.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/condformatbuffer.cxx b/oox/source/xls/condformatbuffer.cxx
index a546cb37d282..317476f25635 100644
--- a/oox/source/xls/condformatbuffer.cxx
+++ b/oox/source/xls/condformatbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: condformatbuffer.cxx,v $
- * $Revision: 1.6.6.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/condformatcontext.cxx b/oox/source/xls/condformatcontext.cxx
index 85a0f49a7746..8cd3a33615fc 100644
--- a/oox/source/xls/condformatcontext.cxx
+++ b/oox/source/xls/condformatcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: condformatcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/connectionsfragment.cxx b/oox/source/xls/connectionsfragment.cxx
index d034aa7d6b07..f19204306d1b 100644
--- a/oox/source/xls/connectionsfragment.cxx
+++ b/oox/source/xls/connectionsfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: connectionsfragment.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/defnamesbuffer.cxx b/oox/source/xls/defnamesbuffer.cxx
index b2c724b6728d..69214034fee7 100644
--- a/oox/source/xls/defnamesbuffer.cxx
+++ b/oox/source/xls/defnamesbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: defnamesbuffer.cxx,v $
- * $Revision: 1.5.4.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/drawingfragment.cxx b/oox/source/xls/drawingfragment.cxx
index 9ecc6e5b7a69..28687ba92da7 100644
--- a/oox/source/xls/drawingfragment.cxx
+++ b/oox/source/xls/drawingfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: drawingfragment.cxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/excelchartconverter.cxx b/oox/source/xls/excelchartconverter.cxx
index 52e327699f0d..bde3dd65d723 100644
--- a/oox/source/xls/excelchartconverter.cxx
+++ b/oox/source/xls/excelchartconverter.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: excelchartconverter.cxx,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/excelfilter.cxx b/oox/source/xls/excelfilter.cxx
index a5bfe5e3d1d9..d5627c56b4a3 100644
--- a/oox/source/xls/excelfilter.cxx
+++ b/oox/source/xls/excelfilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: excelfilter.cxx,v $
- * $Revision: 1.6.6.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/excelhandlers.cxx b/oox/source/xls/excelhandlers.cxx
index fa72d9602fed..aaf551424483 100644
--- a/oox/source/xls/excelhandlers.cxx
+++ b/oox/source/xls/excelhandlers.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: excelhandlers.cxx,v $
- * $Revision: 1.3.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/externallinkbuffer.cxx b/oox/source/xls/externallinkbuffer.cxx
index c75625216142..a4c0731b19ed 100644
--- a/oox/source/xls/externallinkbuffer.cxx
+++ b/oox/source/xls/externallinkbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: externallinkbuffer.cxx,v $
- * $Revision: 1.5.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/externallinkfragment.cxx b/oox/source/xls/externallinkfragment.cxx
index 39686ae7cb64..15aaf8bc5412 100644
--- a/oox/source/xls/externallinkfragment.cxx
+++ b/oox/source/xls/externallinkfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: externallinkfragment.cxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/formulabase.cxx b/oox/source/xls/formulabase.cxx
index 5240960f7a88..b9b9c3d57dcc 100644
--- a/oox/source/xls/formulabase.cxx
+++ b/oox/source/xls/formulabase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: formulabase.cxx,v $
- * $Revision: 1.5.20.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1655,13 +1652,16 @@ void FormulaProcessorBase::extractCellRangeList( ApiCellRangeList& orRanges,
sal_Int32 nOpCode = aIt->OpCode;
switch( eState )
{
+ // #i107275# accept OPCODE_SEP and OPCODE_LIST as separator token
case STATE_REF:
- if( nOpCode == OPCODE_LIST ) eState = STATE_SEP;
+ if( nOpCode == OPCODE_SEP ) eState = STATE_SEP;
+ else if( nOpCode == OPCODE_LIST ) eState = STATE_SEP;
else if( nOpCode == OPCODE_CLOSE ) eState = lclProcessClose( nParenLevel );
else eState = STATE_ERROR;
break;
case STATE_SEP:
if( nOpCode == OPCODE_PUSH ) eState = lclProcessRef( orRanges, aIt->Data, bAllowRelative, nFilterBySheet );
+ else if( nOpCode == OPCODE_SEP ) eState = STATE_SEP;
else if( nOpCode == OPCODE_LIST ) eState = STATE_SEP;
else if( nOpCode == OPCODE_OPEN ) eState = lclProcessOpen( nParenLevel );
else if( nOpCode == OPCODE_CLOSE ) eState = lclProcessClose( nParenLevel );
@@ -1669,13 +1669,15 @@ void FormulaProcessorBase::extractCellRangeList( ApiCellRangeList& orRanges,
break;
case STATE_OPEN:
if( nOpCode == OPCODE_PUSH ) eState = lclProcessRef( orRanges, aIt->Data, bAllowRelative, nFilterBySheet );
+ else if( nOpCode == OPCODE_SEP ) eState = STATE_SEP;
else if( nOpCode == OPCODE_LIST ) eState = STATE_SEP;
else if( nOpCode == OPCODE_OPEN ) eState = lclProcessOpen( nParenLevel );
else if( nOpCode == OPCODE_CLOSE ) eState = lclProcessClose( nParenLevel );
else eState = STATE_ERROR;
break;
case STATE_CLOSE:
- if( nOpCode == OPCODE_LIST ) eState = STATE_SEP;
+ if( nOpCode == OPCODE_SEP ) eState = STATE_SEP;
+ else if( nOpCode == OPCODE_LIST ) eState = STATE_SEP;
else if( nOpCode == OPCODE_CLOSE ) eState = lclProcessClose( nParenLevel );
else eState = STATE_ERROR;
break;
diff --git a/oox/source/xls/formulaparser.cxx b/oox/source/xls/formulaparser.cxx
index f0ff482e5828..c0337444f59d 100644
--- a/oox/source/xls/formulaparser.cxx
+++ b/oox/source/xls/formulaparser.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: formulaparser.cxx,v $
- * $Revision: 1.5.20.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/makefile.mk b/oox/source/xls/makefile.mk
index 42a92edfe863..cdb2e18c262d 100644
--- a/oox/source/xls/makefile.mk
+++ b/oox/source/xls/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5.20.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/numberformatsbuffer.cxx b/oox/source/xls/numberformatsbuffer.cxx
index aafc600c9030..4dfb00abeb59 100644
--- a/oox/source/xls/numberformatsbuffer.cxx
+++ b/oox/source/xls/numberformatsbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: numberformatsbuffer.cxx,v $
- * $Revision: 1.5.6.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/ooxformulaparser.cxx b/oox/source/xls/ooxformulaparser.cxx
index 62e8189bdd00..ec2668aef0f2 100644
--- a/oox/source/xls/ooxformulaparser.cxx
+++ b/oox/source/xls/ooxformulaparser.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ooxformulaparser.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/pagesettings.cxx b/oox/source/xls/pagesettings.cxx
index 956dec51f27e..c0b1011fdbcc 100644
--- a/oox/source/xls/pagesettings.cxx
+++ b/oox/source/xls/pagesettings.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pagesettings.cxx,v $
- * $Revision: 1.5.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/pivotcachebuffer.cxx b/oox/source/xls/pivotcachebuffer.cxx
index 7b503142a89e..d76ab81d07c4 100644
--- a/oox/source/xls/pivotcachebuffer.cxx
+++ b/oox/source/xls/pivotcachebuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivottablebuffer.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/pivotcachefragment.cxx b/oox/source/xls/pivotcachefragment.cxx
index 713e0ed3ac39..440fcd1e0903 100644
--- a/oox/source/xls/pivotcachefragment.cxx
+++ b/oox/source/xls/pivotcachefragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivotcachefragment.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/pivottablebuffer.cxx b/oox/source/xls/pivottablebuffer.cxx
index 361a3c00131b..d6214a843cb6 100644
--- a/oox/source/xls/pivottablebuffer.cxx
+++ b/oox/source/xls/pivottablebuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivottablebuffer.cxx,v $
- * $Revision: 1.3.28.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/pivottablefragment.cxx b/oox/source/xls/pivottablefragment.cxx
index 73b63b34906e..9b34e1bda593 100644
--- a/oox/source/xls/pivottablefragment.cxx
+++ b/oox/source/xls/pivottablefragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pivottablefragment.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/querytablefragment.cxx b/oox/source/xls/querytablefragment.cxx
index 935c47913ba2..303852b8492b 100644
--- a/oox/source/xls/querytablefragment.cxx
+++ b/oox/source/xls/querytablefragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: querytablefragment.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/richstring.cxx b/oox/source/xls/richstring.cxx
index a4f8f1379654..4e82b1e696f0 100644
--- a/oox/source/xls/richstring.cxx
+++ b/oox/source/xls/richstring.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: richstring.cxx,v $
- * $Revision: 1.4.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/richstringcontext.cxx b/oox/source/xls/richstringcontext.cxx
index c64c52c2598b..4eb3f5e91a4f 100644
--- a/oox/source/xls/richstringcontext.cxx
+++ b/oox/source/xls/richstringcontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: richstringcontext.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/scenariobuffer.cxx b/oox/source/xls/scenariobuffer.cxx
index 2d11f55d538a..a4a2627f3efb 100644
--- a/oox/source/xls/scenariobuffer.cxx
+++ b/oox/source/xls/scenariobuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: scenariobuffer.cxx,v $
- * $Revision: 1.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/scenariocontext.cxx b/oox/source/xls/scenariocontext.cxx
index 3943bd5b257f..8d1341688a74 100644
--- a/oox/source/xls/scenariocontext.cxx
+++ b/oox/source/xls/scenariocontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablefragment.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/sharedformulabuffer.cxx b/oox/source/xls/sharedformulabuffer.cxx
index c6dccfaaab3f..c95d52910bec 100644
--- a/oox/source/xls/sharedformulabuffer.cxx
+++ b/oox/source/xls/sharedformulabuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sharedformulabuffer.cxx,v $
- * $Revision: 1.4.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/sharedstringsbuffer.cxx b/oox/source/xls/sharedstringsbuffer.cxx
index f122046ac73a..f2a92ef06c0a 100644
--- a/oox/source/xls/sharedstringsbuffer.cxx
+++ b/oox/source/xls/sharedstringsbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sharedstringsbuffer.cxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/sharedstringsfragment.cxx b/oox/source/xls/sharedstringsfragment.cxx
index 6d982402c3ef..b868ca08523d 100644
--- a/oox/source/xls/sharedstringsfragment.cxx
+++ b/oox/source/xls/sharedstringsfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sharedstringsfragment.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/sheetdatacontext.cxx b/oox/source/xls/sheetdatacontext.cxx
index cd741f9649ff..be5644554d6d 100644
--- a/oox/source/xls/sheetdatacontext.cxx
+++ b/oox/source/xls/sheetdatacontext.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sheetdatacontext.cxx,v $
- * $Revision: 1.5.4.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/stylesbuffer.cxx b/oox/source/xls/stylesbuffer.cxx
index 3e69266592c7..3eac90040667 100644
--- a/oox/source/xls/stylesbuffer.cxx
+++ b/oox/source/xls/stylesbuffer.cxx
@@ -1,15 +1,11 @@
-
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: stylesbuffer.cxx,v $
- * $Revision: 1.5.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/stylesfragment.cxx b/oox/source/xls/stylesfragment.cxx
index 194c2605f38f..217fce443209 100644
--- a/oox/source/xls/stylesfragment.cxx
+++ b/oox/source/xls/stylesfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: stylesfragment.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/tablebuffer.cxx b/oox/source/xls/tablebuffer.cxx
index f38e3c7d41fe..452df7a1171a 100644
--- a/oox/source/xls/tablebuffer.cxx
+++ b/oox/source/xls/tablebuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablebuffer.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/tablefragment.cxx b/oox/source/xls/tablefragment.cxx
index 8e8cca20b534..800a45cd9530 100644
--- a/oox/source/xls/tablefragment.cxx
+++ b/oox/source/xls/tablefragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tablefragment.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/themebuffer.cxx b/oox/source/xls/themebuffer.cxx
index e089e5fece77..3aabd471742d 100644
--- a/oox/source/xls/themebuffer.cxx
+++ b/oox/source/xls/themebuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: themebuffer.cxx,v $
- * $Revision: 1.5.20.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/unitconverter.cxx b/oox/source/xls/unitconverter.cxx
index ad95f48876ec..6f287581c854 100644
--- a/oox/source/xls/unitconverter.cxx
+++ b/oox/source/xls/unitconverter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: unitconverter.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/viewsettings.cxx b/oox/source/xls/viewsettings.cxx
index 2d53541b404c..69af326c2471 100644
--- a/oox/source/xls/viewsettings.cxx
+++ b/oox/source/xls/viewsettings.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: viewsettings.cxx,v $
- * $Revision: 1.5.20.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -56,7 +53,7 @@ using ::com::sun::star::container::XNameContainer;
using ::com::sun::star::container::XIndexContainer;
using ::com::sun::star::container::XIndexAccess;
using ::com::sun::star::document::XViewDataSupplier;
-using ::com::sun::star::table::CellAddress;
+using ::com::sun::star::table::CellAddress;
using ::oox::core::FilterBase;
namespace oox {
diff --git a/oox/source/xls/webquerybuffer.cxx b/oox/source/xls/webquerybuffer.cxx
index e2c2329889b2..2babebd4a8d7 100644
--- a/oox/source/xls/webquerybuffer.cxx
+++ b/oox/source/xls/webquerybuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webquerybuffer.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/workbookfragment.cxx b/oox/source/xls/workbookfragment.cxx
index a372ef714633..e61820a2e620 100644
--- a/oox/source/xls/workbookfragment.cxx
+++ b/oox/source/xls/workbookfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: workbookfragment.cxx,v $
- * $Revision: 1.4.20.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/workbookhelper.cxx b/oox/source/xls/workbookhelper.cxx
index 69a578c051b7..93ad0a65422f 100644
--- a/oox/source/xls/workbookhelper.cxx
+++ b/oox/source/xls/workbookhelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: workbookhelper.cxx,v $
- * $Revision: 1.5.20.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/workbooksettings.cxx b/oox/source/xls/workbooksettings.cxx
index 3473dbcc330e..1277b0879e7a 100644
--- a/oox/source/xls/workbooksettings.cxx
+++ b/oox/source/xls/workbooksettings.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: workbooksettings.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/worksheetbuffer.cxx b/oox/source/xls/worksheetbuffer.cxx
index 5f19fd55dbcd..6f8d50ff38f6 100644
--- a/oox/source/xls/worksheetbuffer.cxx
+++ b/oox/source/xls/worksheetbuffer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheetbuffer.cxx,v $
- * $Revision: 1.6.2.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/worksheetfragment.cxx b/oox/source/xls/worksheetfragment.cxx
index ed8907cb5f03..ff42c6afb704 100644
--- a/oox/source/xls/worksheetfragment.cxx
+++ b/oox/source/xls/worksheetfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheetfragment.cxx,v $
- * $Revision: 1.5.4.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -88,6 +85,8 @@ const sal_uInt32 BIFF_DATAVAL_NODROPDOWN = 0x00000200;
const sal_uInt32 BIFF_DATAVAL_SHOWINPUT = 0x00040000;
const sal_uInt32 BIFF_DATAVAL_SHOWERROR = 0x00080000;
+const sal_uInt32 BIFF_SHRFEATHEAD_SHEETPROT = 2;
+
const sal_Int32 OOBIN_OLEOBJECT_CONTENT = 1;
const sal_Int32 OOBIN_OLEOBJECT_ICON = 4;
const sal_Int32 OOBIN_OLEOBJECT_ALWAYS = 1;
@@ -889,7 +888,7 @@ bool BiffWorksheetFragment::importFragment()
case BIFF_ID_SCENPROTECT: rWorksheetSett.importScenProtect( mrStrm ); break;
case BIFF_ID_SCL: rSheetViewSett.importScl( mrStrm ); break;
case BIFF_ID_SHEETPR: rWorksheetSett.importSheetPr( mrStrm ); break;
- case BIFF_ID_SHEETPROTECTION: rWorksheetSett.importSheetProtection( mrStrm ); break;
+ case BIFF_ID_SHAREDFEATHEAD: importSharedFeatHead(); break;
case BIFF_ID_STANDARDWIDTH: importStandardWidth(); break;
case BIFF_ID_UNCALCED: rWorkbookSett.importUncalced( mrStrm ); break;
case BIFF_ID_VCENTER: rPageSett.importVerCenter( mrStrm ); break;
@@ -1155,6 +1154,20 @@ void BiffWorksheetFragment::importScenarios()
getScenarios().createSheetScenarios( getSheetIndex() ).importScenarios( mrStrm );
}
+void BiffWorksheetFragment::importSharedFeatHead()
+{
+ mrStrm.skip( 12 );
+ sal_uInt16 nType = mrStrm.readuInt16();
+ mrStrm.skip( 5 );
+ switch( nType )
+ {
+ case BIFF_SHRFEATHEAD_SHEETPROT:
+ if( mrStrm.getRemaining() >= 4 )
+ getWorksheetSettings().importSheetProtection( mrStrm );
+ break;
+ }
+}
+
void BiffWorksheetFragment::importStandardWidth()
{
sal_uInt16 nWidth;
diff --git a/oox/source/xls/worksheethelper.cxx b/oox/source/xls/worksheethelper.cxx
index ab2d5c1b1946..e28df89cd7b3 100644
--- a/oox/source/xls/worksheethelper.cxx
+++ b/oox/source/xls/worksheethelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheethelper.cxx,v $
- * $Revision: 1.5.20.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/source/xls/worksheetsettings.cxx b/oox/source/xls/worksheetsettings.cxx
index d791e4801217..b9e4f4b8babc 100644
--- a/oox/source/xls/worksheetsettings.cxx
+++ b/oox/source/xls/worksheetsettings.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: worksheetsettings.cxx,v $
- * $Revision: 1.5.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -60,21 +57,21 @@ const sal_uInt16 BIFF_SHEETPR_SYMBOLSRIGHT = 0x0080;
const sal_uInt16 BIFF_SHEETPR_FITTOPAGES = 0x0100;
const sal_uInt16 BIFF_SHEETPR_SKIPEXT = 0x0200; /// BIFF3-BIFF4
-const sal_uInt16 BIFF_SHEETPROT_OBJECTS = 0x0001;
-const sal_uInt16 BIFF_SHEETPROT_SCENARIOS = 0x0002;
-const sal_uInt16 BIFF_SHEETPROT_FORMAT_CELLS = 0x0004;
-const sal_uInt16 BIFF_SHEETPROT_FORMAT_COLUMNS = 0x0008;
-const sal_uInt16 BIFF_SHEETPROT_FORMAT_ROWS = 0x0010;
-const sal_uInt16 BIFF_SHEETPROT_INSERT_COLUMNS = 0x0020;
-const sal_uInt16 BIFF_SHEETPROT_INSERT_ROWS = 0x0040;
-const sal_uInt16 BIFF_SHEETPROT_INSERT_HLINKS = 0x0080;
-const sal_uInt16 BIFF_SHEETPROT_DELETE_COLUMNS = 0x0100;
-const sal_uInt16 BIFF_SHEETPROT_DELETE_ROWS = 0x0200;
-const sal_uInt16 BIFF_SHEETPROT_SELECT_LOCKED = 0x0400;
-const sal_uInt16 BIFF_SHEETPROT_SORT = 0x0800;
-const sal_uInt16 BIFF_SHEETPROT_AUTOFILTER = 0x1000;
-const sal_uInt16 BIFF_SHEETPROT_PIVOTTABLES = 0x2000;
-const sal_uInt16 BIFF_SHEETPROT_SELECT_UNLOCKED = 0x4000;
+const sal_uInt32 BIFF_SHEETPROT_OBJECTS = 0x00000001;
+const sal_uInt32 BIFF_SHEETPROT_SCENARIOS = 0x00000002;
+const sal_uInt32 BIFF_SHEETPROT_FORMAT_CELLS = 0x00000004;
+const sal_uInt32 BIFF_SHEETPROT_FORMAT_COLUMNS = 0x00000008;
+const sal_uInt32 BIFF_SHEETPROT_FORMAT_ROWS = 0x00000010;
+const sal_uInt32 BIFF_SHEETPROT_INSERT_COLUMNS = 0x00000020;
+const sal_uInt32 BIFF_SHEETPROT_INSERT_ROWS = 0x00000040;
+const sal_uInt32 BIFF_SHEETPROT_INSERT_HLINKS = 0x00000080;
+const sal_uInt32 BIFF_SHEETPROT_DELETE_COLUMNS = 0x00000100;
+const sal_uInt32 BIFF_SHEETPROT_DELETE_ROWS = 0x00000200;
+const sal_uInt32 BIFF_SHEETPROT_SELECT_LOCKED = 0x00000400;
+const sal_uInt32 BIFF_SHEETPROT_SORT = 0x00000800;
+const sal_uInt32 BIFF_SHEETPROT_AUTOFILTER = 0x00001000;
+const sal_uInt32 BIFF_SHEETPROT_PIVOTTABLES = 0x00002000;
+const sal_uInt32 BIFF_SHEETPROT_SELECT_UNLOCKED = 0x00004000;
} // namespace
@@ -277,8 +274,7 @@ void WorksheetSettings::importPassword( BiffInputStream& rStrm )
void WorksheetSettings::importSheetProtection( BiffInputStream& rStrm )
{
- rStrm.skip( 19 );
- sal_uInt16 nFlags = rStrm.readuInt16();
+ sal_uInt32 nFlags = rStrm.readuInt32();
// set flag means protection is disabled
maSheetProt.mbObjects = !getFlag( nFlags, BIFF_SHEETPROT_OBJECTS );
maSheetProt.mbScenarios = !getFlag( nFlags, BIFF_SHEETPROT_SCENARIOS );
diff --git a/oox/util/makefile.mk b/oox/util/makefile.mk
index bf12b1addf1b..3d3aba15dd2e 100644
--- a/oox/util/makefile.mk
+++ b/oox/util/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8.4.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/oox/util/makefile.pmk b/oox/util/makefile.pmk
index dbdd5cd785ac..adb0222c2ba2 100644
--- a/oox/util/makefile.pmk
+++ b/oox/util/makefile.pmk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.pmk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/qa/complex/RDFRepositoryTest.java b/unoxml/qa/complex/RDFRepositoryTest.java
index 5fc100e5d14b..52f37c40dad6 100644
--- a/unoxml/qa/complex/RDFRepositoryTest.java
+++ b/unoxml/qa/complex/RDFRepositoryTest.java
@@ -1,14 +1,11 @@
/*************************************************************************
+ *
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RDFRepositoryTest.java,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,6 +22,7 @@
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
+ *
************************************************************************/
package complex.unoxml;
diff --git a/unoxml/qa/complex/makefile.mk b/unoxml/qa/complex/makefile.mk
index 4a7cd55fd25f..c74cbcb80dcf 100644
--- a/unoxml/qa/complex/makefile.mk
+++ b/unoxml/qa/complex/makefile.mk
@@ -1,14 +1,11 @@
#*************************************************************************
+#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2.6.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,6 +22,7 @@
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
+#
#***********************************************************************/
PRJ = ..$/..
diff --git a/unoxml/source/dom/attr.cxx b/unoxml/source/dom/attr.cxx
index 946ed0e68652..a1773a7db99f 100644
--- a/unoxml/source/dom/attr.cxx
+++ b/unoxml/source/dom/attr.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attr.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/attr.hxx b/unoxml/source/dom/attr.hxx
index 394a60357197..b79927b46037 100644
--- a/unoxml/source/dom/attr.hxx
+++ b/unoxml/source/dom/attr.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attr.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/attributesmap.cxx b/unoxml/source/dom/attributesmap.cxx
index 46990e17bf6d..c411365cf1b0 100644
--- a/unoxml/source/dom/attributesmap.cxx
+++ b/unoxml/source/dom/attributesmap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attributesmap.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/attributesmap.hxx b/unoxml/source/dom/attributesmap.hxx
index 95badb12985b..d19b517251a0 100644
--- a/unoxml/source/dom/attributesmap.hxx
+++ b/unoxml/source/dom/attributesmap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: attributesmap.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/cdatasection.cxx b/unoxml/source/dom/cdatasection.cxx
index 3613f1b68704..7c775484770c 100644
--- a/unoxml/source/dom/cdatasection.cxx
+++ b/unoxml/source/dom/cdatasection.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cdatasection.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/cdatasection.hxx b/unoxml/source/dom/cdatasection.hxx
index 67aedbdbeee2..400b2a6a02d3 100644
--- a/unoxml/source/dom/cdatasection.hxx
+++ b/unoxml/source/dom/cdatasection.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cdatasection.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/characterdata.cxx b/unoxml/source/dom/characterdata.cxx
index 586a16b9b76e..8a8407678272 100644
--- a/unoxml/source/dom/characterdata.cxx
+++ b/unoxml/source/dom/characterdata.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: characterdata.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/characterdata.hxx b/unoxml/source/dom/characterdata.hxx
index b32a085ed8e4..4ff1da570f7c 100644
--- a/unoxml/source/dom/characterdata.hxx
+++ b/unoxml/source/dom/characterdata.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: characterdata.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/childlist.cxx b/unoxml/source/dom/childlist.cxx
index 15efe41d2a05..aaa6e157225d 100644
--- a/unoxml/source/dom/childlist.cxx
+++ b/unoxml/source/dom/childlist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: childlist.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/childlist.hxx b/unoxml/source/dom/childlist.hxx
index b5ce420ed947..89b73ff2e113 100644
--- a/unoxml/source/dom/childlist.hxx
+++ b/unoxml/source/dom/childlist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: childlist.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/comment.cxx b/unoxml/source/dom/comment.cxx
index 1469bb08ab11..f0f14a2d944a 100644
--- a/unoxml/source/dom/comment.cxx
+++ b/unoxml/source/dom/comment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: comment.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/comment.hxx b/unoxml/source/dom/comment.hxx
index 0b464b2517cf..196c7460399e 100644
--- a/unoxml/source/dom/comment.hxx
+++ b/unoxml/source/dom/comment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: comment.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/document.cxx b/unoxml/source/dom/document.cxx
index 9a1216376dcc..656aa1cbef6c 100644
--- a/unoxml/source/dom/document.cxx
+++ b/unoxml/source/dom/document.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: document.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/document.hxx b/unoxml/source/dom/document.hxx
index 9cbf4dac3115..b653619031a1 100644
--- a/unoxml/source/dom/document.hxx
+++ b/unoxml/source/dom/document.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: document.hxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/documentbuilder.cxx b/unoxml/source/dom/documentbuilder.cxx
index 7f6777620d87..484c04b7f23b 100644
--- a/unoxml/source/dom/documentbuilder.cxx
+++ b/unoxml/source/dom/documentbuilder.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: documentbuilder.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/documentbuilder.hxx b/unoxml/source/dom/documentbuilder.hxx
index 43fb543aabe2..7f5a2079a051 100644
--- a/unoxml/source/dom/documentbuilder.hxx
+++ b/unoxml/source/dom/documentbuilder.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: documentbuilder.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/documentfragment.cxx b/unoxml/source/dom/documentfragment.cxx
index 4c01a403c009..a3f5ac40b5aa 100644
--- a/unoxml/source/dom/documentfragment.cxx
+++ b/unoxml/source/dom/documentfragment.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: documentfragment.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/documentfragment.hxx b/unoxml/source/dom/documentfragment.hxx
index 96b8f2fac4fe..7649f6368c9a 100644
--- a/unoxml/source/dom/documentfragment.hxx
+++ b/unoxml/source/dom/documentfragment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: documentfragment.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/documenttype.cxx b/unoxml/source/dom/documenttype.cxx
index 4f34c4baaa75..bc5004dfd23c 100644
--- a/unoxml/source/dom/documenttype.cxx
+++ b/unoxml/source/dom/documenttype.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: documenttype.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/documenttype.hxx b/unoxml/source/dom/documenttype.hxx
index 79914d3d50b1..4ea6d0c89219 100644
--- a/unoxml/source/dom/documenttype.hxx
+++ b/unoxml/source/dom/documenttype.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: documenttype.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/domimplementation.cxx b/unoxml/source/dom/domimplementation.cxx
index 1cc2bd3d261c..5d80147e7fb6 100644
--- a/unoxml/source/dom/domimplementation.cxx
+++ b/unoxml/source/dom/domimplementation.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: domimplementation.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/domimplementation.hxx b/unoxml/source/dom/domimplementation.hxx
index c335ab7c2ec8..e0282fa8e3f4 100644
--- a/unoxml/source/dom/domimplementation.hxx
+++ b/unoxml/source/dom/domimplementation.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: domimplementation.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/element.cxx b/unoxml/source/dom/element.cxx
index 87ec048570d8..7de79e39e3e4 100644
--- a/unoxml/source/dom/element.cxx
+++ b/unoxml/source/dom/element.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: element.cxx,v $
- * $Revision: 1.14.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/element.hxx b/unoxml/source/dom/element.hxx
index b56939f41ae0..d0df7102f12f 100644
--- a/unoxml/source/dom/element.hxx
+++ b/unoxml/source/dom/element.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: element.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/elementlist.cxx b/unoxml/source/dom/elementlist.cxx
index 53696edea1c3..8db7b2d3bcb4 100644
--- a/unoxml/source/dom/elementlist.cxx
+++ b/unoxml/source/dom/elementlist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: elementlist.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/elementlist.hxx b/unoxml/source/dom/elementlist.hxx
index 2c3976063d85..0ebfd2722eea 100644
--- a/unoxml/source/dom/elementlist.hxx
+++ b/unoxml/source/dom/elementlist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: elementlist.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/entitiesmap.cxx b/unoxml/source/dom/entitiesmap.cxx
index a01d651d6e2d..98db3d2c7395 100644
--- a/unoxml/source/dom/entitiesmap.cxx
+++ b/unoxml/source/dom/entitiesmap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: entitiesmap.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/entitiesmap.hxx b/unoxml/source/dom/entitiesmap.hxx
index 002721b926a6..8480f1e0eecd 100644
--- a/unoxml/source/dom/entitiesmap.hxx
+++ b/unoxml/source/dom/entitiesmap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: entitiesmap.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/entity.cxx b/unoxml/source/dom/entity.cxx
index c56d0caba36c..de711ae62d8d 100644
--- a/unoxml/source/dom/entity.cxx
+++ b/unoxml/source/dom/entity.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: entity.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/entity.hxx b/unoxml/source/dom/entity.hxx
index ffbdb770fa00..0343a13dda16 100644
--- a/unoxml/source/dom/entity.hxx
+++ b/unoxml/source/dom/entity.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: entity.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/entityreference.cxx b/unoxml/source/dom/entityreference.cxx
index 56da1c2af8e1..6cdce0c8ed3d 100644
--- a/unoxml/source/dom/entityreference.cxx
+++ b/unoxml/source/dom/entityreference.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: entityreference.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/entityreference.hxx b/unoxml/source/dom/entityreference.hxx
index 834476fe88c9..1ab8217bc628 100644
--- a/unoxml/source/dom/entityreference.hxx
+++ b/unoxml/source/dom/entityreference.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: entityreference.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/makefile.mk b/unoxml/source/dom/makefile.mk
index 227259ea965c..32a35ebfd54b 100644
--- a/unoxml/source/dom/makefile.mk
+++ b/unoxml/source/dom/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/node.cxx b/unoxml/source/dom/node.cxx
index b9e3a6346310..2a03896502a9 100644
--- a/unoxml/source/dom/node.cxx
+++ b/unoxml/source/dom/node.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: node.cxx,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1001,5 +998,11 @@ namespace DOM
events::CEventDispatcher::dispatchEvent(m_aNodePtr, evt);
return sal_True;
}
+
+ ::sal_Int64 SAL_CALL CNode::getSomething(const Sequence< ::sal_Int8 >& /*aIdentifier*/)
+ throw (RuntimeException)
+ {
+ return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(m_aNodePtr));
+ }
}
diff --git a/unoxml/source/dom/node.hxx b/unoxml/source/dom/node.hxx
index 51adbd3100be..a4397e7053fd 100644
--- a/unoxml/source/dom/node.hxx
+++ b/unoxml/source/dom/node.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: node.hxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -37,9 +34,10 @@
#include <sal/types.h>
#include <sax/fastattribs.hxx>
#include <cppuhelper/implbase1.hxx>
-#include <cppuhelper/implbase2.hxx>
+#include <cppuhelper/implbase3.hxx>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Exception.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/xml/dom/XNode.hpp>
#include <com/sun/star/xml/dom/XNodeList.hpp>
#include <com/sun/star/xml/dom/XNamedNodeMap.hpp>
@@ -67,6 +65,8 @@ using namespace com::sun::star::xml::sax;
using namespace com::sun::star::xml::dom;
using namespace com::sun::star::xml::dom::events;
+using com::sun::star::lang::XUnoTunnel;
+
namespace DOM
{
struct Context
@@ -117,7 +117,7 @@ namespace DOM
typedef std::map< const xmlNodePtr, CNode* > nodemap_t;
- class CNode : public cppu::WeakImplHelper2< XNode, XEventTarget >
+ class CNode : public cppu::WeakImplHelper3< XNode, XUnoTunnel, XEventTarget >
{
friend class CDocument;
friend class CElement;
@@ -342,6 +342,9 @@ namespace DOM
virtual sal_Bool SAL_CALL dispatchEvent(const Reference< XEvent >& evt)
throw(RuntimeException, EventException);
+ // --- XUnoTunnel
+ virtual ::sal_Int64 SAL_CALL getSomething(const Sequence< ::sal_Int8 >& aIdentifier)
+ throw (RuntimeException);
};
/// eliminate redundant namespace declarations
diff --git a/unoxml/source/dom/notation.cxx b/unoxml/source/dom/notation.cxx
index 7f4acfad1de9..9781b6877eef 100644
--- a/unoxml/source/dom/notation.cxx
+++ b/unoxml/source/dom/notation.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: notation.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/notation.hxx b/unoxml/source/dom/notation.hxx
index 1dfa6bf22c72..a8fdf7994fc4 100644
--- a/unoxml/source/dom/notation.hxx
+++ b/unoxml/source/dom/notation.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: notation.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/notationsmap.cxx b/unoxml/source/dom/notationsmap.cxx
index b4c2ae0fc702..477d40277374 100644
--- a/unoxml/source/dom/notationsmap.cxx
+++ b/unoxml/source/dom/notationsmap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: notationsmap.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/notationsmap.hxx b/unoxml/source/dom/notationsmap.hxx
index 86f838fff713..9c950c64de4c 100644
--- a/unoxml/source/dom/notationsmap.hxx
+++ b/unoxml/source/dom/notationsmap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: notationsmap.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/processinginstruction.cxx b/unoxml/source/dom/processinginstruction.cxx
index 089cccb80131..37e52086cbd8 100644
--- a/unoxml/source/dom/processinginstruction.cxx
+++ b/unoxml/source/dom/processinginstruction.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: processinginstruction.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/processinginstruction.hxx b/unoxml/source/dom/processinginstruction.hxx
index 95dcf647ba0f..b794d31e159d 100644
--- a/unoxml/source/dom/processinginstruction.hxx
+++ b/unoxml/source/dom/processinginstruction.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: processinginstruction.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/saxbuilder.cxx b/unoxml/source/dom/saxbuilder.cxx
index e06a3915b851..e968eee3e2f6 100644
--- a/unoxml/source/dom/saxbuilder.cxx
+++ b/unoxml/source/dom/saxbuilder.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: saxbuilder.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/saxbuilder.hxx b/unoxml/source/dom/saxbuilder.hxx
index 454b22f2d457..c243877aae2b 100644
--- a/unoxml/source/dom/saxbuilder.hxx
+++ b/unoxml/source/dom/saxbuilder.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: saxbuilder.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/text.cxx b/unoxml/source/dom/text.cxx
index 68eb775981e4..d60fcf234ebf 100644
--- a/unoxml/source/dom/text.cxx
+++ b/unoxml/source/dom/text.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: text.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/dom/text.hxx b/unoxml/source/dom/text.hxx
index 8d97365ba744..a99f4ff2aa5d 100644
--- a/unoxml/source/dom/text.hxx
+++ b/unoxml/source/dom/text.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: text.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/events/makefile.mk b/unoxml/source/events/makefile.mk
index 2f407031ec9b..2ec7489e1a8d 100644
--- a/unoxml/source/events/makefile.mk
+++ b/unoxml/source/events/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/events/testlistener.cxx b/unoxml/source/events/testlistener.cxx
index ccd930de5824..64806c84017d 100644
--- a/unoxml/source/events/testlistener.cxx
+++ b/unoxml/source/events/testlistener.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: testlistener.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/events/testlistener.hxx b/unoxml/source/events/testlistener.hxx
index 7a9808e25235..b6d6abdc700f 100644
--- a/unoxml/source/events/testlistener.hxx
+++ b/unoxml/source/events/testlistener.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: testlistener.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/CBlankNode.cxx b/unoxml/source/rdf/CBlankNode.cxx
index 213a8099da35..483269002fdc 100644
--- a/unoxml/source/rdf/CBlankNode.cxx
+++ b/unoxml/source/rdf/CBlankNode.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CBlankNode.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/CLiteral.cxx b/unoxml/source/rdf/CLiteral.cxx
index 25a8267f5cc5..30c72ccc841e 100644
--- a/unoxml/source/rdf/CLiteral.cxx
+++ b/unoxml/source/rdf/CLiteral.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CLiteral.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/CNodes.hxx b/unoxml/source/rdf/CNodes.hxx
index bd9f210ff37f..f9ba6bb9048c 100644
--- a/unoxml/source/rdf/CNodes.hxx
+++ b/unoxml/source/rdf/CNodes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CNodes.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/CURI.cxx b/unoxml/source/rdf/CURI.cxx
index e02fe5e03461..03ce85872635 100644
--- a/unoxml/source/rdf/CURI.cxx
+++ b/unoxml/source/rdf/CURI.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CURI.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/librdf_repository.cxx b/unoxml/source/rdf/librdf_repository.cxx
index c42887a9cf9f..e111c1e5176b 100644
--- a/unoxml/source/rdf/librdf_repository.cxx
+++ b/unoxml/source/rdf/librdf_repository.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: librdf_repository.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/librdf_repository.hxx b/unoxml/source/rdf/librdf_repository.hxx
index b89f47ac24ad..0af918a1eabe 100644
--- a/unoxml/source/rdf/librdf_repository.hxx
+++ b/unoxml/source/rdf/librdf_repository.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: librdf_repository.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/librdf_services.cxx b/unoxml/source/rdf/librdf_services.cxx
index 8a0a32c8e0f3..03949934560d 100644
--- a/unoxml/source/rdf/librdf_services.cxx
+++ b/unoxml/source/rdf/librdf_services.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: librdf_services.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/rdf/makefile.mk b/unoxml/source/rdf/makefile.mk
index 298c1dcdae25..39741bda15b1 100644
--- a/unoxml/source/rdf/makefile.mk
+++ b/unoxml/source/rdf/makefile.mk
@@ -1,15 +1,11 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/service/makefile.mk b/unoxml/source/service/makefile.mk
index e86e07f1c89e..bbce7e913f09 100644
--- a/unoxml/source/service/makefile.mk
+++ b/unoxml/source/service/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/service/services.cxx b/unoxml/source/service/services.cxx
index aa4f1b18ca60..218015852c83 100644
--- a/unoxml/source/service/services.cxx
+++ b/unoxml/source/service/services.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: services.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/makefile.mk b/unoxml/source/xpath/makefile.mk
index 30d157105ca6..7b1ccdae742b 100644
--- a/unoxml/source/xpath/makefile.mk
+++ b/unoxml/source/xpath/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.7 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/nodelist.cxx b/unoxml/source/xpath/nodelist.cxx
index 1bc8e9df9bd5..dd44d8bfcc06 100644
--- a/unoxml/source/xpath/nodelist.cxx
+++ b/unoxml/source/xpath/nodelist.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: nodelist.cxx,v $
- * $Revision: 1.4.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/nodelist.hxx b/unoxml/source/xpath/nodelist.hxx
index b81e2726c341..68f419f10174 100644
--- a/unoxml/source/xpath/nodelist.hxx
+++ b/unoxml/source/xpath/nodelist.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: nodelist.hxx,v $
- * $Revision: 1.4.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/xpathapi.cxx b/unoxml/source/xpath/xpathapi.cxx
index 4b8fe4224092..80666d9e2031 100644
--- a/unoxml/source/xpath/xpathapi.cxx
+++ b/unoxml/source/xpath/xpathapi.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xpathapi.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/xpathapi.hxx b/unoxml/source/xpath/xpathapi.hxx
index 127f765f30f3..fdfff24353cc 100644
--- a/unoxml/source/xpath/xpathapi.hxx
+++ b/unoxml/source/xpath/xpathapi.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xpathapi.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/xpathobject.cxx b/unoxml/source/xpath/xpathobject.cxx
index 5a4b7b93b81e..083d19080c4b 100644
--- a/unoxml/source/xpath/xpathobject.cxx
+++ b/unoxml/source/xpath/xpathobject.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xpathobject.cxx,v $
- * $Revision: 1.4.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/source/xpath/xpathobject.hxx b/unoxml/source/xpath/xpathobject.hxx
index 5fc7bf8a8661..8e256bc8a994 100644
--- a/unoxml/source/xpath/xpathobject.hxx
+++ b/unoxml/source/xpath/xpathobject.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: xpathobject.hxx,v $
- * $Revision: 1.4.20.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/test/domtest.cxx b/unoxml/test/domtest.cxx
index 6687669fd875..5d3c2fa212dc 100644
--- a/unoxml/test/domtest.cxx
+++ b/unoxml/test/domtest.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: basictest.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,7 +27,7 @@
// autogenerated file with codegen.pl
-#include <cppunit/simpleheader.hxx>
+#include <testshl/simpleheader.hxx>
#include <rtl/ref.hxx>
#include <osl/file.hxx>
diff --git a/unoxml/test/export.map b/unoxml/test/export.map
index bfd13f454044..709047ae63e5 100644
--- a/unoxml/test/export.map
+++ b/unoxml/test/export.map
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: export.map,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/unoxml/test/makefile.mk b/unoxml/test/makefile.mk
index 781f8a46bf96..8fcba9ff328a 100644
--- a/unoxml/test/makefile.mk
+++ b/unoxml/test/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.9 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -44,7 +40,7 @@ ENABLE_EXCEPTIONS=TRUE
# --- Common ----------------------------------------------------------
# BEGIN ----------------------------------------------------------------
-# auto generated Target:tests by codegen.pl
+# auto generated Target:tests by codegen.pl
SHL1OBJS= \
$(SLO)$/domtest.obj
@@ -66,6 +62,7 @@ SHL1STDLIBS= \
$(COMPHELPERLIB) \
$(CPPUHELPERLIB) \
$(CPPUNITLIB) \
+ $(TESTSHL2LIB) \
$(CPPULIB) \
$(SAXLIB) \
$(SALLIB)\
@@ -74,18 +71,18 @@ SHL1STDLIBS= \
SHL1IMPLIB= i$(SHL1TARGET)
DEF1NAME =$(SHL1TARGET)
-SHL1VERSIONMAP = export.map
+SHL1VERSIONMAP = export.map
# END ------------------------------------------------------------------
#------------------------------- All object files -------------------------------
# do this here, so we get right dependencies
-SLOFILES=$(SHL1OBJS)
+SLOFILES=$(SHL1OBJS)
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
-.INCLUDE : _cppunit.mk
+.INCLUDE : _cppunit.mk
# --- Fake uno bootstrap ------------------------
@@ -100,7 +97,7 @@ $(MISC)$/unoxml_unittest_succeeded : $(SHL1TARGETN) $(BIN)$/unoxml_unittest_test
@echo ----------------------------------------------------------
@echo - start unit test on library $(SHL1TARGETN)
@echo ----------------------------------------------------------
- testshl2 -forward $(BIN)$/ -sf $(mktmp ) $(SHL1TARGETN)
+ $(TESTSHL2) -forward $(BIN)$/ -sf $(mktmp ) $(SHL1TARGETN)
$(TOUCH) $@
ALLTAR : $(MISC)$/unoxml_unittest_succeeded
diff --git a/writerfilter/inc/WriterFilterDllApi.hxx b/writerfilter/inc/WriterFilterDllApi.hxx
index 5707ba27027b..dff806017c8a 100644
--- a/writerfilter/inc/WriterFilterDllApi.hxx
+++ b/writerfilter/inc/WriterFilterDllApi.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WriterFilterDllApi.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/dmapper/DomainMapper.hxx b/writerfilter/inc/dmapper/DomainMapper.hxx
index d543c0157874..76d1fb046354 100644
--- a/writerfilter/inc/dmapper/DomainMapper.hxx
+++ b/writerfilter/inc/dmapper/DomainMapper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapper.hxx,v $
- * $Revision: 1.23 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/doctok/WW8Document.hxx b/writerfilter/inc/doctok/WW8Document.hxx
index eb3196e66e0b..e3915c628761 100644
--- a/writerfilter/inc/doctok/WW8Document.hxx
+++ b/writerfilter/inc/doctok/WW8Document.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Document.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/ooxml/OOXMLDocument.hxx b/writerfilter/inc/ooxml/OOXMLDocument.hxx
index 803ebec94ce6..cb5991c00929 100644
--- a/writerfilter/inc/ooxml/OOXMLDocument.hxx
+++ b/writerfilter/inc/ooxml/OOXMLDocument.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLDocument.hxx,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/OutputWithDepth.hxx b/writerfilter/inc/resourcemodel/OutputWithDepth.hxx
index 3ac55bbe5950..b6c4d511ab7c 100644
--- a/writerfilter/inc/resourcemodel/OutputWithDepth.hxx
+++ b/writerfilter/inc/resourcemodel/OutputWithDepth.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OutputWithDepth.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/QNameToString.hxx b/writerfilter/inc/resourcemodel/QNameToString.hxx
index 3724c8cfd3fc..2c562b74762d 100644
--- a/writerfilter/inc/resourcemodel/QNameToString.hxx
+++ b/writerfilter/inc/resourcemodel/QNameToString.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: QNameToString.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/SubSequence.hxx b/writerfilter/inc/resourcemodel/SubSequence.hxx
index afa45ae56192..5f03d6ba94bf 100644
--- a/writerfilter/inc/resourcemodel/SubSequence.hxx
+++ b/writerfilter/inc/resourcemodel/SubSequence.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SubSequence.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/TableData.hxx b/writerfilter/inc/resourcemodel/TableData.hxx
index c86826feed01..50f28d2bc5bf 100644
--- a/writerfilter/inc/resourcemodel/TableData.hxx
+++ b/writerfilter/inc/resourcemodel/TableData.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TableData.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/TableManager.hxx b/writerfilter/inc/resourcemodel/TableManager.hxx
index cc267273fdf0..45fadad42351 100644
--- a/writerfilter/inc/resourcemodel/TableManager.hxx
+++ b/writerfilter/inc/resourcemodel/TableManager.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TableManager.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/TagLogger.hxx b/writerfilter/inc/resourcemodel/TagLogger.hxx
index b3a30f224b3e..c846779df456 100644
--- a/writerfilter/inc/resourcemodel/TagLogger.hxx
+++ b/writerfilter/inc/resourcemodel/TagLogger.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TagLogger.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/WW8ResourceModel.hxx b/writerfilter/inc/resourcemodel/WW8ResourceModel.hxx
index c7c072fefc4d..387527f09e06 100644
--- a/writerfilter/inc/resourcemodel/WW8ResourceModel.hxx
+++ b/writerfilter/inc/resourcemodel/WW8ResourceModel.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8ResourceModel.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/exceptions.hxx b/writerfilter/inc/resourcemodel/exceptions.hxx
index d44c8bc90332..708355bff880 100644
--- a/writerfilter/inc/resourcemodel/exceptions.hxx
+++ b/writerfilter/inc/resourcemodel/exceptions.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: exceptions.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/resourcemodel/util.hxx b/writerfilter/inc/resourcemodel/util.hxx
index c6f5cedc61df..4b57a77326b8 100644
--- a/writerfilter/inc/resourcemodel/util.hxx
+++ b/writerfilter/inc/resourcemodel/util.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: util.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/inc/rtftok/RTFInputSource.hxx b/writerfilter/inc/rtftok/RTFInputSource.hxx
index 54cf7c84d068..7eb191431206 100644
--- a/writerfilter/inc/rtftok/RTFInputSource.hxx
+++ b/writerfilter/inc/rtftok/RTFInputSource.hxx
@@ -1,6 +1,29 @@
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
+/*************************************************************************
+ *
+ * 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 INCLUDED_RTFINPUTSOURCE_HXX
#define INCLUDED_RTFINPUTSOURCE_HXX
diff --git a/writerfilter/inc/rtftok/RTFParseException.hxx b/writerfilter/inc/rtftok/RTFParseException.hxx
index df5fef6c06fa..558ecdc45cf3 100644
--- a/writerfilter/inc/rtftok/RTFParseException.hxx
+++ b/writerfilter/inc/rtftok/RTFParseException.hxx
@@ -1,6 +1,29 @@
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
+/*************************************************************************
+ *
+ * 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 INCLUDED_RTFPARSEEXCEPTION_HXX
#define INCLUDED_RTFPARSEEXCEPTION_HXX
diff --git a/writerfilter/inc/rtftok/RTFScanner.hxx b/writerfilter/inc/rtftok/RTFScanner.hxx
index 7610aca41853..56372dc27bb5 100644
--- a/writerfilter/inc/rtftok/RTFScanner.hxx
+++ b/writerfilter/inc/rtftok/RTFScanner.hxx
@@ -1,6 +1,29 @@
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
+/*************************************************************************
+ *
+ * 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 INCLUDED_RTFSCANNER_HXX
#define INCLUDED_RTFSCANNER_HXX
diff --git a/writerfilter/inc/rtftok/RTFScannerHandler.hxx b/writerfilter/inc/rtftok/RTFScannerHandler.hxx
index c27a7bf1c3a0..c8e61903055c 100644
--- a/writerfilter/inc/rtftok/RTFScannerHandler.hxx
+++ b/writerfilter/inc/rtftok/RTFScannerHandler.hxx
@@ -1,6 +1,29 @@
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
+/*************************************************************************
+ *
+ * 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 INCLUDED_RTFSCANNERHANDLER_HXX
#define INCLUDED_RTFSCANNERHANDLER_HXX
diff --git a/writerfilter/inc/writerfilter.mk b/writerfilter/inc/writerfilter.mk
index bf5359a88405..f8ea735a4ec5 100644
--- a/writerfilter/inc/writerfilter.mk
+++ b/writerfilter/inc/writerfilter.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: writerfilter.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/qa/cppunittests/doctok/makefile.mk b/writerfilter/qa/cppunittests/doctok/makefile.mk
index ca8d3e01a7c4..6ee065ee6161 100644
--- a/writerfilter/qa/cppunittests/doctok/makefile.mk
+++ b/writerfilter/qa/cppunittests/doctok/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -43,7 +39,7 @@ ENABLE_EXCEPTIONS=TRUE
# BEGIN ----------------------------------------------------------------
-# auto generated Target:doctok by codegen.pl
+# auto generated Target:doctok by codegen.pl
SHL1OBJS= \
$(SLO)$/testdoctok.obj
@@ -53,6 +49,7 @@ SHL1STDLIBS=\
$(UCBHELPERLIB) \
$(CPPUHELPERLIB) \
$(CPPULIB) \
+ $(TESTSHL2LIB) \
$(CPPUNITLIB)
SHL1LIBS=\
diff --git a/writerfilter/qa/cppunittests/doctok/testdoctok.cxx b/writerfilter/qa/cppunittests/doctok/testdoctok.cxx
index 70d25ab21a80..0ed8035fb1d3 100644
--- a/writerfilter/qa/cppunittests/doctok/testdoctok.cxx
+++ b/writerfilter/qa/cppunittests/doctok/testdoctok.cxx
@@ -1,6 +1,6 @@
// autogenerated file with codegen.pl
-#include <cppunit/simpleheader.hxx>
+#include <testshl/simpleheader.hxx>
#include <osl/process.h>
#include <ucbhelper/contentbroker.hxx>
diff --git a/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.cxx b/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.cxx
index 6f52350a1979..996112740fac 100644
--- a/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.cxx
+++ b/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.cxx
@@ -1,4 +1,29 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
#include "ExternalViewLogger.hxx"
#include <iostream>
diff --git a/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.hxx b/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.hxx
index eebb3b0440eb..dfa5dd736b41 100644
--- a/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.hxx
+++ b/writerfilter/qa/cppunittests/odiapi/ExternalViewLogger.hxx
@@ -1,4 +1,29 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
+/*************************************************************************
+ *
+ * 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 INCLUDED_EXTERNALVIEWLOGGER_HXX
#define INCLUDED_EXTERNALVIEWLOGGER_HXX
diff --git a/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx b/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx
index 690a15616cec..28b4b3776fe1 100644
--- a/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx
+++ b/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.cxx
@@ -1,4 +1,29 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
#include "FileLoggerImpl.hxx"
#include <iostream>
diff --git a/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.hxx b/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.hxx
index 96f8b5368a94..c5ec03724c12 100644
--- a/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.hxx
+++ b/writerfilter/qa/cppunittests/odiapi/FileLoggerImpl.hxx
@@ -1,4 +1,29 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
+/*************************************************************************
+ *
+ * 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 INCLUDED_FILELOGGERIMPL_HXX
#define INCLUDED_FILELOGGERIMPL_HXX
diff --git a/writerfilter/qa/cppunittests/odiapi/export.map b/writerfilter/qa/cppunittests/odiapi/export.map
index 4f4704fc5e88..0e4fe0c88ff2 100644
--- a/writerfilter/qa/cppunittests/odiapi/export.map
+++ b/writerfilter/qa/cppunittests/odiapi/export.map
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: export.map,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/qa/cppunittests/odiapi/makefile.mk b/writerfilter/qa/cppunittests/odiapi/makefile.mk
index b9e50e93919f..2843771e166f 100644
--- a/writerfilter/qa/cppunittests/odiapi/makefile.mk
+++ b/writerfilter/qa/cppunittests/odiapi/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -39,7 +35,7 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
# BEGIN ----------------------------------------------------------------
-# auto generated Target:testjob by codegen.pl
+# auto generated Target:testjob by codegen.pl
.IF "$(GUI)" == "WNT"
#CFLAGS+=/Ob1
@@ -52,14 +48,14 @@ SHL1OBJS=\
$(SLO)$/testCore.obj
SHL1TARGET=$(TARGET)
-SHL1STDLIBS=$(SALLIB) $(TOOLSLIB)
-
+SHL1STDLIBS=$(SALLIB) $(TOOLSLIB) $(TESTSHL2LIB) $(CPPUNITLIB)
+
.IF "$(GUI)"=="WNT"
-SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib $(LB)$/iodiapi.lib
+SHL1STDLIBS+= $(LB)$/iodiapi.lib
.ELIF "$(GUI)"=="UNX" && "$(GUIBASE)"!="aqua"
-SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a $(LB)$/libodiapi.so
+SHL1STDLIBS+=$(LB)$/libodiapi.so
.ELIF "$(GUI)"=="UNX" && "$(GUIBASE)"=="aqua"
-SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a $(LB)$/libodiapi.dylib
+SHL1STDLIBS+=$(LB)$/libodiapi.dylib
.ENDIF
SHL1IMPLIB= i$(SHL1TARGET)
diff --git a/writerfilter/qa/cppunittests/odiapi/testCore.cxx b/writerfilter/qa/cppunittests/odiapi/testCore.cxx
index cbdc47e5d872..774cc4722df4 100644
--- a/writerfilter/qa/cppunittests/odiapi/testCore.cxx
+++ b/writerfilter/qa/cppunittests/odiapi/testCore.cxx
@@ -1,6 +1,32 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
-
-#include <cppunit/simpleheader.hxx>
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include <testshl/simpleheader.hxx>
#include <odiapi/core/Node.hxx>
#include <odiapi/props/Properties.hxx>
diff --git a/writerfilter/qa/cppunittests/odiapi/testProperty.cxx b/writerfilter/qa/cppunittests/odiapi/testProperty.cxx
index b2a633f9b70f..621dda65cfa3 100644
--- a/writerfilter/qa/cppunittests/odiapi/testProperty.cxx
+++ b/writerfilter/qa/cppunittests/odiapi/testProperty.cxx
@@ -1,6 +1,31 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
-
-#include <cppunit/simpleheader.hxx>
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <testshl/simpleheader.hxx>
#include <odiapi/props/Properties.hxx>
#include "FileLoggerImpl.hxx"
#include "ExternalViewLogger.hxx"
diff --git a/writerfilter/qa/cppunittests/qname/export.map b/writerfilter/qa/cppunittests/qname/export.map
index 4f4704fc5e88..0e4fe0c88ff2 100644
--- a/writerfilter/qa/cppunittests/qname/export.map
+++ b/writerfilter/qa/cppunittests/qname/export.map
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: export.map,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/qa/cppunittests/qname/makefile.mk b/writerfilter/qa/cppunittests/qname/makefile.mk
index d8a5916d107a..0eb0e16053db 100644
--- a/writerfilter/qa/cppunittests/qname/makefile.mk
+++ b/writerfilter/qa/cppunittests/qname/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,24 +38,24 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
# BEGIN ----------------------------------------------------------------
-# auto generated Target:testjob by codegen.pl
+# auto generated Target:testjob by codegen.pl
.IF "$(GUI)" == "WNT"
CFLAGS+=/Ob1
.ENDIF
SHL1OBJS=\
- $(SLO)$/testQName.obj
+ $(SLO)$/testQName.obj
SHL1TARGET=$(TARGET)
-SHL1STDLIBS=$(SALLIB) $(TOOLSLIB)
+SHL1STDLIBS=$(SALLIB) $(TOOLSLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
.IF "$(GUI)" == "WNT"
-SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib $(LB)$/iodiapi.lib
+SHL1STDLIBS+= $(LB)$/iodiapi.lib
.ENDIF
.IF "$(GUI)" == "UNX"
-SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a $(LB)$/libodiapi.so
+SHL1STDLIBS+=$(LB)$/libodiapi.so
.ENDIF
SHL1IMPLIB= i$(SHL1TARGET)
diff --git a/writerfilter/qa/cppunittests/qname/testQName.cxx b/writerfilter/qa/cppunittests/qname/testQName.cxx
index b244015cf575..1c629666d8e6 100644
--- a/writerfilter/qa/cppunittests/qname/testQName.cxx
+++ b/writerfilter/qa/cppunittests/qname/testQName.cxx
@@ -1,6 +1,31 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
-#include <cppunit/simpleheader.hxx>
+#include <testshl/simpleheader.hxx>
#include <odiapi/qname/QName.hxx>
#include <stdio.h>
#include <rtl/string.hxx>
diff --git a/writerfilter/qa/cppunittests/sl/export.map b/writerfilter/qa/cppunittests/sl/export.map
index 4f4704fc5e88..0e4fe0c88ff2 100644
--- a/writerfilter/qa/cppunittests/sl/export.map
+++ b/writerfilter/qa/cppunittests/sl/export.map
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: export.map,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/qa/cppunittests/sl/makefile.mk b/writerfilter/qa/cppunittests/sl/makefile.mk
index d9d9abd0d50c..2bea9e16b792 100644
--- a/writerfilter/qa/cppunittests/sl/makefile.mk
+++ b/writerfilter/qa/cppunittests/sl/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,21 +38,21 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
# BEGIN ----------------------------------------------------------------
-# auto generated Target:testjob by codegen.pl
+# auto generated Target:testjob by codegen.pl
SHL1OBJS=\
$(SLO)$/testOD_SL.obj \
$(SLO)$/FileLoggerImpl.obj\
- $(SLO)$/ExternalViewLogger.obj
+ $(SLO)$/ExternalViewLogger.obj
SHL1TARGET=$(TARGET)
-SHL1STDLIBS=$(SALLIB) $(TOOLSLIB)
-
+SHL1STDLIBS=$(SALLIB) $(TOOLSLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
+
.IF "$(GUI)" == "WNT"
-SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib $(LB)$/iodiapi.lib
+SHL1STDLIBS+=$(LB)$/iodiapi.lib
.ENDIF
.IF "$(GUI)" == "UNX"
-SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a $(LB)$/libodiapi.so
+SHL1STDLIBS+=$(LB)$/libodiapi.so
.ENDIF
SHL1IMPLIB= i$(SHL1TARGET)
diff --git a/writerfilter/qa/cppunittests/sl/testOD_SL.cxx b/writerfilter/qa/cppunittests/sl/testOD_SL.cxx
index 13f95f94eae6..640db6dac53f 100644
--- a/writerfilter/qa/cppunittests/sl/testOD_SL.cxx
+++ b/writerfilter/qa/cppunittests/sl/testOD_SL.cxx
@@ -1,6 +1,31 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
-
-#include <cppunit/simpleheader.hxx>
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include <testshl/simpleheader.hxx>
#include <odiapi/xxml/XXmlReader.hxx>
#include <odiapi/props/Properties.hxx>
#include <odiapi/sl/od_sl.hxx>
@@ -90,4 +115,4 @@ public:
// register test suites
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(TestXXML, "TestXXML");
-NOADDITIONAL; \ No newline at end of file
+NOADDITIONAL;
diff --git a/writerfilter/qa/cppunittests/xxml/export.map b/writerfilter/qa/cppunittests/xxml/export.map
index 4f4704fc5e88..0e4fe0c88ff2 100644
--- a/writerfilter/qa/cppunittests/xxml/export.map
+++ b/writerfilter/qa/cppunittests/xxml/export.map
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: export.map,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/qa/cppunittests/xxml/makefile.mk b/writerfilter/qa/cppunittests/xxml/makefile.mk
index 0cd8c1e57067..78022b6e59ba 100644
--- a/writerfilter/qa/cppunittests/xxml/makefile.mk
+++ b/writerfilter/qa/cppunittests/xxml/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,23 +38,23 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
# BEGIN ----------------------------------------------------------------
-# auto generated Target:testjob by codegen.pl
+# auto generated Target:testjob by codegen.pl
.IF "$(GUI)" == "WNT"
CFLAGS+=/Ob1
.ENDIF
SHL1OBJS=\
- $(SLO)$/testXXML.obj
+ $(SLO)$/testXXML.obj
SHL1TARGET=$(TARGET)
-SHL1STDLIBS=$(SALLIB) $(TOOLSLIB)
-
+SHL1STDLIBS=$(SALLIB) $(TOOLSLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
+
.IF "$(GUI)" == "WNT"
-SHL1STDLIBS+= $(SOLARLIBDIR)$/cppunit.lib $(LB)$/iodiapi.lib
+SHL1STDLIBS+=$(LB)$/iodiapi.lib
.ENDIF
.IF "$(GUI)" == "UNX"
-SHL1STDLIBS+=$(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a $(LB)$/libodiapi.so
+SHL1STDLIBS+=$(LB)$/libodiapi.so
.ENDIF
SHL1IMPLIB= i$(SHL1TARGET)
diff --git a/writerfilter/qa/cppunittests/xxml/testXXML.cxx b/writerfilter/qa/cppunittests/xxml/testXXML.cxx
index 7a29c1b15882..4e5ade4f8d7e 100644
--- a/writerfilter/qa/cppunittests/xxml/testXXML.cxx
+++ b/writerfilter/qa/cppunittests/xxml/testXXML.cxx
@@ -1,6 +1,30 @@
-/* Copyright 2005 Sun Microsystems, Inc. */
-
-#include <cppunit/simpleheader.hxx>
+/*************************************************************************
+ * 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.
+ *
+ ************************************************************************/
+
+#include <testshl/simpleheader.hxx>
#include <odiapi/xxml/XXmlReader.hxx>
#include <osl/time.h>
@@ -157,4 +181,4 @@ public:
// register test suites
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(TestXXML, "TestXXML");
-NOADDITIONAL; \ No newline at end of file
+NOADDITIONAL;
diff --git a/writerfilter/source/dmapper/BorderHandler.cxx b/writerfilter/source/dmapper/BorderHandler.cxx
index 63140b486472..66ca373b6465 100644
--- a/writerfilter/source/dmapper/BorderHandler.cxx
+++ b/writerfilter/source/dmapper/BorderHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BorderHandler.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/BorderHandler.hxx b/writerfilter/source/dmapper/BorderHandler.hxx
index be3d0f7b1055..0fc722227191 100644
--- a/writerfilter/source/dmapper/BorderHandler.hxx
+++ b/writerfilter/source/dmapper/BorderHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BorderHandler.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/CellColorHandler.cxx b/writerfilter/source/dmapper/CellColorHandler.cxx
index 2e1e9d6d06b4..8220a55a60fd 100644
--- a/writerfilter/source/dmapper/CellColorHandler.cxx
+++ b/writerfilter/source/dmapper/CellColorHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellColorHandler.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/CellColorHandler.hxx b/writerfilter/source/dmapper/CellColorHandler.hxx
index 8fca77c51bc7..3e6b1bb2db70 100644
--- a/writerfilter/source/dmapper/CellColorHandler.hxx
+++ b/writerfilter/source/dmapper/CellColorHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellColorHandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/CellMarginHandler.cxx b/writerfilter/source/dmapper/CellMarginHandler.cxx
index 4060c1047b3a..bfea8a6b25f9 100644
--- a/writerfilter/source/dmapper/CellMarginHandler.cxx
+++ b/writerfilter/source/dmapper/CellMarginHandler.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellMarginHandler.cxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/CellMarginHandler.hxx b/writerfilter/source/dmapper/CellMarginHandler.hxx
index f6fd5dff8e55..5f01df47a347 100644
--- a/writerfilter/source/dmapper/CellMarginHandler.hxx
+++ b/writerfilter/source/dmapper/CellMarginHandler.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellMarginHandler.hxx,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ConversionHelper.cxx b/writerfilter/source/dmapper/ConversionHelper.cxx
index efb7bc710338..e067505b3b40 100644
--- a/writerfilter/source/dmapper/ConversionHelper.cxx
+++ b/writerfilter/source/dmapper/ConversionHelper.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConversionHelper.cxx,v $
- *
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ConversionHelper.hxx b/writerfilter/source/dmapper/ConversionHelper.hxx
index 3cb27ef89d99..27436f1769be 100644
--- a/writerfilter/source/dmapper/ConversionHelper.hxx
+++ b/writerfilter/source/dmapper/ConversionHelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConversionHelper.hxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index dbf9a33f067b..8e5fb325d2e9 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapper.cxx,v $
- *
- * $Revision: 1.69 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 20fc7755358b..e88d8d1d5a67 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapperTableHandler.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
index 971d75b32884..a71475f6eaa1 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapperTableHandler.hxx,v $
- *
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index 34c8092eb2e5..f49bf9ea93b1 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapperTableManager.cxx,v $
- * $Revision: 1.21 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.hxx b/writerfilter/source/dmapper/DomainMapperTableManager.hxx
index 7a8b07c8d174..3d1e7f66effa 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.hxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapperTableManager.hxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index e6b52805a5da..596682cf9b46 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapper_Impl.cxx,v $
- * $Revision: 1.27.6.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 989d09e9d351..ae0dec6e1e54 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DomainMapper_Impl.hxx,v $
- * $Revision: 1.27 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/FontTable.cxx b/writerfilter/source/dmapper/FontTable.cxx
index 70baeeddd380..c5a800769078 100644
--- a/writerfilter/source/dmapper/FontTable.cxx
+++ b/writerfilter/source/dmapper/FontTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FontTable.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/FontTable.hxx b/writerfilter/source/dmapper/FontTable.hxx
index b47374d2b0f9..f63d0cf0ee1a 100644
--- a/writerfilter/source/dmapper/FontTable.hxx
+++ b/writerfilter/source/dmapper/FontTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FontTable.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 33a064b09d83..308ce90ace65 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: GraphicImport.cxx,v $
- *
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/GraphicImport.hxx b/writerfilter/source/dmapper/GraphicImport.hxx
index 8e1558656507..14f512a3d4ee 100644
--- a/writerfilter/source/dmapper/GraphicImport.hxx
+++ b/writerfilter/source/dmapper/GraphicImport.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: GraphicImport.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/LFOTable.cxx b/writerfilter/source/dmapper/LFOTable.cxx
index c75156438329..82d2b032b761 100644
--- a/writerfilter/source/dmapper/LFOTable.cxx
+++ b/writerfilter/source/dmapper/LFOTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LFOTable.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/LFOTable.hxx b/writerfilter/source/dmapper/LFOTable.hxx
index df2f402179b3..89f72c557d85 100644
--- a/writerfilter/source/dmapper/LFOTable.hxx
+++ b/writerfilter/source/dmapper/LFOTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LFOTable.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ListTable.cxx b/writerfilter/source/dmapper/ListTable.cxx
index 9a4e19939df7..bd3c9da4e567 100644
--- a/writerfilter/source/dmapper/ListTable.cxx
+++ b/writerfilter/source/dmapper/ListTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ListTable.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ListTable.hxx b/writerfilter/source/dmapper/ListTable.hxx
index 2d0cf2e6bdce..b7db225fb9f4 100644
--- a/writerfilter/source/dmapper/ListTable.hxx
+++ b/writerfilter/source/dmapper/ListTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ListTable.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/MeasureHandler.cxx b/writerfilter/source/dmapper/MeasureHandler.cxx
index 5c315330a0cc..58f3980063ee 100644
--- a/writerfilter/source/dmapper/MeasureHandler.cxx
+++ b/writerfilter/source/dmapper/MeasureHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MeasureHandler.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/MeasureHandler.hxx b/writerfilter/source/dmapper/MeasureHandler.hxx
index 6748ac02e368..574685f8ed27 100644
--- a/writerfilter/source/dmapper/MeasureHandler.hxx
+++ b/writerfilter/source/dmapper/MeasureHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MeasureHandler.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ModelEventListener.cxx b/writerfilter/source/dmapper/ModelEventListener.cxx
index 5fbb5dc88faf..853b835d7d98 100644
--- a/writerfilter/source/dmapper/ModelEventListener.cxx
+++ b/writerfilter/source/dmapper/ModelEventListener.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ModelEventListener.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ModelEventListener.hxx b/writerfilter/source/dmapper/ModelEventListener.hxx
index c52c1c44f4f5..3486dc70947d 100644
--- a/writerfilter/source/dmapper/ModelEventListener.hxx
+++ b/writerfilter/source/dmapper/ModelEventListener.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ModelEventListener.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/OLEHandler.cxx b/writerfilter/source/dmapper/OLEHandler.cxx
index 8f1501046418..65f76f11cbfc 100644
--- a/writerfilter/source/dmapper/OLEHandler.cxx
+++ b/writerfilter/source/dmapper/OLEHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OLEHandler.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/OLEHandler.hxx b/writerfilter/source/dmapper/OLEHandler.hxx
index bdd94a802b7b..f9059fb6a35a 100644
--- a/writerfilter/source/dmapper/OLEHandler.hxx
+++ b/writerfilter/source/dmapper/OLEHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OLEHandler.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index bc76be7d8ecf..896bc1a06e94 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PropertyIds.cxx,v $
- * $Revision: 1.32 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index cdbcf758b579..461373c23a45 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PropertyIds.hxx,v $
- * $Revision: 1.29 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index 3e2f0752fc52..d0928f1bac8f 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PropertyMap.cxx,v $
- *
- * $Revision: 1.25 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/PropertyMap.hxx b/writerfilter/source/dmapper/PropertyMap.hxx
index 1e30a018b721..be6209cd1f30 100644
--- a/writerfilter/source/dmapper/PropertyMap.hxx
+++ b/writerfilter/source/dmapper/PropertyMap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PropertyMap.hxx,v $
- * $Revision: 1.18 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/SectionColumnHandler.cxx b/writerfilter/source/dmapper/SectionColumnHandler.cxx
index b4e640f839cb..5ad3e51fb8b7 100644
--- a/writerfilter/source/dmapper/SectionColumnHandler.cxx
+++ b/writerfilter/source/dmapper/SectionColumnHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SectionColumnHandler.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/SectionColumnHandler.hxx b/writerfilter/source/dmapper/SectionColumnHandler.hxx
index 96cabce808d5..452895b50194 100644
--- a/writerfilter/source/dmapper/SectionColumnHandler.hxx
+++ b/writerfilter/source/dmapper/SectionColumnHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SectionColumnHandler.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index c42651b21881..118dc7c3bf60 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: StyleSheetTable.cxx,v $
- * $Revision: 1.33 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/StyleSheetTable.hxx b/writerfilter/source/dmapper/StyleSheetTable.hxx
index 73f5a2defebf..0dd31ed52f9d 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.hxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: StyleSheetTable.hxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/TDefTableHandler.cxx b/writerfilter/source/dmapper/TDefTableHandler.cxx
index dc2583249da2..c65ce2cdb784 100644
--- a/writerfilter/source/dmapper/TDefTableHandler.cxx
+++ b/writerfilter/source/dmapper/TDefTableHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TDefTableHandler.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/TDefTableHandler.hxx b/writerfilter/source/dmapper/TDefTableHandler.hxx
index 352cb936cc97..993b49251a77 100644
--- a/writerfilter/source/dmapper/TDefTableHandler.hxx
+++ b/writerfilter/source/dmapper/TDefTableHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TDefTableHandler.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ThemeTable.cxx b/writerfilter/source/dmapper/ThemeTable.cxx
index d3c56b17178c..cde3c0d39082 100644
--- a/writerfilter/source/dmapper/ThemeTable.cxx
+++ b/writerfilter/source/dmapper/ThemeTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ThemeTable.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/ThemeTable.hxx b/writerfilter/source/dmapper/ThemeTable.hxx
index 85b698b966c3..b79877703c58 100644
--- a/writerfilter/source/dmapper/ThemeTable.hxx
+++ b/writerfilter/source/dmapper/ThemeTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ThemeTable.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/dmapper/makefile.mk b/writerfilter/source/dmapper/makefile.mk
index 5f421643150d..b757af3fedeb 100644
--- a/writerfilter/source/dmapper/makefile.mk
+++ b/writerfilter/source/dmapper/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/Dff.cxx b/writerfilter/source/doctok/Dff.cxx
index 199a5e25278f..c7d8fb713d6f 100644
--- a/writerfilter/source/doctok/Dff.cxx
+++ b/writerfilter/source/doctok/Dff.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Dff.cxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/Dff.hxx b/writerfilter/source/doctok/Dff.hxx
index af5c107a1909..b0a64f05c303 100644
--- a/writerfilter/source/doctok/Dff.hxx
+++ b/writerfilter/source/doctok/Dff.hxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Dff.hxx,v $
- *
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/DffImpl.cxx b/writerfilter/source/doctok/DffImpl.cxx
index 16f597a2322a..fcb2fe6267be 100644
--- a/writerfilter/source/doctok/DffImpl.cxx
+++ b/writerfilter/source/doctok/DffImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DffImpl.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/PLCF.hxx b/writerfilter/source/doctok/PLCF.hxx
index f0009e33e642..fefff12f6c11 100644
--- a/writerfilter/source/doctok/PLCF.hxx
+++ b/writerfilter/source/doctok/PLCF.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PLCF.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Annotation.cxx b/writerfilter/source/doctok/WW8Annotation.cxx
index 0eced37d071a..aabcd5525e90 100644
--- a/writerfilter/source/doctok/WW8Annotation.cxx
+++ b/writerfilter/source/doctok/WW8Annotation.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Annotation.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8BinTable.hxx b/writerfilter/source/doctok/WW8BinTable.hxx
index 75f3c8286b8a..4105a06b5fd4 100644
--- a/writerfilter/source/doctok/WW8BinTable.hxx
+++ b/writerfilter/source/doctok/WW8BinTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8BinTable.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8BinTableImpl.cxx b/writerfilter/source/doctok/WW8BinTableImpl.cxx
index d0e068c925b9..05959cf359b1 100644
--- a/writerfilter/source/doctok/WW8BinTableImpl.cxx
+++ b/writerfilter/source/doctok/WW8BinTableImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8BinTableImpl.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8BinTableImpl.hxx b/writerfilter/source/doctok/WW8BinTableImpl.hxx
index 7c43fcd4aeef..d3119c13dd20 100644
--- a/writerfilter/source/doctok/WW8BinTableImpl.hxx
+++ b/writerfilter/source/doctok/WW8BinTableImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8BinTableImpl.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Clx.cxx b/writerfilter/source/doctok/WW8Clx.cxx
index f0650598260a..d794afd3ce60 100644
--- a/writerfilter/source/doctok/WW8Clx.cxx
+++ b/writerfilter/source/doctok/WW8Clx.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Clx.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Clx.hxx b/writerfilter/source/doctok/WW8Clx.hxx
index 26bea0e77a69..7085965a689a 100644
--- a/writerfilter/source/doctok/WW8Clx.hxx
+++ b/writerfilter/source/doctok/WW8Clx.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Clx.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8CpAndFc.cxx b/writerfilter/source/doctok/WW8CpAndFc.cxx
index 45ede93f7128..ecf5f895e91f 100644
--- a/writerfilter/source/doctok/WW8CpAndFc.cxx
+++ b/writerfilter/source/doctok/WW8CpAndFc.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8CpAndFc.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8CpAndFc.hxx b/writerfilter/source/doctok/WW8CpAndFc.hxx
index 6c92266ed45e..86a8b971a7d6 100644
--- a/writerfilter/source/doctok/WW8CpAndFc.hxx
+++ b/writerfilter/source/doctok/WW8CpAndFc.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8CpAndFc.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8DocumentImpl.cxx b/writerfilter/source/doctok/WW8DocumentImpl.cxx
index 489cd120f8a0..d314854836e9 100644
--- a/writerfilter/source/doctok/WW8DocumentImpl.cxx
+++ b/writerfilter/source/doctok/WW8DocumentImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8DocumentImpl.cxx,v $
- * $Revision: 1.20 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8DocumentImpl.hxx b/writerfilter/source/doctok/WW8DocumentImpl.hxx
index fd820ed1efb0..65c24e913b37 100644
--- a/writerfilter/source/doctok/WW8DocumentImpl.hxx
+++ b/writerfilter/source/doctok/WW8DocumentImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8DocumentImpl.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8FKP.hxx b/writerfilter/source/doctok/WW8FKP.hxx
index f458df4a7ff8..af0af1b8e303 100644
--- a/writerfilter/source/doctok/WW8FKP.hxx
+++ b/writerfilter/source/doctok/WW8FKP.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8FKP.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8FKPImpl.cxx b/writerfilter/source/doctok/WW8FKPImpl.cxx
index 4627a98ac734..354159bced0c 100644
--- a/writerfilter/source/doctok/WW8FKPImpl.cxx
+++ b/writerfilter/source/doctok/WW8FKPImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8FKPImpl.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8FKPImpl.hxx b/writerfilter/source/doctok/WW8FKPImpl.hxx
index 99a6b46947f1..a7e59a33b1b2 100644
--- a/writerfilter/source/doctok/WW8FKPImpl.hxx
+++ b/writerfilter/source/doctok/WW8FKPImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8FKPImpl.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8FontTable.cxx b/writerfilter/source/doctok/WW8FontTable.cxx
index 2e04a107884d..f29d2ea4a343 100644
--- a/writerfilter/source/doctok/WW8FontTable.cxx
+++ b/writerfilter/source/doctok/WW8FontTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8FontTable.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8LFOLevel.cxx b/writerfilter/source/doctok/WW8LFOLevel.cxx
index 293b6fa383b1..b0a1d8c2c59d 100644
--- a/writerfilter/source/doctok/WW8LFOLevel.cxx
+++ b/writerfilter/source/doctok/WW8LFOLevel.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8LFOLevel.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8LFOTable.cxx b/writerfilter/source/doctok/WW8LFOTable.cxx
index 7acdfd8d1144..e0bf6d793d64 100644
--- a/writerfilter/source/doctok/WW8LFOTable.cxx
+++ b/writerfilter/source/doctok/WW8LFOTable.cxx
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8LFOTable.cxx,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8ListTable.cxx b/writerfilter/source/doctok/WW8ListTable.cxx
index 2dddb931ad9b..4e2e476f08e2 100644
--- a/writerfilter/source/doctok/WW8ListTable.cxx
+++ b/writerfilter/source/doctok/WW8ListTable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8ListTable.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8OutputWithDepth.cxx b/writerfilter/source/doctok/WW8OutputWithDepth.cxx
index 6e9190bd26ee..c795ec11bb56 100644
--- a/writerfilter/source/doctok/WW8OutputWithDepth.cxx
+++ b/writerfilter/source/doctok/WW8OutputWithDepth.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8OutputWithDepth.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8OutputWithDepth.hxx b/writerfilter/source/doctok/WW8OutputWithDepth.hxx
index fcff0df6fe30..2165abab4a65 100644
--- a/writerfilter/source/doctok/WW8OutputWithDepth.hxx
+++ b/writerfilter/source/doctok/WW8OutputWithDepth.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8OutputWithDepth.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Picture.cxx b/writerfilter/source/doctok/WW8Picture.cxx
index 6b5261a9a9b3..3e2f6d1ced25 100644
--- a/writerfilter/source/doctok/WW8Picture.cxx
+++ b/writerfilter/source/doctok/WW8Picture.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Picture.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8PieceTable.hxx b/writerfilter/source/doctok/WW8PieceTable.hxx
index 41557fae995f..9e09dd448f88 100644
--- a/writerfilter/source/doctok/WW8PieceTable.hxx
+++ b/writerfilter/source/doctok/WW8PieceTable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8PieceTable.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8PieceTableImpl.cxx b/writerfilter/source/doctok/WW8PieceTableImpl.cxx
index c33727bdc521..869964aac67e 100644
--- a/writerfilter/source/doctok/WW8PieceTableImpl.cxx
+++ b/writerfilter/source/doctok/WW8PieceTableImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8PieceTableImpl.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8PieceTableImpl.hxx b/writerfilter/source/doctok/WW8PieceTableImpl.hxx
index d4aaf5d45490..3d7a5e9ede79 100644
--- a/writerfilter/source/doctok/WW8PieceTableImpl.hxx
+++ b/writerfilter/source/doctok/WW8PieceTableImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8PieceTableImpl.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8PropertySetImpl.cxx b/writerfilter/source/doctok/WW8PropertySetImpl.cxx
index 0f7c7d7225ba..88633102e940 100644
--- a/writerfilter/source/doctok/WW8PropertySetImpl.cxx
+++ b/writerfilter/source/doctok/WW8PropertySetImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8PropertySetImpl.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8PropertySetImpl.hxx b/writerfilter/source/doctok/WW8PropertySetImpl.hxx
index 39af89cc6dbb..5c5c42b73a15 100644
--- a/writerfilter/source/doctok/WW8PropertySetImpl.hxx
+++ b/writerfilter/source/doctok/WW8PropertySetImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8PropertySetImpl.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8ResourceModelImpl.cxx b/writerfilter/source/doctok/WW8ResourceModelImpl.cxx
index 6a69b40d94a8..a576640905ce 100644
--- a/writerfilter/source/doctok/WW8ResourceModelImpl.cxx
+++ b/writerfilter/source/doctok/WW8ResourceModelImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8ResourceModelImpl.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8ResourceModelImpl.hxx b/writerfilter/source/doctok/WW8ResourceModelImpl.hxx
index b8094b3ab67c..d7eba5ba67a2 100644
--- a/writerfilter/source/doctok/WW8ResourceModelImpl.hxx
+++ b/writerfilter/source/doctok/WW8ResourceModelImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8ResourceModelImpl.hxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8StreamImpl.cxx b/writerfilter/source/doctok/WW8StreamImpl.cxx
index 3cc08b99c303..4418839919d4 100644
--- a/writerfilter/source/doctok/WW8StreamImpl.cxx
+++ b/writerfilter/source/doctok/WW8StreamImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8StreamImpl.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8StreamImpl.hxx b/writerfilter/source/doctok/WW8StreamImpl.hxx
index aac7fbd62dfa..2f1a0b0b234e 100644
--- a/writerfilter/source/doctok/WW8StreamImpl.hxx
+++ b/writerfilter/source/doctok/WW8StreamImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8StreamImpl.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8StructBase.cxx b/writerfilter/source/doctok/WW8StructBase.cxx
index ef0d29f34b53..e4149ca29874 100644
--- a/writerfilter/source/doctok/WW8StructBase.cxx
+++ b/writerfilter/source/doctok/WW8StructBase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8StructBase.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8StructBase.hxx b/writerfilter/source/doctok/WW8StructBase.hxx
index aa2b43ad87d4..0a1f7949fabf 100644
--- a/writerfilter/source/doctok/WW8StructBase.hxx
+++ b/writerfilter/source/doctok/WW8StructBase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8StructBase.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Sttbf.cxx b/writerfilter/source/doctok/WW8Sttbf.cxx
index b154898f651c..e5d87b9aeaa0 100644
--- a/writerfilter/source/doctok/WW8Sttbf.cxx
+++ b/writerfilter/source/doctok/WW8Sttbf.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Sttbf.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Sttbf.hxx b/writerfilter/source/doctok/WW8Sttbf.hxx
index 6d369766e8d9..2cdae76d7e11 100644
--- a/writerfilter/source/doctok/WW8Sttbf.hxx
+++ b/writerfilter/source/doctok/WW8Sttbf.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Sttbf.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8StyleSheet.cxx b/writerfilter/source/doctok/WW8StyleSheet.cxx
index b9856f3d61e2..797554f984e3 100644
--- a/writerfilter/source/doctok/WW8StyleSheet.cxx
+++ b/writerfilter/source/doctok/WW8StyleSheet.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8StyleSheet.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Table.cxx b/writerfilter/source/doctok/WW8Table.cxx
index 68ecba2d888c..34765de5accb 100644
--- a/writerfilter/source/doctok/WW8Table.cxx
+++ b/writerfilter/source/doctok/WW8Table.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Table.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8Text.cxx b/writerfilter/source/doctok/WW8Text.cxx
index 83e8e3635e8a..746cf4547288 100644
--- a/writerfilter/source/doctok/WW8Text.cxx
+++ b/writerfilter/source/doctok/WW8Text.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Text.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/WW8inc.xsl b/writerfilter/source/doctok/WW8inc.xsl
index 9d860dcc7db2..956e2cad24be 100644
--- a/writerfilter/source/doctok/WW8inc.xsl
+++ b/writerfilter/source/doctok/WW8inc.xsl
@@ -2,14 +2,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: WW8inc.xsl,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
diff --git a/writerfilter/source/doctok/WW8sprms.xsl b/writerfilter/source/doctok/WW8sprms.xsl
index 7b82454eae25..80afb9c853ee 100644
--- a/writerfilter/source/doctok/WW8sprms.xsl
+++ b/writerfilter/source/doctok/WW8sprms.xsl
@@ -2,14 +2,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: WW8sprms.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
diff --git a/writerfilter/source/doctok/WW8xmi.xsl b/writerfilter/source/doctok/WW8xmi.xsl
index 1cc7d77c8d4d..d76921c2bdb7 100644
--- a/writerfilter/source/doctok/WW8xmi.xsl
+++ b/writerfilter/source/doctok/WW8xmi.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: WW8xmi.xsl,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/doctok/XNoteHelper.hxx b/writerfilter/source/doctok/XNoteHelper.hxx
index 55474d046101..faa7f3bb038d 100644
--- a/writerfilter/source/doctok/XNoteHelper.hxx
+++ b/writerfilter/source/doctok/XNoteHelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XNoteHelper.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/XNoteHelperImpl.hxx b/writerfilter/source/doctok/XNoteHelperImpl.hxx
index 278f15fa36dd..4cd70b984f24 100644
--- a/writerfilter/source/doctok/XNoteHelperImpl.hxx
+++ b/writerfilter/source/doctok/XNoteHelperImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XNoteHelperImpl.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/analyzer.xsl b/writerfilter/source/doctok/analyzer.xsl
index b64ec75d130e..ce645bdbe064 100644
--- a/writerfilter/source/doctok/analyzer.xsl
+++ b/writerfilter/source/doctok/analyzer.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: header.hxx,v $
-
- $Revision: 1.1 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/doctok/doctokLoggers.hxx b/writerfilter/source/doctok/doctokLoggers.hxx
index 50ad9ddd28c0..8df90348a249 100644
--- a/writerfilter/source/doctok/doctokLoggers.hxx
+++ b/writerfilter/source/doctok/doctokLoggers.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: doctokLoggers.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/doctokutil.cxx b/writerfilter/source/doctok/doctokutil.cxx
index 4a2fbd018994..7d94b525550b 100644
--- a/writerfilter/source/doctok/doctokutil.cxx
+++ b/writerfilter/source/doctok/doctokutil.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: doctokutil.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/escherdoc.xsl b/writerfilter/source/doctok/escherdoc.xsl
index 7191973c7f06..04a63865e9c3 100644
--- a/writerfilter/source/doctok/escherdoc.xsl
+++ b/writerfilter/source/doctok/escherdoc.xsl
@@ -2,14 +2,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: escherdoc.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
diff --git a/writerfilter/source/doctok/genqnametostr b/writerfilter/source/doctok/genqnametostr
index e458c9ce97ee..a7cd32db5296 100644
--- a/writerfilter/source/doctok/genqnametostr
+++ b/writerfilter/source/doctok/genqnametostr
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: genqnametostr,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/makefile.mk b/writerfilter/source/doctok/makefile.mk
index fd344d20e803..6a407a0b91ea 100644
--- a/writerfilter/source/doctok/makefile.mk
+++ b/writerfilter/source/doctok/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.12 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/qnametostr.xsl b/writerfilter/source/doctok/qnametostr.xsl
index ddc4b94bf32c..44fca1e5dde5 100644
--- a/writerfilter/source/doctok/qnametostr.xsl
+++ b/writerfilter/source/doctok/qnametostr.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: qnametostr.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/doctok/qnametostrheader b/writerfilter/source/doctok/qnametostrheader
index 74f95dda876a..07ce47387153 100644
--- a/writerfilter/source/doctok/qnametostrheader
+++ b/writerfilter/source/doctok/qnametostrheader
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: qnametostrheader,v $
- *
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/resourceidmapper.xsl b/writerfilter/source/doctok/resourceidmapper.xsl
index 936f5116bf9e..83892770685a 100644
--- a/writerfilter/source/doctok/resourceidmapper.xsl
+++ b/writerfilter/source/doctok/resourceidmapper.xsl
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourceidmapper.xsl,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -44,9 +40,6 @@
THIS FILE IS GENERATED AUTOMATICALLY! DO NOT EDIT!
- $RCSfile: resourceidmapper.xsl,v $
-
- $Revision: 1.3 $
*/
package analyze;
diff --git a/writerfilter/source/doctok/resourceidmapperback.xsl b/writerfilter/source/doctok/resourceidmapperback.xsl
index d2e1b8bf3607..8f00e76d7dc1 100644
--- a/writerfilter/source/doctok/resourceidmapperback.xsl
+++ b/writerfilter/source/doctok/resourceidmapperback.xsl
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourceidmapperback.xsl,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -44,9 +40,6 @@
THIS FILE IS GENERATED AUTOMATICALLY! DO NOT EDIT!
- $RCSfile: resourceidmapperback.xsl,v $
-
- $Revision: 1.3 $
*/
package analyze;
diff --git a/writerfilter/source/doctok/resourceids.xsl b/writerfilter/source/doctok/resourceids.xsl
index e4495183891b..fb9895c1c1c6 100644
--- a/writerfilter/source/doctok/resourceids.xsl
+++ b/writerfilter/source/doctok/resourceids.xsl
@@ -3,14 +3,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourceids.xsl,v $
- *
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -46,14 +42,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourceids.xsl,v $
- *
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/resources.xsl b/writerfilter/source/doctok/resources.xsl
index 28df89e6686e..1ef78a79dd76 100644
--- a/writerfilter/source/doctok/resources.xsl
+++ b/writerfilter/source/doctok/resources.xsl
@@ -3,14 +3,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resources.xsl,v $
- *
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,14 +38,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resources.xsl,v $
- *
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/resourcesimpl.xsl b/writerfilter/source/doctok/resourcesimpl.xsl
index 2a52b58c4ab7..75684e76c95e 100644
--- a/writerfilter/source/doctok/resourcesimpl.xsl
+++ b/writerfilter/source/doctok/resourcesimpl.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: resourcesimpl.xsl,v $
-
- $Revision: 1.12 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/doctok/resourcetools.xsl b/writerfilter/source/doctok/resourcetools.xsl
index 8c1ef9d7703d..75d124a3eedb 100644
--- a/writerfilter/source/doctok/resourcetools.xsl
+++ b/writerfilter/source/doctok/resourcetools.xsl
@@ -3,14 +3,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourcetools.xsl,v $
- *
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -538,14 +534,10 @@ void doctokidsToXML(::std::ostream &amp; out)
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourcetools.xsl,v $
- *
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/sprmcodetostr.xsl b/writerfilter/source/doctok/sprmcodetostr.xsl
index 41de8387ac2e..98cf02919959 100644
--- a/writerfilter/source/doctok/sprmcodetostr.xsl
+++ b/writerfilter/source/doctok/sprmcodetostr.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: sprmcodetostr.xsl,v $
-
- $Revision: 1.2 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/doctok/sprmids.xsl b/writerfilter/source/doctok/sprmids.xsl
index af3f1335f18f..2ca8826e94dc 100644
--- a/writerfilter/source/doctok/sprmids.xsl
+++ b/writerfilter/source/doctok/sprmids.xsl
@@ -3,14 +3,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sprmids.xsl,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -44,14 +40,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sprmids.xsl,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/tidyxmi.xsl b/writerfilter/source/doctok/tidyxmi.xsl
index 1c470039bf7c..6371fb05b696 100644
--- a/writerfilter/source/doctok/tidyxmi.xsl
+++ b/writerfilter/source/doctok/tidyxmi.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: tidyxmi.xsl,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
diff --git a/writerfilter/source/doctok/util.hxx b/writerfilter/source/doctok/util.hxx
index a1c065f26c91..df534b28a5bc 100644
--- a/writerfilter/source/doctok/util.hxx
+++ b/writerfilter/source/doctok/util.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: util.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/doctok/xmistat.xsl b/writerfilter/source/doctok/xmistat.xsl
index 5452b76341c4..842e0f0361e2 100644
--- a/writerfilter/source/doctok/xmistat.xsl
+++ b/writerfilter/source/doctok/xmistat.xsl
@@ -2,14 +2,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: xmistat.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default">
diff --git a/writerfilter/source/doctok/xmitocpp b/writerfilter/source/doctok/xmitocpp
index 25d3f26cbb69..ec06b400eb80 100755
--- a/writerfilter/source/doctok/xmitocpp
+++ b/writerfilter/source/doctok/xmitocpp
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: xmitocpp,v $
-#
-# $Revision: 1.10 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/filter/ImportFilter.cxx b/writerfilter/source/filter/ImportFilter.cxx
index af27bac94540..46b5563f3b80 100644
--- a/writerfilter/source/filter/ImportFilter.cxx
+++ b/writerfilter/source/filter/ImportFilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ImportFilter.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/filter/WriterFilter.cxx b/writerfilter/source/filter/WriterFilter.cxx
index d09df79d2017..71a97d72f391 100644
--- a/writerfilter/source/filter/WriterFilter.cxx
+++ b/writerfilter/source/filter/WriterFilter.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WriterFilter.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/filter/WriterFilter.hxx b/writerfilter/source/filter/WriterFilter.hxx
index 02fde305086e..0d4cb7a3a711 100644
--- a/writerfilter/source/filter/WriterFilter.hxx
+++ b/writerfilter/source/filter/WriterFilter.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WriterFilter.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/filter/WriterFilterDetection.cxx b/writerfilter/source/filter/WriterFilterDetection.cxx
index 4be325b74945..a712cc14fffa 100644
--- a/writerfilter/source/filter/WriterFilterDetection.cxx
+++ b/writerfilter/source/filter/WriterFilterDetection.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WriterFilterDetection.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/filter/WriterFilterDetection.hxx b/writerfilter/source/filter/WriterFilterDetection.hxx
index 07c895d787ef..a5e8149d68c2 100644
--- a/writerfilter/source/filter/WriterFilterDetection.hxx
+++ b/writerfilter/source/filter/WriterFilterDetection.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WriterFilterDetection.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/filter/makefile.mk b/writerfilter/source/filter/makefile.mk
index f8edfa4aac36..f578e2853243 100644
--- a/writerfilter/source/filter/makefile.mk
+++ b/writerfilter/source/filter/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/Handler.cxx b/writerfilter/source/ooxml/Handler.cxx
index 7560d3cf4c50..1b4fb6eb0525 100644
--- a/writerfilter/source/ooxml/Handler.cxx
+++ b/writerfilter/source/ooxml/Handler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Handler.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/Handler.hxx b/writerfilter/source/ooxml/Handler.hxx
index 8b1650af234c..372683c0b0cf 100644
--- a/writerfilter/source/ooxml/Handler.hxx
+++ b/writerfilter/source/ooxml/Handler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Handler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx
index 0bb71f6cfbee..d034a145a5bf 100644
--- a/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx
+++ b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLBinaryObjectReference.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx
index 0f36cfd46711..833c93bae9db 100644
--- a/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx
+++ b/writerfilter/source/ooxml/OOXMLBinaryObjectReference.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLBinaryObjectReference.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
index fef00e4cef43..50c32b758d44 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLDocumentImpl.cxx,v $
- * $Revision: 1.19 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
index ca2c91994f58..7fdeb69b8bb8 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLDocumentImpl.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index 53f0c423bc9c..6b52563887ee 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastContextHandler.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
index e8fb0efc0f7b..26e040182f57 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastContextHandler.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
index aee2be60ad47..e9a7ece6a487 100644
--- a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastDocumentHandler.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
index 92e173749620..a95fd3306d3a 100644
--- a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastDocumentHandler.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastHelper.hxx b/writerfilter/source/ooxml/OOXMLFastHelper.hxx
index 964876f5a35a..ff0e30e4da0f 100644
--- a/writerfilter/source/ooxml/OOXMLFastHelper.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastHelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastHelper.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx b/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx
index 6d6692b671fc..bb44111195d2 100644
--- a/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastTokenHandler.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastTokenHandler.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx b/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx
index bb534dd5d955..5debd7224cb9 100644
--- a/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastTokenHandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLFastTokenHandler.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLParserState.cxx b/writerfilter/source/ooxml/OOXMLParserState.cxx
index e475416db489..255f97558cb3 100644
--- a/writerfilter/source/ooxml/OOXMLParserState.cxx
+++ b/writerfilter/source/ooxml/OOXMLParserState.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLParserState.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLParserState.hxx b/writerfilter/source/ooxml/OOXMLParserState.hxx
index ef050ce8b8c3..2953e00a499f 100644
--- a/writerfilter/source/ooxml/OOXMLParserState.hxx
+++ b/writerfilter/source/ooxml/OOXMLParserState.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLParserState.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLPropertySet.hxx b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
index 9ec28719c1d8..d448b58cc304 100644
--- a/writerfilter/source/ooxml/OOXMLPropertySet.hxx
+++ b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLPropertySet.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx b/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx
index 067ae4615a0f..6f9bf9a3480d 100644
--- a/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLPropertySetImpl.cxx,v $
- * $Revision: 1.27 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -422,6 +419,7 @@ void OOXMLPropertySetImpl::resolve(Properties & rHandler)
debug_logger->startElement("error");
debug_logger->chars("zero-property");
debug_logger->endElement("error");
+ }
#endif
aIt++;
diff --git a/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx b/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx
index 4b2bdd118814..78c39b79d515 100644
--- a/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx
+++ b/writerfilter/source/ooxml/OOXMLPropertySetImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLPropertySetImpl.hxx,v $
- * $Revision: 1.23 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLStreamImpl.cxx b/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
index 1de3acfcbfba..91188eeda701 100644
--- a/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLStreamImpl.cxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/OOXMLStreamImpl.hxx b/writerfilter/source/ooxml/OOXMLStreamImpl.hxx
index f6733e9c405f..64682fab250c 100644
--- a/writerfilter/source/ooxml/OOXMLStreamImpl.hxx
+++ b/writerfilter/source/ooxml/OOXMLStreamImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLStreamImpl.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/RefAndPointer.hxx b/writerfilter/source/ooxml/RefAndPointer.hxx
index de3fcf69d6c7..c997d302fd33 100644
--- a/writerfilter/source/ooxml/RefAndPointer.hxx
+++ b/writerfilter/source/ooxml/RefAndPointer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RefAndPointer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/analyzer.xsl b/writerfilter/source/ooxml/analyzer.xsl
index 100316a0c7a2..155de88d954a 100644
--- a/writerfilter/source/ooxml/analyzer.xsl
+++ b/writerfilter/source/ooxml/analyzer.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: analyzer.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/checkmodel.xsl b/writerfilter/source/ooxml/checkmodel.xsl
index 9768bb5ebfc3..b40544f796cf 100644
--- a/writerfilter/source/ooxml/checkmodel.xsl
+++ b/writerfilter/source/ooxml/checkmodel.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: checkmodel.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/dummyannotate.xsl b/writerfilter/source/ooxml/dummyannotate.xsl
index 52a960e73a28..029fd6aef569 100644
--- a/writerfilter/source/ooxml/dummyannotate.xsl
+++ b/writerfilter/source/ooxml/dummyannotate.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: dummyannotate.xsl,v $
-
- $Revision: 1.10 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources.xsl b/writerfilter/source/ooxml/fastresources.xsl
index 7e537d1881f4..bf68234a37bb 100644
--- a/writerfilter/source/ooxml/fastresources.xsl
+++ b/writerfilter/source/ooxml/fastresources.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources.xsl,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_.xsl b/writerfilter/source/ooxml/fastresources_.xsl
index 5d24a01fd240..6141bb7f02bc 100644
--- a/writerfilter/source/ooxml/fastresources_.xsl
+++ b/writerfilter/source/ooxml/fastresources_.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-baseStylesheet.xsl b/writerfilter/source/ooxml/fastresources_dml-baseStylesheet.xsl
index 71b42789d4d0..b16443e1021a 100644
--- a/writerfilter/source/ooxml/fastresources_dml-baseStylesheet.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-baseStylesheet.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-baseStylesheet.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-baseTypes.xsl b/writerfilter/source/ooxml/fastresources_dml-baseTypes.xsl
index 7baa6f375953..1311c8593b8f 100644
--- a/writerfilter/source/ooxml/fastresources_dml-baseTypes.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-baseTypes.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-baseTypes.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-chartDrawing.xsl b/writerfilter/source/ooxml/fastresources_dml-chartDrawing.xsl
index 08b525bc3c6a..3a0869ebe826 100644
--- a/writerfilter/source/ooxml/fastresources_dml-chartDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-chartDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-chartDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-documentProperties.xsl b/writerfilter/source/ooxml/fastresources_dml-documentProperties.xsl
index 65ad69879937..4a5aab2e3012 100644
--- a/writerfilter/source/ooxml/fastresources_dml-documentProperties.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-documentProperties.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-documentProperties.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-graphicalObject.xsl b/writerfilter/source/ooxml/fastresources_dml-graphicalObject.xsl
index 4484a64e96c5..731fe6dd7712 100644
--- a/writerfilter/source/ooxml/fastresources_dml-graphicalObject.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-graphicalObject.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-graphicalObject.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shape3DCamera.xsl b/writerfilter/source/ooxml/fastresources_dml-shape3DCamera.xsl
index 4aebb13ae4dc..8ff2260a76c4 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shape3DCamera.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shape3DCamera.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shape3DCamera.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shape3DLighting.xsl b/writerfilter/source/ooxml/fastresources_dml-shape3DLighting.xsl
index 9e09e2bcdcca..374668a8b7e3 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shape3DLighting.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shape3DLighting.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shape3DLighting.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shape3DScene.xsl b/writerfilter/source/ooxml/fastresources_dml-shape3DScene.xsl
index 5883356adad1..aec93f875597 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shape3DScene.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shape3DScene.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shape3DScene.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shape3DStyles.xsl b/writerfilter/source/ooxml/fastresources_dml-shape3DStyles.xsl
index 38ac7c343ced..8769fdc93f88 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shape3DStyles.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shape3DStyles.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shape3DStyles.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shapeEffects.xsl b/writerfilter/source/ooxml/fastresources_dml-shapeEffects.xsl
index 990cd56e86f9..3925aa2c2f34 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shapeEffects.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shapeEffects.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shapeEffects.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shapeGeometry.xsl b/writerfilter/source/ooxml/fastresources_dml-shapeGeometry.xsl
index cacdc21893b8..d500a94d7137 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shapeGeometry.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shapeGeometry.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shapeGeometry.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shapeLineProperties.xsl b/writerfilter/source/ooxml/fastresources_dml-shapeLineProperties.xsl
index 5758a4778635..cc7e47ba3e27 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shapeLineProperties.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shapeLineProperties.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shapeLineProperties.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-shapeProperties.xsl b/writerfilter/source/ooxml/fastresources_dml-shapeProperties.xsl
index ab57edb39de3..7fbfef66b033 100644
--- a/writerfilter/source/ooxml/fastresources_dml-shapeProperties.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-shapeProperties.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-shapeProperties.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-styleDefaults.xsl b/writerfilter/source/ooxml/fastresources_dml-styleDefaults.xsl
index 61d0cf55131f..35d20409e2f0 100644
--- a/writerfilter/source/ooxml/fastresources_dml-styleDefaults.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-styleDefaults.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-styleDefaults.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-stylesheet.xsl b/writerfilter/source/ooxml/fastresources_dml-stylesheet.xsl
index c75f65687a50..182052eb117b 100644
--- a/writerfilter/source/ooxml/fastresources_dml-stylesheet.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-stylesheet.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-stylesheet.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-textCharacter.xsl b/writerfilter/source/ooxml/fastresources_dml-textCharacter.xsl
index ef187284fd18..8b276f25d4ad 100644
--- a/writerfilter/source/ooxml/fastresources_dml-textCharacter.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-textCharacter.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-textCharacter.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_dml-wordprocessingDrawing.xsl b/writerfilter/source/ooxml/fastresources_dml-wordprocessingDrawing.xsl
index 469bb7c54b4f..d158513e3240 100644
--- a/writerfilter/source/ooxml/fastresources_dml-wordprocessingDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresources_dml-wordprocessingDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_dml-wordprocessingDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_shared-math.xsl b/writerfilter/source/ooxml/fastresources_shared-math.xsl
index 9c81393d342a..c80d616f8f50 100644
--- a/writerfilter/source/ooxml/fastresources_shared-math.xsl
+++ b/writerfilter/source/ooxml/fastresources_shared-math.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_shared-math.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_shared-relationshipReference.xsl b/writerfilter/source/ooxml/fastresources_shared-relationshipReference.xsl
index 3ea854603820..d4abaf92680c 100644
--- a/writerfilter/source/ooxml/fastresources_shared-relationshipReference.xsl
+++ b/writerfilter/source/ooxml/fastresources_shared-relationshipReference.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_shared-relationshipReference.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_sml-customXmlMappings.xsl b/writerfilter/source/ooxml/fastresources_sml-customXmlMappings.xsl
index d41c5911c9a6..33238578d449 100644
--- a/writerfilter/source/ooxml/fastresources_sml-customXmlMappings.xsl
+++ b/writerfilter/source/ooxml/fastresources_sml-customXmlMappings.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_sml-customXmlMappings.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_vml-main.xsl b/writerfilter/source/ooxml/fastresources_vml-main.xsl
index 756d51ee6bac..cd9512ecd7d8 100644
--- a/writerfilter/source/ooxml/fastresources_vml-main.xsl
+++ b/writerfilter/source/ooxml/fastresources_vml-main.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_vml-main.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_vml-officeDrawing.xsl b/writerfilter/source/ooxml/fastresources_vml-officeDrawing.xsl
index 3022e3792cfc..039a2a2f608c 100644
--- a/writerfilter/source/ooxml/fastresources_vml-officeDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresources_vml-officeDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_vml-officeDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_vml-wordprocessingDrawing.xsl b/writerfilter/source/ooxml/fastresources_vml-wordprocessingDrawing.xsl
index 7d7495f51e29..fa5adb933284 100644
--- a/writerfilter/source/ooxml/fastresources_vml-wordprocessingDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresources_vml-wordprocessingDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_vml-wordprocessingDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresources_wml.xsl b/writerfilter/source/ooxml/fastresources_wml.xsl
index 4bb5528f3bc4..c21ab6ef2cdd 100644
--- a/writerfilter/source/ooxml/fastresources_wml.xsl
+++ b/writerfilter/source/ooxml/fastresources_wml.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresources_wml.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl.xsl b/writerfilter/source/ooxml/fastresourcesimpl.xsl
index 7b5e6429a032..ac0558236cd4 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-baseStylesheet.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-baseStylesheet.xsl
index a25c6d640002..79c4f46a51ee 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-baseStylesheet.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-baseStylesheet.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-baseStylesheet.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-baseTypes.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-baseTypes.xsl
index cf671edf0023..cf7de4f5427a 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-baseTypes.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-baseTypes.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-baseTypes.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-chartDrawing.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-chartDrawing.xsl
index 8b4d3ff3eb59..6f14f1399d9c 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-chartDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-chartDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-chartDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-documentProperties.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-documentProperties.xsl
index fba716a8ee5e..19c6cc30c9d8 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-documentProperties.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-documentProperties.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-documentProperties.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-graphicalObject.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-graphicalObject.xsl
index 517f1e7a1071..c3854540c818 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-graphicalObject.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-graphicalObject.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-graphicalObject.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DCamera.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DCamera.xsl
index 85bc0745dbfd..b0b3c5ed0c35 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DCamera.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DCamera.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shape3DCamera.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DLighting.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DLighting.xsl
index ac65d2e71064..42c99380ea3b 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DLighting.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DLighting.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shape3DLighting.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DScene.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DScene.xsl
index c52d02df0064..caa362a3e0a7 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DScene.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DScene.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shape3DScene.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DStyles.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DStyles.xsl
index e508b8fe6a4c..5c07fc034714 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DStyles.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shape3DStyles.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shape3DStyles.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeEffects.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeEffects.xsl
index e8e1bdb83fe1..285518d3908d 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeEffects.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeEffects.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shapeEffects.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeGeometry.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeGeometry.xsl
index a7d2b4c695f0..063ab2c4aae9 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeGeometry.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeGeometry.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shapeGeometry.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeLineProperties.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeLineProperties.xsl
index 6b0b1c6ffcd7..41127751ff2d 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeLineProperties.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeLineProperties.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shapeLineProperties.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeProperties.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeProperties.xsl
index ca6f6530ed52..9904907317cc 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeProperties.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-shapeProperties.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-shapeProperties.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-styleDefaults.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-styleDefaults.xsl
index a67dfe448761..604652d664c2 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-styleDefaults.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-styleDefaults.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-styleDefaults.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-stylesheet.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-stylesheet.xsl
index f49380d2a9db..940363e355f2 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-stylesheet.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-stylesheet.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-stylesheet.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-textCharacter.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-textCharacter.xsl
index 045b7ea3816e..d3d486196825 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-textCharacter.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-textCharacter.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-textCharacter.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_dml-wordprocessingDrawing.xsl b/writerfilter/source/ooxml/fastresourcesimpl_dml-wordprocessingDrawing.xsl
index 4ea6dd6be5d0..6433812e6c2f 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_dml-wordprocessingDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_dml-wordprocessingDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_dml-wordprocessingDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_shared-math.xsl b/writerfilter/source/ooxml/fastresourcesimpl_shared-math.xsl
index c14762ddf27b..65af7e93fa0a 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_shared-math.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_shared-math.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_shared-math.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_shared-relationshipReference.xsl b/writerfilter/source/ooxml/fastresourcesimpl_shared-relationshipReference.xsl
index 16040a39f3c2..ff0e8416d23a 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_shared-relationshipReference.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_shared-relationshipReference.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_shared-relationshipReference.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_sml-customXmlMappings.xsl b/writerfilter/source/ooxml/fastresourcesimpl_sml-customXmlMappings.xsl
index 5d27f167ee6e..21dc37d4dec4 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_sml-customXmlMappings.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_sml-customXmlMappings.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_sml-customXmlMappings.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_vml-main.xsl b/writerfilter/source/ooxml/fastresourcesimpl_vml-main.xsl
index 581cf53e1159..080e31ed69cd 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_vml-main.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_vml-main.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_vml-main.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_vml-officeDrawing.xsl b/writerfilter/source/ooxml/fastresourcesimpl_vml-officeDrawing.xsl
index 69d2f1ffc1fc..d4716325726d 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_vml-officeDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_vml-officeDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_vml-officeDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_vml-wordprocessingDrawing.xsl b/writerfilter/source/ooxml/fastresourcesimpl_vml-wordprocessingDrawing.xsl
index 2638ce409330..09500c745444 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_vml-wordprocessingDrawing.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_vml-wordprocessingDrawing.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_vml-wordprocessingDrawing.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fastresourcesimpl_wml.xsl b/writerfilter/source/ooxml/fastresourcesimpl_wml.xsl
index b1052f7d8080..1b0b41debcff 100644
--- a/writerfilter/source/ooxml/fastresourcesimpl_wml.xsl
+++ b/writerfilter/source/ooxml/fastresourcesimpl_wml.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fastresourcesimpl_wml.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fasttokens.xsl b/writerfilter/source/ooxml/fasttokens.xsl
index 7bc54f7361e7..151e2f1cda0c 100644
--- a/writerfilter/source/ooxml/fasttokens.xsl
+++ b/writerfilter/source/ooxml/fasttokens.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fasttokens.xsl,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/fasttokensimpl.xsl b/writerfilter/source/ooxml/fasttokensimpl.xsl
index bb89590c9f47..1bafce1978e2 100644
--- a/writerfilter/source/ooxml/fasttokensimpl.xsl
+++ b/writerfilter/source/ooxml/fasttokensimpl.xsl
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: fasttokensimpl.xsl,v $
-
- $Revision: 1.2 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet
version="1.0"
diff --git a/writerfilter/source/ooxml/gperffasttokenhandler.xsl b/writerfilter/source/ooxml/gperffasttokenhandler.xsl
index 7b44f4403952..9ecd15f8c744 100644
--- a/writerfilter/source/ooxml/gperffasttokenhandler.xsl
+++ b/writerfilter/source/ooxml/gperffasttokenhandler.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: gperffasttokenhandler.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/makefile.mk b/writerfilter/source/ooxml/makefile.mk
index e154a29b01c0..ac8e7ea9b05c 100644
--- a/writerfilter/source/ooxml/makefile.mk
+++ b/writerfilter/source/ooxml/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.17 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/modelcleanup.xsl b/writerfilter/source/ooxml/modelcleanup.xsl
index 7817aac72522..364d41a6bc9c 100644
--- a/writerfilter/source/ooxml/modelcleanup.xsl
+++ b/writerfilter/source/ooxml/modelcleanup.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: modelcleanup.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/modelpreprocess.xsl b/writerfilter/source/ooxml/modelpreprocess.xsl
index 90376fc08903..2a78f8e748a6 100644
--- a/writerfilter/source/ooxml/modelpreprocess.xsl
+++ b/writerfilter/source/ooxml/modelpreprocess.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: modelpreprocess.xsl,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/namespaceids.xsl b/writerfilter/source/ooxml/namespaceids.xsl
index cf47ad6e0d10..318155c47fdc 100644
--- a/writerfilter/source/ooxml/namespaceids.xsl
+++ b/writerfilter/source/ooxml/namespaceids.xsl
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: namespaceids.xsl,v $
-
- $Revision: 1.2 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet
version="1.0"
diff --git a/writerfilter/source/ooxml/ooxmlLoggers.hxx b/writerfilter/source/ooxml/ooxmlLoggers.hxx
index c7deae030ae1..b58a41bdabcd 100644
--- a/writerfilter/source/ooxml/ooxmlLoggers.hxx
+++ b/writerfilter/source/ooxml/ooxmlLoggers.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ooxmlLoggers.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/ooxml/qnametostr.xsl b/writerfilter/source/ooxml/qnametostr.xsl
index 9327926b3c19..888eb36325e8 100644
--- a/writerfilter/source/ooxml/qnametostr.xsl
+++ b/writerfilter/source/ooxml/qnametostr.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: qnametostr.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/resourceids.xsl b/writerfilter/source/ooxml/resourceids.xsl
index d89cf53cfbf9..33eea88691ac 100644
--- a/writerfilter/source/ooxml/resourceids.xsl
+++ b/writerfilter/source/ooxml/resourceids.xsl
@@ -4,14 +4,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: resourceids.xsl,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/resourcestools.xsl b/writerfilter/source/ooxml/resourcestools.xsl
index 7296cbd34154..f7039aca5321 100644
--- a/writerfilter/source/ooxml/resourcestools.xsl
+++ b/writerfilter/source/ooxml/resourcestools.xsl
@@ -1,33 +1,29 @@
<!--
/*************************************************************************
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: resourcestools.xsl,v $
- *
- * $Revision: 1.49 $
- *
- * 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.
- *
+ 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.
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/values.xsl b/writerfilter/source/ooxml/values.xsl
index 414bd89aa0af..cee50f39ff61 100644
--- a/writerfilter/source/ooxml/values.xsl
+++ b/writerfilter/source/ooxml/values.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: values.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/ooxml/valuesimpl.xsl b/writerfilter/source/ooxml/valuesimpl.xsl
index c4b40b71fd2d..64be68700ad5 100644
--- a/writerfilter/source/ooxml/valuesimpl.xsl
+++ b/writerfilter/source/ooxml/valuesimpl.xsl
@@ -3,14 +3,10 @@
*
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: valuesimpl.xsl,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
************************************************************************/
-->
diff --git a/writerfilter/source/resourcemodel/TagLogger.cxx b/writerfilter/source/resourcemodel/TagLogger.cxx
index 0afbc1986cff..a4baf718a5d7 100644
--- a/writerfilter/source/resourcemodel/TagLogger.cxx
+++ b/writerfilter/source/resourcemodel/TagLogger.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TagLogger.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/WW8Analyzer.cxx b/writerfilter/source/resourcemodel/WW8Analyzer.cxx
index 15a8470bac8b..75691b5f1483 100644
--- a/writerfilter/source/resourcemodel/WW8Analyzer.cxx
+++ b/writerfilter/source/resourcemodel/WW8Analyzer.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Analyzer.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/WW8Analyzer.hxx b/writerfilter/source/resourcemodel/WW8Analyzer.hxx
index 339b7adeab61..a2fc9e4d4b3d 100644
--- a/writerfilter/source/resourcemodel/WW8Analyzer.hxx
+++ b/writerfilter/source/resourcemodel/WW8Analyzer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WW8Analyzer.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/analyzerheader b/writerfilter/source/resourcemodel/analyzerheader
index 15fc71c50ad2..1b4e2674ffab 100644
--- a/writerfilter/source/resourcemodel/analyzerheader
+++ b/writerfilter/source/resourcemodel/analyzerheader
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: analyzerheader,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/genqnametostr b/writerfilter/source/resourcemodel/genqnametostr
index f38aeb886511..12bad07b9b85 100755
--- a/writerfilter/source/resourcemodel/genqnametostr
+++ b/writerfilter/source/resourcemodel/genqnametostr
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: genqnametostr,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/makefile.mk b/writerfilter/source/resourcemodel/makefile.mk
index b85443266320..52f89cf2dc7f 100644
--- a/writerfilter/source/resourcemodel/makefile.mk
+++ b/writerfilter/source/resourcemodel/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/qnametostrheader b/writerfilter/source/resourcemodel/qnametostrheader
index fa497bd996d8..6cbd0b3fec10 100644
--- a/writerfilter/source/resourcemodel/qnametostrheader
+++ b/writerfilter/source/resourcemodel/qnametostrheader
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: qnametostrheader,v $
- *
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/resourcemodel.cxx b/writerfilter/source/resourcemodel/resourcemodel.cxx
index 0bfa9845ffe8..9b45834c5ce3 100644
--- a/writerfilter/source/resourcemodel/resourcemodel.cxx
+++ b/writerfilter/source/resourcemodel/resourcemodel.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourcemodel.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/resourcemodel.hxx b/writerfilter/source/resourcemodel/resourcemodel.hxx
index 314cc4a83c8f..b316f4c912f9 100644
--- a/writerfilter/source/resourcemodel/resourcemodel.hxx
+++ b/writerfilter/source/resourcemodel/resourcemodel.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: resourcemodel.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/sprmcodetostrheader b/writerfilter/source/resourcemodel/sprmcodetostrheader
index aeb7efdcff27..ff0663e30bde 100644
--- a/writerfilter/source/resourcemodel/sprmcodetostrheader
+++ b/writerfilter/source/resourcemodel/sprmcodetostrheader
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sprmcodetostrheader,v $
- *
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/resourcemodel/util.cxx b/writerfilter/source/resourcemodel/util.cxx
index 00c25be41c42..b7966f6957ea 100644
--- a/writerfilter/source/resourcemodel/util.cxx
+++ b/writerfilter/source/resourcemodel/util.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: util.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/rtftok/FlexLexer.h b/writerfilter/source/rtftok/FlexLexer.h
index 471f138604ea..309cd30ffe1a 100644
--- a/writerfilter/source/rtftok/FlexLexer.h
+++ b/writerfilter/source/rtftok/FlexLexer.h
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FlexLexer.h,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/rtftok/RTFParseException.cxx b/writerfilter/source/rtftok/RTFParseException.cxx
index 32e91c6e9277..75212471e02f 100644
--- a/writerfilter/source/rtftok/RTFParseException.cxx
+++ b/writerfilter/source/rtftok/RTFParseException.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RTFParseException.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include <rtftok/RTFParseException.hxx>
writerfilter::rtftok::RTFParseException::RTFParseException(char * /*message*/)
diff --git a/writerfilter/source/rtftok/RTFScanner.lex b/writerfilter/source/rtftok/RTFScanner.lex
index 32fee7a14092..e5b4c63b397a 100644
--- a/writerfilter/source/rtftok/RTFScanner.lex
+++ b/writerfilter/source/rtftok/RTFScanner.lex
@@ -2,14 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RTFScanner.lex,v $
- *
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/source/rtftok/makefile.mk b/writerfilter/source/rtftok/makefile.mk
index 9c27d2179b66..61399f051e15 100644
--- a/writerfilter/source/rtftok/makefile.mk
+++ b/writerfilter/source/rtftok/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.6 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,9 +24,6 @@
# for a copy of the LGPLv3 License.
#
# ***********************************************************************/
-#
-# Copyright 2005 Sun Microsystems, Inc.
-#
PRJ=..$/..
PRJNAME=writerfilter
diff --git a/writerfilter/unocomponent/component.cxx b/writerfilter/unocomponent/component.cxx
index 677d4e10a1a3..327e61e41a21 100644
--- a/writerfilter/unocomponent/component.cxx
+++ b/writerfilter/unocomponent/component.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: component.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#ifndef _CPPUHELPTER_FACTORY_
#include <cppuhelper/factory.hxx>
#endif
diff --git a/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.cxx b/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.cxx
index a65030f00407..9ff3253a161d 100644
--- a/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.cxx
+++ b/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocTokAnalyzeService.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include "DocTokAnalyzeService.hxx"
#include <stdio.h>
#include <wchar.h>
diff --git a/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.hxx b/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.hxx
index 653bb877a97f..5aac9bfba90b 100644
--- a/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.hxx
+++ b/writerfilter/unocomponent/debugservices/doctok/DocTokAnalyzeService.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocTokAnalyzeService.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
-
#ifndef INCLUDED_DOCTOK_ANALYZESERVICE_HXX
#define INCLUDED_DOCTOK_ANALYZESERVICE_HXX
diff --git a/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.cxx b/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.cxx
index b2cbcd3982f1..02a7eddd7a33 100644
--- a/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.cxx
+++ b/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocTokTestService.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include "DocTokTestService.hxx"
#include <stdio.h>
#include <wchar.h>
diff --git a/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.hxx b/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.hxx
index 23969f637c0f..4fbcfc5b60b6 100644
--- a/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.hxx
+++ b/writerfilter/unocomponent/debugservices/doctok/DocTokTestService.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocTokTestService.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
-
#ifndef INCLUDED_DOCTOK_SCANNERTESTSERVICE_HXX
#define INCLUDED_DOCTOK_SCANNERTESTSERVICE_HXX
diff --git a/writerfilter/unocomponent/debugservices/doctok/makefile.mk b/writerfilter/unocomponent/debugservices/doctok/makefile.mk
index dc2554a603e2..989be1baa3de 100644
--- a/writerfilter/unocomponent/debugservices/doctok/makefile.mk
+++ b/writerfilter/unocomponent/debugservices/doctok/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.cxx b/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.cxx
index 6d0fbedbb9f7..19f7855acb26 100644
--- a/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.cxx
+++ b/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLAnalyzeService.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include <comphelper/processfactory.hxx>
#include "OOXMLAnalyzeService.hxx"
diff --git a/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.hxx b/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.hxx
index dda27e6e7911..6acacbac871a 100644
--- a/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.hxx
+++ b/writerfilter/unocomponent/debugservices/ooxml/OOXMLAnalyzeService.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLAnalyzeService.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
-
#ifndef INCLUDED_OOXML_ANALYZE_SERVICE_HXX
#define INCLUDED_OOXML_ANALYZE_SERVICE_HXX
diff --git a/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx b/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx
index efe03491db7d..8fa44b224aa5 100644
--- a/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx
+++ b/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLTestService.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include <cppuhelper/implbase1.hxx>
#include <com/sun/star/lang/XMain.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
diff --git a/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.hxx b/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.hxx
index 880a76668e58..10bbb2a569a4 100644
--- a/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.hxx
+++ b/writerfilter/unocomponent/debugservices/ooxml/OOXMLTestService.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OOXMLTestService.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
-
#ifndef INCLUDED_OOXML_SCANNERTESTSERVICE_HXX
#define INCLUDED_OOXML_SCANNERTESTSERVICE_HXX
diff --git a/writerfilter/unocomponent/debugservices/ooxml/makefile.mk b/writerfilter/unocomponent/debugservices/ooxml/makefile.mk
index 3ff48b3ae2c2..25835aede106 100644
--- a/writerfilter/unocomponent/debugservices/ooxml/makefile.mk
+++ b/writerfilter/unocomponent/debugservices/ooxml/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.cxx b/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.cxx
index 5c63e4deb115..1b02fab37dd6 100644
--- a/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.cxx
+++ b/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ScannerTestService.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include "ScannerTestService.hxx"
#include <stdio.h>
#include <string.h>
diff --git a/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.hxx b/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.hxx
index f6e5b0113bce..9577a4c81553 100644
--- a/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.hxx
+++ b/writerfilter/unocomponent/debugservices/rtftok/ScannerTestService.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ScannerTestService.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
-
#ifndef INCLUDED_RTFTOK_SCANNERTESTSERVICE_HXX
#define INCLUDED_RTFTOK_SCANNERTESTSERVICE_HXX
diff --git a/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.cxx b/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.cxx
index 46935c9b536e..a4a845959afe 100644
--- a/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.cxx
+++ b/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XMLScanner.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
- */
-
#include "XMLScanner.hxx"
#include <stdio.h>
#include <string.h>
diff --git a/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.hxx b/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.hxx
index 2136472bf366..d489b7400f2d 100644
--- a/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.hxx
+++ b/writerfilter/unocomponent/debugservices/rtftok/XMLScanner.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XMLScanner.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,10 +25,6 @@
*
************************************************************************/
-/**
- Copyright 2005 Sun Microsystems, Inc.
-*/
-
#ifndef INCLUDED_RTFTOK_XMLSCANNER_HXX
#define INCLUDED_RTFTOK_XMLSCANNER_HXX
diff --git a/writerfilter/unocomponent/debugservices/rtftok/makefile.mk b/writerfilter/unocomponent/debugservices/rtftok/makefile.mk
index c5edb808a898..66c54a8707cd 100644
--- a/writerfilter/unocomponent/debugservices/rtftok/makefile.mk
+++ b/writerfilter/unocomponent/debugservices/rtftok/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/unocomponent/makefile.mk b/writerfilter/unocomponent/makefile.mk
index 45dc37bb2540..a01d391e88fb 100644
--- a/writerfilter/unocomponent/makefile.mk
+++ b/writerfilter/unocomponent/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.10 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/writerfilter/util/makefile.mk b/writerfilter/util/makefile.mk
index 4e99764c688f..c9736f4167d7 100644
--- a/writerfilter/util/makefile.mk
+++ b/writerfilter/util/makefile.mk
@@ -1,15 +1,11 @@
#************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2008 by Sun Microsystems, Inc.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/build.xml b/xmerge/build.xml
index ea99053d6dd7..5878c1acf0b9 100644
--- a/xmerge/build.xml
+++ b/xmerge/build.xml
@@ -2,14 +2,10 @@
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.8 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/inc/makefile.mk b/xmerge/inc/makefile.mk
index 79adf8b07dc8..ed1c6f3d4ded 100644
--- a/xmerge/inc/makefile.mk
+++ b/xmerge/inc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/inc/pch/precompiled_xmerge.cxx b/xmerge/inc/pch/precompiled_xmerge.cxx
index 9152abc37ce5..a3c5d7a24808 100644
--- a/xmerge/inc/pch/precompiled_xmerge.cxx
+++ b/xmerge/inc/pch/precompiled_xmerge.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompiled_xmerge.cxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/inc/pch/precompiled_xmerge.hxx b/xmerge/inc/pch/precompiled_xmerge.hxx
index acf05f182b9f..33202852ae8d 100644
--- a/xmerge/inc/pch/precompiled_xmerge.hxx
+++ b/xmerge/inc/pch/precompiled_xmerge.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: precompiled_xmerge.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/build.xml b/xmerge/java/build.xml
index 59ff9625324e..4810de5fc57f 100644
--- a/xmerge/java/build.xml
+++ b/xmerge/java/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -63,7 +59,6 @@
<pathelement location="${solar.jar}/jurt.jar"/>
<pathelement location="${solar.jar}/unoil.jar"/>
<pathelement location="${solar.jar}/ridl.jar"/>
- <pathelement location="${solar.jar}/sandbox.jar"/>
<pathelement location="${solar.jar}/juh.jar"/>
<pathelement location="${solar.jar}/jmc.jar"/>
</path>
diff --git a/xmerge/java/makefile.mk b/xmerge/java/makefile.mk
index ee0aef20368c..818782e307ef 100644
--- a/xmerge/java/makefile.mk
+++ b/xmerge/java/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/Convert.java b/xmerge/java/org/openoffice/xmerge/Convert.java
index 5d12be83b507..88c91c7f869c 100644
--- a/xmerge/java/org/openoffice/xmerge/Convert.java
+++ b/xmerge/java/org/openoffice/xmerge/Convert.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Convert.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/ConvertData.java b/xmerge/java/org/openoffice/xmerge/ConvertData.java
index 74326ceba1f4..ed9d2146a9e7 100644
--- a/xmerge/java/org/openoffice/xmerge/ConvertData.java
+++ b/xmerge/java/org/openoffice/xmerge/ConvertData.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConvertData.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/ConvertException.java b/xmerge/java/org/openoffice/xmerge/ConvertException.java
index 28cbe3a98465..e92d5dabddf1 100644
--- a/xmerge/java/org/openoffice/xmerge/ConvertException.java
+++ b/xmerge/java/org/openoffice/xmerge/ConvertException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConvertException.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java b/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java
index 2444f3c9247b..f02384c880ef 100644
--- a/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java
+++ b/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilities.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/ConverterFactory.java b/xmerge/java/org/openoffice/xmerge/ConverterFactory.java
index 47ad951329ab..806591db335d 100644
--- a/xmerge/java/org/openoffice/xmerge/ConverterFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/ConverterFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterFactory.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/Document.java b/xmerge/java/org/openoffice/xmerge/Document.java
index 751273849884..94fac6dd136d 100644
--- a/xmerge/java/org/openoffice/xmerge/Document.java
+++ b/xmerge/java/org/openoffice/xmerge/Document.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Document.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java b/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java
index f75d9a060155..3065dff194d0 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializer.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java b/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java
index 5809e8644465..3c81daf20b03 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializer2.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java b/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java
index 06432ab40612..4b4e6ba04a2b 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerFactory.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentMerger.java b/xmerge/java/org/openoffice/xmerge/DocumentMerger.java
index f088d4eb2b1a..0f3f75d2089e 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentMerger.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentMerger.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMerger.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java b/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java
index 681841b83c1f..7a30a56b6137 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerFactory.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java b/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java
index 1270ef7673b8..4e7beba2f575 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializer.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java b/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java
index 7f32ca94dbdd..41e7bebe3812 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializer2.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java b/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java
index ec38520741f9..3837156a791d 100644
--- a/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerFactory.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/MergeException.java b/xmerge/java/org/openoffice/xmerge/MergeException.java
index eb2e7b45cc0c..6ea95c53873b 100644
--- a/xmerge/java/org/openoffice/xmerge/MergeException.java
+++ b/xmerge/java/org/openoffice/xmerge/MergeException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MergeException.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/PluginFactory.java b/xmerge/java/org/openoffice/xmerge/PluginFactory.java
index 6073a4e9427d..77cc5ea34faa 100644
--- a/xmerge/java/org/openoffice/xmerge/PluginFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/PluginFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/Version.java b/xmerge/java/org/openoffice/xmerge/Version.java
index d3e689c76c04..8810068d4c72 100644
--- a/xmerge/java/org/openoffice/xmerge/Version.java
+++ b/xmerge/java/org/openoffice/xmerge/Version.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Version.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/build.xml b/xmerge/java/org/openoffice/xmerge/build.xml
index e9ccea5ba6cd..3692b85dd9bb 100644
--- a/xmerge/java/org/openoffice/xmerge/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java b/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java
index 8e753a993928..551667f21d8b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DOMDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/dom/build.xml b/xmerge/java/org/openoffice/xmerge/converter/dom/build.xml
index b99aa17f9857..725caf554ddf 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/dom/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/dom/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/dom/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/dom/makefile.mk
index 84c4a4bf9d36..e4cc4af6df3d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/dom/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/dom/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/dom/package.html b/xmerge/java/org/openoffice/xmerge/converter/dom/package.html
index bb88d22ce5a3..5ed5997b40af 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/dom/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/dom/package.html
@@ -5,14 +5,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -29,7 +25,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<title>org.openoffice.xmerge.converter.palm package</title>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
index 4c0ab0ffaeaf..36397691b011 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PalmDB.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
index d26b2d5ef7e9..fdf2c69a37aa 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PalmDocument.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
index 0eed10bd3417..b67ff036761b 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbDecoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
index 5a1d81a475b9..2cd084786878 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbEncoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
index 40a54730a320..7311ce956aba 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbHeader.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
index 69cae6d69e58..f911b583589a 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbUtil.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java b/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
index 41b2a289a8c5..aa2101d6159e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Record.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml b/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml
index 21e3905c1445..b2f9a9946a9a 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk
index 23caa32f98a3..4f7eb3026a72 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/package.html b/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
index 89fbd4580c9c..5f8325d36301 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl
index e0f5e4605cc3..6b1f598d6444 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/bin/verify_sane.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: verify_sane.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl
index 67ab1d43dbcd..5e9838c103d1 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_comparator.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: qa_comparator.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl
index f3ca7195b975..d8eea81b5388 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/qa_test_driver.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: qa_test_driver.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest
index 8b97b3ec71d3..0931ca77539d 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/bin/run-convtest
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: run-convtest,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
index c1d585a7b0a9..f7bb8eb321bb 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: Blocklist.dtd,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT block-list:block-list (block-list:block*) >
<!ATTLIST block-list:block-list
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
index dec81f10aac6..70cbe483ca9c 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: chart.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
index 31bf7a464c77..11bc8a8e40b7 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: datastyl.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- data styles -->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
index d200a39fe7f9..aa0a25822a45 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: drawing.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % points "CDATA" >
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
index 1cdd7bf50785..e4d640d012c8 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: dtypes.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
index 7c39fe5fd43b..77a91206c451 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: form.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
index 0bef2535bcbf..1ea845bcb02d 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: meta.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
index 3dd3c4177c82..b7f6b64140a6 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: nmspace.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
index ef73319720b1..9bcd37edf325 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.dtd,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
index ed543b22a520..f8e3775fa6da 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:document ( office:meta?,
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
index 81220e346f20..4d13ff74aebc 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: script.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT script:library-embedded (script:module*)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
index 5ba8f38f3ba6..bb9224237fa8 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: settings.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:settings (config:config-item-set+)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
index 5c5b3dca3c4b..21a3d9d17dd1 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: style.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT style:font-decl EMPTY>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
index f0371a6023ae..6d9f3cdb2a8f 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
index fd90aff575cd..792b0fdde55e 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: text.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % fields "text:date |
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl
index 9eea6c551798..664138283359 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/mysplit.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: mysplit.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl
index d2187757ef59..319767fdf477 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/tappen.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: tappen.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl
index a9af244a84b2..1f48ee15196d 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/template.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: template.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl
index a4dc46fb5e8f..cbd4492e72b4 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/bin/test_driver.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: test_driver.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java
index 301c62aa123f..a3a5a0bdab0f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/OfficeZip.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeZip.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java
index 417d886cecea..f70b4d0ac4e1 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PDBDecoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java
index 3029149db22d..84d5be0e2959 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBHeader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PDBHeader.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java
index 5f18b73e2884..593215b84626 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PDBUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PDBUtil.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java
index cc5eab0b2249..7a897627ff9d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/PalmDB.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PalmDB.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java
index da36105d3eb9..21478ac13ca4 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/Record.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Record.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java
index b15593757f5d..3ec50e424dad 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/SimplePdbCompare.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SimplePdbCompare.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java
index b02812ebb24b..65a24b5c82a2 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlDiff.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlDiff.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java
index 19a69602ee29..325e97262be0 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlWrapper.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlWrapper.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java
index fb1b25eaee4a..0676b6d01fbd 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/XmlZipExtract.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlZipExtract.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl
index 9a5bf484947e..2711455ff8a5 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/comparator.pl
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: comparator.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd
index c1d585a7b0a9..f7bb8eb321bb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/Blocklist.dtd
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: Blocklist.dtd,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT block-list:block-list (block-list:block*) >
<!ATTLIST block-list:block-list
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod
index dec81f10aac6..70cbe483ca9c 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/chart.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: chart.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod
index 31bf7a464c77..11bc8a8e40b7 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/datastyl.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: datastyl.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- data styles -->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod
index d200a39fe7f9..aa0a25822a45 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/drawing.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: drawing.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % points "CDATA" >
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod
index 1cdd7bf50785..e4d640d012c8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/dtypes.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: dtypes.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod
index 7c39fe5fd43b..77a91206c451 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/form.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: form.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod
index 0bef2535bcbf..1ea845bcb02d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/meta.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: meta.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod
index 3dd3c4177c82..b7f6b64140a6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/nmspace.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: nmspace.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd
index ef73319720b1..9bcd37edf325 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.dtd
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.dtd,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod
index ed543b22a520..f8e3775fa6da 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/office.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:document ( office:meta?,
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod
index 81220e346f20..4d13ff74aebc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/script.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: script.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT script:library-embedded (script:module*)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod
index 5ba8f38f3ba6..bb9224237fa8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/settings.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: settings.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:settings (config:config-item-set+)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod
index 5c5b3dca3c4b..21a3d9d17dd1 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/style.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: style.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT style:font-decl EMPTY>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod
index f0371a6023ae..6d9f3cdb2a8f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/table.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod
index fd90aff575cd..792b0fdde55e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/dtd/text.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: text.mod,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % fields "text:date |
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java
index b5afcf3ae9fa..691bea14c9e8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/comparator/pdbcomparison.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdbcomparison.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm
index a504dca86bb9..1542d333beb6 100755
--- a/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm
+++ b/xmerge/java/org/openoffice/xmerge/converter/palm/palmtests/qa/lib/converterlib.pm
@@ -3,14 +3,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: converterlib.pm,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java b/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java
index 8b6d0d3a4c7c..9ec0bc5291c6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EmbeddedBinaryObject.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java b/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java
index 528475ab9124..f4220f1b3972 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EmbeddedObject.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java b/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java
index bdcb53cd8bf0..c07f6f116ca2 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EmbeddedXMLObject.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java
index f58d7a64beac..265c7a29e954 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeConstants.java,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java
index 7b36d3f49ac2..54da474289a3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeDocument.java,v $
- * $Revision: 1.18 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java
index 49f4a84598ee..0de5f1f9d9ef 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeDocumentException.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java
index 48ae950d9b32..cfd7bcf42049 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeZip.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java b/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java
index 5300da6a3a44..10a1dbaaaed1 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParaStyle.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java b/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java
index a270e3f19fc0..cf8611f4e143 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Style.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java b/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java
index fe54f0fbd999..689b5d47c5b4 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: StyleCatalog.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java b/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java
index 9bba83c0d135..1652c12c6ac8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TextStyle.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/build.xml
index e179322cd3de..25093212ca10 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/makefile.mk
index a7c593f13472..89bf15133228 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/package.html
index 170dfed4ab53..392e85018dca 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java
index 3643654ca906..0155224a5740 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BookSettings.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java
index 5d4eae4da4b4..4882d7e09d80 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellStyle.java,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java
index a179633de71c..c8511ed81ef3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColumnRowInfo.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java
index 2b9c169ff352..bc730d6b880b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColumnStyle.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java
index 3ae4f16acfcf..eb4e03216fca 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java
index 8e58ea0dd968..7f6dee011253 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Format.java,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java
index 65f0979c4ed2..99aa3dd625ec 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NameDefinition.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java
index 71839e238d43..aecb3cec3001 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RowStyle.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java
index 765da090611c..08339773be30 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SheetSettings.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java
index 5a6408ba6694..a0ec6cc305bd 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SpreadsheetDecoder.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java
index 81e6914b1bfe..7d0d1f615849 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SpreadsheetEncoder.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java
index 793fe47bfc23..7c9fff61a2e6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java
index 8a76b4260fc5..d435479842c6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java
index 01e9987172b4..2415c9385d62 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentDeserializer.java,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java
index bf0516c5345c..9e0d30831d24 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentSerializer.java,v $
- * $Revision: 1.22 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java
index 5ad490f332dc..4bdaad8e009c 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcPluginFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/build.xml
index d8219c1f46a5..5805a5253993 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.9 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/makefile.mk
index 1c2e06d1ef57..abc309279f0f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java
index 54ce2e236a4d..07b0c751b93d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java
index c14178ee96e1..07530013ea84 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcConstants.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java
index 77bfe75539b8..140dfde1881b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcDataString.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java
index 1df98ae65455..a165a25f9fbf 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcDecoder.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java
index 60f68474554d..70014a8af93e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java
index a3b1d53abaff..82f39a8e60aa 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java
index 1161b5522ca1..db3bcdeb91c5 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentDeserializerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java
index 69b584fadf09..1c1c8fe2e6bd 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentSerializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/build.xml
index c1898c2fa3d5..6a4092250009 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/converter.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/converter.xml
index 263021fa324d..39b28ffbf944 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/converter.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/converter.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/makefile.mk
index 78d4211e162d..8d6716d32b74 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html
index 191ed77ec344..034af32e581b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html
index 258d0158af1d..bfa0d5a53dbc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java
index 2e51ee685e21..c8de9e99b5da 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java
index 389b0169e49b..e7b08e097614 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java
index 22382e0faf8c..1e2abbf937cb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketExcelConstants.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java
index c5f263766da2..3e23a87aa20f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketExcelDecoder.java,v $
- * $Revision: 1.23 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java
index 44e9de76394d..062260aa3664 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketExcelEncoder.java,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java
index 5bca66b92b92..777506515629 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentDeserializerImpl.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java
index ff3de98c3478..df2d9c6befa1 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentSerializerImpl.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/build.xml
index 02c1e44a9ea7..d0b036da0454 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/converter.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/converter.xml
index 1d6627afe49c..85efdab4f83d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/converter.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/converter.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/makefile.mk
index c8d22159c375..9e5308e04a11 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html
index c7da1abfbc56..b13666af6920 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java
index 685d6153c621..e55778c8e04f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BIFFRecord.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java
index a7b328f6cf8a..fadaea5e30d7 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BeginningOfFile.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java
index 3bd70f0c7a91..5844f4a6b57b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BlankCell.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java
index 6fca4ddd57d2..b9226885be2d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BoolErrCell.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java
index db34aa600fb9..743853013ac6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BoundSheet.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java
index 2bb22b35666f..3c4d875a923a 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellValue.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java
index 55184582ebdb..34c2dccdfb10 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CodePage.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java
index d3e61e1b4fec..fc2e9c5f7fbb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColInfo.java,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java
index 12a451334386..35650f0278f3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DefColWidth.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java
index d924f339fe37..7e933d9b8978 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DefRowHeight.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java
index 3fad2410162e..38d47b8adbc5 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DefinedName.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java
index 77a4e97835cf..fbb216caad08 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Eof.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java
index 254c2f2bddf4..dc4780de9efe 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ExtendedFormat.java,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java
index db80eccb9cb8..9399b22fc6ad 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FloatNumber.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java
index 50ff9e5e64d7..559853206593 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FontDescription.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java
index b2f74f1f6be9..97bea77f0811 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Formula.java,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java
index aafe992cad47..b398e1bf519c 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LabelCell.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java
index 0735b401a6b8..e226ebad0203 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NumberFormat.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java
index 4155a658ae40..7af0a11e800e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Pane.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java
index 5ffb49da45d5..5e5ce6ce74df 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Row.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java
index bafafc9c371f..dac0c2986a14 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Selection.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java
index 772affb2e817..540d1d8e6ad1 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: StringValue.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java
index 2446e86089ed..3acfd9ec2011 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: UnsupportedFormulaException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java
index 24b8aa92f580..c1c1d6ba44c0 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Window1.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java
index e587de7ea3b4..3595c1b47d37 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Window2.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
index d29efd8d9938..70068253f7cf 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Workbook.java,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java
index d0e4f829722a..722cc7ccd0fb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Worksheet.java,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/build.xml
index a30c348c84f3..f57eb799491c 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java
index 49474e5de25f..aad14dae21b3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaCompiler.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java
index 2e4e773a5f27..1752d0e6336e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaHelper.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java
index 2422a5297b96..ead9a974d23d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaParser.java,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java
index f961bcbf49a0..631244ad0d96 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaParsingException.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java
index c8205b6d4754..b4f7dab3a681 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FunctionLookup.java,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java
index e8a547d1b9d6..67f79c561234 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OperandLookup.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java
index 0e376a6d0152..03d09f917a18 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OperatorLookup.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java
index 41912b046e7c..e78234ca1adc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParseToken.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
index 265334f553f1..fbe24bb4fff2 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PrecedenceTable.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
index 9c9ba638b448..1399c57d2875 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SymbolLookup.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java
index 4ec1884dae8b..bfd9933936f5 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Token.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java
index b8b37be7772e..4fd90c6a234e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenConstants.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java
index 3390463e3756..694e3b796710 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenDecoder.java,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
index d2002df2819a..23af0689d040 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenEncoder.java,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java
index 427b56383dfc..23efd62cd2ce 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenFactory.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java
index 6eeae73cb0b8..dcd2bf61a0c4 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: UnsupportedFunctionException.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/build.xml
index 05865f52c740..fa3737f9dc63 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/makefile.mk
index 47db7a258006..c549fec7ebeb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html
index 7e719f53bebe..649879a407f6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html
@@ -5,14 +5,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -29,7 +25,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<title>org.openoffice.xmerge.converter.xml.sxc.pexcel.records.formula package</title>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html
index 79188bf45310..7d803d1feba8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html
@@ -5,14 +5,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -29,7 +25,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<title>org.openoffice.xmerge.converter.xml.sxc.pexcel.records package</title>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java
index 4888357a6de2..839a63e8bec9 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxwDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java
index 06af85d94431..23e2608c242e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxwPluginFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java
index 852f8f6f4b49..671ae420bcfc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java
index 6f097636a9ba..86627c6d7ed3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocConstants.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java
index f8631cccc78e..9651e5b10b4d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocDecoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java
index cd08b9921a17..90cf0e5cd1f1 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocEncoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java
index a819f82c14c3..98022bcf47d9 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java
index 50fcfee02178..23b236b41e6a 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java
index 75edfbd78d7f..a2652df792b3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java
index 3f6f9e26cd50..d1de0b19a6ab 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/build.xml
index 5b34dc29ad9d..b6efd3e2bec3 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/converter.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/converter.xml
index 04ab76384dd0..7942295c004a 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/converter.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/converter.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/makefile.mk
index efbf2869009b..5b3f3fea509d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html
index 9d5d1bdc00cb..78cfe79bfbbf 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/build.xml
index 4a1c7fba5dca..02936516e7c9 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/makefile.mk
index 03db799f178c..c4953812ef58 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html
index 47a7e940fc36..409f041fffb2 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java
index bc57ccc776ea..4e4aaf164e7a 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java
index 312762308df1..3e5f6e6827ff 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDescriptor.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
index 0378006661c1..373df77886f8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java
index ae087d65b6a2..c6a14ba2877d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java
index 2a715a7871cd..2604e903c564 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java
index 3dee1eeff3b5..c2249766b5e5 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Paragraph.java,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java
index d2a460037771..442cbf2f53dc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParagraphTextSegment.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java
index 35e6b89a9ec6..d02c9eeddf53 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java
index 03af731f2122..de67eeec31a7 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketWordConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java
index 8d4ad63fa82a..9026d8866113 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketWordDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/build.xml
index f12db13e755c..9253aa503359 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/converter.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/converter.xml
index e9ee658d27f3..aaa0dcc32e0d 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/converter.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/converter.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html
index 65454f24773c..ecc7d6105d83 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java
index 5470025a934f..510f983e8248 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java
index ef066386d4a4..546d3060eb9b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DOCConstants.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java
index 4c6c48822093..ad90541afbbb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java
index 09c2b998f5c1..c6dd88589fe5 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java
index 207f38d263a3..edbf7f5b4370 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java
index 56dd2a4fb53f..f8df638bd69f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java
index 77ba70f6ac2a..07e8ea97ea43 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WSDecoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java
index 58df6112a8f4..476e34c72e1f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WSEncoder.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java
index 1df80a427594..778ff5d38f57 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Wse.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java
index 8d36c5d8a9a8..e5af0337283b 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseColorTable.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java
index 120dfb86a16f..d5e7a84fb6bf 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseFontTable.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java
index 009f1a975b2f..52fffba259a8 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseHeader.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java
index 8947aa7a1f47..91530174211f 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WsePara.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java
index b1b6fa934e78..86626dd4d2c7 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseTextRun.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/build.xml
index 5b48ae6ddc1e..aa889d4d3f2e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/makefile.mk
index 6cfbb307ba85..c64e26894dac 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java
index 0083899dce0e..7651767920fc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textRecord.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java
index d123c0a72b56..0c1af8d5a8ec 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: util.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java
index f292bc78f40a..079437336f8e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java
index 236afccd5646..08d294982537 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java
index 042e4c37a377..a320080a43cb 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java
index ec41df8d5945..b4b1650f97f6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java
index 636f3caa453a..d2b98819c87a 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: GenericOfficeDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java
index 12f9cbec4e79..cb3a9c507b82 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties
index 434824138fc6..32f3771fc492 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: XsltPlugin.properties,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/build.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/build.xml
index d39f31baaa31..43db663b2820 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/converter.xml b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/converter.xml
index e374786b53ec..3baf857406ca 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/converter.xml
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/converter.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/DBFilter.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/DBFilter.java
index 6d472e61e44c..eae4a03c5bc6 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/DBFilter.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/DBFilter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DBFilter.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/makefile.mk
index b2c709523a97..9f5a92570565 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbookfilter/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -37,7 +33,7 @@ TARGET =DBFilter
CLASSDIR!:=$(CLASSDIR)$/$(TARGET)
#USE_UDK_EXTENDED_MANIFESTFILE=TRUE
#USE_EXTENDED_MANIFESTFILE=TRUE
-JARFILES = sandbox.jar ridl.jar unoil.jar jurt.jar juh.jar
+JARFILES = ridl.jar unoil.jar jurt.jar juh.jar
JAVAFILES = $(subst,$(CLASSDIR)$/, $(subst,.class,.java $(JAVACLASSFILES)))
CUSTOMMANIFESTFILE = Manifest
#JARMANIFEST = Manifest
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbooktosoffheadings.xsl b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbooktosoffheadings.xsl
index 831cea906b57..7bb99da2f735 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbooktosoffheadings.xsl
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/docbooktosoffheadings.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: docbooktosoffheadings.xsl,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:office="http://openoffice.org/2000/office" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:config="http://openoffice.org/2001/config" version="1.0" office:class="text" office:version="1.0">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/literallayout.java b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/literallayout.java
index 0559a77418c5..c2dbc2396d94 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/literallayout.java
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/literallayout.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: literallayout.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_article.xsl b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_article.xsl
index a3dd877706fb..649869eca225 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_article.xsl
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_article.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: sofftodocbookheadings_article.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:office="http://openoffice.org/2000/office" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:config="http://openoffice.org/2001/config" office:class="text" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="office meta table number dc fo xlink chart math script xsl draw svg dr3d form config text style">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_chapter.xsl b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_chapter.xsl
index 5b2cb54347d0..efb03f0a741c 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_chapter.xsl
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/docbook/sofftodocbookheadings_chapter.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: sofftodocbookheadings_chapter.xsl,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:office="http://openoffice.org/2000/office" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:config="http://openoffice.org/2001/config" office:class="text" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="office meta table number dc fo xlink chart math script xsl draw svg dr3d form config text style">
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/htmltosoff.xsl b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/htmltosoff.xsl
index 3181681af6e9..baf160c1449e 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/htmltosoff.xsl
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/htmltosoff.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: htmltosoff.xsl,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:office="http://openoffice.org/2000/office"
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/makefile.mk b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/makefile.mk
index 3af2e42c695c..06e0d14909dc 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html
index 88930e761329..0a689fb47cda 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<HTML>
<HEAD>
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/sofftohtml.xsl b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/sofftohtml.xsl
index c51d998f548e..761a66a3f6e4 100644
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/sofftohtml.xsl
+++ b/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/sofftohtml.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: sofftohtml.xsl,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,6 +23,6 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:style="http://openoffice.org/2000/style" xmlns:table="http://openoffice.org/2000/table" xmlns:text="http://openoffice.org/2000/text" xmlns:office="http://openoffice.org/2000/office" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" encoding="ISO-8859-1"/> <!--doctype-system=[<!ENTITY acirc "">] --> <xsl:strip-space elements="tokens"/> <xsl:template match="office:document"> <html> <xsl:apply-templates /> </html> </xsl:template> <xsl:template match="office:document-content"> <html> <xsl:apply-templates /> </html> </xsl:template> <xsl:template match="office:automatic-styles"> <style type="text/css"> p.Table-Heading{font-weight :bold;} <xsl:apply-templates /> </style> </xsl:template> <xsl:template match="office:styles"> </xsl:template> <xsl:template match="office:meta"> </xsl:template> <xsl:template match="office:settings"> </xsl:template> <xsl:template match="style:style"> <xsl:if test="@style:family ='paragraph'"> p.<xsl:value-of select="@style:name"/>{ <xsl:apply-templates />} </xsl:if> <xsl:if test="@style:family ='paragraph'"> p.<xsl:value-of select="@style:name"/>{ <xsl:if test="@style:parent-style-name='Table Heading'"> font-weight :bold;font-style:italic; </xsl:if> <xsl:apply-templates />} </xsl:if> <xsl:if test="@style:family ='table-cell'"> td.<xsl:value-of select="@style:name"/>{ <xsl:if test="@style:parent-style-name='Table Heading'"> font-weight :bold;font-style:italic; </xsl:if> <xsl:apply-templates />} </xsl:if> </xsl:template> <xsl:template match="style:properties"> <!--<xsl:param name="style" select="@fo:font-weight"/>--> <xsl:if test="@fo:font-weight"> font-weight :<xsl:value-of select="@fo:font-weight"/>; </xsl:if> <xsl:if test="@fo:font-style"> font-style :<xsl:value-of select="@fo:font-style"/>; </xsl:if> <xsl:if test="@style:font-name"> font-family :<xsl:value-of select="@style:font-name"/>; </xsl:if> <xsl:if test="@fo:font-size"> font-size : <xsl:value-of select="@fo:font-size"/>; </xsl:if> <xsl:if test="@style:text-underline='single'"> text-decoration :underline; </xsl:if> <xsl:if test="@style:text-crossing-out='single-line'"> text-decoration:line-through; </xsl:if> <xsl:if test="@fo:text-align='start'"> text-align :left </xsl:if> <xsl:if test="@fo:text-align='center'"> text-align :center </xsl:if> <xsl:if test="@fo:text-align='end'"> text-align :right </xsl:if> <!--<xsl:value-of select="$style"/>--> </xsl:template> <xsl:template match="office:body"> <xsl:apply-templates /> </xsl:template> <xsl:template match="table:table"> <table border="1" cellpadding="2" width="100%"> <xsl:apply-templates /> </table> </xsl:template> <xsl:template match="table:table-header-rows"> <th> <xsl:apply-templates /> </th> </xsl:template> <xsl:template match="table:table-row"> <tr> <xsl:apply-templates /> </tr> </xsl:template> <xsl:template match="table:table-cell"> <xsl:text disable-output-escaping="yes">&lt;td class="</xsl:text> <xsl:value-of select="@table:style-name"/> <xsl:text disable-output-escaping="yes">"&gt;</xsl:text> <!--<xsl:value-of select="."/>--> <xsl:apply-templates /> <xsl:text disable-output-escaping="yes">&lt;/td&gt;</xsl:text> <!--<td width="20%"> <xsl:apply-templates /> </td>--> </xsl:template> <xsl:template match="text:p"> <xsl:if test="ancestor-or-self::table:table-cell"> <xsl:if test=".=''"> <br/> </xsl:if> </xsl:if> <xsl:text disable-output-escaping="yes">&lt;p class="</xsl:text> <xsl:choose> <xsl:when test="@text:style-name ='Table Heading'"> Table-Heading </xsl:when> <xsl:otherwise> <xsl:value-of select="@text:style-name"/> </xsl:otherwise> </xsl:choose> <xsl:text disable-output-escaping="yes">"&gt;</xsl:text> <xsl:apply-templates/> <xsl:text disable-output-escaping="yes">&lt;/p&gt;</xsl:text> <!--<xsl:value-of select="."/>--> <!--<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>--> <!--<br/>--> </xsl:template> </xsl:stylesheet>
diff --git a/xmerge/java/org/openoffice/xmerge/makefile.mk b/xmerge/java/org/openoffice/xmerge/makefile.mk
index 5e63e9a93883..79aa6109dce0 100644
--- a/xmerge/java/org/openoffice/xmerge/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java b/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java
index 76ecf1eb3a2b..0d7cb7c75f28 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DiffAlgorithm.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/Difference.java b/xmerge/java/org/openoffice/xmerge/merger/Difference.java
index 27f1aac15e3d..4b84c66edb90 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/Difference.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/Difference.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Difference.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/Iterator.java b/xmerge/java/org/openoffice/xmerge/merger/Iterator.java
index 4af80ed90a34..ccd8dca77e12 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/Iterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/Iterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Iterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java b/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java
index c21aac35bd9c..3ee7ba7ad6c1 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MergeAlgorithm.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java b/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java
index 21b9c08719b3..1511d9827081 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NodeMergeAlgorithm.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/build.xml b/xmerge/java/org/openoffice/xmerge/merger/build.xml
index 76b79dc41374..cb5131faecb4 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/merger/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java b/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java
index f39b818d9831..62431df5da3b 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellNodeIterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java b/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java
index 9a7b09a4da61..b54f0ee8a8da 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CharArrayLCSAlgorithm.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java b/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java
index 0546c128e64b..ad7c3990f263 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CharacterParser.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java b/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java
index 8f3f6f03636c..7cc7c60b0439 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: IteratorLCSAlgorithm.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java b/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java
index a3a24fe1c15b..aff0e44d5325 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: IteratorRowCompare.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java b/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java
index 49c6b3db3403..3799539e5c6d 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NodeIterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java b/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java
index 4faaf8b657b6..e69a3714871a 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ObjectArrayIterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java b/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java
index 8465fa1f7a0a..b3ad49016233 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParaNodeIterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java b/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java
index 0122bac87bc6..2f748ca8d41c 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RowIterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java b/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java
index 71b1c668a998..6a0d8a6d946c 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TextNodeEntry.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java b/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java
index f0e29fbe9b07..41274bd6074f 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TextNodeIterator.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/build.xml b/xmerge/java/org/openoffice/xmerge/merger/diff/build.xml
index 5a1e450919a8..22ff4c74786e 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/makefile.mk b/xmerge/java/org/openoffice/xmerge/merger/diff/makefile.mk
index 490ac59ef76a..f4690cabb5d0 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/diff/package.html b/xmerge/java/org/openoffice/xmerge/merger/diff/package.html
index 7ae7d3419fc2..48c850e2d2b0 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/diff/package.html
+++ b/xmerge/java/org/openoffice/xmerge/merger/diff/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/merger/makefile.mk b/xmerge/java/org/openoffice/xmerge/merger/makefile.mk
index 9b17e72ae2e8..10eaf50df249 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/merger/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java b/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java
index 3864723d0427..e9334221f3b4 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CharacterBaseParagraphMerge.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java b/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java
index e0765f8b88fa..4842ca433e04 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMerge.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java b/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java
index 0683733eb00d..96bfa0c2b1d9 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PositionBaseRowMerge.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java b/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java
index ad957552f424..a2aa154a7e3a 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SheetMerge.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java b/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java
index a90a3a8a1fc3..7ec99af85324 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SheetUtil.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/build.xml b/xmerge/java/org/openoffice/xmerge/merger/merge/build.xml
index 0ff5dae91a5f..d93c81805bc9 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/makefile.mk b/xmerge/java/org/openoffice/xmerge/merger/merge/makefile.mk
index 43bf6119cd51..5bb3dbecf955 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/merger/merge/package.html b/xmerge/java/org/openoffice/xmerge/merger/merge/package.html
index cf9abdc7b8f6..183ef913f405 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/merge/package.html
+++ b/xmerge/java/org/openoffice/xmerge/merger/merge/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/merger/package.html b/xmerge/java/org/openoffice/xmerge/merger/package.html
index a565a37cbd83..49d5b54f59c8 100644
--- a/xmerge/java/org/openoffice/xmerge/merger/package.html
+++ b/xmerge/java/org/openoffice/xmerge/merger/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/package.html b/xmerge/java/org/openoffice/xmerge/package.html
index 5df455e1882b..d1a36fc1488a 100644
--- a/xmerge/java/org/openoffice/xmerge/package.html
+++ b/xmerge/java/org/openoffice/xmerge/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java b/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java
index 7a0f4c410b51..d5389372cdc0 100644
--- a/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java
+++ b/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfoList.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties b/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties
index 88392d16af9f..d8bf3483b95d 100644
--- a/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties
+++ b/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: ConverterInfoList.properties,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/test/Driver.java b/xmerge/java/org/openoffice/xmerge/test/Driver.java
index 709a6c4a2c95..446dabfa65f8 100644
--- a/xmerge/java/org/openoffice/xmerge/test/Driver.java
+++ b/xmerge/java/org/openoffice/xmerge/test/Driver.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Driver.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/test/build.xml b/xmerge/java/org/openoffice/xmerge/test/build.xml
index 1cffe0cfbfd9..7c3a9d9e8319 100644
--- a/xmerge/java/org/openoffice/xmerge/test/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/test/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/test/makefile.mk b/xmerge/java/org/openoffice/xmerge/test/makefile.mk
index c97c4e170d8e..cbb251658697 100644
--- a/xmerge/java/org/openoffice/xmerge/test/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/test/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java b/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java
index ed98b69610e9..9a1f42eeb3c8 100644
--- a/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java
+++ b/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ActiveSyncDriver.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java b/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java
index ffd18bc4e786..345a4e76ef6f 100644
--- a/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java
+++ b/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColourConverter.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/Debug.java b/xmerge/java/org/openoffice/xmerge/util/Debug.java
index 031233d8b5c7..dcd5b0c8e1b0 100644
--- a/xmerge/java/org/openoffice/xmerge/util/Debug.java
+++ b/xmerge/java/org/openoffice/xmerge/util/Debug.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Debug.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/Debug.properties b/xmerge/java/org/openoffice/xmerge/util/Debug.properties
index 3312df559afb..4be4427837a7 100644
--- a/xmerge/java/org/openoffice/xmerge/util/Debug.properties
+++ b/xmerge/java/org/openoffice/xmerge/util/Debug.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: Debug.properties,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java b/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java
index f88fb9e8c2e7..353bee82efdc 100644
--- a/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java
+++ b/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EndianConverter.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java b/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java
index adcae4a4512b..41fa1ce6085b 100644
--- a/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java
+++ b/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: IntArrayList.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java b/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java
index f33468653e7d..206581c0da61 100644
--- a/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java
+++ b/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeUtil.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/Resources.java b/xmerge/java/org/openoffice/xmerge/util/Resources.java
index 9e140e1de71f..b94eb70e3605 100644
--- a/xmerge/java/org/openoffice/xmerge/util/Resources.java
+++ b/xmerge/java/org/openoffice/xmerge/util/Resources.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Resources.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java b/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java
index 776c34c6f856..c587ada48be1 100644
--- a/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java
+++ b/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TwipsConverter.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java b/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java
index 74539d16c1e3..1abdba9a95c3 100644
--- a/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java
+++ b/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlUtil.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/build.xml b/xmerge/java/org/openoffice/xmerge/util/build.xml
index 2f5e7a6b9737..d4c375799e15 100644
--- a/xmerge/java/org/openoffice/xmerge/util/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/util/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.8 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/makefile.mk b/xmerge/java/org/openoffice/xmerge/util/makefile.mk
index ee3e4d43cae8..c2eb64b9ff3d 100644
--- a/xmerge/java/org/openoffice/xmerge/util/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/util/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/package.html b/xmerge/java/org/openoffice/xmerge/util/package.html
index b439e752827f..e562149c82bc 100644
--- a/xmerge/java/org/openoffice/xmerge/util/package.html
+++ b/xmerge/java/org/openoffice/xmerge/util/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java b/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java
index d71bd82fd606..0d662294b4b7 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfo.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java b/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java
index b03d12adbe56..7aff201a30e6 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfoMgr.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java b/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java
index 77c3ed757447..4300f6f0a3bd 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfoReader.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java b/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java
index 7c139caff463..c4fbfb856090 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RegistryException.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/build.xml b/xmerge/java/org/openoffice/xmerge/util/registry/build.xml
index da337bc8207c..e7bf0da9c93c 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/build.xml
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/converter.dtd b/xmerge/java/org/openoffice/xmerge/util/registry/converter.dtd
index 778dc6af1e0e..84e4ed34892c 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/converter.dtd
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/converter.dtd
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.dtd,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- converter.dtd
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/makefile.mk b/xmerge/java/org/openoffice/xmerge/util/registry/makefile.mk
index 89d690520bc4..dc7f67a9223f 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/util/registry/package.html b/xmerge/java/org/openoffice/xmerge/util/registry/package.html
index ee7d1f3f87f3..c7e9b2635bb2 100644
--- a/xmerge/java/org/openoffice/xmerge/util/registry/package.html
+++ b/xmerge/java/org/openoffice/xmerge/util/registry/package.html
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.3 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<html>
<head>
diff --git a/xmerge/java/org/openoffice/xmerge/util/resources.properties b/xmerge/java/org/openoffice/xmerge/util/resources.properties
index 3f9e4cf84fe4..dd7938723e30 100644
--- a/xmerge/java/org/openoffice/xmerge/util/resources.properties
+++ b/xmerge/java/org/openoffice/xmerge/util/resources.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: resources.properties,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/FlatXml.cxx b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/FlatXml.cxx
index 7deb5f00097d..3aa3c7be2ad5 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/FlatXml.cxx
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/FlatXml.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FlatXml.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/makefile.mk b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/makefile.mk
index a82480e67177..f93616bcf4e1 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/cpp/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/Makefile b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/Makefile
index 96ce07d2d032..7f4d624235f8 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/Makefile
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/Makefile
@@ -72,7 +72,6 @@ DK_CLASSPATH = $(subst $(EMPTYSTRING) $(EMPTYSTRING),, \
$(CLASSES_DIR)$(PS)jurt.jar\
$(PATH_SEPARATOR)$(CLASSES_DIR)$(PS)unoil.jar\
$(PATH_SEPARATOR)$(CLASSES_DIR)$(PS)ridl.jar\
- $(PATH_SEPARATOR)$(CLASSES_DIR)$(PS)sandbox.jar\
$(PATH_SEPARATOR)$(CLASSES_DIR)$(PS)java_uno.jar\
$(PATH_SEPARATOR)$(CLASSES_DIR)$(PS)juh.jar\
$(PATH_SEPARATOR)$(CLASSPATH) \
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XFilterAdapter.idl b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XFilterAdapter.idl
index 92ecbf086785..2fa9fd8269d4 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XFilterAdapter.idl
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XFilterAdapter.idl
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XFilterAdapter.idl,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XInputStreamToInputStreamAdapter.java b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XInputStreamToInputStreamAdapter.java
index 1eaecf4eaa42..a5b3c1ee18ea 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XInputStreamToInputStreamAdapter.java
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XInputStreamToInputStreamAdapter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XInputStreamToInputStreamAdapter.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XOutputStreamToOutputStreamAdapter.java b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XOutputStreamToOutputStreamAdapter.java
index 81f93c3d12ff..e1037432c8d0 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XOutputStreamToOutputStreamAdapter.java
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/XOutputStreamToOutputStreamAdapter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XOutputStreamToOutputStreamAdapter.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/makefile.mk b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/makefile.mk
index 58563ba29302..91efa423d9db 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/makefile.mk
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5.10.1 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -36,7 +32,7 @@ TARGET = examples_java_converterbridge
# --- Settings -----------------------------------------------------
.INCLUDE: settings.mk
-JARFILES = sandbox.jar ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar ridl.jar
+JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar ridl.jar
JAVAFILES = $(subst,$(CLASSDIR)$/, $(subst,.class,.java $(JAVACLASSFILES)))
JARCOMPRESS = TRUE
CUSTOMMANIFESTFILE = manifest
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.cxx b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.cxx
index f3ab2b3f131d..71c9bcd04e4c 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.cxx
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: streamwrap.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.hxx b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.hxx
index e3d8f3b3ed86..d31721f3825f 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.hxx
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java/streamwrap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: streamwrap.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java_prettyprint/Makefile b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java_prettyprint/Makefile
index e5055361d80a..63ec8b5b2d77 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java_prettyprint/Makefile
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/FlatXml/java_prettyprint/Makefile
@@ -34,7 +34,6 @@ $(COMPONENT_NAME)_CLASSFILES = *.class
SDK_CLASSPATH = $(subst $(EMPTYSTRING) $(PATH_SEPARATOR),$(PATH_SEPARATOR),$(OFFICE_CLASSES_DIR)/jurt.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/unoil.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/ridl.jar\
- $(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/sandbox.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/juh.jar\
$(PATH_SEPARATOR)$(OUT_COMP_CLASS))
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/Makefile_sdk b/xmerge/java/org/openoffice/xmerge/xmergebridge/Makefile_sdk
index d59f398511de..288679bc667b 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/Makefile_sdk
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/Makefile_sdk
@@ -38,7 +38,6 @@ $(COMPONENT_NAME)_CLASSFILES = *.class
SDK_CLASSPATH = $(subst $(EMPTYSTRING) $(PATH_SEPARATOR),$(PATH_SEPARATOR),$(OFFICE_CLASSES_DIR)/jurt.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/unoil.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/ridl.jar\
- $(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/sandbox.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/juh.jar\
$(PATH_SEPARATOR)$(OFFICE_CLASSES_DIR)/xmerge.jar\
$(PATH_SEPARATOR)$(OUT_COMP_CLASS))
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/TestStream.java b/xmerge/java/org/openoffice/xmerge/xmergebridge/TestStream.java
index c251cae1f9cc..9add577f45ef 100644
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/TestStream.java
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/TestStream.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TestStream.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/XMergeBridge.java b/xmerge/java/org/openoffice/xmerge/xmergebridge/XMergeBridge.java
index 23ce5693c163..0163f497d9e2 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/XMergeBridge.java
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/XMergeBridge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XMergeBridge.java,v $
- * $Revision: 1.18 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.cxx b/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.cxx
index f3ab2b3f131d..71c9bcd04e4c 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.cxx
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: streamwrap.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.hxx b/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.hxx
index e3d8f3b3ed86..d31721f3825f 100755
--- a/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.hxx
+++ b/xmerge/java/org/openoffice/xmerge/xmergebridge/streamwrap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: streamwrap.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/activesync/makefile.mk b/xmerge/source/activesync/makefile.mk
index 94c5cb79151e..18d904f5e158 100644
--- a/xmerge/source/activesync/makefile.mk
+++ b/xmerge/source/activesync/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.5 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/build.xml b/xmerge/source/aportisdoc/build.xml
index f45ae7af6e10..6e9d22b84b9a 100644
--- a/xmerge/source/aportisdoc/build.xml
+++ b/xmerge/source/aportisdoc/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/converter.xml b/xmerge/source/aportisdoc/converter.xml
index f5153f0ac253..3124e1e3876e 100644
--- a/xmerge/source/aportisdoc/converter.xml
+++ b/xmerge/source/aportisdoc/converter.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java
index e75242744c1a..733450bedad8 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java
index a938b5d929de..f022250bca10 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java
index a1e96b12124c..aea2f7cd1ac4 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocDecoder.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java
index 18c9f2f4efb9..b1cb1cbe9905 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java
index 486e118c9128..2d29f8784dc5 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java
index 051b56797d7c..8c8b3c9333b3 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java
index f50a00a10c6e..dc1fb4c4a1a3 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java
index 40fa7ab33f94..3a497cc0b5b7 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html
index 48834909aaf1..ce4c4a28ae9f 100644
--- a/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html
+++ b/xmerge/source/aportisdoc/java/org/openoffice/xmerge/converter/xml/sxw/aportisdoc/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/aportisdoc/makefile.mk b/xmerge/source/aportisdoc/makefile.mk
index 67d763faa344..dad48f952b51 100644
--- a/xmerge/source/aportisdoc/makefile.mk
+++ b/xmerge/source/aportisdoc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/bridge/build.xml b/xmerge/source/bridge/build.xml
index 1785964c031b..ad0aa33d0f0f 100644
--- a/xmerge/source/bridge/build.xml
+++ b/xmerge/source/bridge/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.5 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/bridge/java/XMergeBridge.java b/xmerge/source/bridge/java/XMergeBridge.java
index 4be1fdc11617..38503d3b49ff 100644
--- a/xmerge/source/bridge/java/XMergeBridge.java
+++ b/xmerge/source/bridge/java/XMergeBridge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XMergeBridge.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/bridge/makefile.mk b/xmerge/source/bridge/makefile.mk
index b0dc37169a4b..77a39a568966 100644
--- a/xmerge/source/bridge/makefile.mk
+++ b/xmerge/source/bridge/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/htmlsoff/build.xml b/xmerge/source/htmlsoff/build.xml
index 859c9e31611a..90cbcbb4beae 100644
--- a/xmerge/source/htmlsoff/build.xml
+++ b/xmerge/source/htmlsoff/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/htmlsoff/converter.xml b/xmerge/source/htmlsoff/converter.xml
index ec4ba29a63f9..3038d5b70d73 100644
--- a/xmerge/source/htmlsoff/converter.xml
+++ b/xmerge/source/htmlsoff/converter.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/htmlsoff/htmltosoff.xsl b/xmerge/source/htmlsoff/htmltosoff.xsl
index 509849dd01ed..4a06a77f52aa 100644
--- a/xmerge/source/htmlsoff/htmltosoff.xsl
+++ b/xmerge/source/htmlsoff/htmltosoff.xsl
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: htmltosoff.xsl,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
diff --git a/xmerge/source/htmlsoff/makefile.mk b/xmerge/source/htmlsoff/makefile.mk
index d164ccdf78c2..204b3fffa774 100644
--- a/xmerge/source/htmlsoff/makefile.mk
+++ b/xmerge/source/htmlsoff/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/htmlsoff/package.html b/xmerge/source/htmlsoff/package.html
index 5f4de34878a0..30c71b15655f 100644
--- a/xmerge/source/htmlsoff/package.html
+++ b/xmerge/source/htmlsoff/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<HTML>
diff --git a/xmerge/source/htmlsoff/sofftohtml.xsl b/xmerge/source/htmlsoff/sofftohtml.xsl
index db2e38e66af7..b01c4691c71a 100644
--- a/xmerge/source/htmlsoff/sofftohtml.xsl
+++ b/xmerge/source/htmlsoff/sofftohtml.xsl
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: sofftohtml.xsl,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:style="http://openoffice.org/2000/style" xmlns:table="http://openoffice.org/2000/table" xmlns:text="http://openoffice.org/2000/text" xmlns:office="http://openoffice.org/2000/office" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" encoding="ISO-8859-1"/>
diff --git a/xmerge/source/minicalc/build.xml b/xmerge/source/minicalc/build.xml
index 9f124d09096d..1332fa05cd9a 100644
--- a/xmerge/source/minicalc/build.xml
+++ b/xmerge/source/minicalc/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/converter.xml b/xmerge/source/minicalc/converter.xml
index eee44992cc72..65d1fb774423 100644
--- a/xmerge/source/minicalc/converter.xml
+++ b/xmerge/source/minicalc/converter.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java
index 8b5a4e7d6091..a1dc67a443e0 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java
index d62e6509d208..78d48a5e4ee9 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java
index 684daebddc06..974e9d1b3079 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDataString.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcDataString.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java
index f899088109ff..37768fa4fb02 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java
index 986d0b57f65c..14e256918886 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/MinicalcEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MinicalcEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java
index f730865ee59e..037347d4c44c 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java
index c5435f97ece1..61680e73f3a1 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentDeserializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java
index 80e9a91abe32..25ad6dda73f4 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/SxcDocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentSerializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html
index 5d6cfc49acd1..2adb11ed36d4 100644
--- a/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html
+++ b/xmerge/source/minicalc/java/org/openoffice/xmerge/converter/xml/sxc/minicalc/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/minicalc/makefile.mk b/xmerge/source/minicalc/makefile.mk
index 73bd22a773cb..fd05a5b21929 100644
--- a/xmerge/source/minicalc/makefile.mk
+++ b/xmerge/source/minicalc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/bin/verify_sane.pl b/xmerge/source/palmtests/bin/verify_sane.pl
index 5e2419203ab2..dc085f3ddc44 100755
--- a/xmerge/source/palmtests/bin/verify_sane.pl
+++ b/xmerge/source/palmtests/bin/verify_sane.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: verify_sane.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl b/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl
index 4103825a4588..6cc49da3570b 100755
--- a/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl
+++ b/xmerge/source/palmtests/qa-wrapper/bin/qa_comparator.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: qa_comparator.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa-wrapper/bin/qa_test_driver.pl b/xmerge/source/palmtests/qa-wrapper/bin/qa_test_driver.pl
index d287147da433..fd57512fd171 100755
--- a/xmerge/source/palmtests/qa-wrapper/bin/qa_test_driver.pl
+++ b/xmerge/source/palmtests/qa-wrapper/bin/qa_test_driver.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: qa_test_driver.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa-wrapper/bin/run-convtest b/xmerge/source/palmtests/qa-wrapper/bin/run-convtest
index fa75a39c9f9f..56c12509e215 100755
--- a/xmerge/source/palmtests/qa-wrapper/bin/run-convtest
+++ b/xmerge/source/palmtests/qa-wrapper/bin/run-convtest
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: run-convtest,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
index e1551fc31133..f7bb8eb321bb 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/Blocklist.dtd
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: Blocklist.dtd,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT block-list:block-list (block-list:block*) >
<!ATTLIST block-list:block-list
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
index ee63a9162a2a..70cbe483ca9c 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/chart.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: chart.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
index 231532fcf50e..11bc8a8e40b7 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/datastyl.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: datastyl.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- data styles -->
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
index 4349eda537c8..aa0a25822a45 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/drawing.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: drawing.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % points "CDATA" >
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
index 164c3ba3e874..e4d640d012c8 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/dtypes.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: dtypes.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/form.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
index ba0cde5afcf5..77a91206c451 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/form.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: form.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
index 1a95b44eae3c..1ea845bcb02d 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/meta.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: meta.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
index 448d6de1aeba..b7f6b64140a6 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/nmspace.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: nmspace.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
index bdf3bae73a34..9bcd37edf325 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.dtd
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.dtd,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
index 6b525e89a3dd..f8e3775fa6da 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/office.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:document ( office:meta?,
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/script.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
index 28ffb8faaa5a..4d13ff74aebc 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/script.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: script.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT script:library-embedded (script:module*)>
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
index 58297320f5c4..bb9224237fa8 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/settings.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: settings.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:settings (config:config-item-set+)>
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/style.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
index d0fb8740ec8d..21a3d9d17dd1 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/style.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: style.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT style:font-decl EMPTY>
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/table.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
index c6534feead5d..6d9f3cdb2a8f 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/table.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>
diff --git a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/text.mod b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
index 8e30dcdde40c..792b0fdde55e 100644
--- a/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
+++ b/xmerge/source/palmtests/qa-wrapper/results/baseline/xml-base/text.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: text.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % fields "text:date |
diff --git a/xmerge/source/palmtests/qa/bin/mysplit.pl b/xmerge/source/palmtests/qa/bin/mysplit.pl
index ccc293423cf7..172a53a319cc 100755
--- a/xmerge/source/palmtests/qa/bin/mysplit.pl
+++ b/xmerge/source/palmtests/qa/bin/mysplit.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: mysplit.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/bin/tappen.pl b/xmerge/source/palmtests/qa/bin/tappen.pl
index ecd80a64de37..5b365448f9e8 100755
--- a/xmerge/source/palmtests/qa/bin/tappen.pl
+++ b/xmerge/source/palmtests/qa/bin/tappen.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: tappen.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/bin/template.pl b/xmerge/source/palmtests/qa/bin/template.pl
index fb7b23c7926b..f5e3c0cf7668 100755
--- a/xmerge/source/palmtests/qa/bin/template.pl
+++ b/xmerge/source/palmtests/qa/bin/template.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: template.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/bin/test_driver.pl b/xmerge/source/palmtests/qa/bin/test_driver.pl
index 6d95a4dfb367..55d1d44f45d9 100755
--- a/xmerge/source/palmtests/qa/bin/test_driver.pl
+++ b/xmerge/source/palmtests/qa/bin/test_driver.pl
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: test_driver.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/OfficeZip.java b/xmerge/source/palmtests/qa/comparator/OfficeZip.java
index 5e4c63581535..496949cf3d17 100644
--- a/xmerge/source/palmtests/qa/comparator/OfficeZip.java
+++ b/xmerge/source/palmtests/qa/comparator/OfficeZip.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeZip.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/PDBDecoder.java b/xmerge/source/palmtests/qa/comparator/PDBDecoder.java
index 12135a860b2e..8f4dec82f4b5 100644
--- a/xmerge/source/palmtests/qa/comparator/PDBDecoder.java
+++ b/xmerge/source/palmtests/qa/comparator/PDBDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PDBDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/PDBHeader.java b/xmerge/source/palmtests/qa/comparator/PDBHeader.java
index 6b792efb59b0..216fd8bd9351 100644
--- a/xmerge/source/palmtests/qa/comparator/PDBHeader.java
+++ b/xmerge/source/palmtests/qa/comparator/PDBHeader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PDBHeader.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/PDBUtil.java b/xmerge/source/palmtests/qa/comparator/PDBUtil.java
index aa5381a3ba5f..bdf8a07d9360 100644
--- a/xmerge/source/palmtests/qa/comparator/PDBUtil.java
+++ b/xmerge/source/palmtests/qa/comparator/PDBUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PDBUtil.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/PalmDB.java b/xmerge/source/palmtests/qa/comparator/PalmDB.java
index d81bb5887390..e15e7fefa5ff 100644
--- a/xmerge/source/palmtests/qa/comparator/PalmDB.java
+++ b/xmerge/source/palmtests/qa/comparator/PalmDB.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PalmDB.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/Record.java b/xmerge/source/palmtests/qa/comparator/Record.java
index 23217246cbca..f506f1a2b190 100644
--- a/xmerge/source/palmtests/qa/comparator/Record.java
+++ b/xmerge/source/palmtests/qa/comparator/Record.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Record.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java b/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java
index 9fe237e7d37f..da01306d9545 100644
--- a/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java
+++ b/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SimplePdbCompare.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/XmlDiff.java b/xmerge/source/palmtests/qa/comparator/XmlDiff.java
index 8254541d3e2f..d592609d18f3 100644
--- a/xmerge/source/palmtests/qa/comparator/XmlDiff.java
+++ b/xmerge/source/palmtests/qa/comparator/XmlDiff.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlDiff.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/XmlWrapper.java b/xmerge/source/palmtests/qa/comparator/XmlWrapper.java
index d54581f10297..16dddcb0a4f3 100644
--- a/xmerge/source/palmtests/qa/comparator/XmlWrapper.java
+++ b/xmerge/source/palmtests/qa/comparator/XmlWrapper.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlWrapper.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java b/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java
index 6cbd81a1073e..2e47edd65160 100644
--- a/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java
+++ b/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlZipExtract.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/comparator.pl b/xmerge/source/palmtests/qa/comparator/comparator.pl
index 4d80855c2ebd..5ca4f2375689 100644
--- a/xmerge/source/palmtests/qa/comparator/comparator.pl
+++ b/xmerge/source/palmtests/qa/comparator/comparator.pl
@@ -6,14 +6,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: comparator.pl,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd b/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd
index e1551fc31133..f7bb8eb321bb 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd
+++ b/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: Blocklist.dtd,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT block-list:block-list (block-list:block*) >
<!ATTLIST block-list:block-list
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/chart.mod b/xmerge/source/palmtests/qa/comparator/dtd/chart.mod
index ee63a9162a2a..70cbe483ca9c 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/chart.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/chart.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: chart.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod b/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod
index 231532fcf50e..11bc8a8e40b7 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: datastyl.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- data styles -->
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod b/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod
index 4349eda537c8..aa0a25822a45 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: drawing.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % points "CDATA" >
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod b/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod
index 164c3ba3e874..e4d640d012c8 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: dtypes.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/form.mod b/xmerge/source/palmtests/qa/comparator/dtd/form.mod
index ba0cde5afcf5..77a91206c451 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/form.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/form.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: form.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/meta.mod b/xmerge/source/palmtests/qa/comparator/dtd/meta.mod
index 1a95b44eae3c..1ea845bcb02d 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/meta.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/meta.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: meta.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod b/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod
index 448d6de1aeba..b7f6b64140a6 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: nmspace.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/office.dtd b/xmerge/source/palmtests/qa/comparator/dtd/office.dtd
index bdf3bae73a34..9bcd37edf325 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/office.dtd
+++ b/xmerge/source/palmtests/qa/comparator/dtd/office.dtd
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.dtd,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/office.mod b/xmerge/source/palmtests/qa/comparator/dtd/office.mod
index 6b525e89a3dd..f8e3775fa6da 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/office.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/office.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: office.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:document ( office:meta?,
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/script.mod b/xmerge/source/palmtests/qa/comparator/dtd/script.mod
index 28ffb8faaa5a..4d13ff74aebc 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/script.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/script.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: script.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT script:library-embedded (script:module*)>
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/settings.mod b/xmerge/source/palmtests/qa/comparator/dtd/settings.mod
index 58297320f5c4..bb9224237fa8 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/settings.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/settings.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: settings.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT office:settings (config:config-item-set+)>
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/style.mod b/xmerge/source/palmtests/qa/comparator/dtd/style.mod
index d0fb8740ec8d..21a3d9d17dd1 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/style.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/style.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: style.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT style:font-decl EMPTY>
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/table.mod b/xmerge/source/palmtests/qa/comparator/dtd/table.mod
index c6534feead5d..6d9f3cdb2a8f 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/table.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/table.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: table.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>
diff --git a/xmerge/source/palmtests/qa/comparator/dtd/text.mod b/xmerge/source/palmtests/qa/comparator/dtd/text.mod
index 8e30dcdde40c..792b0fdde55e 100644
--- a/xmerge/source/palmtests/qa/comparator/dtd/text.mod
+++ b/xmerge/source/palmtests/qa/comparator/dtd/text.mod
@@ -2,14 +2,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: text.mod,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,7 +22,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
-->
<!ENTITY % fields "text:date |
diff --git a/xmerge/source/palmtests/qa/comparator/pdbcomparison.java b/xmerge/source/palmtests/qa/comparator/pdbcomparison.java
index 7b892221d927..785abbad0e75 100644
--- a/xmerge/source/palmtests/qa/comparator/pdbcomparison.java
+++ b/xmerge/source/palmtests/qa/comparator/pdbcomparison.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pdbcomparison.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/palmtests/qa/lib/converterlib.pm b/xmerge/source/palmtests/qa/lib/converterlib.pm
index cc2734681342..d4e4eb6ea649 100644
--- a/xmerge/source/palmtests/qa/lib/converterlib.pm
+++ b/xmerge/source/palmtests/qa/lib/converterlib.pm
@@ -5,14 +5,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: converterlib.pm,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/build.xml b/xmerge/source/pexcel/build.xml
index 4c54e67b09db..caaf8cefbfcd 100644
--- a/xmerge/source/pexcel/build.xml
+++ b/xmerge/source/pexcel/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/converter.xml b/xmerge/source/pexcel/converter.xml
index 687919e54eec..205f60ef59d5 100644
--- a/xmerge/source/pexcel/converter.xml
+++ b/xmerge/source/pexcel/converter.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java
index 2e06387de488..c39b95a173ad 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java
index d3fe0cc135ba..3b45b2bf680c 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java
index fe07592e1d54..13f73f18fdae 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketExcelConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java
index f4d6249405cc..dbfc43a64cd6 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketExcelDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java
index 2bbdb75a8894..52ef18d252f0 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/PocketExcelEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketExcelEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java
index c35cb267c3c5..e95a6aa41e19 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentDeserializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java
index 99ae1d60634f..26d4546bd369 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/SxcDocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentSerializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html
index dfd5db0a8526..61c1f3f0a79d 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java
index 73c6fc4c9f75..190cb0925c21 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BIFFRecord.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BIFFRecord.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java
index 771dcfba8b0d..df45b708d89c 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BeginningOfFile.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BeginningOfFile.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java
index da45208ee090..da826a8d9058 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BlankCell.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BlankCell.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java
index 1782ba5de159..9a370ccd8a59 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoolErrCell.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BoolErrCell.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java
index 85c917190576..679224634bfa 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/BoundSheet.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BoundSheet.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java
index 2b5c68b4399c..c09cde5a32c1 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellValue.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java
index 7f8dbe1428b0..91186fa27c3c 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CodePage.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CodePage.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java
index 61196889802c..6ce59c7ca72c 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColInfo.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java
index e11d56847c57..b3e3a8e6b0e3 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefColWidth.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DefColWidth.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java
index 286f69151cde..454a5ed87520 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefRowHeight.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DefRowHeight.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java
index 6da880b3b6ff..0f8c535a9b92 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/DefinedName.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DefinedName.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java
index 059ccd7dd4dd..d0a2fec3e90e 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Eof.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Eof.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java
index f71edcb339cb..5165efd84460 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ExtendedFormat.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ExtendedFormat.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java
index c433a7397182..8d702640a500 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FloatNumber.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FloatNumber.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java
index 6ac78b67c7af..61d9746c80d3 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/FontDescription.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FontDescription.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java
index 0bd23789f799..a073883b2e8e 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Formula.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Formula.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java
index 17530ccfdba1..d4ad28cc7e2b 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/LabelCell.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LabelCell.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java
index 18b21114ad55..342d9b676bcd 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/NumberFormat.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NumberFormat.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java
index 82b7370eae96..b65d1027f969 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Pane.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Pane.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java
index a561907dd0f1..8e3067d26c6b 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Row.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Row.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java
index 075321b79f26..308eae29227e 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Selection.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Selection.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java
index 400ac890f077..c516eca69b1b 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/StringValue.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: StringValue.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java
index 5028d5767fd1..e6f941d46556 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/UnsupportedFormulaException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: UnsupportedFormulaException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java
index 13a601d9ed82..c060db90d60d 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window1.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Window1.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java
index 3ab42d0364d2..4c49a941219c 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Window2.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Window2.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
index 5abf0bd27937..5a9f329e4667 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Workbook.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java
index 51cb2d9b094a..6ab57189f39f 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Worksheet.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Worksheet.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java
index 0812d3c8b60a..2e060ca0a148 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaCompiler.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaCompiler.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java
index 9890a20f3c70..208feb030f36 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaHelper.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaHelper.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java
index 55314c3559c0..0ab40ec53fd2 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParser.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaParser.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java
index 295f58faba3c..e8465391e6ff 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FormulaParsingException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FormulaParsingException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java
index 43f34c33351f..42c06d88754a 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/FunctionLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: FunctionLookup.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java
index d35db126005c..6ad1876e5358 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperandLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OperandLookup.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java
index 08b557e3a6d3..de9ed23d8a24 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/OperatorLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OperatorLookup.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java
index 38b4e29b7858..053266c8008b 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/ParseToken.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParseToken.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
index 1cdee4558371..551b77cf6e7f 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/PrecedenceTable.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PrecedenceTable.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
index cdb2741ebb8b..bf7722b973e4 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/SymbolLookup.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SymbolLookup.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java
index a16a8af4d3fe..48d35dcef5d1 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/Token.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Token.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java
index 2bbfdd8b1791..1a636f9ae1f1 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java
index a390704302ba..e18c1d10cc04 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
index a00a3f1ec31c..249e14ac620f 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java
index aa9c92c101d6..e745c7c0f970 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/TokenFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TokenFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java
index 211d580b2d7d..ca2794d3f73d 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/UnsupportedFunctionException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: UnsupportedFunctionException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html
index 4620217619ca..6239c2b5b625 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/formula/package.html
@@ -6,14 +6,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,7 +26,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html
index 87cb66844b37..ef06a251cfaa 100644
--- a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html
+++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/package.html
@@ -6,14 +6,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,7 +26,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
diff --git a/xmerge/source/pexcel/makefile.mk b/xmerge/source/pexcel/makefile.mk
index c0fdb53a676c..7f51a43e7530 100644
--- a/xmerge/source/pexcel/makefile.mk
+++ b/xmerge/source/pexcel/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/build.xml b/xmerge/source/pocketword/build.xml
index 5b5c31c9adc6..51b198c329af 100644
--- a/xmerge/source/pocketword/build.xml
+++ b/xmerge/source/pocketword/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/converter.xml b/xmerge/source/pocketword/converter.xml
index 7714e10f7971..56fcebfba6b1 100644
--- a/xmerge/source/pocketword/converter.xml
+++ b/xmerge/source/pocketword/converter.xml
@@ -5,14 +5,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java
index 26899e9d4a67..13437cc7bb7c 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java
index c467a4081a37..5e2f8a06e3a0 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDescriptor.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDescriptor.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
index 2a2a905b1131..6d7873cca96b 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java
index 04ca8e851456..e3d09b5c2bcc 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java
index de1ae3429836..08424a073803 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java
index 216248d54efd..0302a5d6efba 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/Paragraph.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Paragraph.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java
index 56cd1262189b..e17617f467c7 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/ParagraphTextSegment.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParagraphTextSegment.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java
index 82a83540cc10..963e7f489726 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java
index 1bf7d2132e82..207627398ca1 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketWordConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java
index 9026732fa064..bc77e0fa6988 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/PocketWordDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PocketWordDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html
index d767b245254a..e32357b85ef7 100644
--- a/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html
+++ b/xmerge/source/pocketword/java/org/openoffice/xmerge/converter/xml/sxw/pocketword/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/pocketword/makefile.mk b/xmerge/source/pocketword/makefile.mk
index 24f6e45cfd24..9db2d15000c6 100644
--- a/xmerge/source/pocketword/makefile.mk
+++ b/xmerge/source/pocketword/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/regutil/makefile.mk b/xmerge/source/regutil/makefile.mk
index 4d34ce6cfe02..4886fe0057b0 100644
--- a/xmerge/source/regutil/makefile.mk
+++ b/xmerge/source/regutil/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/build.xml b/xmerge/source/wordsmith/build.xml
index 2333a0bb40c5..9a0c1aef7563 100644
--- a/xmerge/source/wordsmith/build.xml
+++ b/xmerge/source/wordsmith/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java
index 432f3e863f3a..11e264a07cfb 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java
index 779b51550c6b..415392933c2c 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DOCConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DOCConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java
index 2eb4455d279e..29098b72cc17 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java
index 0a239bd8e2ec..b338c9adb6ff 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java
index 250c6543fff0..bca91fa53415 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java
index 94246a744f4d..d7e84d69f34c 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java
index eef0cb0f368c..5ac9bc01c725 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WSDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java
index f91864c779d1..15cf4ed36544 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WSEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WSEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java
index c254d05ea59a..4f1a7141f348 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/Wse.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Wse.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java
index 8046f7945127..bbb22952a24a 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseColorTable.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseColorTable.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java
index 4da223c37cc2..d7bc6edd8bc2 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseFontTable.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseFontTable.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java
index c1ca588f0dd6..c80e03eca043 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseHeader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseHeader.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java
index 77ee6759cdcc..36b21e21b931 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WsePara.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WsePara.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java
index 0c93468c0199..7a4bb325e051 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/WseTextRun.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: WseTextRun.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java
index 87b89a24eda2..01276ce79a94 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/textRecord.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: textRecord.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java
index eba3403bbcb6..9dcb178197da 100644
--- a/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java
+++ b/xmerge/source/wordsmith/java/org/openoffice/xmerge/converter/xml/sxw/wordsmith/util.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: util.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/wordsmith/makefile.mk b/xmerge/source/wordsmith/makefile.mk
index de0d62a9ecaf..9edb4e758878 100644
--- a/xmerge/source/wordsmith/makefile.mk
+++ b/xmerge/source/wordsmith/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/build.xml b/xmerge/source/xmerge/build.xml
index a01ac6ae1912..8c46b46ea747 100644
--- a/xmerge/source/xmerge/build.xml
+++ b/xmerge/source/xmerge/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.7 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/converter.dtd b/xmerge/source/xmerge/converter.dtd
index c447baa809e8..a73ce946fa56 100644
--- a/xmerge/source/xmerge/converter.dtd
+++ b/xmerge/source/xmerge/converter.dtd
@@ -3,14 +3,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: converter.dtd,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -27,7 +23,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java
index 8631321b0bdb..59b6db6aa84c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/Convert.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Convert.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertData.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertData.java
index 8787e445ac0d..b2da0e3f3e4c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertData.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertData.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConvertData.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertException.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertException.java
index 2aac2be8bda4..5065ca20ca10 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertException.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConvertException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConvertException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java
index 67f9073c0f7d..b26e0d5559b8 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterCapabilities.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilities.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterFactory.java
index 673276457253..b6afe0d42bfa 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/ConverterFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/Document.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/Document.java
index c632f8db268f..786050a42a0e 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/Document.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/Document.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Document.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java
index 96cbb26595fd..4c26453a982b 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializer.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java
index 9f8f3f239212..417144b7ac49 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializer2.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializer2.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java
index b45744e739cf..315ebc0cf051 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentDeserializerFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMerger.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMerger.java
index a78f2596e7ac..3f29b2dad7f2 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMerger.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMerger.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMerger.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java
index b6184f12f61e..3daa41db4b99 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentMergerFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java
index becd9d2e5117..d46e5baca765 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializer.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java
index 8e95f8b83f49..dd3ee25460a6 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializer2.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializer2.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java
index 688a5130a596..6d6f47078b5e 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/DocumentSerializerFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/MergeException.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/MergeException.java
index 2885adddb333..8c649c8fa6cf 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/MergeException.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/MergeException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MergeException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/PluginFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/PluginFactory.java
index e9fda033833a..de7baba4683f 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/PluginFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/PluginFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/Version.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/Version.java
index 2af9f9eb08dd..b639d95a8116 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/Version.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/Version.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Version.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java
index 83c2270e5e61..f7df881b1061 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/DOMDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DOMDocument.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/package.html
index 31b21e19cc5c..0198fdd4576f 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/dom/package.html
@@ -6,14 +6,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,7 +26,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
index 00f0f91a1691..11286ee824ce 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDB.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PalmDB.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
index f039dab382ee..668bfdb7f155 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PalmDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PalmDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
index f6df00664b27..68e7c66beb11 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
index 2081290ccf47..46433e88ec2e 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
index c79acf6d20bb..2f9d389e80cc 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbHeader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbHeader.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
index cb50b9d7cb76..d0714d677960 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/PdbUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PdbUtil.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
index 6475fdbc9537..23690792bdbf 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/Record.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Record.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
index 8f5159b23d6d..f2628bb0b235 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/palm/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java
index 30052140bdae..ac82675b229d 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedBinaryObject.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EmbeddedBinaryObject.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java
index 00a3e55d5493..11240b4bceac 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedObject.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EmbeddedObject.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java
index b3f8f5769b7d..6e5f123ded53 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/EmbeddedXMLObject.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EmbeddedXMLObject.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java
index 020546141ad5..afa889cb9e3f 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java
index bc62cc0a7e2a..d3372be5a757 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeDocument.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java
index b6a77d6d57f7..2c8ae71f2af3 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeDocumentException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeDocumentException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java
index 1ce1e3bba90a..9752650533a1 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/OfficeZip.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeZip.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java
index 69d4f66f1164..662a542d0e7b 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/ParaStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParaStyle.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java
index 6d464671f1af..cc1e1d3d530c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/Style.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Style.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java
index 32732b65f4a3..c783d366a68b 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/StyleCatalog.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: StyleCatalog.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java
index 06f2bc778210..91926310776c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/TextStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TextStyle.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/package.html
index e0336ce04643..9d4d0f5bd5cf 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java
index b3d99fa0d5b6..9c1ae2768524 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/BookSettings.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: BookSettings.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java
index 131e8aa35613..2e3e34b6d620 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/CellStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellStyle.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java
index 038cb2b8950c..14c1dbfc8e77 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnRowInfo.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColumnRowInfo.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java
index e7c1cb2ce354..76c742b57496 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/ColumnStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColumnStyle.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java
index df190ed83396..2fa5f22303b2 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java
index 55690658de07..2bb836a7303d 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/Format.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Format.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java
index f5b485eeb636..de83543fd86e 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/NameDefinition.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NameDefinition.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java
index 4f5ee01f91e3..2b4ce04a13f0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/RowStyle.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RowStyle.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java
index c0074e5a8bbd..4258e1a5e035 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SheetSettings.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SheetSettings.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java
index f01f40ff98e9..169f54a65845 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetDecoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SpreadsheetDecoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java
index 01ce78322c09..fc965bcd88b1 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SpreadsheetEncoder.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SpreadsheetEncoder.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java
index ecf4bd26de9b..32fd85fa071a 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcConstants.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcConstants.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java
index f5b2977839d8..5561ef3c9d9c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java
index ab6a941a60f4..2eb507d09b7b 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentDeserializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentDeserializer.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java
index 9fb29e5504a4..b0cfc09893bc 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcDocumentSerializer.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcDocumentSerializer.java,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java
index abd12130057b..401bdff1f533 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/SxcPluginFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxcPluginFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html
index ee33c0c58794..d350ea262303 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java
index c530868910d9..0485c4a435c0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxwDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java
index 9051769e04c8..a1f53bfd9ede 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/SxwPluginFactory.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SxwPluginFactory.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html
index 93ffa03dc0b4..a9ced174ff5a 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/sxw/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java
index a4c238e4d625..5f6e4ac38ce2 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/ConverterCapabilitiesImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterCapabilitiesImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java
index cfdfe9ea1cdf..e118cc690ea0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentDeserializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentDeserializerImpl.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java
index 3d5d28737a68..6416d0d531a0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentMergerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMergerImpl.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java
index 2293cb0be74f..5bf8d4983da1 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/DocumentSerializerImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentSerializerImpl.java,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java
index a996bf7f07bf..d0ecb2c943ac 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/GenericOfficeDocument.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: GenericOfficeDocument.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java
index 9f5d39d6ea37..36872751e999 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/PluginFactoryImpl.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PluginFactoryImpl.java,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties
index 013f457b8ec9..32f3771fc492 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/XsltPlugin.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: XsltPlugin.properties,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html
index 5f4de34878a0..30c71b15655f 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/converter/xml/xslt/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<HTML>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java
index 8e58f8b67e57..76158a7053c0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/DiffAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DiffAlgorithm.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Difference.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Difference.java
index 33e4ffe4ecab..31977b36f377 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Difference.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Difference.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Difference.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Iterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Iterator.java
index 9b5ae86fff0c..5ebfa7b2f499 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Iterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/Iterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Iterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java
index 3c971aea60ce..b1d4d5b510fd 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/MergeAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: MergeAlgorithm.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java
index e83a08cf9e74..9337816c64ab 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/NodeMergeAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NodeMergeAlgorithm.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java
index e15112a57218..95fddea14cb9 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CellNodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CellNodeIterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java
index 46af77d1e19b..9026303ca3d3 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharArrayLCSAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CharArrayLCSAlgorithm.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java
index 1901c1877baa..1a047d130a03 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/CharacterParser.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CharacterParser.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java
index 6ad7a4dbd4f4..ae90274bfaf1 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorLCSAlgorithm.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: IteratorLCSAlgorithm.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java
index 319c9558d70e..fa6642432838 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/IteratorRowCompare.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: IteratorRowCompare.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java
index 237ee44fad53..308affeb130a 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/NodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NodeIterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java
index baa2aad22230..d52b53fd78a7 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ObjectArrayIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ObjectArrayIterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java
index bf73d6e51602..2e16275e0e44 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/ParaNodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ParaNodeIterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java
index a0311a156c64..0e514209e2f0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/RowIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RowIterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java
index 4cd42490cefa..8840585b2b92 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeEntry.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TextNodeEntry.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java
index 5c7e8b3f572b..b1da7bcdcdaf 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/TextNodeIterator.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TextNodeIterator.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/package.html
index ac1b0f349261..f9d1b12a5f39 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/diff/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java
index 199b604835e5..adcd483dd44a 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/CharacterBaseParagraphMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: CharacterBaseParagraphMerge.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java
index 1a9b54bbf482..5c293000a964 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/DocumentMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DocumentMerge.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java
index 47736c061bb3..4d912d1c8a56 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/PositionBaseRowMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PositionBaseRowMerge.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java
index 323530adcddb..edb95cfd9cb2 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetMerge.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SheetMerge.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java
index 7d92a442f4d0..0329434105b8 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/SheetUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: SheetUtil.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/package.html
index c7af8cfd1cc3..d54b7c37a0ef 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/merge/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/package.html
index 2f1ff6a2ba08..e5cd65c3f357 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/merger/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/package.html
index 75193f08b158..ea56e3b6c118 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java
index c55dec4ea839..f9742c48a743 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfoList.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties b/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties
index 88392d16af9f..d8bf3483b95d 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/test/ConverterInfoList.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: ConverterInfoList.properties,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/test/Driver.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/test/Driver.java
index 86ec98e83732..5855727364ef 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/test/Driver.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/test/Driver.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Driver.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java
index b0ed4818d216..fb7941a15ae0 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ActiveSyncDriver.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ActiveSyncDriver.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java
index 19d08f651f0d..33ef294d4ae8 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/ColourConverter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ColourConverter.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java
index 7e96e50e6f29..8b9f06eb4e86 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Debug.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.properties b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.properties
index 21b5f49a630d..4be4427837a7 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.properties
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Debug.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: Debug.properties,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java
index 01a8d3530152..c41a428dd0c2 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/EndianConverter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: EndianConverter.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java
index 633bb9b5be8d..a317fa2997e1 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/IntArrayList.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: IntArrayList.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java
index c3370ec129b1..64a37037c406 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/OfficeUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: OfficeUtil.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Resources.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Resources.java
index f69b2ad4beeb..44db518b3389 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Resources.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/Resources.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: Resources.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java
index 3abe377457d9..fe3931a5aadf 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/TwipsConverter.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: TwipsConverter.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java
index 93b1eb076c3f..9b3ec402b2e8 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/XmlUtil.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlUtil.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/package.html
index 2e78b7350b4a..1caffdbe41d4 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java
index 15293f923bfd..359bcbfeb222 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfo.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfo.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java
index 13efabf85769..0993924c129f 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoMgr.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfoMgr.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java
index 53417b7f0152..238fd59f9608 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/ConverterInfoReader.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ConverterInfoReader.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java
index b5542d8f5e66..ea370d386c1c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/RegistryException.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: RegistryException.java,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/build.xml b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/build.xml
index 4a1c0cdf7263..525546d2f7fc 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/build.xml
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/build.xml
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/package.html b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/package.html
index 04d9f158945f..b6af6262cc5c 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/package.html
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/registry/package.html
@@ -4,14 +4,10 @@
#
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: package.html,v $
-
- $Revision: 1.4 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
@@ -28,7 +24,7 @@
version 3 along with OpenOffice.org. If not, see
<http://www.openoffice.org/license.html>
for a copy of the LGPLv3 License.
-
+
#*************************************************************************
-->
<html>
diff --git a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/resources.properties b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/resources.properties
index 805a2016667e..dd7938723e30 100644
--- a/xmerge/source/xmerge/java/org/openoffice/xmerge/util/resources.properties
+++ b/xmerge/source/xmerge/java/org/openoffice/xmerge/util/resources.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: resources.properties,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/source/xmerge/makefile.mk b/xmerge/source/xmerge/makefile.mk
index 7420f886ed38..8ff18ad94d5d 100644
--- a/xmerge/source/xmerge/makefile.mk
+++ b/xmerge/source/xmerge/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/util/build.xml b/xmerge/util/build.xml
index 89a41211165f..f15ad3acff08 100644
--- a/xmerge/util/build.xml
+++ b/xmerge/util/build.xml
@@ -2,14 +2,10 @@
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.13 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/util/makefile.mk b/xmerge/util/makefile.mk
index 61ee7d712eb5..54ed16e3ef8e 100644
--- a/xmerge/util/makefile.mk
+++ b/xmerge/util/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/workben/XmlDiff.java b/xmerge/workben/XmlDiff.java
index 159b4eaf65b5..e41dbbb6b9b0 100644
--- a/xmerge/workben/XmlDiff.java
+++ b/xmerge/workben/XmlDiff.java
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: XmlDiff.java,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/workben/XmlDiff.properties b/xmerge/workben/XmlDiff.properties
index f64f87f580ab..251e64a65a92 100644
--- a/xmerge/workben/XmlDiff.properties
+++ b/xmerge/workben/XmlDiff.properties
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: XmlDiff.properties,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/workben/build.xml b/xmerge/workben/build.xml
index 1959760acc71..ed8da0ccb444 100644
--- a/xmerge/workben/build.xml
+++ b/xmerge/workben/build.xml
@@ -3,14 +3,10 @@
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- Copyright 2008 by Sun Microsystems, Inc.
+ Copyright 2000, 2010 Oracle and/or its affiliates.
OpenOffice.org - a multi-platform office productivity suite
- $RCSfile: build.xml,v $
-
- $Revision: 1.6 $
-
This file is part of OpenOffice.org.
OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/workben/jstyle.pl b/xmerge/workben/jstyle.pl
index ce5fcf7963ed..3c300c29a227 100644
--- a/xmerge/workben/jstyle.pl
+++ b/xmerge/workben/jstyle.pl
@@ -4,14 +4,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: jstyle.pl,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/xmerge/workben/makefile.mk b/xmerge/workben/makefile.mk
index af613c70668c..b3acd7240f57 100644
--- a/xmerge/workben/makefile.mk
+++ b/xmerge/workben/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.3 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify