> Hello John, Andrew, * > > On Sunday 18 January 2009 02:51, Andrew Douglas Pitonyak wrote: > > John, > > > > I do not remember seeing any replies on list (since you ask). People did > > see the question, however. > > > > I took a quick look at all of my documentation that I have produced. I > > thought that I had done this once just to test it. Seems that I did not. > > > > the point is that I spent ten minutes looking at it, but I did not > > pursue it because of lack of time (I do this all on my personal time). > > Some people do take a look, and, as Ariel said, they likely did not know > > the answer off hand so did not bother to answer. > > > > Could I find a solution? Probably, if the API supports this. But at the > > moment, I did not want to spend an hour or so looking into it. > > > > Ariel Constenla-Haile wrote: > > > Hello John, > > > > > > On Friday 16 January 2009 16:52, John Hayes wrote: > > >> Hello again, > > >> > > >> > > >> > > >> Just making sure no one replied to this original email - I'm not on > > >> the > > > > > > no, no one replied. > > > > > >> dev@api.openoffice.org list, so if replying please "Reply All." Also, > > > > > > you can read the mail archive at > > > http://api.openoffice.org/servlets/SummarizeList?listName=dev > > > > > >> apologies for the cross-post, but if no one can help on dev@, perhaps > > >> the users@ list can. Many thanks in advance for any help you can give. > > > > > > oh no, there you have even less chances to get an answer. > > > You may have to write to d...@openoffice.org or > > > d...@graphics.openoffice.org, where you'll find the developer/s who > > > designed that API. > > > > > >> I'm completely new to the OOo UNO API, and I have been completely > > >> unsuccessful in finding info on adding motion path animations to an > > >> XShape in Impress. I was told (in IRC) that it involves querying the > > >> com::sun::star::animations::XAnimationNodeSupplier interface from a > > >> page in my document, then somehow adding SMIL nodes to the root node > > >> through that, but to be honest I don't understand how to do that at > > >> all. > > >> > > >> > > >> > > >> Could someone please shed some light on this subject for a complete > > >> newbie like myself? Example code that adds a motion path animation to > > >> a shape would be most helpful, but I'll take whatever I can get right > > >> now! > > > > > > I guess nobody answered you because nobody knows. At least, I have no > > > idea, never tried that (nor understand what a "motion path Animation to > > > an XShape" is). > > switching the GUI from Spanish to English I understood. > > > > On the other hand, Draw/Impress API is the worst document OOo API (just > > > go to the Dev's Guide and see the holes in the documentation, lots of > > > features for which there is already an API are not even mentioned). > > > And if you take a look at the documentation for the module in question > > > http://api.openoffice.org/docs/common/ref/com/sun/star/animations/modul > > >e- ix.html you'll see missing descriptions for > > > > > > TargetPropertiesCreator > > > XAnimationNode > > > XAnimationNodeSupplier > > > XAudio > > > TimeFilterPair > > > ValuePair > > > Timing > > > AnimationEndSync > > > AnimationValueType > > > EventTrigger > > > TransitionSubType > > > TransitionType > > > > > > so lucky you if you can get an idea of how things work with the > > > animation API ust by reading the abstract specification. > > > > > > If I compare this state with > > > http://api.openoffice.org/docs/common/ref/com/sun/star/sdb/application/ > > >Co pyTableWizard.html I come to the concusion that some developers don't > > > care much about API users. So luck with them at d...@openoffice.org or > > > d...@graphics.openoffice.org. [If you find the answers, please come back > > > and tell] > > > > > > Regards > > OOo Basic code to test, that I'm not sure how correct is: > > '******************************************************** > '******************************************************** > > Sub [User Path] > Dim oDoc as Object > oDoc = createNewDoc("impress") > > Dim oDrawPages as Object > oDrawPages = oDoc.getDrawPages() > Dim oDrawPage as Object > If oDrawPages.getCount() < 1 Then 'impossible, but... > oDrawPage = oDrawPages.insertNewByIndex(0) > Else > oDrawPage = oDrawPages.getByIndex(0) > End If > > Dim oShape as Object > oShape = createShape(oDoc, "EllipseShape") > > Dim nWIdth% > nWIdth = 10000 > > Dim aPosition as new com.sun.star.awt.Point > Dim aSize as new com.sun.star.awt.Size > > aPosition.X = oDrawPage.Width / 2 - nWIdth / 2 > aPosition.Y = oDrawPage.Height / 2 - nWIdth / 2 > > aSize.Width = nWidth > aSize.Height = nWidth > > oShape.setPosition( aPosition ) > oShape.setSize( aSize ) > > oDrawPage.add( oShape ) > > Dim oRootAnimNode as Object > oRootAnimNode = oDrawPage.getAnimationNode() > > Dim oSeqNode as Object > oSeqNode = createSequenceTimeContainer() > oRootAnimNode.appendChild(oSeqNode) > > Dim oContainer as Object > oContainer = createParallelTimeContainer() > > Dim aUserData(2) as New com.sun.star.beans.NamedValue > aUserData(0).Name = "node-type" > aUserData(0).Value = > com.sun.star.presentation.EffectNodeType.AFTER_PREVIOUS aUserData(1).Name = > "preset-class" > aUserData(1).Value = > com.sun.star.presentation.EffectPresetClass.MOTIONPATH oContainer.UserData > = aUserData > oContainer.Acceleration = 0.5 > oContainer.Decelerate = 0.5 > oContainer.Fill = com.sun.star.animations.AnimationFill.HOLD > > oSeqNode.appendChild(oContainer) > > Dim oAnimateMotion as Object > oAnimateMotion = createAnimateMotion() > > oAnimateMotion.Duration = 5 > oAnimateMotion.Fill = com.sun.star.animations.AnimationFill.HOLD > oAnimateMotion.Target = oShape > 'there *must* be another way, other than hand-coding an SVG path! > oAnimateMotion.Path = "m -0.5 -0.5 0.5 1 0.5 -1" > > oContainer.appendChild(oAnimateMotion) > > Wait 5 > oDoc.Presentation.start() > End Sub > > > '************************************************************************** > > Function createAnimationNode(sType as String) > On Error Resume Next > createAnimationNode = CreateUnoService("com.sun.star.animations." + > sType) > End Function > > Function createParallelTimeContainer() > On Error Resume Next > createParallelTimeContainer = > createAnimationNode("ParallelTimeContainer") > End Function > > Function createSequenceTimeContainer() > On Error Resume Next > createSequenceTimeContainer = > createAnimationNode("SequenceTimeContainer") > End Function > > Function createAnimateMotion() > On Error Resume Next > createAnimateMotion = createAnimationNode("AnimateMotion") > End Function > > Function createAudioEffect() > On Error Resume Next > createAudioEffect = createAnimationNode("Audio") > End Function > > > Function createShape(oDoc as OBject, sShapeType as String) > On Error Resume Next > createShape = oDoc.createInstance("com.sun.star.drawing." & sShapeType) > End Function > > Function createNewDoc(sDocType as String, Optional MediaDescriptor() ) > If IsMissing(MediaDescriptor()) then MediaDescriptor() = Array() > createNewDoc = StarDesktop.loadComponentFromURL(_ > "private:factory/s" & sDocType > , "_default", 0, MediaDescriptor()) > End Function > > '******************************************************** > '******************************************************** > > > Obviously, the problem here are undocumented services and null > documentation: > http://svn.services.openoffice.org/opengrok/xref/DEV300_m38/animations/sour >ce/animcore/animcore.cxx#540 [some one should be evil and submit an issue > for each service] > > > If you want to get some idea, IMO there is no other option than reading the > sources (in C++, of course): > > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/animations/ > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/inc/animations.hx >x http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/inc/anmdef.hxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/inc/anminfo.hxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/inc/CustomAnimati >onCloner.hxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/inc/CustomAnimati >onEffect.hxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/inc/CustomAnimati >onPreset.hxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/source/anminfo.cx >x > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/source/CustomAnim >ationCloner.cxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/source/CustomAnim >ationEffect.cxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/source/CustomAnim >ationPreset.cxx > http://svn.services.openoffice.org/ooo/tags/DEV300_m39/sd/source/ui/animati >ons/ etc. etc. etc. > > this is a no-go; API clients shouldn't worry about the implementation. > > Regards
and this may be how to use OOo predefined motion paths: Sub [How to use OOo Predefined Paths: neutron demo] Dim oDoc as Object oDoc = createNewDoc("impress") Dim oDrawPages as Object oDrawPages = oDoc.getDrawPages() Dim oDrawPage as Object If oDrawPages.getCount() < 1 Then 'impossible, but... oDrawPage = oDrawPages.insertNewByIndex(0) Else oDrawPage = oDrawPages.getByIndex(0) End If Dim oShape as Object oShape = createShape(oDoc, "EllipseShape") Dim nWIdth% nWIdth = 10000 Dim aPosition as new com.sun.star.awt.Point Dim aSize as new com.sun.star.awt.Size aPosition.X = oDrawPage.Width / 2 - nWIdth / 2 aPosition.Y = oDrawPage.Height / 2 - nWIdth / 2 aSize.Width = nWidth aSize.Height = nWidth oShape.setPosition( aPosition ) oShape.setSize( aSize ) oDrawPage.add( oShape ) Dim oRootAnimNode as Object oRootAnimNode = oDrawPage.getAnimationNode() Dim oSeqNode as Object oSeqNode = createSequenceTimeContainer() oRootAnimNode.appendChild(oSeqNode) Dim oContainer as Object oContainer = createParallelTimeContainer() Dim aUserData(2) as New com.sun.star.beans.NamedValue aUserData(0).Name = "node-type" aUserData(0).Value = com.sun.star.presentation.EffectNodeType.AFTER_PREVIOUS aUserData(1).Name = "preset-class" aUserData(1).Value = com.sun.star.presentation.EffectPresetClass.MOTIONPATH aUserData(2).Name = "preset-id" aUserData(2).Value = "ooo-motionpath-neutron" oContainer.UserData = aUserData oContainer.Acceleration = 0.5 oContainer.Decelerate = 0.5 oContainer.Fill = com.sun.star.animations.AnimationFill.HOLD oSeqNode.appendChild(oContainer) Dim oAnimateMotion as Object oAnimateMotion = createAnimateMotion() oAnimateMotion.Duration = 2 oAnimateMotion.Fill = com.sun.star.animations.AnimationFill.HOLD oAnimateMotion.Target = oShape 'get the SVG path from '/opt/openoffice.org/basis3.1/share/config/soffice.cfg/simpress/effects.xml 'See also '/opt/openoffice.org/basis3.1/share/registry/data/org/openoffice/Office/UI/Effects.xcu 'correct line breaks when copy&paste oAnimateMotion.Path = "M 0 0 C 0.007 -0.01332 0.014 -0.02798 " +_ "0.021 -0.04663 C 0.04 -0.09993 0.045 -0.15189 0.031 -0.15989" +_ " C 0.017 -0.16922 -0.01 -0.13191 -0.029 -0.07861 C -0.039 " +_ "-0.05063 -0.045 -0.02398 -0.047 -0.004 C -0.05 0.01199 -0.051 " +_ "0.02798 -0.051 0.04663 C -0.051 0.10659 -0.038 0.15589 -0.023 " + _ "0.15589 C -0.008 0.15589 0.005 0.10659 0.005 0.04663 C 0.005 " +_ "0.01865 0.002 -0.00799 -0.003 -0.02665 C -0.005 -0.04264 -0.01 " +_ "-0.05996 -0.016 -0.07728 C -0.036 -0.13191 -0.063 -0.16922 -0.077" +_ " -0.15989 C -0.091 -0.15056 -0.086 -0.09993 -0.066 -0.0453 C -0.058" +_ " -0.01999 -0.047 0.00133 -0.036 0.01599 C -0.028 0.02931 -0.019 " +_ "0.0413 -0.007 0.0533 C 0.029 0.09194 0.065 0.10926 0.075 0.09327 " +_ "C 0.084 0.07728 0.064 0.03331 0.028 -0.004 C 0.013 -0.01999 -0.003 " +_ "-0.03198 -0.016 -0.03997 C -0.028 -0.04797 -0.043 -0.05463 -0.059 " +_ "-0.05863 C -0.103 -0.07195 -0.141 -0.06795 -0.144 -0.04663 C -0.148 " + _ "-0.02665 -0.115 0 -0.071 0.01332 C -0.051 0.01865 -0.032 0.02132 " + _ "-0.017 0.01999 C -0.004 0.01999 0.01 0.01732 0.025 0.01332 C 0.069 0 " + _ "0.102 -0.02798 0.098 -0.04797 C 0.095 -0.06795 0.057 -0.07328 0.013 " + _ "-0.05996 C -0.008 -0.0533 -0.027 -0.04397 -0.04 -0.03331 C -0.051 " + _ "-0.02532 -0.062 -0.01599 -0.074 -0.004 C -0.109 0.03464 -0.13 0.07728 " + _ "-0.12 0.09327 C -0.111 0.10926 -0.074 0.09194 -0.039 0.05463 C -0.022 " + _ "0.03598 -0.008 0.01732 0 0 Z" oContainer.appendChild(oAnimateMotion) Wait 5 oDoc.Presentation.start() End Sub may be there is some hidden service to retrieve the SVG path. Looking at /opt/openoffice.org/basis3.1/share/config/soffice.cfg/simpress/effects.xml I may be missing some extra nodes, and may be this is why these API created motion paths are not displayed in Impress... homework for you. Regards -- Ariel Constenla-Haile La Plata, Argentina "Aus der Kriegsschule des Lebens - Was mich nicht umbringt, macht mich härter." Nietzsche Götzendämmerung, Sprüche und Pfeile, 8. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@api.openoffice.org For additional commands, e-mail: dev-h...@api.openoffice.org