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

📄 smlparse.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
    HX_RESULT            validateCDATA(const char* pszStr) const;
    HX_RESULT            validateIDREF(const char* pszStr) const;
    HX_RESULT            validateNMTOKEN(const char* pszStr) const;
    HX_RESULT            validateEnumerated(UINT32 ulElem, UINT32 ulAttr, const char* pszStr);
    BOOL                 isXMLLetter(char c) const;
    BOOL                 isXMLDigit(char c) const;
    BOOL                 isXMLNameChar(char c) const;
    BOOL                 isNamespacePrefixed(const char* pszStr);
    HX_RESULT            normalizeAttribute(const char* pszStr,
                                            BOOL        bIsCDATA,
                                            REF(char*)  rpszNormal);
    HX_RESULT            validateAttribute(UINT32 ulElement, UINT32 ulAttrib,
                                           const char* pszStr, REF(char*) rpszNormStr);
    HX_RESULT            validateElementName(SMILNode* pNode);
    HX_RESULT            setupValidationNamespaces(SMILNode* pNode);
    HX_RESULT            validateAgainstDTD();
    HX_RESULT            checkExtensionElementNamespace(SMIL2Element eElem,
                                                        SupportedNamespace eNS);
    HX_RESULT            checkExtensionAttributeNamespace(SMIL2Attribute eAttr,
                                                          SupportedNamespace eNS);
