⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smlelem.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
    // constraining or otherwise affecting the times of child elements:
    INT32             m_lAnchorBeginOffset;
    INT32             m_lAnchorEndOffset;
    ULONG32           m_ulAnchorDuration;
    ULONG32           m_ulAnchorMinActiveDur;
    ULONG32           m_ulAnchorMaxActiveDur;
    // ONLY HX_BITFIELD MEMBERS SHOULD GO BELOW THIS LINE!
    // ALL OTHER MEMBER TYPES SHOULD GO ABOVE THIS LINE!
    HX_BITFIELD       m_bExternal : 1; // /(true|false) default is false.
    // /This is TRUE if target="x" and "x" is the id of a region in the
    // current presentation:
    HX_BITFIELD       m_bTargetIsARegion : 1;
    HX_BITFIELD       m_bAnchorBeginOffsetSet : 1;
    HX_BITFIELD       m_bAnchorEndOffsetSet : 1;
    HX_BITFIELD       m_bTimeValueSet : 1;
};

class CSmilAnchorVertex
{
public:
    CSmilAnchorVertex() {m_lX=m_lY=0; m_bXIsPercent=m_bYIsPercent=FALSE;}
    ~CSmilAnchorVertex() {};

    INT32       m_lX;
    INT32       m_lY;
    // ONLY HX_BITFIELD MEMBERS SHOULD GO BELOW THIS LINE!
    // ALL OTHER MEMBER TYPES SHOULD GO ABOVE THIS LINE!
    HX_BITFIELD m_bXIsPercent : 1;
    HX_BITFIELD m_bYIsPercent : 1;
};

class CSmilAnchorElement: public CSmilAAnchorElement
{
public:
    CSmilAnchorElement(SMILNode* pNode);
    virtual ~CSmilAnchorElement();

    virtual BOOL isCurrentLink(UINT32 ulTime,
	    UINT32  ulXOffset, UINT32 ulYOffset, HXxRect regionRect,
	    BOOL bResizeBehaviorIsZoom,
	    double dZoomX, double dZoomY);
    // /Tells whether the link is active at the current time (but doesn't
    // do any spatial bounds checking):
    virtual BOOL isLinkActiveAtTime(UINT32 ulTimeOffset,
	    REF(ULONG32)rulAnchorRelativeStartTime);

    virtual void rescale(double dXScale, double dYScale,
                         BOOL bResetOriginalCoords);

    virtual BOOL isAAnchor() {return FALSE;}

    // /This handles conversion of string of points ("0,0, 20,10, ...") to
    // array of CSmilAnchorVertex's (vertices) in m_pVertexArray:
    HX_RESULT convertRawPolyData(const char* pData);

    // /This is for handling hit-testing in a "poly" (polygon) shape:
    BOOL isPointInPolygon(INT32 lXOffset, INT32 lYOffset,
	    HXxRect regionRect,
	    double dZoomX, double dZoomY);

    void deleteVertexArrays();

    // /XXXEH- TODO: make these points be unsigned values because shapes
    // can stick out of frame, and thus can be negative in places:
    UINT32             m_ulLeftX;
    UINT32             m_ulOriginalLeftX;
    UINT32             m_ulTopY;
    UINT32             m_ulOriginalTopY;
    UINT32             m_ulRightX;
    UINT32             m_ulOriginalRightX;
    UINT32             m_ulBottomY;
    UINT32             m_ulOriginalBottomY;
    UINT32             m_ulRadius;
    UINT32             m_ulOriginalRadius;
    // /XXXEH- TODO: use these points for rectangles, too (but don't use the
    // hit-test code for them as it is slower for rectangles):
    // /The following three are for handling shape="poly":
    CSmilAnchorVertex* m_pVertexArray;
    CSmilAnchorVertex* m_pOriginalVertexArray;
    UINT16	       m_uiNumPoints;
    CHXString          m_shape;
    CHXString          m_fragmentID;
    INT32              m_zIndex;
    // ONLY HX_BITFIELD MEMBERS SHOULD GO BELOW THIS LINE!
    // ALL OTHER MEMBER TYPES SHOULD GO ABOVE THIS LINE!
    HX_BITFIELD        m_bCoordsSet : 1;
    HX_BITFIELD        m_bLeftXIsPercent : 1;
    HX_BITFIELD        m_bTopYIsPercent : 1;
    HX_BITFIELD        m_bRightXIsPercent : 1;
    HX_BITFIELD        m_bBottomYIsPercent : 1;
    HX_BITFIELD        m_bRadiusIsPercent : 1;
};

enum
{
    kCalcModeDiscrete,
    kCalcModeLinear,
    kCalcModePaced
#if defined(XXXMEH_SPLINE_ANIMATION)
    ,kCalcModeSpline
#endif
};

enum
{
    kAccumulateSum,
    kAccumulateNone
};

enum
{
    kAdditiveSum,
    kAdditiveReplace
};

enum
{
    kAnimTypeValues,
    kAnimTypeFromTo,
    kAnimTypeFromBy,
    kAnimTypeBy,
    kAnimTypeTo
};

