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

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 _PXEFFECT_H
  36. #define _PXEFFECT_H
  37. // Forward declarations
  38. typedef struct HXEXPORT_CLASS _HXxRect HXxRect;
  39. class PXRect;
  40. class CHXString;
  41. class PXColor;
  42. class PXEffect : public CHXBaseCountingObject,
  43.                  public CUnknownIMP
  44. {
  45.     DECLARE_UNKNOWN(PXEffect)
  46. public:
  47.     enum
  48.     {
  49.         kEffectTypeFill       = 0,
  50.         kEffectTypeFadeIn     = 1,
  51.         kEffectTypeFadeOut    = 2,
  52.         kEffectTypeCrossFade  = 3,
  53.         kEffectTypeWipe       = 4,
  54.         kEffectTypeViewChange = 5,
  55.         kEffectTypeExternal   = 6,
  56.         kEffectTypeAnimate    = 7,
  57.         kWipeDirectionUp      = 0,
  58.         kWipeDirectionDown    = 1,
  59.         kWipeDirectionLeft    = 2,
  60.         kWipeDirectionRight   = 3,
  61.         kWipeTypeNormal       = 0,
  62.         kWipeTypePush         = 1
  63.     };
  64.     PXEffect()
  65.     {
  66.         m_ucEffectType        = kEffectTypeFill;
  67.         m_ulStart             = 0;
  68.         m_ulDuration          = 0;
  69.         m_ulTarget            = 0;
  70.         m_bHasTarget          = FALSE;
  71.         m_ulMaxFps            = 0;
  72.         m_bAspectFlag         = TRUE;
  73.         m_ucWipeDirection     = kWipeDirectionUp;
  74.         m_ucWipeType          = kWipeTypeNormal;
  75.         m_bFirstUse           = TRUE;
  76.         m_bLastUse            = TRUE;
  77.         m_bDisplayImmediately = FALSE;
  78.         m_ulHandle            = 0;
  79.         m_ulSendTime          = 0;
  80.         m_lStartSendTime      = 0;
  81.         m_bCenterFlag         = FALSE;
  82. m_bPostBackChannel    = FALSE;
  83.     };
  84.     ~PXEffect() {};
  85.     BYTE             GetEffectType()         const { return m_ucEffectType;           }
  86.     UINT32           GetStart()              const { return m_ulStart;                }
  87.     UINT32           GetDuration()           const { return m_ulDuration;             }
  88.     UINT32           GetEnd()                const { return m_ulStart + m_ulDuration; }
  89.     BOOL             HasTarget()             const { return m_bHasTarget;             }
  90.     UINT32           GetTarget()             const { return m_ulTarget;               }
  91.     BOOL             GetAspectFlag()         const { return m_bAspectFlag;            }
  92.     BYTE             GetWipeDirection()      const { return m_ucWipeDirection;        }
  93.     BYTE             GetWipeType()           const { return m_ucWipeType;             }
  94.     UINT32           GetMaxFps()             const { return m_ulMaxFps;               }
  95.     BOOL             GetFirstUse()           const { return m_bFirstUse;              }
  96.     BOOL             GetLastUse()            const { return m_bLastUse;               }
  97.     BOOL             GetDisplayImmediately() const { return m_bDisplayImmediately;    }
  98.     const PXRect&    GetSrcRect()            const { return m_cSrcRect;               }
  99.     const PXRect&    GetDstRect()            const { return m_cDstRect;               }
  100.     HXxRect          GetSrcHXxRect()         const;
  101.     HXxRect          GetDstHXxRect()         const;
  102.     UINT32           GetDstX()               const { return m_cDstRect.GetX();        }
  103.     UINT32           GetDstY()               const { return m_cDstRect.GetY();        }
  104.     UINT32           GetDstWidth()           const { return m_cDstRect.GetWidth();    }
  105.     UINT32           GetDstHeight()          const { return m_cDstRect.GetHeight();   }
  106.     UINT32           GetStartDstX()          const { return m_cStartDstRect.GetX();      }
  107.     UINT32           GetStartDstY()          const { return m_cStartDstRect.GetY();      }
  108.     UINT32           GetStartDstWidth()      const { return m_cStartDstRect.GetWidth();  }
  109.     UINT32           GetStartDstHeight()     const { return m_cStartDstRect.GetHeight(); }
  110.     const PXRect&    GetStartSrcRect()       const { return m_cStartSrcRect;          }
  111.     const PXRect&    GetStartDstRect()       const { return m_cStartDstRect;          }
  112.     const CHXString& GetURL()                const { return m_cURL;                   }
  113.     const PXColor&   GetColor()              const { return m_cColor;                 }
  114.     const CHXString& GetExFxPackage()        const { return m_cPackage;               }
  115.     const CHXString& GetExFxName()           const { return m_cName;                  }
  116.     const CHXString& GetExFxData()           const { return m_cData;                  }
  117.     const CHXString& GetExFxFile()           const { return m_cFile;                  }
  118.     BOOL             GetCenterFlag()         const { return m_bCenterFlag;            }
  119.     UINT32           GetHandle()             const { return m_ulHandle;               }
  120.     UINT32           GetSendTime()           const { return m_ulSendTime;             }
  121.     INT32            GetStartSendTime()      const { return m_lStartSendTime;         }
  122.     BOOL             GetPostBackChannel()    const { return m_bPostBackChannel;       }
  123.     void SetEffectType(BYTE ucEffectType);
  124.     void SetStart(UINT32 ulStart)                                   { m_ulStart = ulStart;                 }
  125.     void SetDuration(UINT32 ulDuration)                             { m_ulDuration = ulDuration;           }
  126.     void SetTarget(UINT32 ulTarget)                                 { m_ulTarget = ulTarget;               }
  127.     void SetAspectFlag(BOOL bAspectFlag)                            { m_bAspectFlag = bAspectFlag;         }
  128.     void SetWipeDirection(BYTE ucWipeDirection)                     { m_ucWipeDirection = ucWipeDirection; }
  129.     void SetWipeType(BYTE ucWipeType)                               { m_ucWipeType = ucWipeType;           }
  130.     void SetMaxFps(UINT32 ulMaxFps)                                 { m_ulMaxFps = ulMaxFps;               }
  131.     void SetDstRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cDstRect.Set(ulX, ulY, ulW, ulH);  }
  132.     void SetDstRect(const PXRect &rRect)                            { m_cDstRect = rRect;                  }
  133.     void SetDstX(UINT32 ulX)                                        { m_cDstRect.SetX(ulX);                }
  134.     void SetDstY(UINT32 ulY)                                        { m_cDstRect.SetY(ulY);                }
  135.     void SetDstWidth(UINT32 ulW)                                    { m_cDstRect.SetWidth(ulW);            }
  136.     void SetDstHeight(UINT32 ulH)                                   { m_cDstRect.SetHeight(ulH);           }
  137.     void SetStartDstX(UINT32 ulX)                                   { m_cStartDstRect.SetX(ulX);           }
  138.     void SetStartDstY(UINT32 ulY)                                   { m_cStartDstRect.SetY(ulY);           }
  139.     void SetStartDstWidth(UINT32 ulW)                               { m_cStartDstRect.SetWidth(ulW);       }
  140.     void SetStartDstHeight(UINT32 ulH)                              { m_cStartDstRect.SetHeight(ulH);      }
  141.     void SetSrcRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cSrcRect.Set(ulX, ulY, ulW, ulH);  }
  142.     void SetSrcRect(const PXRect &rRect)                            { m_cSrcRect = rRect;                  }
  143.     void SetSrcX(UINT32 ulX)                                        { m_cSrcRect.SetX(ulX);                }
  144.     void SetSrcY(UINT32 ulY)                                        { m_cSrcRect.SetY(ulY);                }
  145.     void SetSrcWidth(UINT32 ulW)                                    { m_cSrcRect.SetWidth(ulW);            }
  146.     void SetSrcHeight(UINT32 ulH)                                   { m_cSrcRect.SetHeight(ulH);           }
  147.     void SetStartSrcX(UINT32 ulX)                                   { m_cStartSrcRect.SetX(ulX);           }
  148.     void SetStartSrcY(UINT32 ulY)                                   { m_cStartSrcRect.SetY(ulY);           }
  149.     void SetStartSrcWidth(UINT32 ulW)                               { m_cStartSrcRect.SetWidth(ulW);       }
  150.     void SetStartSrcHeight(UINT32 ulH)                              { m_cStartSrcRect.SetHeight(ulH);      }
  151.     void SetStartDstRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cStartDstRect.Set(ulX, ulY, ulW, ulH);  }
  152.     void SetStartDstRect(const PXRect &rRect)                            { m_cStartDstRect = rRect;                  }
  153.     void SetStartSrcRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cStartSrcRect.Set(ulX, ulY, ulW, ulH);  }
  154.     void SetStartSrcRect(const PXRect &rRect)                            { m_cStartSrcRect = rRect;                  }
  155.     void SetURL(const char *pszURL)                                 { if (pszURL) m_cURL = pszURL;         }
  156.     void SetURL(const CHXString &rURL)                              { m_cURL = rURL;                       }
  157.     void SetColor(const PXColor &rColor)                            { m_cColor = rColor;                   }
  158.     void SetColor(BYTE ucR, BYTE ucG, BYTE ucB)                     { m_cColor.Set(ucR, ucG, ucB);         }
  159.     void SetColor(UINT32 ulColor)                                   { m_cColor.Set(ulColor);               }
  160.     void SetFirstUse(BOOL bFirstUse)                                { m_bFirstUse = bFirstUse;             }
  161.     void SetLastUse(BOOL bLastUse)                                  { m_bLastUse  = bLastUse;              }
  162.     void SetDisplayImmediately(BOOL bFlag)                          { m_bDisplayImmediately = bFlag;       }
  163.     void SetExFxPackage(const CHXString &rPackage)                  { m_cPackage = rPackage;               }
  164.     void SetExFxPackage(const char *pszPackage)                     { if (pszPackage) m_cPackage = pszPackage; }
  165.     void SetExFxName(const CHXString &rName)                        { m_cName = rName;                     }
  166.     void SetExFxName(const char *pszName)                           { if (pszName) m_cName = pszName;      }
  167.     void SetExFxData(const CHXString &rData)                        { m_cData = rData;                     }
  168.     void SetExFxData(const char *pszData)                           { if (pszData) m_cData = pszData;      }
  169.     void SetExFxFile(const CHXString &rFile)                        { m_cFile = rFile;                     }
  170.     void SetExFxFile(const char *pszFile)                           { if (pszFile) m_cFile = pszFile;      }
  171.     void SetHandle(UINT32 ulHandle)                                 { m_ulHandle = ulHandle;               }
  172.     void SetCenterFlag(BOOL bFlag)                                  { m_bCenterFlag = bFlag;               }
  173.     void SetSendTime(UINT32 ulSendTime)                             { m_ulSendTime = ulSendTime;           }
  174.     void SetStartSendTime(INT32 lStartSendTime)                     { m_lStartSendTime = lStartSendTime;   }
  175.     void SetPostBackChannel(BOOL bFlag)                             { m_bPostBackChannel = bFlag;          }
  176.     UINT32 PackedSize(UINT32 ulMajVer, UINT32 ulMinVer);
  177.     void   Pack(BYTE*& pBuffer, UINT32 ulMajVer, UINT32 ulMinVer);
  178.     void   UnPack(BYTE*& pBuffer, UINT32 ulMajVer, UINT32 ulMinVer);
  179.     BOOL   IsOverlapped(PXEffect* pEffect);
  180. protected:
  181.     // Effect-parameter related members
  182.     BYTE      m_ucEffectType;
  183.     UINT32    m_ulStart;
  184.     UINT32    m_ulDuration;
  185.     BOOL      m_bHasTarget;
  186.     UINT32    m_ulTarget;
  187.     PXRect    m_cSrcRect;
  188.     PXRect    m_cDstRect;
  189.     UINT32    m_ulMaxFps;
  190.     BOOL      m_bAspectFlag;
  191.     PXColor   m_cColor;
  192.     BYTE      m_ucWipeDirection;
  193.     BYTE      m_ucWipeType;
  194.     CHXString m_cURL;
  195.     CHXString m_cPackage;
  196.     CHXString m_cName;
  197.     CHXString m_cData;
  198.     CHXString m_cFile;
  199.     BOOL      m_bFirstUse;
  200.     BOOL      m_bLastUse;
  201.     BOOL      m_bDisplayImmediately;
  202.     PXRect    m_cStartSrcRect;
  203.     PXRect    m_cStartDstRect;
  204.     BOOL      m_bCenterFlag;
  205.     BOOL      m_bPostBackChannel;
  206.     // Object-state-related members
  207.     UINT32    m_ulHandle;
  208.     // Scheduling-related members
  209.     UINT32    m_ulSendTime;
  210.     INT32     m_lStartSendTime;
  211. };
  212. inline void PXEffect::SetEffectType(BYTE ucEffectType)
  213. {
  214.     // Set effect type
  215.     m_ucEffectType = ucEffectType;
  216.     // If we are a <fill> or <fadein>, then we don't
  217.     // have an target image. Otherwise, we do.
  218.     if (m_ucEffectType == kEffectTypeFill ||
  219.         m_ucEffectType == kEffectTypeFadeOut)
  220.     {
  221.         m_bHasTarget = FALSE;
  222.     }
  223.     else
  224.     {
  225.         m_bHasTarget = TRUE;
  226.     }
  227. }
  228. inline HXxRect PXEffect::GetSrcHXxRect() const
  229. {
  230.     HXxRect cRet;
  231.     cRet.left   = (INT32) m_cSrcRect.GetX();
  232.     cRet.top    = (INT32) m_cSrcRect.GetY();
  233.     cRet.right  = (INT32) m_cSrcRect.GetX() + m_cSrcRect.GetWidth();
  234.     cRet.bottom = (INT32) m_cSrcRect.GetY() + m_cSrcRect.GetHeight();
  235.     return cRet;                   
  236. }
  237. inline HXxRect PXEffect::GetDstHXxRect() const
  238. {
  239.     HXxRect cRet;
  240.     cRet.left   = (INT32) m_cDstRect.GetX();
  241.     cRet.top    = (INT32) m_cDstRect.GetY();
  242.     cRet.right  = (INT32) m_cDstRect.GetX() + m_cDstRect.GetWidth();
  243.     cRet.bottom = (INT32) m_cDstRect.GetY() + m_cDstRect.GetHeight();
  244.     return cRet;                   
  245. }
  246. #endif