#endif /* #if defined(HELIX_FEATURE_SMIL2_VALIDATION) */
    CNamespaceInfo*      getNamespaceInfo(const char* pszStr, REF(const char*) rpszAttr);
    HX_RESULT            createElements();
    HX_RESULT            durationResolved(const char* pID, UINT32 ulDuration,
                                          BOOL bSetByParent=FALSE,
                                          BOOL bDurationExtendingDueToPause=FALSE);
    HX_RESULT            trackRemoved(const char* pID, UINT32 ulDuration);
    HX_RESULT            adjustForNegativeOffset(const char* pID);
    void                 insertTimelineElement(const char* pID, UINT32 ulDelay);
    void                 resetTimelineElementDuration(const char* pID,
                                                      UINT32 ulDuration,
                                                      UINT32 ulPriorDuration);
    void                 resetTimelineElementDelay(const char* pID, UINT32 ulDelay,
                                                   UINT32 ulPriorDelay);
    void                 resetTimeline();
    HX_RESULT		 prepForSeek(UINT32 ulOldTime, UINT32 ulNewTime);
    HX_RESULT            handlePrefetchFinished(const char* pID, UINT32 ulTimeFinished);
    UINT16               getFragmentGroup(const char* pFragment);
    UINT32               getFragmentOffset(const char* pFragment,
                                           BOOL& bFragFoundAndResolved,
                                           BOOL bResolveBeginOfFragmentTarget=FALSE,
                                           ULONG32 ulCurTime=0);
    HX_RESULT            handleNextElement(CSmilElementHandler* pHandler);
    HX_RESULT            setAllElementHandlers(CSmilElementHandler* pHandler);
    SMILNode*            findFirstNode(SMILNodeTag tag);
    SMILNode*            getFirstNodeChild(SMILNode* pNode);
    SMILNode*            getPrevNode(SMILNode* pCurrentNode);
    CSmilElement*        findElement(const char* pID);
    SMILNode*            getNextNodeChild();
    SMILNodeTag          getSyncTag(SMILNode* pNode);
    void                 getPacketPending(UINT16 unStreamNumber);
    HX_RESULT            addGlobalNamespace(const char* pNamespace, const char* pPrefix);
    HX_RESULT            storeNamespaces(SMILNode* pNode);
    HX_RESULT            addToNamespaceScope(SMILNode* pNode);
    HX_RESULT            removeFromNamespaceScope(SMILNode* pNode);
    BOOL                 isSupportedNonRNNamespace(const char* pNamespace);
    HX_RESULT            addBeginTimeSyncElement(CSmilElement* pElement);
    HX_RESULT            addEndTimeSyncElement(CSmilElement* pElement);
    HX_RESULT            resolveSyncBaseElements();
    HX_RESULT            handleExclDescendants();
    HX_RESULT            addBeginEventElement(SmilTimeValue* pTimeVal);
    HX_RESULT            tryToResolveBeginEndEvents(const char* pEventName,
                                                    const char* pEventElementId,
                                                    ULONG32     ulEventTime);
    HX_RESULT            addEndEventElement(SmilTimeValue* pTimeVal);
    HX_RESULT            addBeginMediaMarkerSyncElement(SmilTimeValue* pTmpVal);
    HX_RESULT            addEndMediaMarkerSyncElement(SmilTimeValue* pTmpVal);
    HX_RESULT            resolveMediaMarkerTime(const char* pszID,
                                                const char* pszMarkerName,
                                                UINT32      ulMarkerTime,
                                                REF(BOOL)   rbNeedHandleElements);
    HX_RESULT            handlePendingScheduling(INT32 lCurTime,
                                                 INT16 iCurrentGroupIndex,
                                                 REF(BOOL) bSomeScheduleWasChanged,
                                                 /*OUT*/ CHXSimpleList* pPauseDisplayElementHideList,
                                                 /*OUT*/ CHXSimpleList* pPauseDisplayDisableElementList);
    HX_RESULT            checkPendingBeginAndEndTimes(INT32     lCurTime,
                                                      INT16 iCurrentGroupIndex,
                                                      REF(BOOL) bREFSomeScheduleWasChanged,
                                                      INT32     lRecursionCount,
                                                      /*OUT*/ CHXSimpleList* pPauseDisplayElementHideList,
                                                      /*OUT*/ CHXSimpleList* pPauseDisplayDisableElementList,
                                                      BOOL bDoHandleExclBeforePlaybackStarts);
    HX_RESULT            insertElementWithPendingBeginOrEnd(CSmilElement*      pElement,
                                                            INT32              lCurTime,
                                                            SmilTimingListType listType);
    void                 handleAllXMMFReferences();
    CHXMapStringToOb*    findNextPendingOnLoadURL(UINT32 lCurTime);
    BOOL                 hasActivateEventListener(const char* pMediaID,
                                                  INT16 iCurrentGroupIndex);
    const char*          getDefaultNamespace();
    // note -- the pErr array returned has the same scope as the SMILParser 
    // object
    HX_RESULT            getErrors(CHXPtrArray** pErrs);
    SMILNode*            getSyncAncestor(SMILNode* pNode);
    // /NOTE: sync base is not always begin of sync ancestor; in a seq, it's
    // end of prior sibling (if any), so this calculates all that:
    virtual ULONG32      getSyncBaseTimeInGroupTimeCoords(SMILNode* pNode);

    // /Tells whether any node all the way up to the root has specified
    // ancestor tag:
    BOOL                 hasAncestor(SMILNodeTag ancestor, SMILNode* pNode);

    // Added to be able to quickly lookup <anchor> or <area> tags
    // by id and not by the region they map to.
    CSmilAnchorElement*  getAnchorOrAreaElement(const char* pID);
    // XXXMEH - moved this from private to public so that we 
    // could animate the coords attribute. This method is needed
    // to parse the coords attribute.
    HX_RESULT            parseAnchorCoords(const char*         pCoords,
                                           CSmilAnchorElement* pAnchor);
    BOOL                 presentationContainsASource() {return m_bContainsSource; }
    BOOL                 presentationContainsInitiallyScheduledTrack() {
	                    return m_bContainsInitiallyScheduledTrack; }
    ULONG32              presentationDurIfNoInitialTracksScheduled() {
                            return m_ulDurIfNoInitialTracksScheduled; }
    BOOL                 EstablishBeginTimeList();
    BOOL                 EstablishEndTimeList();
    BOOL                 EstablishBeginEventList();
    BOOL                 EstablishEndEventList();
    CHXSimpleList*       GetPendingBeginTimeList() {return m_pPendingBeginTimeList;}
    CHXSimpleList*       GetPendingEndTimeList() {return m_pPendingEndTimeList;}
    CHXSimpleList*       GetBeginEventList() {return m_pBeginEventList;}
    CHXSimpleList*       GetEndEventList()   {return m_pEndEventList;}
    BOOL                 isDuplicateEntry(CHXSimpleList* pList,
                                          SmilTimeValue* pTimeValue);
    HX_RESULT            addResumeEvent(SmilTimeValue* pTimeValue,
                                        REF(BOOL) bOldResumeEventWasRemoved);
    HX_RESULT            addUndeferEvent(SmilTimeValue* pTimeValue,
                                        REF(BOOL) bOldUndeferEventWasRemoved);
    HX_RESULT            addResumeOrUndeferEvent(SmilTimeValue* pTimeValue,
                                        REF(BOOL) bOldSuchEventWasRemoved,
					BOOL bIsResumeEvent);
    HX_RESULT            computeRemoveTime(const char* pszID,
                                           REF(UINT32) rulRemoveTime);
    void                 InitPersistent(UINT32 ulPersistentComponentID, IHXValues* pProperties);
    BOOL                 isTimelineObject(SMILNode* pNode);
    static BOOL          isMediaObject(SMILNode* pNode);
    BOOL                 isNonMediaPlayableObject(SMILNode* pNode);
    BOOL                 isTimeContainerObject(SMILNode* pNode);
    UINT16               getNumGroups() const { return m_usNumGroups; }
    const char*          getEnumAttrString(SMIL2Attribute eAttr, BYTE ucVal);
    void                 setParseError(HX_RESULT rv) { m_lParseError = rv;   }
    HX_RESULT            getParseError() const       { return m_lParseError; }
    BOOL                 isAttributeAnimated(const char* pszElementID,
                                             UINT32      ulAttrName);
    SMIL2Element         getSMIL2Element(const char* pszStr);
    SMIL2Attribute       getSMIL2Attribute(const char* pszStr);
    void                 checkForExternalEvents();
    BOOL                 anyExternalEvents(const char* pszID);
    ExternalEventInfo*   getFirstExternalEvent(const char* pszID);
    ExternalEventInfo*   getNextExternalEvent(const char* pszID);
    void                 checkForEventHandlers();
    AccessErrorBehavior  getAccessErrorBehavior(SMILNode* pNode);
    UINT32               GetUniqueNumber() { return m_ulNextVar++; }

    // CSmilParser static public member methods
    static HX_RESULT     parseRegionDimension(const char*   pszStr,
                                              REF(double)   rdValue,
                                              REF(CSS2Type) reType);
    static HX_RESULT     parseZIndex(const char*   pszStr,
                                     REF(INT32)    rlValue,
                                     REF(CSS2Type) reType);
    static HX_RESULT     parseColor(const char*   pszStr,
                                    REF(UINT32)   rulColor,
                                    REF(CSS2Type) reType);
    static HX_RESULT     parseFit(const char*   pszStr,
                                  REF(Fit)      reValue);
    static HX_RESULT     parseRegAlign(const char*   pszStr,
                                       REF(RegAlign) reValue);
    static HX_RESULT     parseOpacity(const char* pszStr, REF(UINT32) rulOpacity);
    static HX_RESULT     parseFill(const char* pszStr, REF(FillType) reFill);
    static HX_RESULT     getFillString(FillType eFill, REF(CHXString) rcFill);
    static HX_RESULT     getEraseString(EraseType eErase, REF(CHXString) rcErase);
    static HX_RESULT     parseFillDefault(const char* pszStr, REF(FillDefaultType) reFillDefault);
    static HX_RESULT     parseAccelDecel(const char* pszStr, REF(double) rdVal);
