• 2010-09-10

    PowerPoint动画信息结构剖析 - [PPT动画探索]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/pptaddins-logs/74699158.html

    MS从PowerPoint 2003开始重新结构了PowerPoint动画对象模型,但是为了保持兼容以前的版本,它依然保存了一个叫做animationAtom的结构。

    AnimationInfoAtom

    用于AnimationInfoContainer的域:animationAtom

    一个原子记录,为一个图形和文本指定了动画信息。这个结构是为了兼容老的PPT版(2000和97)

    clip_image002

    (1)rh (8个字节):一个RecordHeader结构,为这个记录指定头。其子域描述如下:

    描述

    rh.recVer

    必须是 0x1.

    rh.recInstance

    必须是 0x000.

    rh.recType

    必须是 RT_AnimationInfoAtom.

    rh.recLen

    必须是 0x0000001C.

    (2)dimColor (4个字节): 一个ColorIndexStruct结构,为动画完成后指定颜色。

    (3)A - fReverse (2位):一个无符号整数,指定动画是否反向播放。它必须是下面值之一:

    0x0 不反向播放。.

    0x1 反向播放

    (4)B - fAutomatic (2位):一个无符号整数,指定动画是否自动开始。它必须是下面值之一:

    0x0 单击时开始

    0x1 自动开始

    (5)C - fSound (2位):一个无符号整数,指定动画是否有一个相关声音。它必须是下面值之一:

    0x0 没有相关声音

    0x1 有相关声音

    (6)D - fStopSound (2位):一个无符号整数,指定当动画开始时所有播放声音都停止。它必须是下面值之一:

    0x0 不停止

    0x1 停止.

    (7)E - fPlay(2位):一个无符号整数,当一个图形被单击时,是否一个相关声音、媒体或动作动词被激活。它必须是下面值之一:

    0x0 无行为发生

    0x1 播放声音、媒体或动作动词。

    (8)F - fSynchronous(2位):一个无符号整数,指定在动画播放期间,停止其他的幻灯片显示动作。如果图形是一个媒体或OLE对象,这个域无效。否则必须被省略。它必须为下面值之一:

    0x0 不停止其他幻灯片显示动作

    0x1 停止其他幻灯片显示动作

    (9)G - fHide(2位):一个无符号整数,指定动作播放后是否隐藏。如果图形是一个媒体或OLE对象,这个域无效。否则必须被省略,它必须为下面值之一:

    0x0 不隐藏

    0x1 隐藏

    (10)H - fAnimateBg(2位):一个无符号整数,指定是否动画图形背景,它必须为下面值之一:

    0x0 不动画背景

    0x1 动画背景

    (11)reserved (16位):必须为0。

    (12)soundIdRef (4位):一个SoundIdRef ,指定此值表示SoundCollectionContainer记录中嵌入的声音。

    (13)delayTime (4位):一个有符号整数,指定动画开始播放前的延迟时间(毫秒),如果fAutomatic 是 0x1则这个值必须大于或等于0。否则这个域必须被省略。

    (14)orderID (2字节):一个有符号整数,指定了幻灯片中的动画顺序。它必须大于或等于-2。-2值表示动画按照主母板或标题母版幻灯片上的对应的占位图形顺序。-1表示SHOULD NOT<104> be used.

    (15)slideCount (2字节):一个无符号整数,指定动画继续播放的幻灯片的数量,即在多少张幻灯片之后停止播放动画。这个域只适用于媒体对象0xFFFFFFFF表示动画只在一张幻灯片上播放。

    (16)animBuildType (1个字节):一个AnimBuildTypeEnum枚举,指定了动画效果的动画生成类型。

    AnimBuildTypeEnum

    这个枚举表示动画生成效果的级别。

    用于AnimationInfoAtom的域:animBuildType

    名称

    描述

    BT_FollowMaster

    0xFE

    形状遵循它所在的主母版或标题母版上的占位符的动画生成类型。

    BT_NoBuild

    0x00

    无生成类型

    BT_OneBuild

    0x01

    作为一个对象

    BT_Level1Build

    0x02

    按第一级段落.

    BT_Level2Build

    0x03

    按第二级段落

    BT_Level3Build

    0x04

    按第三级段落

    BT_Level4Build

    0x05

    按第4级段落

    BT_Level5Build

    0x06

    按第5级段落

    BT_GraphBySeries

    0x07

    按序列

    BT_GraphByCategory

    0x08

    按类别

    BT_GraphByElementInSeries

    0x09

    按序列中的元素:

    BT_GraphByElementInCategory

    0x0A

    按类别中的元素

    (17)animEffect (一个字节):一个无符号整数,指定了图形的动画效果类型。

    下面的图示仅供参考,任何动画效果的精确渲染是取决于渲染的应用程序,因此,同样的动画效果可能根据实际情况会有许多变化,但必须遵循下面的表格说明:

    0x00

    切换效果,如:
    clip_image004

    animEffectDirection的值必须为下面之一:

    0x00: 不从全黑

    0x01: 从全黑

    0x02: 等同于0x00

    0x01

    随机效果。

    animEffectDirection 必须省略

    0x02

    百叶窗效果。如:

    clip_image006

    animEffectDirection值必须为下面值之一:

    0x00: 垂直方向

    0x01: 水平方向

    0x03

    棋盘效果。如:

    clip_image008

    animEffectDirection值必须为下面值之一:

    0x00: 水平方向

    0x01: 垂直方向

    0x04

    插入效果。如:

    clip_image010

    animEffectDirection值必须为下面值之一:

    0x00: 向左.

    0x01: 向上

    0x02: 向右

    0x03: 向下

    0x04: 向左上

    0x05: 向右上

    0x06: 向左下

    0x07: 向右下

    0x05

    溶解效果,如:

    clip_image012

    animEffectDirection必须为0x00

    0x06

    平滑谈出,如:

    clip_image014]

    animEffectDirection必须为0x00

    0x07

    抽出,如:

    image

    animEffectDirectiono为下列值之一:

    0x00: 从右向左

    0x01: 下下向上

    0x02: 从左向右

    0x03: 从上向下

    0x04: 从右下向左上

    0x05: 从左下向右上

    0x06: 从右上向左下

    0x07: 从左上向右下。

    0x08

    随机线条,如:

    clip_image016

    animEffectDirection值必须为下面值之一:

    0x00: 垂直方向

    0x01: 水平方向

    0x09

    阶梯状,如:

    clip_image018

    animEffectDirection必须为下列值之一:

    0x04: 向左上展开。

    0x05: 向右上展开。

    0x06: 向左下展开。

    0x07: 向右下展开。

    0x0A

    擦除效果,如:

    clip_image020

    animEffectDirection必须为下列值之一:

    0x00: 向左

    0x01: 向由

    0x02: 向右

    0x03: 向下

    0x0B

    盒状,如:

    clip_image022

    animEffectDirection值必须为下列值之一:

    0x00: 向外

    0x01: 向内

    0x0C

    飞入,如:

    clip_image024

    animEffectDirection 值必须为下列值之一:

    0x00: 从幻灯片左边飞入

    0x01: 从幻灯片上边飞入

    0x02: 从幻灯片右边飞入

    0x03: 从幻灯片下边飞入

    0x04: 从幻灯片左上角飞入

    0x05: 从幻灯片右上角飞入

    0x06: 从幻灯片左下角飞入

    0x07: 从幻灯片右下角飞入

    0x08: 从形状或文本左边飞入

    0x09: 从形状或文本下边飞入

    0x0A: 从形状或文本右边飞入

    0x0B: 从形状或文本上边飞入

    0x0C: 从幻灯片左边缓慢进入

    0x0D: 从幻灯片上边缓慢进入

    0x0E: 从幻灯片右边缓慢进入

    0x0F: 从幻灯片下边缓慢进入

    0x10: 形状或文本从0放大于它的实际大小,且保持中心不变。

    0x11: 形状或文本从它的一半放大于它的实际大小,且保持中心不变。

    0x12: 形状或文本从它的四倍大小于它的实际大小,且保持中心不变。

    0x13: 形状或文本从它的1.5倍大小于它的实际大小,且保持中心不变。

    0x14: 形状或文本从0放大到它的实际大小,且它的中心从屏幕中心移动到它的实际中心。

    0x15: 形状或文本从它的四倍缩小到实际大小,且从屏幕下边移到它的实际位置。.

    0x16: 形状或文本从中心向左右两边拉伸。

    0x17: 形状或文本从左边向右边拉伸。

    0x18: 形状或文本从上边向下边拉伸。

    0x19: T形状或文本从右边向左边拉伸。

    0x1A: 形状或文本从下边向上边拉伸。

    0x1B: 形状或文本围绕垂直轴旋转。

    0x1C: 陀螺旋

    0x0D

    劈裂,如:

    clip_image026

    animEffectDirection 值必须为下列值之一:

    0x00: 中央向上下。

    0x01: 上下向中央

    0x02: 中央向左右

    0x03: 左右向中央

    0x0E

    闪烁,如:

    clip_image028

    animEffectDirection 值必须为下列值之一:

    0x00: 快速

    0x01: 中速

    0x02: 慢速

    0x11

    菱形,如:

    clip_image030

    animEffectDirection必须为0x00.

    0x12

    加号,如:

    clip_image032

    animEffectDirection必须为0x00.

    0x13

    扇形,如:

    clip_image034

    animEffectDirection必须为0x00.

    0x1A

    轮子,如:

    clip_image036

    animEffectDirection必须为下列值之一:

    0x01: 1根轮幅

    0x02: 2根轮幅.

    0x03: 3根轮幅

    0x04: 4根轮幅

    0x08: 8根轮幅

    0x1B

    圆形,如:

    clip_image038

    animEffectDirection必须为0x00.

    (18)animEffectDirection (一个字节):一个无符号整数,指定了动画效果的方向。它必须是animEffect域指定的一个值。

    (19)animAfterEffect (一个字节):一个AnimAfterEffectEnum枚举,指定了动画效果完成之后图形或文本的行为。

    AnimAfterEffectEnum

    名称

    描述

    AI_NoAfterEffect

    0x00

    AI_Dim

    0x01

    播放动画后改变动画对象颜色

    AI_Hide

    0x02

    播放动画后隐藏

    AI_HideImmediately

    0x03

    播放动画后不隐藏

    (20)textBuildSubEffect (一个字节):一个TextBuildSubEffectEnum枚举,指定了动画效果中文本的行为。

    TextBuildSubEffectEnum

    名称

    描述

    TXB_BuildByNone

    0x00

    整批发送

    TXB_BuildByWord

    0x01

    按字/词

    TXB_BuildByCharacter

    0x02

    按字母

    (21)oleVerb (一个字节):一个OLEVerbEnum枚举,指定了一个OLE动词。

    OLEVerbEnum

    名称

    描述

    OV_Primary

    0x00

    使用主要动词

    OV_Secondary

    0x01

    使用第二动词

    OV_Tertiary

    0x02

    使用第三动词.

    (22)unused (2字节):未定义且必须省略。

    分享到: