3gppttrenderer.h

来自「symbian 下的helix player源代码」· C头文件 代码 · 共 361 行 · 第 1/2 页

H
361
字号
    STDMETHOD(GetDisplayType)
        (THIS_
         REF(HX_DISPLAY_TYPE) displayType,
         REF(IHXBuffer*)      pDisplayInfo
        );
    STDMETHOD(OnEndofPackets) (THIS);


    /************************************************************************
     *  IHXSiteUser Interface Methods                         ref:    hxwin.h
     */
    STDMETHOD(AttachSite)  (THIS_ IHXSite* pSite);
    STDMETHOD(DetachSite)  (THIS);
    STDMETHOD(HandleEvent) (THIS_ HXxEvent* pEvent);
    STDMETHOD_(BOOL,NeedsWindowedSites) (THIS);
    
    
    /************************************************************************
     *  IHXPlugin Interface Methods                         ref:    hxplugn.h
     */
    STDMETHOD(GetPluginInfo)
        (THIS_ 
          REF(BOOL)        bLoadMultiple,
          REF(const char*) pDescription,
          REF(const char*) pCopyright,
          REF(const char*) pMoreInfoURL,
          REF(UINT32)      versionNumber
        );
    STDMETHOD(InitPlugin) (THIS_ IUnknown* pContext);


    /************************************************************************
     *  IUnknown COM Interface Methods                          ref:  pncom.h
     */
    STDMETHOD (QueryInterface ) (THIS_ REFIID ID, void** ppInterfaceObj);
    STDMETHOD_(UINT32, AddRef ) (THIS);
    STDMETHOD_(UINT32, Release) (THIS);


  private:

    /****** Private Class Methods ******************************************/
    HX_RESULT CreateOffscreenBuffer(HXxSize& hxsize);
    void SetDrawOutputBuffer();


    // /This recalculates the list of text containers that need to be drawn
    // as well as those that don't need to be drawn based on new time:
    HX_RESULT RecomputeTextContainerDrawList(UINT32 ulCurTime);

    /****** Private Class Variables ****************************************/
    INT32               m_lRefCount;
    IUnknown*           m_pContext;
    IHXStream*          m_pStream;
    IHXPlayer*          m_pPlayer;
    IHXValues*          m_pHeader;
    IHXPacket*          m_pLatestPacket;
    BOOL                m_bGotAllPacketsAlready;
    UINT32              m_ulTimeOfLastTimeSync; // /Most-recent time sync
    UINT32              m_ulLastPacketTime;
    UINT32              m_ulLastRealPacketTime;
    UINT32              m_ulNumberOfClicks;
    BOOL                m_bIsSubscribed;
    IHXHyperNavigate*   m_pHyperNavigate;
    IHXBackChannel*     m_pBackChannel;
    IHXASMStream*       m_pASMStream;
    HXxSize             m_size;
    IHXMultiInstanceSiteUserSupplier*   m_pMISUS;
    IHXSite*                            m_pMISUSSite;
    IHXCommonClassFactory*              m_pCommonClassFactory;
    BOOL                m_bInSeekMode;

    BOOL                m_bRTPPacketTested;
    BOOL                m_bUsesRTPPackets;

    UINT32              m_ulDuration;
    // /This is the offset from video's origin (top left point):
    HXxPoint            m_originTransformXY;

    UINT32              m_ulNumTextSampleEntries;
    IHXBuffer*          m_p3GPPTextSampleEntryPackedArray;
    SimpleArray         m_textSampleEntries;
    RuleToFlagMap*      m_pRuleToFlagMap;

    CHXSimpleList*      m_pTextContainerList;
    LISTPOSITION        m_pTextContainerListFutureTimePos;
    // /This keeps track of T.C.s that need to be redrawn periodically due to
    // scroll motion or blinking:
    CHXSimpleList*      m_pTextContainerRedrawList;

    INT16               m_nLastMouseMoveXPos;
    INT16               m_nLastMouseMoveYPos;

    HXxEvent*           m_pEvent;

    // /In Symbian, this is just a pointer into m_pBitMap so
    // DO NOT NEW OR DELETE in Symbian!:
    BYTE*               m_pDrawOutputBuffer;
    UINT32              m_ulDrawOutputBufferSizeInBytes;

    UINT32              m_ulBitsPerPixel;

    INT32               m_lXScrollOffset;
    INT32               m_lYScrollOffset;
    double              m_dScrollFactor;
    BOOL                m_bDrawInNonTextScrollArea;

#if defined(HELIX_3GPPTT_USE_STATUS_BAR)
    IHXStatusMessage*   m_pStatusMessage;
    BOOL                m_bStatusMsgWillNeedErasing;
    char*               m_pszHLinkToDisplay;
#endif /* HELIX_3GPPTT_USE_STATUS_BAR */

#if defined(_WINDOWS) // /                                                     -----vvvvvvvvvvvvvvvvvvvvvvvvvv-----
    BOOL                m_bNeedToSetHyperlinkHandCursor;
    HCURSOR             m_hHyperlinkCursor;
    HCURSOR             m_hPreHyperlinkCursor;
    // /These are used for TextOut()s of text to blt to vid surface:
    void*               m_pDeviceContextMemory;  //memory DC for textWindow.

    HFONT               m_pFont;
    HFONT               m_pFontOld;
    
#if defined(USE_DIB_SECTION)
    HBITMAP             m_hBitmap;
    HBITMAP             m_hOldBitmap;
    LPBITMAPINFO        m_LPBITMAPINFO;
    BITMAPINFOHEADER    m_BITMAPINFOHEADER;
    BOOL                AllocNewLPBITMAPINFO(UINT32 ulNumBytes);
#else
#error: non-DIB-section version not implemented for Win32
#endif /* USE_DIB_SECTION */

#elif defined(_MACINTOSH)
    CursHandle          m_hHyperlinkCursor;
    typedef enum
    {
        CURSOR_ARROW,
        CURSOR_HYPERLINK
    }
    CursorShapes;
    CursorShapes        m_CurrentCursor;
    CResourceLoader*    m_pResourceLoader;
    // /For offscreen drawing of text: 
    GWorldPtr           m_pOffScreenWorld;
#elif defined(_UNIX) && (!(defined(_BEOS)))
    Cursor              m_hHyperlinkCursor;
    BOOL                m_bHandActivated;
    Display*            m_pdisp;
    Window              m_window;
    GC                  m_gc;
#elif defined(_SYMBIAN) // /                                                   ------------------------------------
    CFbsBitmap*         m_pBitMap;
    CFont*              m_pFont;
    CFbsScreenDevice*   m_pScreenDevice;
    CFbsBitGc*          m_pGCSite;
    CFbsBitGc*          m_pGCOffscreen;
#endif // /_WINDOWS -elif- _MACINTOSH -elif- (_UNIX && !_BEOS)                 _____^^^^^^^^^^^^^^^^^^^^^^^^^^_____
#if !defined(_USE_DIB_SECTION)
    HXBitmapInfoHeader m_BitmapInfoHeader;
#endif




    /****** Private Static Class Variables *********************************/
    static const char* const  zm_pDescription;
    static const char* const  zm_pCopyright;
    static const char* const  zm_pMoreInfoURL;
    static const char* const  zm_pStreamMimeTypes[];

    /****** Private Class Methods ******************************************/
    ~C3GPPTimedTextRenderer();

    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME       // Avoids GCC compiler warning
};

#endif /* ndef _3GPPTTRENDERER_H_*/

⌨️ 快捷键说明

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