#if defined(HELIX_FEATURE_SMIL2_TRANSITIONS)
    static HX_RESULT     getDefaultTransitionSubType(const char* pszType, REF(CHXString) rcSubType);
    static BOOL          isLegalTransitionType(const char* pszType);
    static BOOL          isLegalTransitionSubType(const char* pszType, const char* pszSubType);
#endif /* #if defined(HELIX_FEATURE_SMIL2_TRANSITIONS) */
    static HX_RESULT     parseMarkerURI(const char*    pszStr,
                                        REF(CHXString) rcMarker,
                                        REF(BOOL)      rbExternal,
                                        REF(CHXString) rcExternalFileName);
    static HX_RESULT     parseHandlerForID(const char*    pszStr,
                                           REF(CHXString) rcHandlerID);
    static HX_RESULT     parseAccessErrorBehavior(const char* pszStr,
                                                  REF(AccessErrorBehavior) reErr);
#if defined(XXXMEH_SPLINE_ANIMATION)
    static HX_RESULT     parseKeyTimes(const char* pszVal, CSmilAnimateElement* pAnim);
    static HX_RESULT     parseKeySplines(const char* pszVal, CSmilAnimateElement* pAnim);
    static HX_RESULT     parseSVGPath(const char* pszVal, CSmilAnimateElement* pAnim);