#if defined(XXXMEH_SPLINE_ANIMATION)

struct KeySpline
{
    double x1;
    double y1;
    double x2;
    double y2;
};

typedef enum
{
    PathCmdTypeUnknown,
    PathCmdTypeMoveTo,
    PathCmdTypeLineTo,
    PathCmdTypeHorzLineTo,
    PathCmdTypeVertLineTo,
    PathCmdTypeClosePath,
    PathCmdTypeCubicBezierCurveTo
} PathCmdType;

class PathCmd
{
public:
    PathCmd();
    ~PathCmd();

    PathCmdType m_eType;
    BOOL        m_bRelative;
    UINT32      m_ulNumCoords;
    double*     m_pdCoord;
};

inline PathCmd::PathCmd()
{
    m_eType       = PathCmdTypeUnknown;
    m_bRelative   = FALSE;
    m_ulNumCoords = 0;
    m_pdCoord     = NULL;
}

inline PathCmd::~PathCmd()
{
    HX_VECTOR_DELETE(m_pdCoord);
}

#endif

#if defined(HELIX_FEATURE_SMIL2_ANIMATION)

class CSmilAnimateElement : public CSmilElement
{
public:
    CSmilAnimateElement(SMILNode* pNode);
    virtual ~CSmilAnimateElement();

    virtual HX_RESULT handleElement();
    // We override this since we handle repeat
    // differently than sources do.
    virtual HX_RESULT getCurrentScheduledStopTime(REF(ULONG32) ulActualStopTime);

    UINT32      m_ulSimpleDuration;
    UINT32      m_ulActiveDuration;
    UINT32      m_ulADNoSpeed;
    CHXString*  m_pTargetElementID;
    SMILNodeTag m_eTargetElementTag;
    UINT32      m_ulNumValues;
    CAttr**     m_ppValue;
    BYTE        m_ucAttributeName;
    BYTE        m_ucCalcMode;
    BYTE        m_ucAccumulate;
    BYTE        m_ucAdditive;
    BYTE        m_ucAnimationType;
    double      m_dRepeatCount;
    UINT32      m_ulRepeatDur;
    double      m_dAccelerate;
    double      m_dDecelerate;
    double      m_dSpeed;
#if defined(XXXMEH_SPLINE_ANIMATION)
    UINT32      m_ulNumKeyTimes;
    double*     m_pdKeyTime;
    UINT32      m_ulNumKeySplines;
    KeySpline*  m_pKeySpline;
    UINT32      m_ulNumPathCmds;
    PathCmd**   m_ppPathCmd;
    UINT32      m_ulNumPathPoints;
#endif
    // ONLY HX_BITFIELD MEMBERS SHOULD GO BELOW THIS LINE!
    // ALL OTHER MEMBER TYPES SHOULD GO ABOVE THIS LINE!
    HX_BITFIELD m_bRepeatDurIsIndefinite : 1;
    HX_BITFIELD m_bAutoReverse : 1;
    HX_BITFIELD m_bIndefiniteSimpleDuration : 1;
    HX_BITFIELD m_bIndefiniteActiveDuration : 1;
    HX_BITFIELD m_bCancelAnimation : 1;
};

#endif /* #if defined(HELIX_FEATURE_SMIL2_ANIMATION) */

class CSmilParamElement : public CSmilElement
{
public:
    CSmilParamElement(SMILNode* pNode);
    virtual ~CSmilParamElement();

    IHXBuffer*   m_pName;
    IHXBuffer*   m_pValue;
    ParamDelivery m_eDelivery;
};

class CSmilParElement: public CSmilElement
{
public:
    CSmilParElement(SMILNode* pNode);
    virtual ~CSmilParElement();
};

class CSmilSeqElement: public CSmilElement
{
public:
    CSmilSeqElement(SMILNode* pNode);
    virtual ~CSmilSeqElement();
};

class CSmilExclElement: public CSmilElement
{
public:
    CSmilExclElement(SMILNode* pNode);
    virtual ~CSmilExclElement();

    CHXStack* m_pPauseStack;
};

#if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)

class CSmilTransition: public CSmilElement
{
public:
    CSmilTransition(SMILNode* pNode);
    virtual ~CSmilTransition();

    virtual HX_RESULT handleElement();

    CHXString              m_Type;
    CHXString              m_SubType;
    double                 m_dStartProgress;
    double                 m_dEndProgress;
    TransitionDirection    m_eDirection;
    UINT32                 m_ulFadeColor;
    UINT32                 m_ulHorzRepeat;
    UINT32                 m_ulVertRepeat;
    UINT32                 m_ulBorderWidth;
    UINT32                 m_ulBorderColor;
    // ONLY HX_BITFIELD MEMBERS SHOULD GO BELOW THIS LINE!
    // ALL OTHER MEMBER TYPES SHOULD GO ABOVE THIS LINE!
    HX_BITFIELD            m_bBlendBorder : 1;
};

#endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */

class CSmilBodyElement : public CSmilElement
{
public:
    CSmilBodyElement(SMILNode* pNode);
    virtual ~CSmilBodyElement();
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -