rpfile.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:16k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef RPFILE_H
  36. #define RPFILE_H
  37. class CHXMapLongToObj;
  38. class CHXSimpleList;
  39. class PXRealPixFile : public CHXBaseCountingObject,
  40.                       public CUnknownIMP
  41. {
  42.     DECLARE_UNKNOWN(PXRealPixFile)
  43. public:
  44.     enum
  45.     {
  46.         kTimeFormatDHMS         = 0,
  47.         kTimeFormatMilliseconds = 1
  48.     };
  49.     HX_RESULT   SetTitle(const char* pszTitle);
  50.     HX_RESULT   SetTitle(IHXBuffer* pTitleStr);
  51.     HX_RESULT   GetTitle(IHXBuffer** ppTitleStr);
  52.     HX_RESULT   SetAuthor(const char* pszAuthor);
  53.     HX_RESULT   SetAuthor(IHXBuffer* pAuthorStr);
  54.     HX_RESULT   GetAuthor(IHXBuffer** ppAuthorStr);
  55.     HX_RESULT   SetCopyright(const char* pszCopyright);
  56.     HX_RESULT   SetCopyright(IHXBuffer* pCopyrightStr);
  57.     HX_RESULT   GetCopyright(IHXBuffer** ppCopyrightStr);
  58.     void        SetStart(UINT32 ulStart);
  59.     UINT32      GetStart() const;
  60.     void        SetDuration(UINT32 ulDuration);
  61.     UINT32      GetDuration() const;
  62.     void        SetPreroll(UINT32 ulPreroll);
  63.     UINT32      GetPreroll() const;
  64.     void        SetBitrate(UINT32 ulBitrate);
  65.     UINT32      GetBitrate() const;
  66.     void        SetDisplayWidth(UINT32 ulWidth);
  67.     UINT32      GetDisplayWidth() const;
  68.     void        SetDisplayHeight(UINT32 ulHeight);
  69.     UINT32      GetDisplayHeight() const;
  70.     HX_RESULT   SetTimeFormat(UINT32 ulTimeFormat);
  71.     UINT32      GetTimeFormat() const;
  72.     void        SetBackgroundColor(UINT32 ulColor); // in 0x00RRGGBB register format
  73.     void        SetBackgroundColor(BYTE ucRed, BYTE ucGreen, BYTE ucBlue);
  74.     UINT32      GetBackgroundColor() const;
  75.     void        SetBackgroundOpacity(UINT32 ulOpacity);
  76.     UINT32      GetBackgroundOpacity() const;
  77.     void        SetDefaultMaxFps(UINT32 ulMaxFps);
  78.     UINT32      GetDefaultMaxFps() const;
  79.     void        SetDefaultAspectFlag(BOOL bAspectFlag);
  80.     BOOL        GetDefaultAspectFlag() const;
  81.     void        SetDefaultCenterFlag(BOOL bCenterFlag);
  82.     BOOL        GetDefaultCenterFlag() const;
  83.     HX_RESULT   SetDefaultURL(const char* pszDefaultURL);
  84.     HX_RESULT   SetDefaultURL(IHXBuffer* pDefaultURLStr);
  85.     HX_RESULT   GetDefaultURL(IHXBuffer** ppDefaultURLStr);
  86.     void        SetContentVersion(UINT32 ulVersion);
  87.     void        SetContentVersionToAtLeast(UINT32 ulVersion);
  88.     UINT32      GetContentVersion() const;
  89.     HX_RESULT   AddImage(UINT32 ulHandle, const char* pszName);
  90.     HX_RESULT   AddImage(UINT32 ulHandle, IHXBuffer* pName);
  91.     UINT32      GetNumImages() const;
  92.     UINT32      GetNumImagesWithNoSize() const;
  93.     HX_RESULT   GetImageIterator(REF(void*) rpIterator);
  94.     HX_RESULT   GetNextImageHandle(REF(void*) rpIterator, REF(UINT32) rulHandle);
  95.     BOOL        IsImagePresent(UINT32 ulHandle);
  96.     HX_RESULT   GetImageName(UINT32 ulHandle, REF(IHXBuffer*) rpNameStr);
  97.     HX_RESULT   GetImageName(UINT32 ulHandle, REF(const char*) rpszName);
  98.     const char* GetImageName(UINT32 ulHandle);
  99.     HX_RESULT   SetImageName(UINT32 ulHandle, IHXBuffer* pNameStr);
  100.     HX_RESULT   SetImageName(UINT32 ulHandle, const char* pszName);
  101.     HX_RESULT   GetImageErrorStatus(UINT32 ulHandle, REF(HX_RESULT) rlStatus);
  102.     HX_RESULT   SetImageErrorStatus(UINT32 ulHandle, HX_RESULT lStatus);
  103.     HX_RESULT   GetImageSize(UINT32 ulHandle, REF(UINT32) rulSize);
  104.     UINT32      GetImageSize(UINT32 ulHandle);
  105.     HX_RESULT   SetImageSize(UINT32 ulHandle, UINT32 ulSize);
  106.     BOOL        IsImageSizeInitialized(UINT32 ulHandle);
  107.     HX_RESULT   GetImageFileMimeType(UINT32 ulHandle, REF(IHXBuffer*) rpMimeStr);
  108.     HX_RESULT   GetImageFileMimeType(UINT32 ulHandle, REF(const char*) rpszMime);
  109.     const char* GetImageFileMimeType(UINT32 ulHandle);
  110.     HX_RESULT   SetImageFileMimeType(UINT32 ulHandle, IHXBuffer* pMimeStr);
  111.     HX_RESULT   SetImageFileMimeType(UINT32 ulHandle, const char* pszMime);
  112.     HX_RESULT   GetImageStreamMimeType(UINT32 ulHandle, REF(IHXBuffer*) rpMimeStr);
  113.     HX_RESULT   GetImageStreamMimeType(UINT32 ulHandle, REF(const char*) rpszMime);
  114.     const char* GetImageStreamMimeType(UINT32 ulHandle);
  115.     HX_RESULT   SetImageStreamMimeType(UINT32 ulHandle, IHXBuffer* pMimeStr);
  116.     HX_RESULT   SetImageStreamMimeType(UINT32 ulHandle, const char* pszMime);
  117.     HX_RESULT   GetAllImageInfo(UINT32 ulHandle, REF(UINT32) rulSize, REF(IHXBuffer*) rpNameStr,
  118.                                 REF(IHXBuffer*) rpFileMimeStr, REF(IHXBuffer*) rpStreamMimeStr);
  119.     HX_RESULT   GetAllImageInfo(UINT32 ulHandle, REF(UINT32) rulSize, REF(const char*) rpszName,
  120.                                 REF(const char*) rpszFileMime, REF(const char*) rpszStreamMime);
  121.     BOOL        AllImageSizesInitialized();
  122.     BOOL        AllImageSizesOK();
  123.     HX_RESULT   GetFailedImageName(REF(IHXBuffer*) rpFailedNameStr);
  124.     HX_RESULT   AddEffect(PXEffect* pEffect);
  125.     UINT32      GetNumEffects() const;
  126.     HX_RESULT   GetEffectHeadIterator(REF(void*) rpIterator);
  127.     HX_RESULT   GetEffectTailIterator(REF(void*) rpIterator);
  128.     HX_RESULT   GetAtNextEffect(REF(void*) rpIterator, REF(PXEffect*) rpEffect);
  129.     HX_RESULT   GetNextEffect(REF(void*) rpIterator, REF(PXEffect*) rpEffect);
  130.     HX_RESULT   GetPrevEffect(REF(void*) rpIterator, REF(PXEffect*) rpEffect);
  131.     HX_RESULT   GetCurrentEffect(void* pIterator, REF(PXEffect*) rpEffect);
  132.     HX_RESULT   SetFileName(const char* pszFileName);
  133.     HX_RESULT   SetFileName(IHXBuffer* pFileNameStr);
  134.     HX_RESULT   GetFileName(IHXBuffer** ppFileNameStr);
  135.     const char* GetFileName();
  136.     HX_RESULT   PostParseInit();
  137. protected:
  138.     PXRealPixFile();
  139.     virtual ~PXRealPixFile();
  140.     // private enums
  141.     enum
  142.     {
  143.         kMinDuration = 100
  144.     };
  145.     class PXImageInfo
  146.     {
  147.     public:
  148.         PXImageInfo()
  149.         {
  150.             m_ulHandle       = 0;
  151.             m_ulSize         = 0xFFFFFFFF;
  152.             m_pNameStr       = NULL;
  153.             m_pFileMimeStr   = NULL;
  154.             m_pStreamMimeStr = NULL;
  155.             m_lErrorStatus   = HXR_NOT_INITIALIZED;
  156.         };
  157.         ~PXImageInfo()
  158.         {
  159.             HX_RELEASE(m_pNameStr);
  160.             HX_RELEASE(m_pFileMimeStr);
  161.             HX_RELEASE(m_pStreamMimeStr);
  162.         };
  163.         UINT32      m_ulHandle;
  164.         UINT32      m_ulSize;
  165.         IHXBuffer* m_pNameStr;
  166.         IHXBuffer* m_pFileMimeStr;
  167.         IHXBuffer* m_pStreamMimeStr;
  168.         HX_RESULT   m_lErrorStatus;
  169.     };
  170.     void            ClearImageMap();
  171.     void            ClearEffectsList();
  172.     HX_RESULT       SetString(const char* pszStr, IHXBuffer** ppStr);
  173.     HX_RESULT       SetString(IHXBuffer* pStr, IHXBuffer** ppStr);
  174.     HX_RESULT       GetString(IHXBuffer* pInStr, IHXBuffer** ppOutStr);
  175.     HX_RESULT       GetImageInfo(UINT32 ulHandle, REF(PXImageInfo*) rpInfo);
  176.     IHXBuffer*       m_pTitleStr;
  177.     IHXBuffer*       m_pAuthorStr;
  178.     IHXBuffer*       m_pCopyrightStr;
  179.     UINT32           m_ulStart;
  180.     UINT32           m_ulDuration;
  181.     UINT32           m_ulPreroll;
  182.     UINT32           m_ulBitrate;
  183.     UINT32           m_ulWidth;
  184.     UINT32           m_ulHeight;
  185.     UINT32           m_ulTimeFormat;
  186.     UINT32           m_ulBackgroundColor;
  187.     UINT32           m_ulBackgroundOpacity;
  188.     UINT32           m_ulDefaultMaxFps;
  189.     BOOL             m_bDefaultAspectFlag;
  190.     BOOL             m_bDefaultCenterFlag;
  191.     IHXBuffer*       m_pDefaultURLStr;
  192.     UINT32           m_ulContentVersion;
  193.     CHXMapLongToObj* m_pImageMap;
  194.     CHXSimpleList*   m_pEffectsList;
  195.     IHXBuffer*       m_pFileNameStr;
  196. };
  197. inline HX_RESULT PXRealPixFile::SetString(const char* pszStr, IHXBuffer** ppStr)
  198. {
  199.     HX_RESULT retVal = HXR_OK;
  200.     if (pszStr && ppStr)
  201.     {
  202.         HX_RELEASE(*ppStr);
  203.         *ppStr = (IHXBuffer*) new CHXBuffer();
  204.         if (*ppStr)
  205.         {
  206.             (*ppStr)->AddRef();
  207.             retVal = (*ppStr)->SetSize(strlen(pszStr) + 1);
  208.             if (SUCCEEDED(retVal))
  209.             {
  210.                 strcpy((char*) (*ppStr)->GetBuffer(), pszStr); /* Flawfinder: ignore */
  211.             }
  212.         }
  213.         else
  214.         {
  215.             retVal = HXR_OUTOFMEMORY;
  216.         }
  217.     }
  218.     else
  219.     {
  220.         return HXR_INVALID_PARAMETER;
  221.     }
  222.     return retVal;
  223. }
  224. inline HX_RESULT PXRealPixFile::SetString(IHXBuffer* pStr, IHXBuffer** ppStr)
  225. {
  226.     HX_RESULT retVal = HXR_OK;
  227.     if (pStr && ppStr)
  228.     {
  229.         if (pStr->GetBuffer())
  230.         {
  231.             if (strlen((const char*) pStr->GetBuffer()) > 0)
  232.             {
  233.                 HX_RELEASE(*ppStr);
  234.                 *ppStr = pStr;
  235.                 (*ppStr)->AddRef();
  236.             }
  237.             else
  238.             {
  239.                 retVal = HXR_FAIL;
  240.             }
  241.         }
  242.         else
  243.         {
  244.             retVal = HXR_FAIL;
  245.         }
  246.     }
  247.     else
  248.     {
  249.         retVal = HXR_INVALID_PARAMETER;
  250.     }
  251.     
  252.     return retVal;
  253. }
  254. inline HX_RESULT PXRealPixFile::GetString(IHXBuffer* pInStr, IHXBuffer** ppOutStr)
  255. {
  256.     HX_RESULT retVal = HXR_OK;
  257.     if (ppOutStr)
  258.     {
  259.         if (pInStr)
  260.         {
  261.             *ppOutStr = pInStr;
  262.             (*ppOutStr)->AddRef();
  263.         }
  264.         else
  265.         {
  266.             retVal = HXR_NOT_INITIALIZED;
  267.         }
  268.     }
  269.     else
  270.     {
  271.         retVal = HXR_INVALID_PARAMETER;
  272.     }
  273.     return retVal;
  274. }
  275. inline HX_RESULT PXRealPixFile::SetTitle(const char* pszTitle)
  276. {
  277.     return SetString(pszTitle, &m_pTitleStr);
  278. }
  279. inline HX_RESULT PXRealPixFile::SetTitle(IHXBuffer* pTitleStr)
  280. {
  281.     return SetString(pTitleStr, &m_pTitleStr);
  282. }
  283. inline HX_RESULT PXRealPixFile::GetTitle(IHXBuffer** ppTitleStr)
  284. {
  285.     return GetString(m_pTitleStr, ppTitleStr);
  286. }
  287. inline HX_RESULT PXRealPixFile::SetAuthor(const char* pszAuthor)
  288. {
  289.     return SetString(pszAuthor, &m_pAuthorStr);
  290. }
  291. inline HX_RESULT PXRealPixFile::SetAuthor(IHXBuffer* pAuthorStr)
  292. {
  293.     return SetString(pAuthorStr, &m_pAuthorStr);
  294. }
  295. inline HX_RESULT PXRealPixFile::GetAuthor(IHXBuffer** ppAuthorStr)
  296. {
  297.     return GetString(m_pAuthorStr, ppAuthorStr);
  298. }
  299. inline HX_RESULT PXRealPixFile::SetCopyright(const char* pszCopyright)
  300. {
  301.     return SetString(pszCopyright, &m_pCopyrightStr);
  302. }
  303. inline HX_RESULT PXRealPixFile::SetCopyright(IHXBuffer* pCopyrightStr)
  304. {
  305.     return SetString(pCopyrightStr, &m_pCopyrightStr);
  306. }
  307. inline HX_RESULT PXRealPixFile::GetCopyright(IHXBuffer** ppCopyrightStr)
  308. {
  309.     return GetString(m_pCopyrightStr, ppCopyrightStr);
  310. }
  311. inline HX_RESULT PXRealPixFile::SetDefaultURL(const char* pszDefaultURL)
  312. {
  313.     return SetString(pszDefaultURL, &m_pDefaultURLStr);
  314. }
  315. inline HX_RESULT PXRealPixFile::SetDefaultURL(IHXBuffer* pDefaultURLStr)
  316. {
  317.     return SetString(pDefaultURLStr, &m_pDefaultURLStr);
  318. }
  319. inline HX_RESULT PXRealPixFile::GetDefaultURL(IHXBuffer** ppDefaultURLStr)
  320. {
  321.     return GetString(m_pDefaultURLStr, ppDefaultURLStr);
  322. }
  323. inline void PXRealPixFile::SetStart(UINT32 ulStart)
  324. {
  325.     m_ulStart = ulStart;
  326. }
  327. inline UINT32 PXRealPixFile::GetStart() const
  328. {
  329.     return m_ulStart;
  330. }
  331. inline void PXRealPixFile::SetDuration(UINT32 ulDuration)
  332. {
  333.     m_ulDuration = ulDuration;
  334. }
  335. inline UINT32 PXRealPixFile::GetDuration() const
  336. {
  337.     return m_ulDuration;
  338. }
  339. inline void PXRealPixFile::SetPreroll(UINT32 ulPreroll)
  340. {
  341.     m_ulPreroll = ulPreroll;
  342. }
  343. inline UINT32 PXRealPixFile::GetPreroll() const
  344. {
  345.     return m_ulPreroll;
  346. }
  347. inline void PXRealPixFile::SetBitrate(UINT32 ulBitrate)
  348. {
  349.     m_ulBitrate = ulBitrate;
  350. }
  351. inline UINT32 PXRealPixFile::GetBitrate() const
  352. {
  353.     return m_ulBitrate;
  354. }
  355. inline void PXRealPixFile::SetDisplayWidth(UINT32 ulWidth)
  356. {
  357.     m_ulWidth = ulWidth;
  358. }
  359. inline UINT32 PXRealPixFile::GetDisplayWidth() const
  360. {
  361.     return m_ulWidth;
  362. }
  363. inline void PXRealPixFile::SetDisplayHeight(UINT32 ulHeight)
  364. {
  365.     m_ulHeight = ulHeight;
  366. }
  367. inline UINT32 PXRealPixFile::GetDisplayHeight() const
  368. {
  369.     return m_ulHeight;
  370. }
  371. inline HX_RESULT PXRealPixFile::SetTimeFormat(UINT32 ulTimeFormat)
  372. {
  373.     HX_RESULT retVal = HXR_OK;
  374.     if (ulTimeFormat == kTimeFormatDHMS ||
  375.         ulTimeFormat == kTimeFormatMilliseconds)
  376.     {    
  377.         m_ulTimeFormat = ulTimeFormat;
  378.     }
  379.     else
  380.     {
  381.         retVal = HXR_FAIL;
  382.     }
  383.     return retVal;
  384. }
  385. inline UINT32 PXRealPixFile::GetTimeFormat() const
  386. {
  387.     return m_ulTimeFormat;
  388. }
  389. inline void PXRealPixFile::SetBackgroundColor(UINT32 ulColor)
  390. {
  391.     m_ulBackgroundColor = ulColor;
  392. }
  393. inline void PXRealPixFile::SetBackgroundColor(BYTE ucRed, BYTE ucGreen, BYTE ucBlue)
  394. {
  395.     m_ulBackgroundColor = (ucRed << 16) | (ucGreen << 8) | ucBlue;
  396. }
  397. inline UINT32 PXRealPixFile::GetBackgroundColor() const
  398. {
  399.     return m_ulBackgroundColor;
  400. }
  401. inline void PXRealPixFile::SetBackgroundOpacity(UINT32 ulOpacity)
  402. {
  403.     m_ulBackgroundOpacity = (ulOpacity > 255 ? 255 : ulOpacity);
  404. }
  405. inline UINT32 PXRealPixFile::GetBackgroundOpacity() const
  406. {
  407.     return m_ulBackgroundOpacity;
  408. }
  409. inline void PXRealPixFile::SetDefaultMaxFps(UINT32 ulMaxFps)
  410. {
  411.     m_ulDefaultMaxFps = ulMaxFps;
  412. }
  413. inline UINT32 PXRealPixFile::GetDefaultMaxFps() const
  414. {
  415.     return m_ulDefaultMaxFps;
  416. }
  417. inline void PXRealPixFile::SetDefaultAspectFlag(BOOL bAspectFlag)
  418. {
  419.     m_bDefaultAspectFlag = bAspectFlag;
  420. }
  421. inline BOOL PXRealPixFile::GetDefaultAspectFlag() const
  422. {
  423.     return m_bDefaultAspectFlag;
  424. }
  425. inline void PXRealPixFile::SetDefaultCenterFlag(BOOL bCenterFlag)
  426. {
  427.     m_bDefaultCenterFlag = bCenterFlag;
  428. }
  429. inline BOOL PXRealPixFile::GetDefaultCenterFlag() const
  430. {
  431.     return m_bDefaultCenterFlag;
  432. }
  433. inline void PXRealPixFile::SetContentVersion(UINT32 ulVersion)
  434. {
  435.     m_ulContentVersion = ulVersion;
  436. }
  437. inline void PXRealPixFile::SetContentVersionToAtLeast(UINT32 ulVersion)
  438. {
  439.     if (m_ulContentVersion < ulVersion)
  440.     {
  441.         m_ulContentVersion = ulVersion;
  442.     }
  443. }
  444. inline UINT32 PXRealPixFile::GetContentVersion() const
  445. {
  446.     return m_ulContentVersion;
  447. }
  448. inline HX_RESULT PXRealPixFile::SetFileName(const char* pszFileName)
  449. {
  450.     return SetString(pszFileName, &m_pFileNameStr);
  451. }
  452. inline HX_RESULT PXRealPixFile::SetFileName(IHXBuffer* pFileNameStr)
  453. {
  454.     return SetString(pFileNameStr, &m_pFileNameStr);
  455. }
  456. inline HX_RESULT PXRealPixFile::GetFileName(IHXBuffer** ppFileNameStr)
  457. {
  458.     return GetString(m_pFileNameStr, ppFileNameStr);
  459. }
  460. inline const char* PXRealPixFile::GetFileName()
  461. {
  462.     const char* pszRet = NULL;
  463.     if (m_pFileNameStr)
  464.     {
  465.         pszRet = (const char*) m_pFileNameStr->GetBuffer();
  466.     }
  467.     return pszRet;
  468. }
  469. #endif