#endif
    static BOOL          isDataURL(const char* pszURL);
    static HX_RESULT     validateDataURL(const char* pszURL);
    static void          addStringProperty(IHXValues* pValues,
                                           IUnknown*   pContext,
                                           const char* pszName,
                                           const char* pszValue);

    BOOL                 allTracksNeedReflushHint() { return m_bAllTracksNeedReflushHint; }

    // CSmilParser public members    
    CHXStack*     m_pNodeListStack;
    SMILNodeList* m_pNodeList;
    UINT32        m_ulErrorLineNumber;
    UINT32        m_ulErrorColumnNumber;
    IHXBuffer*   m_pErrorText;
    IHXBuffer*   m_pDefaultNamespace;
    UINT32        m_ulPersistentComponentDelay;
    UINT32        m_ulPersistentComponentDuration;
    CSmilTimelineElementManager* m_pTimelineElementManager;
    friend class CSmilParserResponse;
private:
    void                   close();
    void                   initRequireTags();
    void		   GetSystemScreenInfo(REF(UINT32) rulScreenHeight,
					       REF(UINT32) rulScreenWidth,
					       REF(UINT32) rulScreenBitDepth);
    void                   getPreferences();
    HX_RESULT              createHeadElements(SMILNodeList* pNodeList);
    HX_RESULT              createSeqWrapper(SMILNodeList* pNodeList, BOOL bMakeInnerPar);
    HX_RESULT              createBodyElements(SMILNodeList* pNodeList);
    HX_RESULT              createElementForAnchorTarget(CSmilAAnchorElement* pAnchor,
                                                       SMILNodeList* pNodeList);
#if 0  /*XXXEH- I wrote this and then didn't need it but it may come in
         handy later so #if(0) it out: */
    BOOL                   hasNoSourceChildren(SMILNode* pNode);
#endif
    HX_RESULT              assignGroupIndexes(SMILNodeList* pNodeList);
    HX_RESULT              assignGroupIndexOnPar(SMILNode* pNode, UINT16 nGroup);
    HX_RESULT              assignGroupIndexOnSeq(SMILNode* pNode, UINT16& nGroup);
    HX_RESULT              constructTimelineElements(SMILNodeList* pNodeList);
    HX_RESULT              setInitialDelays(SMILNodeList* pNodeList);
    void                   setInitialDelay(SMILNode* pNode);
    void                   setInitialDelayOnSeq(SMILNode* pNode);
    HX_RESULT              expandRepeatElements(SMILNodeList* pNodeList);
    HX_RESULT              printBodyElements(SMILNodeList* pNodeList);
    HX_RESULT              updateEventElements(SMILNodeList* pNodeList);
    HX_RESULT              insertElementByTimestamp(CSmilElement* pElement);
    HX_RESULT              addGroup(SMILNode* pNode);
    HX_RESULT              insertGroups();
    HX_RESULT              mapID(SMILNode* pNode, BOOL bOverWrite = FALSE);
    HX_RESULT              mapChildrenIDs(SMILNodeList* pNodeList, BOOL bOverWrite = FALSE);
    HX_RESULT              markRepeatReplica(SMILNodeList* pNodeList, RepeatTag repeatTag);

    BOOL                   testAttributeFailed(SMILNode* pNode);
    BOOL                   customTestFailed(SMILNode* pNode);
    BOOL                   systemComponentFailed(IHXBuffer* pRequiredValue);
    HX_RESULT              markTestAttributeNodes(SMILNodeList* pNodeList);
    HX_RESULT              selectSwitchNodes(SMILNode* pNode);

    BOOL                   inSeq(SMILNode* pNode);
    HX_RESULT              createParent(SMILNode* pChildNode, SMILNodeTag tag,
                                        SMILNode*& pParent, SMILNode*& pParentEnd);
    void                   resolveTimestamps();
    void                   resolveTimestamps(SMILNodeList* pNodeList);
    UINT32                 getStartTime(SMILNode* pNode);
    CSmilRegion*           makeRegion(SMILNode* pNode);
    CSmilRegPoint*         makeRegPoint(SMILNode* pNode);
#if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT)
    CSmilViewport*         makeViewport(SMILNode* pNode);
#endif /* #if defined(HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT) */
    CSmilTransition*       makeTransition(SMILNode* pNode, REF(HX_RESULT) retVal);
    CSmilRootLayout*       makeRootLayout(SMILNode* pNode);
    CSmilMeta*             makeMeta(SMILNode* pNode);
    CSmilMetadata*         makeMetadata(SMILNode* pNode);
    CSmilCustomTest*       makeCustomTest(SMILNode* pNode,
                                    REF(HX_RESULT) retVal);
    CSmilRendererPreFetch* makeRendererPreFetch(SMILNode* pNode);
    CSmilSource*           makeSource(SMILNode* pNode);
    CSmilPriorityClassElement* makePriorityClassElement(SMILNode* pNode);

⌨️ 快捷键说明

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