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

📄 sm1time.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
字号:
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#ifndef _SM1TIME_H_
#define _SM1TIME_H_

class CSmil1TimelineElement;

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

    void addTimelineElement		(CSmil1TimelineElement* pElement);
    void addNotification		(const char* pID,
					CSmil1TimelineElement* pElement);
    void notify				(const char* pID);
    void resetTimeline			();

    CSmil1TimelineElement*
	getTimelineElement		(const char* pID);

private:
    CHXMapStringToOb*			m_pElementMap;
    CHXMapStringToOb*			m_pNotifierMap;
};

class CSmil1TimelineElement
{
public:
    CSmil1TimelineElement		(CSmil1Element *pSourceElement,
					CSmil1Parser* pParser);
    virtual ~CSmil1TimelineElement	();

    virtual void setDelay		(UINT32 ulDelay);
    virtual void setDuration		(UINT32 ulDuration,
					BOOL bSetFromParent = FALSE);
    virtual void setMaxDuration		(UINT32 ulMaxDuration);
    virtual void adjustDependentDuration(CSmil1TimelineElement* pDependent);
    virtual void addDuration		(UINT32 ulDuration, 
					UINT32 ulDelay,
					const char* pID)
					{
					}

    BOOL initialDelaySet		()
					{ return m_bDelaySet; }

    BOOL delayEvent			()		
					{ return m_bDelayEvent; }

    BOOL durationSet			()		
					{ return m_bDurationSet; }

    BOOL durationEvent			()		
					{ return m_bDurationEvent; }

    void reset				();

    virtual void elementResolved	(CSmil1TimelineElement* pElement);

    void setParent			(CSmil1TimelineElement* pParent)
    {
        m_pParent = pParent;
    }

    void setDependent			(CSmil1TimelineElement* pDependent)
    {
        m_pDependent = pDependent;
    }

    void addChild			(CSmil1TimelineElement* pChild);

    UINT32 getDuration			();
    UINT32 getDelay			();

    virtual void dump			();
    char*				m_pID;

protected:
    CSmil1Element*			m_pSourceElement;
    CSmil1Parser*			m_pParser;
    CHXSimpleList*			m_pChildren;
    CSmil1TimelineElement*		m_pParent;
    CSmil1TimelineElement*		m_pDependent;

    BOOL				m_bDelaySet;
    BOOL				m_bDelayEvent;
    BOOL				m_bDurationEvent;
    BOOL				m_bDurationSet;
    BOOL				m_bMaxDurationSet;
    BOOL				m_bDontResetDuration;
    //The following is for cases where a non-event delay and
    // an event delay exist and m_bDelaySet is not sufficient
    // to keep track of all 3 possible delaySet states.  The
    // non-event delay is always set before the event is resolved
    // so that's why there are 3 and not 4 states:
    BOOL				m_bNonEventDelaySet;

    friend class CSmil1TimelinePar;
    friend class CSmil1TimelineSeq;
    friend class CSmil1TimelineAnchor;
};

	
class CSmil1TimelinePar: public CSmil1TimelineElement
{
public:
    CSmil1TimelinePar			(CSmil1Element* pSourceElement, 
					CSmil1Parser* pRenderer);
    virtual ~CSmil1TimelinePar		();

    virtual void setDelay		(UINT32 ulDelay);
    virtual void setDuration		(UINT32 ulDuration,
					BOOL bSetFromParent = FALSE);
    virtual void setMaxDuration		(UINT32 ulMaxDuration);
    virtual void adjustDependentDuration(CSmil1TimelineElement* pDependent);
    virtual void addDuration		(UINT32 ulDuration, 
					UINT32 ulDelay,
					const char* pID);
    virtual void elementResolved	(CSmil1TimelineElement* pElement);
    void durationResolved		(UINT32 ulDuration,
					BOOL bUpdateChildren);

private:
    int					m_nDurationAdded;
    UINT32				m_ulFirstDuration;
    UINT32				m_ulLastDuration;
};

class CSmil1TimelineSeq: public CSmil1TimelineElement
{
public:
    CSmil1TimelineSeq			(CSmil1Element* pSourceElement, 
					CSmil1Parser* pRenderer);

    virtual void setDelay		(UINT32 ulDelay);
    virtual void setDuration		(UINT32 ulDuration,
					BOOL bSetFromParent = FALSE);
    virtual void setMaxDuration		(UINT32 ulMaxDuration);
    virtual void adjustDependentDuration(CSmil1TimelineElement* pDependent);
    BOOL	 setElementDuration	(UINT32& ulDurationLeft, CSmil1TimelineElement* pElement);
    virtual void addDuration		(UINT32 ulDuration, 
					UINT32 ulDelay,
					const char* pID);

private:
    int					m_nDurationAdded;
};

class CSmil1TimelineAnchor: public CSmil1TimelineElement
{
public:
    CSmil1TimelineAnchor			(CSmil1Element* pSourceElement, 
					CSmil1Parser* pRenderer);
    virtual ~CSmil1TimelineAnchor		();

    virtual void elementResolved	(CSmil1TimelineElement* pElement);
    void durationResolved		(UINT32 ulDuration);

private:
    int					m_nDurationAdded;
};

#endif	/* _SM1TIME_H_ */

⌨️ 快捷键说明

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