Conflicts: avmedia/inc/avmedia/mediaitem.hxx avmedia/prj/build.lst avmedia/source/framework/mediaitem.cxx avmedia/source/gstreamer/gstcommon.hxx avmedia/source/gstreamer/gstframegrabber.cxx avmedia/source/gstreamer/gstframegrabber.hxx avmedia/source/gstreamer/gstmanager.cxx avmedia/source/gstreamer/gstmanager.hxx avmedia/source/gstreamer/gstplayer.cxx avmedia/source/gstreamer/gstplayer.hxx avmedia/source/gstreamer/gstuno.cxx avmedia/source/gstreamer/gstwindow.cxx avmedia/source/gstreamer/gstwindow.hxx avmedia/source/gstreamer/makefile.mk avmedia/source/quicktime/quicktimeuno.cxx avmedia/source/viewer/mediawindow.cxx avmedia/source/viewer/mediawindow_impl.cxx avmedia/source/viewer/mediawindow_impl.hxx avmedia/source/viewer/mediawindowbase_impl.cxx avmedia/source/win/winuno.cxx basic/inc/basic/basmgr.hxx basic/inc/basic/mybasic.hxx basic/inc/basic/process.hxx basic/inc/basic/sbmeth.hxx basic/inc/basic/sbmod.hxx basic/inc/basic/sbxdef.hxx basic/inc/basic/sbxvar.hxx basic/source/app/app.cxx basic/source/app/app.hxx basic/source/app/appbased.cxx basic/source/app/appedit.cxx basic/source/app/appwin.cxx basic/source/app/appwin.hxx basic/source/app/brkpnts.cxx basic/source/app/brkpnts.hxx basic/source/app/dialogs.cxx basic/source/app/dialogs.hxx basic/source/app/msgedit.cxx basic/source/app/mybasic.cxx basic/source/app/process.cxx basic/source/app/processw.hxx basic/source/app/textedit.cxx basic/source/basmgr/basicmanagerrepository.cxx basic/source/basmgr/basmgr.cxx basic/source/classes/disas.cxx basic/source/classes/eventatt.cxx basic/source/classes/image.cxx basic/source/classes/sb.cxx basic/source/classes/sbunoobj.cxx basic/source/classes/sbxmod.cxx basic/source/comp/codegen.cxx basic/source/comp/dim.cxx basic/source/comp/exprgen.cxx basic/source/comp/exprnode.cxx basic/source/comp/exprtree.cxx basic/source/comp/sbcomp.cxx basic/source/inc/expr.hxx basic/source/inc/object.hxx basic/source/inc/sbunoobj.hxx basic/source/runtime/dllmgr-x86.cxx basic/source/runtime/iosys.cxx basic/source/runtime/makefile.mk basic/source/runtime/methods.cxx basic/source/runtime/methods1.cxx basic/source/runtime/runtime.cxx basic/source/runtime/stdobj.cxx basic/source/runtime/step0.cxx basic/source/runtime/step1.cxx basic/source/runtime/step2.cxx basic/source/sbx/sbxarray.cxx basic/source/sbx/sbxbase.cxx basic/source/sbx/sbxbool.cxx basic/source/sbx/sbxbyte.cxx basic/source/sbx/sbxcoll.cxx basic/source/sbx/sbxconv.hxx basic/source/sbx/sbxcurr.cxx basic/source/sbx/sbxexec.cxx basic/source/sbx/sbxint.cxx basic/source/sbx/sbxobj.cxx basic/source/sbx/sbxscan.cxx basic/source/sbx/sbxstr.cxx basic/source/sbx/sbxvals.cxx basic/source/sbx/sbxvalue.cxx basic/source/sbx/sbxvar.cxx basic/workben/mgrtest.cxx configmgr/prj/build.lst configmgr/source/access.cxx configmgr/source/configurationprovider.cxx configmgr/source/defaultprovider.cxx configmgr/source/pad.cxx configmgr/source/services.cxx configmgr/source/update.cxx configmgr/source/xmlreader.cxx configmgr/source/xmlreader.hxx connectivity/prj/build.lst connectivity/qa/complex/connectivity/TestCase.java connectivity/source/cpool/Zregistration.cxx connectivity/source/drivers/adabas/Bservices.cxx connectivity/source/drivers/ado/Aservices.cxx connectivity/source/drivers/calc/Cservices.cxx connectivity/source/drivers/calc/makefile.mk connectivity/source/drivers/dbase/DIndex.cxx connectivity/source/drivers/dbase/DIndexIter.cxx connectivity/source/drivers/dbase/DNoException.cxx connectivity/source/drivers/dbase/DTable.cxx connectivity/source/drivers/dbase/Dservices.cxx connectivity/source/drivers/dbase/dindexnode.cxx connectivity/source/drivers/evoab/LNoException.cxx connectivity/source/drivers/evoab/LServices.cxx connectivity/source/drivers/evoab2/NServices.cxx connectivity/source/drivers/file/FNoException.cxx connectivity/source/drivers/file/FPreparedStatement.cxx connectivity/source/drivers/file/FResultSet.cxx connectivity/source/drivers/file/FStatement.cxx connectivity/source/drivers/file/quotedstring.cxx connectivity/source/drivers/flat/ETable.cxx connectivity/source/drivers/flat/Eservices.cxx connectivity/source/drivers/hsqldb/Hservices.cxx connectivity/source/drivers/jdbc/jservices.cxx connectivity/source/drivers/kab/KServices.cxx connectivity/source/drivers/macab/MacabServices.cxx connectivity/source/drivers/mozab/MResultSet.cxx connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx connectivity/source/drivers/mysql/Yservices.cxx connectivity/source/drivers/odbc/OFunctions.cxx connectivity/source/drivers/odbc/oservices.cxx connectivity/source/inc/dbase/DIndexPage.hxx connectivity/source/inc/file/FTable.hxx connectivity/source/manager/mregistration.cxx connectivity/source/parse/PColumn.cxx desktop/prj/build.lst desktop/qa/deployment_misc/test_dp_version.cxx desktop/source/app/app.cxx desktop/source/app/appfirststart.cxx desktop/source/app/cmdlineargs.cxx desktop/source/app/cmdlineargs.hxx desktop/source/app/sofficemain.cxx desktop/source/deployment/gui/dp_gui.hrc desktop/source/deployment/gui/dp_gui_dialog2.cxx desktop/source/deployment/gui/dp_gui_dialog2.hxx desktop/source/deployment/gui/dp_gui_updatedialog.cxx desktop/source/deployment/gui/dp_gui_updatedialog.hxx desktop/source/deployment/manager/dp_extensionmanager.cxx desktop/source/deployment/manager/dp_extensionmanager.hxx desktop/source/deployment/misc/dp_misc.src desktop/source/deployment/registry/component/dp_component.cxx desktop/source/deployment/registry/configuration/dp_configuration.cxx desktop/source/deployment/registry/dp_backend.cxx desktop/source/deployment/registry/help/dp_help.cxx desktop/source/deployment/registry/script/dp_script.cxx desktop/source/migration/pages.cxx desktop/source/migration/pages.hxx desktop/source/migration/wizard.cxx desktop/source/migration/wizard.hrc desktop/source/migration/wizard.hxx desktop/source/migration/wizard.src desktop/source/pkgchk/unopkg/unopkg_shared.h desktop/source/so_comp/services.cxx desktop/source/splash/makefile.mk desktop/source/splash/services_spl.cxx desktop/source/splash/splash.cxx drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx editeng/inc/editeng/adjitem.hxx editeng/inc/editeng/bolnitem.hxx editeng/inc/editeng/borderline.hxx editeng/inc/editeng/boxitem.hxx editeng/inc/editeng/brkitem.hxx editeng/inc/editeng/brshitem.hxx editeng/inc/editeng/bulitem.hxx editeng/inc/editeng/charreliefitem.hxx editeng/inc/editeng/charrotateitem.hxx editeng/inc/editeng/charscaleitem.hxx editeng/inc/editeng/cmapitem.hxx editeng/inc/editeng/colritem.hxx editeng/inc/editeng/crsditem.hxx editeng/inc/editeng/editdata.hxx editeng/inc/editeng/editeng.hxx editeng/inc/editeng/editobj.hxx editeng/inc/editeng/editstat.hxx editeng/inc/editeng/editview.hxx editeng/inc/editeng/emphitem.hxx editeng/inc/editeng/escpitem.hxx editeng/inc/editeng/fhgtitem.hxx editeng/inc/editeng/flstitem.hxx editeng/inc/editeng/fontitem.hxx editeng/inc/editeng/frmdiritem.hxx editeng/inc/editeng/fwdtitem.hxx editeng/inc/editeng/hyznitem.hxx editeng/inc/editeng/kernitem.hxx editeng/inc/editeng/langitem.hxx editeng/inc/editeng/lrspitem.hxx editeng/inc/editeng/lspcitem.hxx editeng/inc/editeng/numitem.hxx editeng/inc/editeng/outliner.hxx editeng/inc/editeng/paravertalignitem.hxx editeng/inc/editeng/pmdlitem.hxx editeng/inc/editeng/postitem.hxx editeng/inc/editeng/protitem.hxx editeng/inc/editeng/shaditem.hxx editeng/inc/editeng/sizeitem.hxx editeng/inc/editeng/svxacorr.hxx editeng/inc/editeng/svxfont.hxx editeng/inc/editeng/svxrtf.hxx editeng/inc/editeng/swafopt.hxx editeng/inc/editeng/tstpitem.hxx editeng/inc/editeng/twolinesitem.hxx editeng/inc/editeng/txtrange.hxx editeng/inc/editeng/udlnitem.hxx editeng/inc/editeng/ulspitem.hxx editeng/inc/editeng/wghtitem.hxx editeng/inc/editeng/writingmodeitem.hxx editeng/inc/editeng/xmlcnitm.hxx editeng/inc/helpid.hrc editeng/inc/pch/precompiled_editeng.hxx editeng/source/editeng/editdbg.cxx editeng/source/editeng/editdoc.cxx editeng/source/editeng/editdoc.hxx editeng/source/editeng/editdoc2.cxx editeng/source/editeng/editeng.cxx editeng/source/editeng/editobj.cxx editeng/source/editeng/editobj2.hxx editeng/source/editeng/editsel.cxx editeng/source/editeng/editundo.cxx editeng/source/editeng/editundo.hxx editeng/source/editeng/editview.cxx editeng/source/editeng/edtspell.hxx editeng/source/editeng/eehtml.cxx editeng/source/editeng/eehtml.hxx editeng/source/editeng/eeobj.cxx editeng/source/editeng/eerdll.cxx editeng/source/editeng/eertfpar.cxx editeng/source/editeng/impedit.cxx editeng/source/editeng/impedit.hxx editeng/source/editeng/impedit2.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/editeng/impedit5.cxx editeng/source/editeng/makefile.mk editeng/source/items/bulitem.cxx editeng/source/items/charhiddenitem.cxx editeng/source/items/flditem.cxx editeng/source/items/frmitems.cxx editeng/source/items/makefile.mk editeng/source/items/numitem.cxx editeng/source/items/paraitem.cxx editeng/source/items/svxfont.cxx editeng/source/items/textitem.cxx editeng/source/items/writingmodeitem.cxx editeng/source/items/xmlcnitm.cxx editeng/source/misc/SvXMLAutoCorrectImport.cxx editeng/source/misc/svxacorr.cxx editeng/source/misc/txtrange.cxx editeng/source/misc/unolingu.cxx editeng/source/outliner/outleeng.cxx editeng/source/outliner/outliner.cxx editeng/source/outliner/outlundo.hxx editeng/source/outliner/outlvw.cxx editeng/source/outliner/paralist.cxx editeng/source/outliner/paralist.hxx editeng/source/rtf/rtfgrf.cxx editeng/source/rtf/rtfitem.cxx editeng/source/rtf/svxrtf.cxx editeng/source/uno/unoipset.cxx editeng/util/makefile.mk embeddedobj/prj/build.lst embeddedobj/source/commonembedding/miscobj.cxx eventattacher/prj/build.lst fileaccess/source/FileAccess.cxx formula/inc/formula/FormulaCompiler.hxx formula/inc/formula/token.hxx formula/inc/formula/tokenarray.hxx formula/source/core/api/FormulaCompiler.cxx formula/source/core/api/token.cxx formula/source/ui/dlg/FormulaHelper.cxx formula/source/ui/dlg/formula.cxx formula/source/ui/dlg/parawin.cxx formula/source/ui/dlg/structpg.cxx fpicker/prj/d.lst fpicker/source/aqua/FPentry.cxx fpicker/source/office/OfficeControlAccess.cxx fpicker/source/office/iodlg.cxx fpicker/source/office/iodlg.hxx fpicker/source/office/iodlg.src fpicker/source/office/iodlgimp.cxx fpicker/source/unx/gnome/FPentry.cxx fpicker/source/unx/gnome/SalGtkFilePicker.cxx fpicker/source/unx/gnome/SalGtkPicker.cxx fpicker/source/unx/kde4/KDE4FPEntry.cxx fpicker/source/win32/filepicker/FPentry.cxx framework/AllLangResTarget_fwe.mk framework/inc/dispatch/interaction.hxx framework/inc/framework/addonmenu.hxx framework/inc/framework/addonsoptions.hxx framework/inc/framework/bmkmenu.hxx framework/inc/framework/imageproducer.hxx framework/inc/framework/sfxhelperfunctions.hxx framework/inc/framework/statusbarconfiguration.hxx framework/inc/framework/titlehelper.hxx framework/inc/framework/toolboxconfiguration.hxx framework/inc/threadhelp/lockhelper.hxx framework/inc/xml/eventsdocumenthandler.hxx framework/inc/xml/statusbardocumenthandler.hxx framework/inc/xml/toolboxconfiguration.hxx framework/inc/xml/toolboxconfigurationdefines.hxx framework/inc/xml/toolboxdocumenthandler.hxx framework/prj/build.lst framework/qa/complex/ModuleManager/makefile.mk framework/qa/complex/accelerators/makefile.mk framework/qa/complex/framework/recovery/makefile.mk framework/qa/complex/imageManager/_XInitialization.java framework/source/classes/menumanager.cxx framework/source/dispatch/interaction.cxx framework/source/fwe/classes/bmkmenu.cxx framework/source/fwe/helper/actiontriggerhelper.cxx framework/source/fwe/helper/imageproducer.cxx framework/source/fwe/xml/menuconfiguration.cxx framework/source/fwe/xml/toolboxdocumenthandler.cxx framework/source/helper/uiconfigelementwrapperbase.cxx framework/source/helper/uielementwrapperbase.cxx framework/source/inc/pattern/window.hxx framework/source/jobs/jobdata.cxx framework/source/layoutmanager/layoutmanager.cxx framework/source/layoutmanager/panel.hxx framework/source/loadenv/loadenv.cxx framework/source/register/registerservices.cxx framework/source/services/menudocumenthandler.cxx framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx framework/source/uiconfiguration/uiconfigurationmanager.cxx framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx framework/source/uielement/addonstoolbarmanager.cxx framework/source/uielement/controlmenucontroller.cxx framework/source/uielement/fontsizemenucontroller.cxx framework/source/uielement/imagebuttontoolbarcontroller.cxx framework/source/uielement/macrosmenucontroller.cxx framework/source/uielement/menubarmanager.cxx framework/source/uielement/newmenucontroller.cxx framework/source/uielement/togglebuttontoolbarcontroller.cxx framework/source/uielement/toolbarmanager.cxx framework/source/uielement/toolbarsmenucontroller.cxx framework/test/makefile.mk framework/test/threadtest/makefile.mk framework/test/typecfg/makefile.mk framework/util/guiapps/makefile.mk framework/util/makefile.mk idl/inc/bastype.hxx idl/inc/hash.hxx idl/inc/lex.hxx idl/inc/module.hxx idl/inc/object.hxx idl/inc/slot.hxx idl/inc/types.hxx idl/source/cmptools/hash.cxx idl/source/cmptools/lex.cxx idl/source/objects/basobj.cxx idl/source/objects/bastype.cxx idl/source/objects/module.cxx idl/source/objects/object.cxx idl/source/objects/slot.cxx idl/source/objects/types.cxx idl/source/prj/command.cxx idl/source/prj/database.cxx idl/source/prj/globals.cxx idl/source/prj/svidl.cxx linguistic/inc/linguistic/misc.hxx linguistic/prj/build.lst linguistic/source/convdic.cxx linguistic/source/convdiclist.cxx linguistic/source/dicimp.cxx linguistic/source/dlistimp.cxx linguistic/source/gciterator.cxx linguistic/source/iprcache.cxx linguistic/source/lngopt.cxx linguistic/source/lngprophelp.cxx linguistic/source/lngsvcmgr.cxx linguistic/source/lngsvcmgr.hxx linguistic/source/misc2.cxx linguistic/workben/sprophelp.cxx officecfg/registry/data/org/openoffice/VCL.xcu officecfg/util/makefile.mk oovbaapi/ooo/vba/XApplicationBase.idl oovbaapi/ooo/vba/XVBAAppService.idl oovbaapi/ooo/vba/XVBADocService.idl oovbaapi/ooo/vba/excel/XApplication.idl oovbaapi/ooo/vba/excel/XRange.idl oovbaapi/ooo/vba/excel/XWorkbook.idl oovbaapi/ooo/vba/excel/XWorksheet.idl oovbaapi/ooo/vba/word/XApplication.idl oovbaapi/ooo/vba/word/XGlobals.idl oovbaapi/ooo/vba/word/XTableOfContents.idl readlicense_oo/prj/build.lst scripting/prj/build.lst scripting/prj/d.lst scripting/source/basprov/basprov.cxx scripting/source/basprov/basscript.cxx scripting/source/basprov/basscript.hxx scripting/source/dlgprov/dlgprov.cxx scripting/source/inc/util/util.hxx scripting/source/protocolhandler/scripthandler.cxx scripting/source/provider/ProviderCache.cxx scripting/source/pyprov/makefile.mk scripting/source/runtimemgr/ScriptNameResolverImpl.cxx scripting/source/runtimemgr/ScriptRuntimeManager.cxx scripting/source/runtimemgr/StorageBridge.cxx scripting/source/storage/ScriptMetadataImporter.cxx scripting/source/storage/ScriptSecurityManager.cxx scripting/source/storage/ScriptStorage.cxx scripting/source/storage/ScriptStorageManager.cxx sfx2/inc/about.hxx sfx2/inc/brokenpackageint.hxx sfx2/inc/docvor.hxx sfx2/inc/pch/precompiled_sfx2.hxx sfx2/inc/sfx2/app.hxx sfx2/inc/sfx2/basmgr.hxx sfx2/inc/sfx2/bindings.hxx sfx2/inc/sfx2/childwin.hxx sfx2/inc/sfx2/ctrlitem.hxx sfx2/inc/sfx2/dinfdlg.hxx sfx2/inc/sfx2/dispatch.hxx sfx2/inc/sfx2/docfilt.hxx sfx2/inc/sfx2/evntconf.hxx sfx2/inc/sfx2/fcontnr.hxx sfx2/inc/sfx2/frame.hxx sfx2/inc/sfx2/imagemgr.hxx sfx2/inc/sfx2/imgmgr.hxx sfx2/inc/sfx2/linksrc.hxx sfx2/inc/sfx2/macrconf.hxx sfx2/inc/sfx2/macropg.hxx sfx2/inc/sfx2/mnuitem.hxx sfx2/inc/sfx2/mnumgr.hxx sfx2/inc/sfx2/module.hxx sfx2/inc/sfx2/msg.hxx sfx2/inc/sfx2/objsh.hxx sfx2/inc/sfx2/passwd.hxx sfx2/inc/sfx2/prnmon.hxx sfx2/inc/sfx2/request.hxx sfx2/inc/sfx2/sfx.hrc sfx2/inc/sfx2/sfxbasemodel.hxx sfx2/inc/sfx2/sfxhtml.hxx sfx2/inc/sfx2/sfxresid.hxx sfx2/inc/sfx2/sfxsids.hrc sfx2/inc/sfx2/sfxuno.hxx sfx2/inc/sfx2/shell.hxx sfx2/inc/sfx2/stbitem.hxx sfx2/inc/sfx2/styfitem.hxx sfx2/inc/sfx2/tabdlg.hxx sfx2/inc/sfx2/tbxctrl.hxx sfx2/inc/sfx2/tplpitem.hxx sfx2/inc/sfx2/viewfrm.hxx sfx2/inc/sfx2/viewsh.hxx sfx2/inc/sfxbasic.hxx sfx2/inc/sorgitm.hxx sfx2/prj/build.lst sfx2/qa/complex/docinfo/makefile.mk sfx2/qa/cppunit/makefile.mk sfx2/sdi/makefile.mk sfx2/source/appl/app.cxx sfx2/source/appl/app.hrc sfx2/source/appl/app.src sfx2/source/appl/appbas.cxx sfx2/source/appl/appcfg.cxx sfx2/source/appl/appchild.cxx sfx2/source/appl/appmain.cxx sfx2/source/appl/appmisc.cxx sfx2/source/appl/appopen.cxx sfx2/source/appl/appquit.cxx sfx2/source/appl/appserv.cxx sfx2/source/appl/appuno.cxx sfx2/source/appl/childwin.cxx sfx2/source/appl/fileobj.cxx sfx2/source/appl/helpinterceptor.cxx sfx2/source/appl/imagemgr.cxx sfx2/source/appl/impldde.cxx sfx2/source/appl/impldde.hxx sfx2/source/appl/linkmgr2.cxx sfx2/source/appl/lnkbase2.cxx sfx2/source/appl/makefile.mk sfx2/source/appl/module.cxx sfx2/source/appl/newhelp.cxx sfx2/source/appl/opengrf.cxx sfx2/source/appl/sfxdll.cxx sfx2/source/appl/sfxhelp.cxx sfx2/source/appl/shutdownicon.cxx sfx2/source/appl/shutdowniconunx.cxx sfx2/source/appl/workwin.cxx sfx2/source/bastyp/fltfnc.cxx sfx2/source/bastyp/frmhtml.cxx sfx2/source/bastyp/frmhtmlw.cxx sfx2/source/bastyp/helper.cxx sfx2/source/bastyp/minarray.cxx sfx2/source/bastyp/progress.cxx sfx2/source/bastyp/sfxhtml.cxx sfx2/source/config/evntconf.cxx sfx2/source/control/bindings.cxx sfx2/source/control/ctrlitem.cxx sfx2/source/control/dispatch.cxx sfx2/source/control/macrconf.cxx sfx2/source/control/macro.cxx sfx2/source/control/makefile.mk sfx2/source/control/minfitem.cxx sfx2/source/control/msg.cxx sfx2/source/control/msgpool.cxx sfx2/source/control/objface.cxx sfx2/source/control/request.cxx sfx2/source/control/shell.cxx sfx2/source/control/sorgitm.cxx sfx2/source/dialog/about.cxx sfx2/source/dialog/basedlgs.cxx sfx2/source/dialog/dinfdlg.cxx sfx2/source/dialog/dinfedt.cxx sfx2/source/dialog/dockwin.cxx sfx2/source/dialog/filedlghelper.cxx sfx2/source/dialog/mailmodel.cxx sfx2/source/dialog/mailmodelapi.cxx sfx2/source/dialog/makefile.mk sfx2/source/dialog/mgetempl.cxx sfx2/source/dialog/passwd.cxx sfx2/source/dialog/passwd.hrc sfx2/source/dialog/printopt.cxx sfx2/source/dialog/securitypage.cxx sfx2/source/dialog/splitwin.cxx sfx2/source/dialog/styfitem.cxx sfx2/source/dialog/tabdlg.cxx sfx2/source/dialog/taskpane.cxx sfx2/source/dialog/templdlg.cxx sfx2/source/dialog/tplpitem.cxx sfx2/source/dialog/versdlg.cxx sfx2/source/doc/QuerySaveDocument.cxx sfx2/source/doc/SfxDocumentMetaData.cxx sfx2/source/doc/applet.cxx sfx2/source/doc/doc.hrc sfx2/source/doc/doc.src sfx2/source/doc/docfile.cxx sfx2/source/doc/docinf.cxx sfx2/source/doc/doctempl.cxx sfx2/source/doc/doctemplates.cxx sfx2/source/doc/docvor.cxx sfx2/source/doc/guisaveas.cxx sfx2/source/doc/makefile.mk sfx2/source/doc/objcont.cxx sfx2/source/doc/objitem.cxx sfx2/source/doc/objmisc.cxx sfx2/source/doc/objserv.cxx sfx2/source/doc/printhelper.cxx sfx2/source/doc/sfxacldetect.cxx sfx2/source/doc/sfxbasemodel.cxx sfx2/source/inc/applet.hxx sfx2/source/inc/fltoptint.hxx sfx2/source/inc/sfxlocal.hrc sfx2/source/inc/virtmenu.hxx sfx2/source/inc/workwin.hxx sfx2/source/menu/mnuitem.cxx sfx2/source/menu/objmnctl.cxx sfx2/source/menu/virtmenu.cxx sfx2/source/notify/eventsupplier.cxx sfx2/source/notify/makefile.mk sfx2/source/toolbox/imgmgr.cxx sfx2/source/toolbox/tbxitem.cxx sfx2/source/view/frame.cxx sfx2/source/view/orgmgr.cxx sfx2/source/view/printer.cxx sfx2/source/view/prnmon.cxx sfx2/source/view/viewfrm.cxx sfx2/source/view/viewprn.cxx sfx2/source/view/viewsh.cxx sfx2/util/makefile.mk sfx2/workben/custompanel/makefile.mk shell/source/backends/desktopbe/desktopbackend.cxx shell/source/backends/gconfbe/gconfbackend.cxx shell/source/backends/kde4be/kde4backend.cxx shell/source/backends/kdebe/kdebackend.cxx shell/source/win32/SysShentry.cxx shell/source/win32/shlxthandler/propsheets/propsheets.cxx shell/source/win32/simplemail/smplmailentry.cxx svx/inc/float3d.hrc svx/inc/fmhelp.hrc svx/inc/globlmn_tmpl.hrc svx/inc/helpid.hrc svx/inc/pch/precompiled_svx.hxx svx/inc/sjctrl.hxx svx/inc/srchitem.hxx svx/inc/svdibrow.hxx svx/inc/svx/SmartTagItem.hxx svx/inc/svx/algitem.hxx svx/inc/svx/camera3d.hxx svx/inc/svx/chrtitem.hxx svx/inc/svx/clipfmtitem.hxx svx/inc/svx/ctredlin.hxx svx/inc/svx/dbtoolsclient.hxx svx/inc/svx/deflt3d.hxx svx/inc/svx/dialogs.hrc svx/inc/svx/drawitem.hxx svx/inc/svx/e3ditem.hxx svx/inc/svx/extrud3d.hxx svx/inc/svx/flagsdef.hxx svx/inc/svx/float3d.hxx svx/inc/svx/frmsel.hxx svx/inc/svx/gallery.hxx svx/inc/svx/gallery1.hxx svx/inc/svx/galtheme.hxx svx/inc/svx/grfcrop.hxx svx/inc/svx/hdft.hxx svx/inc/svx/hlnkitem.hxx svx/inc/svx/hyprlink.hxx svx/inc/svx/itemwin.hxx svx/inc/svx/lathe3d.hxx svx/inc/svx/linkwarn.hxx svx/inc/svx/modctrl.hxx svx/inc/svx/msdffdef.hxx svx/inc/svx/obj3d.hxx svx/inc/svx/optgenrl.hxx svx/inc/svx/optgrid.hxx svx/inc/svx/pageitem.hxx svx/inc/svx/paraprev.hxx svx/inc/svx/postattr.hxx svx/inc/svx/rotmodit.hxx svx/inc/svx/ruler.hxx svx/inc/svx/rulritem.hxx svx/inc/svx/scene3d.hxx svx/inc/svx/sdasaitm.hxx svx/inc/svx/sdasitm.hxx svx/inc/svx/sdggaitm.hxx svx/inc/svx/sdmetitm.hxx svx/inc/svx/sdtaaitm.hxx svx/inc/svx/sdtaditm.hxx svx/inc/svx/sdtaitm.hxx svx/inc/svx/sdtakitm.hxx svx/inc/svx/sdtfchim.hxx svx/inc/svx/sdtfsitm.hxx svx/inc/svx/srchdlg.hxx svx/inc/svx/svddrag.hxx svx/inc/svx/svdetc.hxx svx/inc/svx/svdglue.hxx svx/inc/svx/svdhlpln.hxx svx/inc/svx/svdlayer.hxx svx/inc/svx/svdmark.hxx svx/inc/svx/svdmodel.hxx svx/inc/svx/svdoashp.hxx svx/inc/svx/svdobj.hxx svx/inc/svx/svdocirc.hxx svx/inc/svx/svdoedge.hxx svx/inc/svx/svdogrp.hxx svx/inc/svx/svdomeas.hxx svx/inc/svx/svdoole2.hxx svx/inc/svx/svdorect.hxx svx/inc/svx/svdotable.hxx svx/inc/svx/svdotext.hxx svx/inc/svx/svdovirt.hxx svx/inc/svx/svdpage.hxx svx/inc/svx/svdsnpv.hxx svx/inc/svx/svdtrans.hxx svx/inc/svx/svdundo.hxx svx/inc/svx/svimbase.hxx svx/inc/svx/svx3ditems.hxx svx/inc/svx/svxdlg.hxx svx/inc/svx/sxcikitm.hxx svx/inc/svx/sxekitm.hxx svx/inc/svx/sxelditm.hxx svx/inc/svx/sxenditm.hxx svx/inc/svx/sxmkitm.hxx svx/inc/svx/sxmtpitm.hxx svx/inc/svx/sxmuitm.hxx svx/inc/svx/tabarea.hxx svx/inc/svx/tabline.hxx svx/inc/svx/unoprov.hxx svx/inc/svx/viewlayoutitem.hxx svx/inc/svx/xbitmap.hxx svx/inc/svx/xbtmpit.hxx svx/inc/svx/xcolit.hxx svx/inc/svx/xfillit0.hxx svx/inc/svx/xflclit.hxx svx/inc/svx/xflftrit.hxx svx/inc/svx/xflgrit.hxx svx/inc/svx/xflhtit.hxx svx/inc/svx/xftadit.hxx svx/inc/svx/xftsfit.hxx svx/inc/svx/xftshit.hxx svx/inc/svx/xlineit0.hxx svx/inc/svx/xlinjoit.hxx svx/inc/svx/xlnclit.hxx svx/inc/svx/xlndsit.hxx svx/inc/svx/xlnedcit.hxx svx/inc/svx/xlnedit.hxx svx/inc/svx/xlnedwit.hxx svx/inc/svx/xlnstcit.hxx svx/inc/svx/xlnstit.hxx svx/inc/svx/xlnstwit.hxx svx/inc/svx/xlnwtit.hxx svx/inc/svx/xtextit0.hxx svx/inc/svx/zoomitem.hxx svx/inc/svx/zoomslideritem.hxx svx/inc/xpolyimp.hxx svx/inc/zoom_def.hxx svx/prj/d.lst svx/source/accessibility/AccessibleShape.cxx svx/source/accessibility/DescriptionGenerator.cxx svx/source/customshapes/EnhancedCustomShapeEngine.cxx svx/source/customshapes/EnhancedCustomShapeFontWork.cxx svx/source/dialog/_bmpmask.cxx svx/source/dialog/_contdlg.cxx svx/source/dialog/connctrl.cxx svx/source/dialog/contwnd.cxx svx/source/dialog/ctredlin.cxx svx/source/dialog/ctredlin.hrc svx/source/dialog/ctredlin.src svx/source/dialog/dialcontrol.cxx svx/source/dialog/dlgctrl.cxx svx/source/dialog/docrecovery.cxx svx/source/dialog/fntctrl.cxx svx/source/dialog/fontwork.cxx svx/source/dialog/frmsel.cxx svx/source/dialog/graphctl.cxx svx/source/dialog/grfflt.cxx svx/source/dialog/hdft.cxx svx/source/dialog/hyperdlg.cxx svx/source/dialog/hyprdlg.hxx svx/source/dialog/hyprlink.cxx svx/source/dialog/hyprlink.hxx svx/source/dialog/hyprlink.src svx/source/dialog/imapdlg.cxx svx/source/dialog/imapwnd.cxx svx/source/dialog/linkwarn.hrc svx/source/dialog/makefile.mk svx/source/dialog/optgrid.cxx svx/source/dialog/orienthelper.cxx svx/source/dialog/pagectrl.cxx svx/source/dialog/prtqry.cxx svx/source/dialog/rlrcitem.cxx svx/source/dialog/rubydialog.cxx svx/source/dialog/rulritem.cxx svx/source/dialog/simptabl.cxx svx/source/dialog/srchdlg.cxx svx/source/dialog/svxbmpnumvalueset.cxx svx/source/dialog/svxruler.cxx svx/source/dialog/swframeexample.cxx svx/source/engine3d/float3d.cxx svx/source/engine3d/float3d.src svx/source/engine3d/svx3ditems.cxx svx/source/fmcomp/gridctrl.cxx svx/source/fmcomp/trace.cxx svx/source/form/ParseContext.cxx svx/source/form/datanavi.cxx svx/source/form/filtnav.cxx svx/source/form/fmexch.cxx svx/source/form/fmexpl.cxx svx/source/form/fmobjfac.cxx svx/source/form/fmpage.cxx svx/source/form/fmshell.cxx svx/source/form/fmshimp.cxx svx/source/form/fmsrcimp.cxx svx/source/form/fmvwimp.cxx svx/source/form/makefile.mk svx/source/form/tabwin.cxx svx/source/form/tbxform.cxx svx/source/form/typemap.cxx svx/source/gallery2/galbrws1.cxx svx/source/gallery2/galbrws2.cxx svx/source/gallery2/galexpl.cxx svx/source/gallery2/gallery1.cxx svx/source/gallery2/galtheme.cxx svx/source/gallery2/makefile.mk svx/source/gengal/gengal.cxx svx/source/gengal/makefile.mk svx/source/inc/fmgroup.hxx svx/source/intro/about_ooo.hrc svx/source/intro/iso.src svx/source/intro/ooo.src svx/source/items/SmartTagItem.cxx svx/source/items/algitem.cxx svx/source/items/chrtitem.cxx svx/source/items/clipfmtitem.cxx svx/source/items/customshapeitem.cxx svx/source/items/drawitem.cxx svx/source/items/e3ditem.cxx svx/source/items/grfitem.cxx svx/source/items/hlnkitem.cxx svx/source/items/makefile.mk svx/source/items/pageitem.cxx svx/source/items/rotmodit.cxx svx/source/items/viewlayoutitem.cxx svx/source/items/zoomitem.cxx svx/source/items/zoomslideritem.cxx svx/source/src/app.hrc svx/source/stbctrls/makefile.mk svx/source/stbctrls/modctrl.cxx svx/source/stbctrls/xmlsecctrl.cxx svx/source/stbctrls/zoomctrl.cxx svx/source/svdraw/clonelist.cxx svx/source/svdraw/svdattr.cxx svx/source/svdraw/svdcrtv.cxx svx/source/svdraw/svdedtv1.cxx svx/source/svdraw/svdedtv2.cxx svx/source/svdraw/svdedxv.cxx svx/source/svdraw/svdetc.cxx svx/source/svdraw/svdfmtf.cxx svx/source/svdraw/svdfmtf.hxx svx/source/svdraw/svdglue.cxx svx/source/svdraw/svdhdl.cxx svx/source/svdraw/svdhlpln.cxx svx/source/svdraw/svdibrow.cxx svx/source/svdraw/svdlayer.cxx svx/source/svdraw/svdmodel.cxx svx/source/svdraw/svdoashp.cxx svx/source/svdraw/svdobj.cxx svx/source/svdraw/svdocapt.cxx svx/source/svdraw/svdocirc.cxx svx/source/svdraw/svdoedge.cxx svx/source/svdraw/svdograf.cxx svx/source/svdraw/svdogrp.cxx svx/source/svdraw/svdomeas.cxx svx/source/svdraw/svdomedia.cxx svx/source/svdraw/svdopath.cxx svx/source/svdraw/svdotext.cxx svx/source/svdraw/svdotxdr.cxx svx/source/svdraw/svdotxed.cxx svx/source/svdraw/svdotxfl.cxx svx/source/svdraw/svdotxln.cxx svx/source/svdraw/svdotxtr.cxx svx/source/svdraw/svdoutl.cxx svx/source/svdraw/svdpage.cxx svx/source/svdraw/svdpagv.cxx svx/source/svdraw/svdpntv.cxx svx/source/svdraw/svdpoev.cxx svx/source/svdraw/svdsnpv.cxx svx/source/svdraw/svdstr.src svx/source/svdraw/svdtrans.cxx svx/source/svdraw/svdundo.cxx svx/source/svdraw/svdview.cxx svx/source/svdraw/svdxcgv.cxx svx/source/table/svdotable.cxx svx/source/tbxctrls/colorwindow.hxx svx/source/tbxctrls/extrusioncontrols.cxx svx/source/tbxctrls/fillctrl.cxx svx/source/tbxctrls/grafctrl.cxx svx/source/tbxctrls/itemwin.cxx svx/source/tbxctrls/layctrl.cxx svx/source/tbxctrls/lboxctrl.cxx svx/source/tbxctrls/linectrl.cxx svx/source/tbxctrls/tbcontrl.cxx svx/source/tbxctrls/verttexttbxctrl.cxx svx/source/unodraw/unomod.cxx svx/source/unodraw/unopage.cxx svx/source/unodraw/unoprov.cxx svx/source/unodraw/unoshape.cxx svx/source/unodraw/unoshtxt.cxx svx/source/xml/xmlxtexp.cxx svx/source/xoutdev/_xpoly.cxx svx/source/xoutdev/xattr.cxx svx/source/xoutdev/xattr2.cxx svx/source/xoutdev/xattrbmp.cxx svx/source/xoutdev/xtabcolr.cxx svx/util/makefile.mk svx/workben/edittest.cxx sysui/desktop/productversion.mk ucb/prj/build.lst ucb/source/cacher/cacheserv.cxx ucb/source/core/ucb1.component ucb/source/core/ucbserv.cxx ucb/source/core/ucbstore.cxx ucb/source/core/ucbstore.hxx ucb/source/sorter/sortmain.cxx ucb/source/ucp/file/prov.cxx ucb/source/ucp/file/shell.cxx ucb/source/ucp/ftp/ftpservices.cxx ucb/source/ucp/gio/gio_provider.cxx ucb/source/ucp/gvfs/gvfs_provider.cxx ucb/source/ucp/hierarchy/hierarchyservices.cxx ucb/source/ucp/odma/odma_lib.cxx ucb/source/ucp/odma/odma_services.cxx ucb/source/ucp/package/pkgservices.cxx ucb/source/ucp/tdoc/tdoc_services.cxx ucb/source/ucp/webdav/ContentProperties.cxx ucb/source/ucp/webdav/NeonHeadRequest.cxx ucb/source/ucp/webdav/webdavcontent.cxx ucb/source/ucp/webdav/webdavservices.cxx uui/source/iahndl.cxx uui/source/iahndl.hxx uui/source/loginerr.hxx uui/source/nameclashdlg.hxx uui/source/passcrtdlg.cxx uui/source/passworddlg.cxx uui/source/passworddlg.hxx uui/source/services.cxx vbahelper/inc/vbahelper/vbahelper.hxx vbahelper/prj/build.lst vbahelper/prj/d.lst vbahelper/source/msforms/makefile.mk vbahelper/source/msforms/vbauserform.cxx vbahelper/source/vbahelper/makefile.mk vbahelper/source/vbahelper/vbaapplicationbase.cxx vbahelper/source/vbahelper/vbacommandbarcontrol.cxx vbahelper/source/vbahelper/vbadocumentbase.cxx vbahelper/source/vbahelper/vbadocumentsbase.cxx vbahelper/source/vbahelper/vbahelper.cxx vbahelper/util/makefile.mk xmlhelp/source/cxxhelp/provider/databases.cxx xmlhelp/source/cxxhelp/provider/services.cxx xmlhelp/source/treeview/tvfactory.cxx xmloff/JunitTest_xmloff_unoapi.mk xmloff/inc/functional.hxx xmloff/inc/xmloff/formlayerexport.hxx xmloff/inc/xmloff/formlayerimport.hxx xmloff/inc/xmloff/functional.hxx xmloff/inc/xmloff/shapeimport.hxx xmloff/inc/xmloff/xmlcnitm.hxx xmloff/inc/xmloff/xmlnumfi.hxx xmloff/prj/build.lst xmloff/source/chart/SchXMLChartContext.cxx xmloff/source/chart/SchXMLExport.cxx xmloff/source/chart/SchXMLImport.cxx xmloff/source/chart/SchXMLLegendContext.hxx xmloff/source/chart/SchXMLPlotAreaContext.cxx xmloff/source/core/xmluconv.cxx xmloff/source/draw/sdxmlexp.cxx xmloff/source/draw/shapeexport4.cxx xmloff/source/draw/ximp3dobject.cxx xmloff/source/draw/ximp3dscene.cxx xmloff/source/forms/formlayerexport.cxx xmloff/source/forms/formlayerimport.cxx xmloff/source/forms/handler/vcl_time_handler.hxx xmloff/source/forms/layerimport.cxx xmloff/source/forms/layerimport.hxx xmloff/source/forms/property_meta_data.hxx xmloff/source/style/PageHeaderFooterContext.cxx xmloff/source/style/PageMasterStyleMap.cxx xmloff/source/style/prstylei.cxx xmloff/source/style/xmlimppr.cxx xmloff/source/style/xmlnumfi.cxx xmloff/source/style/xmlstyle.cxx xmloff/source/table/tabledesignsimporter.cxx xmloff/source/text/XMLTextNumRuleInfo.cxx xmloff/source/text/XMLTextShapeStyleContext.cxx xmloff/source/text/txtstyle.cxx xmloff/source/transform/ChartOOoTContext.cxx xmloff/source/transform/EventOOoTContext.cxx xmloff/source/transform/TransformerBase.cxx xmloff/util/makefile.mk xmlscript/util/xcr.component
1494 lines
55 KiB
C++
Executable File
1494 lines
55 KiB
C++
Executable File
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* This file is part of OpenOffice.org.
|
|
*
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
* only, as published by the Free Software Foundation.
|
|
*
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License version 3 for more details
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
* <http://www.openoffice.org/license.html>
|
|
* for a copy of the LGPLv3 License.
|
|
*
|
|
************************************************************************/
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
#include "precompiled_xmloff.hxx"
|
|
|
|
#include <tools/debug.hxx>
|
|
#include <tools/time.hxx>
|
|
#include "unointerfacetouniqueidentifiermapper.hxx"
|
|
#include <com/sun/star/lang/XServiceInfo.hpp>
|
|
#include <com/sun/star/lang/XInitialization.hpp>
|
|
#include <com/sun/star/animations/AnimationTransformType.hpp>
|
|
#include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
|
|
#include <com/sun/star/presentation/AnimationEffect.hpp>
|
|
#include <com/sun/star/presentation/AnimationSpeed.hpp>
|
|
#include <com/sun/star/animations/AnimationNodeType.hpp>
|
|
#include <com/sun/star/animations/XIterateContainer.hpp>
|
|
#include <com/sun/star/animations/XAnimateMotion.hpp>
|
|
#include <com/sun/star/animations/XAnimateColor.hpp>
|
|
#include <com/sun/star/animations/XAnimateTransform.hpp>
|
|
#include <com/sun/star/animations/XTransitionFilter.hpp>
|
|
#include <com/sun/star/animations/XCommand.hpp>
|
|
#include <com/sun/star/animations/XAudio.hpp>
|
|
#include <com/sun/star/animations/ValuePair.hpp>
|
|
#include <com/sun/star/animations/AnimationColorSpace.hpp>
|
|
#include <com/sun/star/presentation/EffectPresetClass.hpp>
|
|
#include <com/sun/star/animations/Timing.hpp>
|
|
#include <com/sun/star/animations/Event.hpp>
|
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
|
#include <com/sun/star/xml/sax/XAttributeList.hpp>
|
|
#include <com/sun/star/text/XTextCursor.hpp>
|
|
#include <com/sun/star/text/XTextRangeCompare.hpp>
|
|
#include <com/sun/star/presentation/ParagraphTarget.hpp>
|
|
#include <com/sun/star/container/XEnumerationAccess.hpp>
|
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
|
#include <com/sun/star/animations/EventTrigger.hpp>
|
|
#include <com/sun/star/presentation/EffectCommands.hpp>
|
|
#include <comphelper/processfactory.hxx>
|
|
#include <cppuhelper/implbase1.hxx>
|
|
|
|
#include <list>
|
|
#include <xmloff/xmltypes.hxx>
|
|
#include "sdpropls.hxx"
|
|
#include <xmloff/xmltoken.hxx>
|
|
#include <xmloff/xmlimp.hxx>
|
|
#include "xmloff/xmlnmspe.hxx"
|
|
#include <xmloff/xmluconv.hxx>
|
|
#include <osl/mutex.hxx>
|
|
#include <xmloff/nmspmap.hxx>
|
|
#include "anim.hxx"
|
|
|
|
#include "animations.hxx"
|
|
#include "animationimport.hxx"
|
|
|
|
using ::rtl::OUString;
|
|
using ::rtl::OUStringBuffer;
|
|
|
|
using namespace ::std;
|
|
using namespace ::cppu;
|
|
using namespace ::com::sun::star::beans;
|
|
using namespace ::com::sun::star::animations;
|
|
using namespace ::com::sun::star::presentation;
|
|
using namespace ::com::sun::star::drawing;
|
|
using namespace ::xmloff::token;
|
|
|
|
using ::com::sun::star::xml::sax::XAttributeList;
|
|
using ::com::sun::star::uno::Any;
|
|
using ::com::sun::star::uno::makeAny;
|
|
using ::com::sun::star::uno::UNO_QUERY;
|
|
using ::com::sun::star::uno::UNO_QUERY_THROW;
|
|
using ::com::sun::star::uno::Reference;
|
|
using ::com::sun::star::uno::Sequence;
|
|
using ::com::sun::star::uno::RuntimeException;
|
|
using ::com::sun::star::uno::Exception;
|
|
using ::com::sun::star::uno::XInterface;
|
|
using ::com::sun::star::uno::Type;
|
|
using ::com::sun::star::beans::NamedValue;
|
|
using ::com::sun::star::text::XTextRange;
|
|
using ::com::sun::star::text::XTextCursor;
|
|
using ::com::sun::star::text::XTextRangeCompare;
|
|
using ::com::sun::star::container::XEnumerationAccess;
|
|
using ::com::sun::star::container::XEnumeration;
|
|
using ::com::sun::star::lang::XMultiServiceFactory;
|
|
using ::com::sun::star::lang::XInitialization;
|
|
|
|
namespace xmloff
|
|
{
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
class AnimationsImportHelperImpl
|
|
{
|
|
private:
|
|
SvXMLImport& mrImport;
|
|
|
|
SvXMLTokenMap* mpAnimationNodeTokenMap;
|
|
SvXMLTokenMap* mpAnimationNodeAttributeTokenMap;
|
|
|
|
public:
|
|
AnimationsImportHelperImpl( SvXMLImport& rImport );
|
|
~AnimationsImportHelperImpl();
|
|
|
|
const SvXMLTokenMap& getAnimationNodeTokenMap();
|
|
const SvXMLTokenMap& getAnimationNodeAttributeTokenMap();
|
|
|
|
Any convertValue( XMLTokenEnum eAttributeName, const OUString& rValue );
|
|
Sequence< Any > convertValueSequence( XMLTokenEnum eAttributeName, const OUString& rValue );
|
|
|
|
Any convertTarget( const OUString& rValue );
|
|
Any convertPath( const OUString& rValue );
|
|
Any convertTiming( const OUString& rValue );
|
|
Sequence< double > convertKeyTimes( const OUString& rValue );
|
|
Sequence< TimeFilterPair > convertTimeFilter( const OUString& rValue );
|
|
|
|
bool convertAnimationValue( XMLTokenEnum eAttributeName, Any& rValue );
|
|
const OUString mastrHSL;
|
|
};
|
|
|
|
AnimationsImportHelperImpl::AnimationsImportHelperImpl( SvXMLImport& rImport )
|
|
: mrImport( rImport ),
|
|
mpAnimationNodeTokenMap( NULL ),
|
|
mpAnimationNodeAttributeTokenMap( NULL ),
|
|
mastrHSL( RTL_CONSTASCII_USTRINGPARAM( "hsl" ) )
|
|
{
|
|
}
|
|
|
|
AnimationsImportHelperImpl::~AnimationsImportHelperImpl()
|
|
{
|
|
delete mpAnimationNodeTokenMap;
|
|
delete mpAnimationNodeAttributeTokenMap;
|
|
}
|
|
|
|
const SvXMLTokenMap& AnimationsImportHelperImpl::getAnimationNodeTokenMap()
|
|
{
|
|
if( mpAnimationNodeTokenMap == NULL )
|
|
{
|
|
static SvXMLTokenMapEntry aAnimationNodeTokenMap[] =
|
|
{
|
|
{ XML_NAMESPACE_ANIMATION, XML_PAR, (sal_uInt16)AnimationNodeType::PAR },
|
|
{ XML_NAMESPACE_ANIMATION, XML_SEQ, (sal_uInt16)AnimationNodeType::SEQ },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ITERATE, (sal_uInt16)AnimationNodeType::ITERATE },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ANIMATE, (sal_uInt16)AnimationNodeType::ANIMATE },
|
|
{ XML_NAMESPACE_ANIMATION, XML_SET, (sal_uInt16)AnimationNodeType::SET },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ANIMATEMOTION, (sal_uInt16)AnimationNodeType::ANIMATEMOTION },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ANIMATECOLOR, (sal_uInt16)AnimationNodeType::ANIMATECOLOR },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ANIMATETRANSFORM, (sal_uInt16)AnimationNodeType::ANIMATETRANSFORM },
|
|
{ XML_NAMESPACE_ANIMATION, XML_TRANSITIONFILTER, (sal_uInt16)AnimationNodeType::TRANSITIONFILTER },
|
|
{ XML_NAMESPACE_ANIMATION, XML_AUDIO, (sal_uInt16)AnimationNodeType::AUDIO },
|
|
{ XML_NAMESPACE_ANIMATION, XML_COMMAND, (sal_uInt16)AnimationNodeType::COMMAND },
|
|
XML_TOKEN_MAP_END
|
|
};
|
|
|
|
mpAnimationNodeTokenMap = new SvXMLTokenMap( aAnimationNodeTokenMap );
|
|
}
|
|
|
|
return *mpAnimationNodeTokenMap;
|
|
}
|
|
|
|
enum AnimationNodeAttributes
|
|
{
|
|
ANA_Begin,
|
|
ANA_Dur,
|
|
ANA_End,
|
|
ANA_Fill,
|
|
ANA_FillDefault,
|
|
ANA_Restart,
|
|
ANA_RestartDefault,
|
|
ANA_Accelerate,
|
|
ANA_Decelerate,
|
|
ANA_AutoReverse,
|
|
ANA_RepeatCount,
|
|
ANA_RepeatDur,
|
|
ANA_EndSync,
|
|
ANA_Node_Type,
|
|
ANA_Preset_ID,
|
|
ANA_Preset_Sub_Type,
|
|
ANA_Preset_Class,
|
|
ANA_After_Effect,
|
|
ANA_Target,
|
|
ANA_XLink,
|
|
ANA_MasterElement,
|
|
ANA_SubItem,
|
|
ANA_AttributeName,
|
|
ANA_Values,
|
|
ANA_From,
|
|
ANA_By,
|
|
ANA_To,
|
|
ANA_KeyTimes,
|
|
ANA_CalcMode,
|
|
ANA_Accumulate,
|
|
ANA_AdditiveMode,
|
|
ANA_KeySplines,
|
|
ANA_Path,
|
|
ANA_ColorSpace,
|
|
ANA_ColorDirection,
|
|
ANA_TransformType,
|
|
ANA_TransitionType,
|
|
ANA_TransitionSubType,
|
|
ANA_Mode,
|
|
ANA_Direction,
|
|
ANA_FadeColor,
|
|
ANA_IterateType,
|
|
ANA_IterateInterval,
|
|
ANA_Formula,
|
|
ANA_ANIMID,
|
|
ANA_XMLID,
|
|
ANA_Group_Id,
|
|
ANA_Command,
|
|
ANA_Volume
|
|
};
|
|
|
|
const SvXMLTokenMap& AnimationsImportHelperImpl::getAnimationNodeAttributeTokenMap()
|
|
{
|
|
if( mpAnimationNodeAttributeTokenMap == NULL )
|
|
{
|
|
static SvXMLTokenMapEntry aAnimationNodeAttributeTokenMap[] =
|
|
{
|
|
{ XML_NAMESPACE_SMIL, XML_BEGIN, (sal_uInt16)ANA_Begin },
|
|
{ XML_NAMESPACE_SMIL, XML_DUR, (sal_uInt16)ANA_Dur },
|
|
{ XML_NAMESPACE_SMIL, XML_END, (sal_uInt16)ANA_End },
|
|
{ XML_NAMESPACE_SMIL, XML_FILL, (sal_uInt16)ANA_Fill },
|
|
{ XML_NAMESPACE_SMIL, XML_FILLDEFAULT, (sal_uInt16)ANA_FillDefault },
|
|
{ XML_NAMESPACE_SMIL, XML_RESTART, (sal_uInt16)ANA_Restart },
|
|
{ XML_NAMESPACE_SMIL, XML_RESTARTDEFAULT, (sal_uInt16)ANA_RestartDefault },
|
|
{ XML_NAMESPACE_SMIL, XML_ACCELERATE, (sal_uInt16)ANA_Accelerate },
|
|
{ XML_NAMESPACE_SMIL, XML_DECELERATE, (sal_uInt16)ANA_Decelerate },
|
|
{ XML_NAMESPACE_SMIL, XML_AUTOREVERSE, (sal_uInt16)ANA_AutoReverse },
|
|
{ XML_NAMESPACE_SMIL, XML_REPEATCOUNT, (sal_uInt16)ANA_RepeatCount },
|
|
{ XML_NAMESPACE_SMIL, XML_REPEATDUR, (sal_uInt16)ANA_RepeatDur },
|
|
{ XML_NAMESPACE_SMIL, XML_ENDSYNC, (sal_uInt16)ANA_EndSync },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_NODE_TYPE, (sal_uInt16)ANA_Node_Type },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_PRESET_ID, (sal_uInt16)ANA_Preset_ID },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_PRESET_SUB_TYPE, (sal_uInt16)ANA_Preset_Sub_Type },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_PRESET_CLASS, (sal_uInt16)ANA_Preset_Class },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_AFTER_EFFECT, (sal_uInt16)ANA_After_Effect },
|
|
{ XML_NAMESPACE_SMIL, XML_TARGETELEMENT, (sal_uInt16)ANA_Target },
|
|
{ XML_NAMESPACE_XLINK, XML_HREF, (sal_uInt16)ANA_XLink },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_MASTER_ELEMENT, (sal_uInt16)ANA_MasterElement },
|
|
{ XML_NAMESPACE_ANIMATION, XML_SUB_ITEM, (sal_uInt16)ANA_SubItem },
|
|
{ XML_NAMESPACE_SMIL, XML_ATTRIBUTENAME, (sal_uInt16)ANA_AttributeName },
|
|
{ XML_NAMESPACE_SMIL, XML_VALUES, (sal_uInt16)ANA_Values },
|
|
{ XML_NAMESPACE_SMIL, XML_FROM, (sal_uInt16)ANA_From },
|
|
{ XML_NAMESPACE_SMIL, XML_BY, (sal_uInt16)ANA_By },
|
|
{ XML_NAMESPACE_SMIL, XML_TO, (sal_uInt16)ANA_To },
|
|
{ XML_NAMESPACE_SMIL, XML_KEYTIMES, (sal_uInt16)ANA_KeyTimes },
|
|
{ XML_NAMESPACE_SMIL, XML_CALCMODE, (sal_uInt16)ANA_CalcMode },
|
|
{ XML_NAMESPACE_SMIL, XML_ACCUMULATE, (sal_uInt16)ANA_Accumulate },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_ADDITIVE, (sal_uInt16)ANA_AdditiveMode },
|
|
{ XML_NAMESPACE_SMIL, XML_ADDITIVE, (sal_uInt16)ANA_AdditiveMode },
|
|
{ XML_NAMESPACE_SMIL, XML_KEYSPLINES, (sal_uInt16)ANA_KeySplines },
|
|
{ XML_NAMESPACE_SVG, XML_PATH, (sal_uInt16)ANA_Path },
|
|
{ XML_NAMESPACE_ANIMATION, XML_COLOR_INTERPOLATION, (sal_uInt16)ANA_ColorSpace },
|
|
{ XML_NAMESPACE_ANIMATION, XML_COLOR_INTERPOLATION_DIRECTION, (sal_uInt16)ANA_ColorDirection },
|
|
{ XML_NAMESPACE_SVG, XML_TYPE, (sal_uInt16)ANA_TransformType },
|
|
{ XML_NAMESPACE_SMIL, XML_TYPE, (sal_uInt16)ANA_TransitionType },
|
|
{ XML_NAMESPACE_SMIL, XML_SUBTYPE, (sal_uInt16)ANA_TransitionSubType },
|
|
{ XML_NAMESPACE_SMIL, XML_MODE, (sal_uInt16)ANA_Mode },
|
|
{ XML_NAMESPACE_SMIL, XML_DIRECTION, (sal_uInt16)ANA_Direction },
|
|
{ XML_NAMESPACE_SMIL, XML_FADECOLOR, (sal_uInt16)ANA_FadeColor },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ITERATE_TYPE, (sal_uInt16)ANA_IterateType },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ITERATE_INTERVAL, (sal_uInt16)ANA_IterateInterval },
|
|
{ XML_NAMESPACE_ANIMATION, XML_FORMULA, (sal_uInt16)ANA_Formula },
|
|
{ XML_NAMESPACE_ANIMATION, XML_ID, (sal_uInt16)ANA_ANIMID },
|
|
{ XML_NAMESPACE_XML, XML_ID, (sal_uInt16)ANA_XMLID },
|
|
{ XML_NAMESPACE_PRESENTATION, XML_GROUP_ID, (sal_uInt16)ANA_Group_Id },
|
|
{ XML_NAMESPACE_ANIMATION, XML_AUDIO_LEVEL, (sal_uInt16)ANA_Volume },
|
|
{ XML_NAMESPACE_ANIMATION, XML_COMMAND, (sal_uInt16)ANA_Command },
|
|
|
|
XML_TOKEN_MAP_END
|
|
};
|
|
|
|
mpAnimationNodeAttributeTokenMap = new SvXMLTokenMap( aAnimationNodeAttributeTokenMap );
|
|
}
|
|
|
|
return *mpAnimationNodeAttributeTokenMap;
|
|
}
|
|
|
|
static bool isDouble( const OUString& rValue )
|
|
{
|
|
sal_Int32 nLength = rValue.getLength();
|
|
const sal_Unicode * pStr = rValue.getStr();
|
|
while( nLength )
|
|
{
|
|
if( (*pStr >= '0' && *pStr <= '9') || *pStr == '-' || *pStr == '.' || *pStr == '+' || *pStr == 'e' || *pStr == 'E' )
|
|
{
|
|
pStr++;
|
|
nLength--;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
static bool isTime( const OUString& rValue )
|
|
{
|
|
sal_Int32 nLength = rValue.getLength();
|
|
const sal_Unicode * pStr;
|
|
for( pStr = rValue.getStr(); nLength; pStr++, nLength-- )
|
|
{
|
|
if( !( (*pStr >= '0' && *pStr <= '9') || *pStr == '-' || *pStr == '.' || *pStr == '+' || *pStr == 'e' || *pStr == 'E' ) )
|
|
break;
|
|
}
|
|
|
|
// return true if this is a double (if someone forgot the 's' we silently ignore it)
|
|
// or if its a double that ends with a 's' or 'S'
|
|
return (nLength == 0) || ((*pStr == 's' || *pStr == 'S') && (nLength == 1));
|
|
}
|
|
|
|
static sal_Int32 count_codes( const OUString& rString, sal_Unicode nCode )
|
|
{
|
|
sal_Int32 nCount = 0;
|
|
sal_Int32 fromIndex = 0;
|
|
|
|
while(true)
|
|
{
|
|
fromIndex = rString.indexOf( nCode, fromIndex );
|
|
if( fromIndex == -1 )
|
|
break;
|
|
|
|
fromIndex++;
|
|
nCount++;
|
|
}
|
|
|
|
return nCount;
|
|
}
|
|
|
|
Any AnimationsImportHelperImpl::convertTarget( const OUString& rValue )
|
|
{
|
|
try
|
|
{
|
|
Reference< XInterface > xRef( mrImport.getInterfaceToIdentifierMapper().getReference( rValue ) );
|
|
|
|
Reference< XShape > _xShape( xRef, UNO_QUERY );
|
|
if( _xShape.is() )
|
|
return makeAny( _xShape );
|
|
|
|
Reference< XTextCursor > xTextCursor( xRef, UNO_QUERY );
|
|
if( xTextCursor.is() )
|
|
{
|
|
Reference< XTextRange > xStart( xTextCursor->getStart() ), xRange;
|
|
Reference< XShape > xShape( xTextCursor->getText(), UNO_QUERY_THROW );
|
|
Reference< XTextRangeCompare > xTextRangeCompare( xShape, UNO_QUERY_THROW );
|
|
|
|
Reference< XEnumerationAccess > xParaEnumAccess( xShape, UNO_QUERY_THROW );
|
|
Reference< XEnumeration > xEnumeration( xParaEnumAccess->createEnumeration(), UNO_QUERY_THROW );
|
|
sal_Int16 nParagraph = 0;
|
|
|
|
while( xEnumeration->hasMoreElements() )
|
|
{
|
|
xEnumeration->nextElement() >>= xRange;
|
|
|
|
// break if start of selection is prior to end of current paragraph
|
|
if( xRange.is() && (xTextRangeCompare->compareRegionEnds( xStart, xRange ) >= 0 ) )
|
|
{
|
|
return makeAny( ParagraphTarget( xShape, nParagraph ) );
|
|
}
|
|
|
|
nParagraph++;
|
|
}
|
|
}
|
|
}
|
|
catch( RuntimeException& )
|
|
{
|
|
OSL_FAIL( "xmloff::AnimationsImportImpl::convertTarget(), RuntimeException catched!" );
|
|
}
|
|
|
|
Any aAny;
|
|
return aAny;
|
|
}
|
|
|
|
Any AnimationsImportHelperImpl::convertValue( XMLTokenEnum eAttributeName, const OUString& rValue )
|
|
{
|
|
sal_Int32 nCommaPos = -1, nPos;
|
|
sal_Int32 nOpenBrakets = 0;
|
|
for( nPos = 0; (nPos < rValue.getLength()) && (nCommaPos == -1); nPos++ )
|
|
{
|
|
switch( rValue[nPos] )
|
|
{
|
|
case ',':
|
|
if( nOpenBrakets == 0 )
|
|
nCommaPos = nPos;
|
|
break;
|
|
case '(':
|
|
case '[':
|
|
case '{':
|
|
nOpenBrakets++;
|
|
break;
|
|
case ')':
|
|
case ']':
|
|
case '}':
|
|
nOpenBrakets--;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( nCommaPos >= 0 )
|
|
{
|
|
ValuePair aPair;
|
|
aPair.First = convertValue( eAttributeName, rValue.copy( 0, nCommaPos ) );
|
|
aPair.Second = convertValue( eAttributeName, rValue.copy( nCommaPos+1, rValue.getLength() - nCommaPos - 1 ) );
|
|
return makeAny( aPair );
|
|
}
|
|
else
|
|
{
|
|
Any aAny;
|
|
sal_Int32 nType = XML_TYPE_STRING;
|
|
|
|
if( rValue.getLength() ) switch( eAttributeName )
|
|
{
|
|
case XML_X:
|
|
case XML_Y:
|
|
case XML_WIDTH:
|
|
case XML_HEIGHT:
|
|
case XML_TRANSLATE:
|
|
{
|
|
return makeAny( rValue );
|
|
}
|
|
|
|
case XML_SCALE:
|
|
case XML_SKEWY:
|
|
case XML_SKEWX:
|
|
case XML_OPACITY:
|
|
case XML_ROTATE: nType = XML_TYPE_DOUBLE; break;
|
|
case XML_TEXT_ROTATION_ANGLE:nType = XML_TYPE_TEXT_ROTATION_ANGLE; break;
|
|
case XML_FILL_COLOR:
|
|
case XML_STROKE_COLOR:
|
|
case XML_DIM:
|
|
case XML_COLOR: nType = XML_TYPE_COLOR; break;
|
|
case XML_FILL: nType = XML_SD_TYPE_FILLSTYLE; break;
|
|
case XML_STROKE: nType = XML_SD_TYPE_STROKE; break;
|
|
case XML_FONT_WEIGHT: nType = XML_TYPE_TEXT_WEIGHT; break;
|
|
case XML_FONT_STYLE: nType = XML_TYPE_TEXT_POSTURE; break;
|
|
case XML_TEXT_UNDERLINE: nType = XML_TYPE_TEXT_UNDERLINE_STYLE; break;
|
|
case XML_FONT_SIZE: nType = XML_TYPE_DOUBLE_PERCENT; break;
|
|
case XML_VISIBILITY: nType = XML_SD_TYPE_PRESPAGE_VISIBILITY; break;
|
|
|
|
default:
|
|
if( rValue.getLength() )
|
|
aAny <<= rValue;
|
|
return aAny;
|
|
}
|
|
|
|
const XMLPropertyHandler* pHandler = mrImport.GetShapeImport()->GetSdPropHdlFactory()->GetPropertyHandler( nType );
|
|
if( pHandler )
|
|
pHandler->importXML( rValue, aAny, mrImport.GetMM100UnitConverter() );
|
|
|
|
return aAny;
|
|
}
|
|
}
|
|
|
|
Sequence< Any > AnimationsImportHelperImpl::convertValueSequence( XMLTokenEnum eAttributeName, const OUString& rValue )
|
|
{
|
|
Sequence< Any > aValues;
|
|
|
|
// do we have any value at all?
|
|
if( rValue.getLength() )
|
|
{
|
|
sal_Int32 nElements = count_codes( rValue, (sal_Unicode)';') + 1; // a non empty string has at least one value
|
|
|
|
// prepare the sequence
|
|
aValues.realloc( nElements );
|
|
|
|
// fill the sequence
|
|
Any* pValues = aValues.getArray();
|
|
sal_Int32 nIndex;
|
|
for( nIndex = 0; nElements && (nIndex >= 0); nElements-- )
|
|
{
|
|
*pValues++ = convertValue( eAttributeName, rValue.getToken( 0, ';', nIndex ) );
|
|
}
|
|
}
|
|
|
|
return aValues;
|
|
}
|
|
|
|
Any AnimationsImportHelperImpl::convertTiming( const OUString& rValue )
|
|
{
|
|
Any aAny;
|
|
|
|
// do we have any value at all?
|
|
if( rValue.getLength() )
|
|
{
|
|
// count the values
|
|
sal_Int32 nElements = count_codes( rValue, (sal_Unicode)';' ) + 1; // a non empty string has at least one value
|
|
|
|
if( nElements == 1 )
|
|
{
|
|
if( IsXMLToken( rValue, XML_MEDIA ) )
|
|
{
|
|
aAny <<= Timing_MEDIA;
|
|
}
|
|
else if( IsXMLToken( rValue, XML_INDEFINITE ) )
|
|
{
|
|
aAny <<= Timing_INDEFINITE;
|
|
}
|
|
else if( isTime( rValue ) )
|
|
{
|
|
aAny <<= rValue.toDouble();
|
|
}
|
|
else
|
|
{
|
|
Event aEvent;
|
|
aEvent.Repeat = 0;
|
|
aEvent.Trigger = 0;
|
|
|
|
OUString aEventTrigger;
|
|
|
|
sal_Int32 nPos = rValue.indexOf( (sal_Unicode)'+' );
|
|
if( nPos == -1 )
|
|
{
|
|
aEventTrigger = rValue;
|
|
}
|
|
else
|
|
{
|
|
aEventTrigger = rValue.copy( 0, nPos );
|
|
|
|
// convert offset
|
|
aEvent.Offset <<= convertTiming( rValue.copy( nPos + 1 ) );
|
|
}
|
|
|
|
nPos = aEventTrigger.indexOf( (sal_Unicode)'.' );
|
|
if( nPos != -1 )
|
|
{
|
|
aEvent.Source <<= mrImport.getInterfaceToIdentifierMapper().getReference( aEventTrigger.copy( 0, nPos ) );
|
|
aEventTrigger = aEventTrigger.copy( nPos + 1 );
|
|
}
|
|
|
|
sal_uInt16 nEnum;
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, aEventTrigger, getAnimationsEnumMap(Animations_EnumMap_EventTrigger) ) )
|
|
{
|
|
aEvent.Trigger = (sal_Int16)nEnum;
|
|
}
|
|
else
|
|
{
|
|
OSL_FAIL("AnimationsImportHelperImpl::convertTiming(), unknown event trigger!");
|
|
}
|
|
|
|
aAny <<= aEvent;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// fill the sequence
|
|
Sequence< Any > aValues( nElements );
|
|
Any* pValues = aValues.getArray();
|
|
sal_Int32 nIndex = 0;
|
|
while( (nElements--) && (nIndex >= 0) )
|
|
*pValues++ = convertTiming( rValue.getToken( 0, ';', nIndex ) );
|
|
|
|
aAny <<= aValues;
|
|
}
|
|
}
|
|
return aAny;
|
|
}
|
|
|
|
Sequence< double > AnimationsImportHelperImpl::convertKeyTimes( const OUString& rValue )
|
|
{
|
|
sal_Int32 nElements = 0;
|
|
|
|
if( rValue.getLength() )
|
|
nElements = count_codes( rValue, (sal_Unicode)';' ) + 1; // a non empty string has at least one value
|
|
|
|
Sequence< double > aKeyTimes( nElements );
|
|
|
|
if( nElements )
|
|
{
|
|
double* pValues = aKeyTimes.getArray();
|
|
sal_Int32 nIndex = 0;
|
|
while( (nElements--) && (nIndex >= 0) )
|
|
*pValues++ = rValue.getToken( 0, ';', nIndex ).toDouble();
|
|
}
|
|
|
|
return aKeyTimes;
|
|
}
|
|
|
|
Sequence< TimeFilterPair > AnimationsImportHelperImpl::convertTimeFilter( const OUString& rValue )
|
|
{
|
|
sal_Int32 nElements = 0;
|
|
|
|
if( rValue.getLength() )
|
|
nElements = count_codes( rValue, (sal_Unicode)';' ) + 1; // a non empty string has at least one value
|
|
|
|
Sequence< TimeFilterPair > aTimeFilter( nElements );
|
|
|
|
if( nElements )
|
|
{
|
|
TimeFilterPair* pValues = aTimeFilter.getArray();
|
|
sal_Int32 nIndex = 0;
|
|
while( (nElements--) && (nIndex >= 0) )
|
|
{
|
|
const OUString aToken( rValue.getToken( 0, ';', nIndex ) );
|
|
|
|
sal_Int32 nPos = aToken.indexOf( ',' );
|
|
if( nPos >= 0 )
|
|
{
|
|
pValues->Time = aToken.copy( 0, nPos ).toDouble();
|
|
pValues->Progress = aToken.copy( nPos+1, aToken.getLength() - nPos - 1 ).toDouble();
|
|
}
|
|
pValues++;
|
|
}
|
|
}
|
|
|
|
return aTimeFilter;
|
|
}
|
|
|
|
Any AnimationsImportHelperImpl::convertPath( const OUString& rValue )
|
|
{
|
|
return makeAny( rValue );
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
TYPEINIT1( AnimationNodeContext, SvXMLImportContext );
|
|
|
|
AnimationNodeContext::AnimationNodeContext(
|
|
const Reference< XAnimationNode >& xParentNode,
|
|
SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName,
|
|
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
|
|
AnimationsImportHelperImpl* pHelper /* = NULL */ )
|
|
: SvXMLImportContext(rImport, nPrfx, rLocalName),
|
|
mpHelper( pHelper ),
|
|
mbRootContext( pHelper == NULL )
|
|
{
|
|
try
|
|
{
|
|
if( mbRootContext )
|
|
{
|
|
mpHelper = new AnimationsImportHelperImpl( rImport );
|
|
mxNode = xParentNode;
|
|
}
|
|
else
|
|
{
|
|
Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
|
|
|
|
sal_Int16 nPresetClass = EffectPresetClass::CUSTOM;
|
|
|
|
const sal_Char* pServiceName = 0;
|
|
|
|
sal_Int16 nNodeType = (sal_Int16)mpHelper->getAnimationNodeTokenMap().Get( nPrfx, rLocalName );
|
|
switch( nNodeType )
|
|
{
|
|
case AnimationNodeType::SEQ: pServiceName = "com.sun.star.animations.SequenceTimeContainer"; break;
|
|
case AnimationNodeType::ITERATE: pServiceName = "com.sun.star.animations.IterateContainer"; break;
|
|
case AnimationNodeType::ANIMATE: pServiceName = "com.sun.star.animations.Animate"; break;
|
|
case AnimationNodeType::SET: pServiceName = "com.sun.star.animations.AnimateSet"; break;
|
|
case AnimationNodeType::ANIMATEMOTION: pServiceName = "com.sun.star.animations.AnimateMotion"; break;
|
|
case AnimationNodeType::ANIMATECOLOR: pServiceName = "com.sun.star.animations.AnimateColor"; break;
|
|
case AnimationNodeType::ANIMATETRANSFORM: pServiceName = "com.sun.star.animations.AnimateTransform"; break;
|
|
case AnimationNodeType::TRANSITIONFILTER: pServiceName = "com.sun.star.animations.TransitionFilter"; break;
|
|
case AnimationNodeType::AUDIO: pServiceName = "com.sun.star.animations.Audio"; break;
|
|
case AnimationNodeType::COMMAND: pServiceName = "com.sun.star.animations.Command"; break;
|
|
case AnimationNodeType::PAR:
|
|
{
|
|
const sal_Int16 nCount = xAttrList.is() ? xAttrList->getLength() : 0;
|
|
sal_Int16 nAttribute;
|
|
for( nAttribute = 0; nAttribute < nCount; nAttribute++ )
|
|
{
|
|
OUString aLocalName;
|
|
sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( xAttrList->getNameByIndex( nAttribute ), &aLocalName );
|
|
if( (nPrefix == XML_NAMESPACE_PRESENTATION) && IsXMLToken( aLocalName, XML_PRESET_ID ) )
|
|
{
|
|
const OUString& rValue = xAttrList->getValueByIndex( nAttribute );
|
|
if( rValue.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ooo-entrance-random" ) ) )
|
|
{
|
|
nPresetClass = EffectPresetClass::ENTRANCE;
|
|
}
|
|
else if( rValue.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ooo-exit-random" ) ) )
|
|
{
|
|
nPresetClass = EffectPresetClass::EXIT;
|
|
}
|
|
|
|
if( nPresetClass != EffectPresetClass::CUSTOM )
|
|
{
|
|
pServiceName = "com.sun.star.comp.sd.RandomAnimationNode";
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if( !pServiceName )
|
|
pServiceName = "com.sun.star.animations.ParallelTimeContainer";
|
|
}
|
|
break;
|
|
default:
|
|
pServiceName = 0;
|
|
}
|
|
|
|
if( pServiceName && xFactory.is() )
|
|
{
|
|
mxNode = Reference< XAnimationNode >( xFactory->createInstance(
|
|
OUString::createFromAscii(pServiceName) ), UNO_QUERY_THROW );
|
|
|
|
if( nPresetClass != EffectPresetClass::CUSTOM )
|
|
{
|
|
Reference< XInitialization > xInit( mxNode, UNO_QUERY_THROW );
|
|
const Any aAny( makeAny( nPresetClass ) );
|
|
Sequence< Any > aArgs( &aAny, 1 ) ;
|
|
xInit->initialize( aArgs );
|
|
}
|
|
|
|
init_node( xAttrList );
|
|
|
|
Reference< XTimeContainer > xParentContainer( xParentNode, UNO_QUERY_THROW );
|
|
xParentContainer->appendChild( mxNode );
|
|
}
|
|
}
|
|
}
|
|
catch( RuntimeException& )
|
|
{
|
|
OSL_FAIL( "xmloff::AnimationsImportImpl::AnimationsImportImpl(), RuntimeException catched!" );
|
|
}
|
|
}
|
|
|
|
AnimationNodeContext::~AnimationNodeContext()
|
|
{
|
|
if( mbRootContext )
|
|
delete mpHelper;
|
|
}
|
|
|
|
void AnimationNodeContext::StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& )
|
|
{
|
|
// code of StartElement is moved to init_node that is now called
|
|
// in c'tor before appending this node to its parent.
|
|
// This is needed for random nodes that need the correct target
|
|
// set when child nodes are appended.
|
|
}
|
|
|
|
void AnimationNodeContext::init_node( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList )
|
|
{
|
|
if( mxNode.is() ) try
|
|
{
|
|
const sal_Int16 nNodeType = mxNode->getType();
|
|
|
|
// query for optional interfaces that are often used later
|
|
Reference< XAnimate > xAnimate( mxNode, UNO_QUERY );
|
|
Reference< XCommand > xCommand( mxNode, UNO_QUERY );
|
|
Reference< XTransitionFilter > xTransitionFilter( mxNode, UNO_QUERY );
|
|
Reference< XIterateContainer > xIter( mxNode, UNO_QUERY );
|
|
|
|
std::list< NamedValue > aUserData;
|
|
XMLTokenEnum meAttributeName = XML_TOKEN_INVALID;
|
|
OUString aFrom, aBy, aTo, aValues;
|
|
bool bHaveXmlId( false );
|
|
OUString sXmlId;
|
|
|
|
const sal_Int16 nCount = xAttrList.is() ? xAttrList->getLength() : 0;
|
|
sal_uInt16 nEnum;
|
|
sal_Int16 nAttribute;
|
|
for( nAttribute = 0; nAttribute < nCount; nAttribute++ )
|
|
{
|
|
const OUString& rAttrName = xAttrList->getNameByIndex( nAttribute );
|
|
const OUString& rValue = xAttrList->getValueByIndex( nAttribute );
|
|
|
|
OUString aLocalName;
|
|
sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName, &aLocalName );
|
|
switch( mpHelper->getAnimationNodeAttributeTokenMap().Get( nPrefix, aLocalName ) )
|
|
{
|
|
case ANA_Begin:
|
|
{
|
|
mxNode->setBegin( mpHelper->convertTiming( rValue ) );
|
|
}
|
|
break;
|
|
case ANA_Dur:
|
|
{
|
|
mxNode->setDuration( mpHelper->convertTiming( rValue ) );
|
|
}
|
|
break;
|
|
case ANA_End:
|
|
{
|
|
mxNode->setEnd( mpHelper->convertTiming( rValue ) );
|
|
}
|
|
break;
|
|
case ANA_Fill:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_Fill) ) )
|
|
mxNode->setFill( (sal_Int16)nEnum );
|
|
}
|
|
break;
|
|
case ANA_FillDefault:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_FillDefault) ) )
|
|
mxNode->setFillDefault( (sal_Int16)nEnum );
|
|
}
|
|
break;
|
|
case ANA_Restart:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_Restart) ) )
|
|
mxNode->setRestart( (sal_Int16)nEnum );
|
|
}
|
|
break;
|
|
case ANA_RestartDefault:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_RestartDefault) ) )
|
|
mxNode->setRestartDefault( (sal_Int16)nEnum );
|
|
}
|
|
break;
|
|
case ANA_Accelerate:
|
|
{
|
|
if( isDouble( rValue ) )
|
|
mxNode->setAcceleration( rValue.toDouble() );
|
|
}
|
|
break;
|
|
case ANA_Decelerate:
|
|
{
|
|
if( isDouble( rValue ) )
|
|
mxNode->setDecelerate( rValue.toDouble() );
|
|
}
|
|
break;
|
|
case ANA_AutoReverse:
|
|
{
|
|
bool bTemp;
|
|
if( SvXMLUnitConverter::convertBool( bTemp, rValue ) )
|
|
mxNode->setAutoReverse( bTemp );
|
|
}
|
|
break;
|
|
case ANA_RepeatCount:
|
|
{
|
|
mxNode->setRepeatCount( mpHelper->convertTiming( rValue ) );
|
|
}
|
|
break;
|
|
case ANA_RepeatDur:
|
|
{
|
|
mxNode->setRepeatDuration( mpHelper->convertTiming( rValue ) );
|
|
}
|
|
break;
|
|
case ANA_EndSync:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_Endsync) ) )
|
|
mxNode->setEndSync( makeAny( (sal_Int16)nEnum ) );
|
|
}
|
|
break;
|
|
case ANA_Node_Type:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_EffectNodeType) ) )
|
|
aUserData.push_back( NamedValue( GetXMLToken( XML_NODE_TYPE ), makeAny( (sal_Int16)nEnum ) ) );
|
|
}
|
|
break;
|
|
case ANA_Preset_ID:
|
|
{
|
|
aUserData.push_back( NamedValue( GetXMLToken( XML_PRESET_ID ), makeAny( rValue ) ) );
|
|
}
|
|
break;
|
|
case ANA_Preset_Sub_Type:
|
|
{
|
|
aUserData.push_back( NamedValue( GetXMLToken( XML_PRESET_SUB_TYPE ), makeAny( rValue ) ) );
|
|
}
|
|
break;
|
|
case ANA_Preset_Class:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_EffectPresetClass) ) )
|
|
aUserData.push_back( NamedValue( GetXMLToken( XML_PRESET_CLASS ), makeAny( (sal_Int16)nEnum ) ) );
|
|
}
|
|
break;
|
|
case ANA_After_Effect:
|
|
{
|
|
bool bTemp;
|
|
if( SvXMLUnitConverter::convertBool( bTemp, rValue ) )
|
|
aUserData.push_back( NamedValue( GetXMLToken( XML_AFTER_EFFECT ), makeAny( bTemp ) ) );
|
|
}
|
|
break;
|
|
case ANA_XLink:
|
|
{
|
|
if( nNodeType == AnimationNodeType::AUDIO )
|
|
{
|
|
Reference< XAudio > xAudio( mxNode, UNO_QUERY_THROW );
|
|
xAudio->setSource( makeAny( GetImport().GetAbsoluteReference( rValue ) ) );
|
|
break;
|
|
}
|
|
|
|
}
|
|
// fall through intented!
|
|
case ANA_Target:
|
|
{
|
|
{
|
|
Any aTarget( mpHelper->convertTarget( rValue ) );
|
|
|
|
if( xAnimate.is() )
|
|
{
|
|
xAnimate->setTarget( aTarget );
|
|
}
|
|
else if( xIter.is() )
|
|
{
|
|
xIter->setTarget( aTarget );
|
|
}
|
|
else if( xCommand.is() )
|
|
{
|
|
xCommand->setTarget( aTarget );
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_Volume:
|
|
{
|
|
if( nNodeType == AnimationNodeType::AUDIO )
|
|
{
|
|
if( isDouble( rValue ) )
|
|
{
|
|
Reference< XAudio > xAudio( mxNode, UNO_QUERY_THROW );
|
|
xAudio->setVolume( rValue.toDouble() );
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_MasterElement:
|
|
{
|
|
Reference< XAnimationNode > xMaster( GetImport().getInterfaceToIdentifierMapper().getReference( rValue ), UNO_QUERY );
|
|
aUserData.push_back( NamedValue( GetXMLToken( XML_MASTER_ELEMENT ), makeAny( xMaster ) ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_SubItem:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_SubItem) ) )
|
|
{
|
|
if( xAnimate.is() )
|
|
{
|
|
xAnimate->setSubItem( (sal_Int16)nEnum );
|
|
}
|
|
else if( xIter.is() )
|
|
{
|
|
xIter->setSubItem( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_AttributeName:
|
|
{
|
|
if( xAnimate.is() )
|
|
{
|
|
OUString aName( rValue );
|
|
|
|
ImplAttributeNameConversion* p = getAnimationAttributeNamesConversionList();
|
|
while( p->mpAPIName )
|
|
{
|
|
if( IsXMLToken( aName, p->meXMLToken ) )
|
|
{
|
|
aName = OUString::createFromAscii( p->mpAPIName );
|
|
meAttributeName = p->meXMLToken;
|
|
break;
|
|
}
|
|
|
|
p++;
|
|
}
|
|
|
|
xAnimate->setAttributeName( aName );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_Values:
|
|
{
|
|
aValues = rValue;
|
|
}
|
|
break;
|
|
|
|
case ANA_From:
|
|
{
|
|
aFrom = rValue;
|
|
}
|
|
break;
|
|
|
|
case ANA_By:
|
|
{
|
|
aBy = rValue;
|
|
}
|
|
break;
|
|
|
|
case ANA_To:
|
|
{
|
|
aTo = rValue;
|
|
}
|
|
break;
|
|
|
|
case ANA_KeyTimes:
|
|
{
|
|
if( xAnimate.is() )
|
|
xAnimate->setKeyTimes( mpHelper->convertKeyTimes( rValue ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_Formula:
|
|
{
|
|
if( xAnimate.is() )
|
|
xAnimate->setFormula( rValue );
|
|
}
|
|
break;
|
|
|
|
case ANA_ANIMID:
|
|
{
|
|
if (!bHaveXmlId) { sXmlId = rValue; }
|
|
}
|
|
break;
|
|
case ANA_XMLID:
|
|
{
|
|
sXmlId = rValue;
|
|
bHaveXmlId = true;
|
|
}
|
|
break;
|
|
|
|
case ANA_CalcMode:
|
|
{
|
|
if( xAnimate.is() )
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_CalcMode) ) )
|
|
xAnimate->setCalcMode( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_Accumulate:
|
|
{
|
|
if( xAnimate.is() )
|
|
xAnimate->setAccumulate( IsXMLToken( rValue, XML_SUM ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_AdditiveMode:
|
|
{
|
|
if( xAnimate.is() )
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_AdditiveMode) ) )
|
|
xAnimate->setAdditive( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_KeySplines:
|
|
{
|
|
if( xAnimate.is() )
|
|
xAnimate->setTimeFilter( mpHelper->convertTimeFilter( rValue ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_Path:
|
|
{
|
|
Reference< XAnimateMotion > xAnimateMotion( mxNode, UNO_QUERY );
|
|
if( xAnimateMotion.is() )
|
|
xAnimateMotion->setPath( mpHelper->convertPath( rValue ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_ColorSpace:
|
|
{
|
|
Reference< XAnimateColor > xAnimateColor( mxNode, UNO_QUERY );
|
|
if( xAnimateColor.is() )
|
|
xAnimateColor->setColorInterpolation( IsXMLToken( rValue, XML_HSL ) ? AnimationColorSpace::HSL : AnimationColorSpace::RGB );
|
|
}
|
|
break;
|
|
|
|
case ANA_ColorDirection:
|
|
{
|
|
Reference< XAnimateColor > xAnimateColor( mxNode, UNO_QUERY );
|
|
if( xAnimateColor.is() )
|
|
xAnimateColor->setDirection( IsXMLToken( rValue, XML_CLOCKWISE ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_TransformType:
|
|
{
|
|
Reference< XAnimateTransform > xTransform( mxNode, UNO_QUERY );
|
|
if( xTransform.is() )
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_TransformType) ) )
|
|
{
|
|
xTransform->setTransformType( (sal_Int16)nEnum );
|
|
switch( nEnum )
|
|
{
|
|
case AnimationTransformType::SCALE: meAttributeName = XML_SCALE; break;
|
|
case AnimationTransformType::ROTATE: meAttributeName = XML_ROTATE; break;
|
|
case AnimationTransformType::SKEWX: meAttributeName = XML_SKEWX; break;
|
|
case AnimationTransformType::SKEWY: meAttributeName = XML_SKEWY; break;
|
|
//case AnimationTransformType::TRANSLATE:
|
|
default:
|
|
meAttributeName = XML_TRANSLATE; break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_TransitionType:
|
|
{
|
|
if( xTransitionFilter.is() )
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_TransitionType) ) )
|
|
xTransitionFilter->setTransition( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_TransitionSubType:
|
|
{
|
|
if( xTransitionFilter.is() )
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_TransitionSubType) ) )
|
|
xTransitionFilter->setSubtype( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_Mode:
|
|
{
|
|
if( xTransitionFilter.is() )
|
|
xTransitionFilter->setMode( IsXMLToken( rValue, XML_IN ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_Direction:
|
|
{
|
|
if( xTransitionFilter.is() )
|
|
xTransitionFilter->setDirection( IsXMLToken( rValue, XML_FORWARD ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_FadeColor:
|
|
{
|
|
if( xTransitionFilter.is() )
|
|
{
|
|
Color aColor;
|
|
SvXMLUnitConverter::convertColor( aColor, rValue );
|
|
xTransitionFilter->setFadeColor( static_cast< sal_Int32 >( aColor.GetRGBColor() ) );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_IterateType:
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_IterateType) ) )
|
|
{
|
|
if( xIter.is() )
|
|
xIter->setIterateType( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_IterateInterval:
|
|
{
|
|
if( xIter.is() )
|
|
{
|
|
double fInterval = 0.0;
|
|
if( rValue.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("P")) )
|
|
{
|
|
::Time aTime;
|
|
sal_Int32 nSecondsFraction = 0;
|
|
if( SvXMLUnitConverter::convertTimeDuration( rValue, aTime, &nSecondsFraction ) )
|
|
{
|
|
fInterval = ((((aTime.GetHour() * 60) + aTime.GetMin()) * 60) + aTime.GetSec()) + (nSecondsFraction / 1000.0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
fInterval = rValue.toDouble();
|
|
}
|
|
|
|
xIter->setIterateInterval( fInterval );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ANA_Group_Id:
|
|
{
|
|
aUserData.push_back( NamedValue( aLocalName, makeAny( rValue.toInt32() ) ) );
|
|
}
|
|
break;
|
|
|
|
case ANA_Command:
|
|
{
|
|
if( xCommand.is() && nNodeType == AnimationNodeType::COMMAND )
|
|
{
|
|
if( SvXMLUnitConverter::convertEnum( nEnum, rValue, getAnimationsEnumMap(Animations_EnumMap_Command) ) )
|
|
{
|
|
xCommand->setCommand( (sal_Int16)nEnum );
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
// push all unknown attributes within the presentation namespace as user data
|
|
if( nPrefix == XML_NAMESPACE_PRESENTATION )
|
|
{
|
|
aUserData.push_back( NamedValue( aLocalName, makeAny( rValue ) ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
if (sXmlId.getLength())
|
|
{
|
|
Reference< XInterface > const xRef( mxNode, UNO_QUERY );
|
|
GetImport().getInterfaceToIdentifierMapper().registerReference(
|
|
sXmlId, xRef );
|
|
}
|
|
|
|
sal_Int32 nUserDataCount = aUserData.size();
|
|
if( nUserDataCount )
|
|
{
|
|
Sequence< NamedValue > aUnoUserData( nUserDataCount );
|
|
NamedValue* pData = aUnoUserData.getArray();
|
|
std::list< NamedValue >::iterator aIter( aUserData.begin() );
|
|
const std::list< NamedValue >::iterator aEnd( aUserData.end() );
|
|
while( aIter != aEnd )
|
|
*pData++ = (*aIter++);
|
|
|
|
mxNode->setUserData( aUnoUserData );
|
|
}
|
|
|
|
// convert values
|
|
if( xAnimate.is() )
|
|
{
|
|
if( aFrom.getLength() )
|
|
xAnimate->setFrom( mpHelper->convertValue( meAttributeName, aFrom ) );
|
|
|
|
if( aBy.getLength() )
|
|
xAnimate->setBy( mpHelper->convertValue( meAttributeName, aBy ) );
|
|
|
|
if( aTo.getLength() )
|
|
xAnimate->setTo( mpHelper->convertValue( meAttributeName, aTo ) );
|
|
|
|
if( aValues.getLength() )
|
|
xAnimate->setValues( mpHelper->convertValueSequence( meAttributeName, aValues ) );
|
|
}
|
|
}
|
|
catch( RuntimeException& )
|
|
{
|
|
OSL_FAIL( "xmloff::AnimationNodeContext::StartElement(), RuntimeException catched!" );
|
|
}
|
|
}
|
|
|
|
SvXMLImportContext * AnimationNodeContext::CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
|
|
const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList )
|
|
{
|
|
if( mxNode.is())
|
|
return new AnimationNodeContext( mxNode, GetImport(), nPrefix, rLocalName, xAttrList, mpHelper );
|
|
else
|
|
return new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
class AnimationsImport: public SvXMLImport, public XAnimationNodeSupplier
|
|
{
|
|
public:
|
|
AnimationsImport( const Reference< XMultiServiceFactory > & rSMgr );
|
|
~AnimationsImport() throw ();
|
|
|
|
SvXMLImportContext* CreateContext(sal_uInt16 nPrefix, const OUString& rLocalName, const Reference<XAttributeList>& xAttrList);
|
|
|
|
// XInterface
|
|
virtual Any SAL_CALL queryInterface( const Type& aType ) throw (RuntimeException);
|
|
virtual void SAL_CALL acquire() throw ();
|
|
virtual void SAL_CALL release() throw ();
|
|
|
|
// XAnimationNodeSupplier
|
|
Reference< XAnimationNode > SAL_CALL getAnimationNode() throw (RuntimeException);
|
|
|
|
// XServiceInfo
|
|
virtual OUString SAL_CALL getImplementationName() throw(RuntimeException);
|
|
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException);
|
|
virtual Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException);
|
|
|
|
private:
|
|
Reference< XAnimationNode > mxRootNode;
|
|
};
|
|
|
|
AnimationsImport::AnimationsImport( const Reference< XMultiServiceFactory > & rSMgr )
|
|
: SvXMLImport( rSMgr, true )
|
|
{
|
|
// add namespaces
|
|
GetNamespaceMap().Add(
|
|
GetXMLToken(XML_NP_PRESENTATION),
|
|
GetXMLToken(XML_N_PRESENTATION),
|
|
XML_NAMESPACE_PRESENTATION);
|
|
|
|
GetNamespaceMap().Add(
|
|
GetXMLToken(XML_NP_SMIL),
|
|
GetXMLToken(XML_N_SMIL),
|
|
XML_NAMESPACE_SMIL);
|
|
|
|
GetNamespaceMap().Add(
|
|
GetXMLToken(XML_NP_ANIMATION),
|
|
GetXMLToken(XML_N_ANIMATION),
|
|
XML_NAMESPACE_ANIMATION);
|
|
|
|
mxRootNode = Reference< XAnimationNode >::query(rSMgr->createInstance(
|
|
OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.animations.SequenceTimeContainer"))));
|
|
}
|
|
|
|
AnimationsImport::~AnimationsImport() throw ()
|
|
{
|
|
}
|
|
|
|
// XInterface
|
|
Any SAL_CALL AnimationsImport::queryInterface( const Type& aType ) throw (RuntimeException)
|
|
{
|
|
if ( aType == ::getCppuType((Reference<XAnimationNodeSupplier> *)0) )
|
|
{
|
|
return makeAny( Reference<XAnimationNodeSupplier>( this ) );
|
|
}
|
|
else
|
|
{
|
|
return SvXMLImport::queryInterface( aType );
|
|
}
|
|
}
|
|
|
|
void SAL_CALL AnimationsImport::acquire() throw ()
|
|
{
|
|
SvXMLImport::acquire();
|
|
}
|
|
|
|
void SAL_CALL AnimationsImport::release() throw ()
|
|
{
|
|
SvXMLImport::release();
|
|
}
|
|
|
|
SvXMLImportContext *AnimationsImport::CreateContext(sal_uInt16 nPrefix, const OUString& rLocalName, const Reference<XAttributeList>& xAttrList)
|
|
{
|
|
SvXMLImportContext* pContext = 0;
|
|
|
|
if( (XML_NAMESPACE_ANIMATION == nPrefix) && IsXMLToken( rLocalName, XML_SEQ ) )
|
|
{
|
|
pContext = new AnimationNodeContext( mxRootNode, *this, nPrefix, rLocalName, xAttrList );
|
|
}
|
|
else
|
|
{
|
|
pContext = SvXMLImport::CreateContext(nPrefix, rLocalName, xAttrList);
|
|
}
|
|
|
|
return pContext;
|
|
}
|
|
|
|
// XAnimationNodeSupplier
|
|
Reference< XAnimationNode > SAL_CALL AnimationsImport::getAnimationNode() throw (RuntimeException)
|
|
{
|
|
return mxRootNode;
|
|
}
|
|
|
|
void AnimationNodeContext::postProcessRootNode( SvXMLImport& /*rImport*/, const Reference< XAnimationNode >& xRootNode, Reference< XPropertySet >& xPageProps )
|
|
{
|
|
if( xRootNode.is() && xPageProps.is() ) try
|
|
{
|
|
Reference< XEnumerationAccess > xEnumerationAccess( xRootNode, UNO_QUERY_THROW );
|
|
Reference< XEnumeration > xEnumeration( xEnumerationAccess->createEnumeration(), UNO_QUERY_THROW );
|
|
if( xEnumeration->hasMoreElements() )
|
|
{
|
|
Reference< XAnimationNode > xNode( xEnumeration->nextElement(), UNO_QUERY_THROW );
|
|
if( xNode->getType() == AnimationNodeType::PAR )
|
|
{
|
|
Event aEvent;
|
|
if( (xNode->getBegin() >>= aEvent) && (aEvent.Trigger == EventTrigger::BEGIN_EVENT) )
|
|
{
|
|
// found transition node
|
|
Reference< XEnumerationAccess > xChildEnumerationAccess( xNode, UNO_QUERY_THROW );
|
|
Reference< XEnumeration > xChildEnumeration( xChildEnumerationAccess->createEnumeration(), UNO_QUERY_THROW );
|
|
while( xChildEnumeration->hasMoreElements() )
|
|
{
|
|
Reference< XAnimationNode > xChildNode( xChildEnumeration->nextElement(), UNO_QUERY_THROW );
|
|
switch( xChildNode->getType() )
|
|
{
|
|
case AnimationNodeType::TRANSITIONFILTER:
|
|
{
|
|
Reference< XTransitionFilter > xTransFilter( xChildNode, UNO_QUERY_THROW );
|
|
|
|
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TransitionType" ) ), Any( xTransFilter->getTransition() ) );
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TransitionSubtype" ) ), Any( xTransFilter->getSubtype() ) );
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TransitionDirection" ) ), Any( xTransFilter->getDirection() ) );
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TransitionFadeColor" ) ), Any( xTransFilter->getFadeColor() ) );
|
|
|
|
double fDuration;
|
|
if( xTransFilter->getDuration() >>= fDuration )
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "TransitionDuration" ) ), Any( fDuration ) );
|
|
|
|
}
|
|
break;
|
|
|
|
case AnimationNodeType::COMMAND:
|
|
{
|
|
Reference< XCommand > xCommand( xChildNode, UNO_QUERY_THROW );
|
|
if( xCommand->getCommand() == EffectCommands::STOPAUDIO )
|
|
{
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Sound" ) ), Any(sal_True) );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AnimationNodeType::AUDIO:
|
|
{
|
|
Reference< XAudio > xAudio( xChildNode, UNO_QUERY_THROW );
|
|
OUString sSoundURL;
|
|
if( (xAudio->getSource() >>= sSoundURL) && (sSoundURL.getLength() != 0) )
|
|
{
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Sound" ) ), Any(sSoundURL) );
|
|
|
|
Timing eTiming;
|
|
if( (xAudio->getRepeatCount() >>= eTiming) && (eTiming == Timing_INDEFINITE) )
|
|
xPageProps->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "LoopSound" ) ), Any( sal_True ) );
|
|
}
|
|
}
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
Reference< XTimeContainer > xRootContainer( xRootNode, UNO_QUERY_THROW );
|
|
xRootContainer->removeChild( xNode );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch( Exception& )
|
|
{
|
|
OSL_FAIL("xmloff::AnimationsImport::postProcessRootNode(), exception caught!");
|
|
}
|
|
}
|
|
|
|
} // namespace xmloff
|
|
|
|
Sequence< OUString > SAL_CALL AnimationsImport_getSupportedServiceNames() throw()
|
|
{
|
|
const OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.Xmloff.AnimationsImport" ) );
|
|
const Sequence< OUString > aSeq( &aServiceName, 1 );
|
|
return aSeq;
|
|
}
|
|
|
|
OUString SAL_CALL AnimationsImport_getImplementationName() throw()
|
|
{
|
|
return OUString( RTL_CONSTASCII_USTRINGPARAM( "xmloff::AnimationsImport" ) );
|
|
}
|
|
|
|
Reference< XInterface > SAL_CALL AnimationsImport_createInstance(const Reference< XMultiServiceFactory > & rSMgr) throw( Exception )
|
|
{
|
|
return (cppu::OWeakObject*)new xmloff::AnimationsImport( rSMgr );
|
|
|
|
}
|
|
|
|
namespace xmloff
|
|
{
|
|
|
|
OUString SAL_CALL AnimationsImport::getImplementationName() throw(RuntimeException)
|
|
{
|
|
return AnimationsImport_getImplementationName();
|
|
}
|
|
|
|
sal_Bool SAL_CALL AnimationsImport::supportsService( const OUString& ServiceName ) throw(RuntimeException)
|
|
{
|
|
return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.comp.Xmloff.AnimationsImport" ) );
|
|
}
|
|
|
|
Sequence< OUString > SAL_CALL AnimationsImport::getSupportedServiceNames() throw(RuntimeException)
|
|
{
|
|
return AnimationsImport_getSupportedServiceNames();
|
|
}
|
|
|
|
} // namespace xmloff
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|