pxeffect.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:15k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: pxeffect.h,v 1.1.26.1 2004/07/09 01:54:36 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef _PXEFFECT_H
  50. #define _PXEFFECT_H
  51. // Forward declarations
  52. typedef struct HXEXPORT_CLASS _HXxRect HXxRect;
  53. class PXRect;
  54. class CHXString;
  55. class PXColor;
  56. class PXEffect : public CHXBaseCountingObject,
  57.                  public CUnknownIMP
  58. {
  59.     DECLARE_UNKNOWN(PXEffect)
  60. public:
  61.     enum
  62.     {
  63.         kEffectTypeFill       = 0,
  64.         kEffectTypeFadeIn     = 1,
  65.         kEffectTypeFadeOut    = 2,
  66.         kEffectTypeCrossFade  = 3,
  67.         kEffectTypeWipe       = 4,
  68.         kEffectTypeViewChange = 5,
  69.         kEffectTypeExternal   = 6,
  70.         kEffectTypeAnimate    = 7,
  71.         kWipeDirectionUp      = 0,
  72.         kWipeDirectionDown    = 1,
  73.         kWipeDirectionLeft    = 2,
  74.         kWipeDirectionRight   = 3,
  75.         kWipeTypeNormal       = 0,
  76.         kWipeTypePush         = 1
  77.     };
  78.     PXEffect()
  79.     {
  80.         m_ucEffectType        = kEffectTypeFill;
  81.         m_ulStart             = 0;
  82.         m_ulDuration          = 0;
  83.         m_ulTarget            = 0;
  84.         m_bHasTarget          = FALSE;
  85.         m_ulMaxFps            = 0;
  86.         m_bAspectFlag         = TRUE;
  87.         m_ucWipeDirection     = kWipeDirectionUp;
  88.         m_ucWipeType          = kWipeTypeNormal;
  89.         m_bFirstUse           = TRUE;
  90.         m_bLastUse            = TRUE;
  91.         m_bDisplayImmediately = FALSE;
  92.         m_ulHandle            = 0;
  93.         m_ulSendTime          = 0;
  94.         m_lStartSendTime      = 0;
  95.         m_bCenterFlag         = FALSE;
  96. m_bPostBackChannel    = FALSE;
  97.     };
  98.     ~PXEffect() {};
  99.     BYTE             GetEffectType()         const { return m_ucEffectType;           }
  100.     UINT32           GetStart()              const { return m_ulStart;                }
  101.     UINT32           GetDuration()           const { return m_ulDuration;             }
  102.     UINT32           GetEnd()                const { return m_ulStart + m_ulDuration; }
  103.     BOOL             HasTarget()             const { return m_bHasTarget;             }
  104.     UINT32           GetTarget()             const { return m_ulTarget;               }
  105.     BOOL             GetAspectFlag()         const { return m_bAspectFlag;            }
  106.     BYTE             GetWipeDirection()      const { return m_ucWipeDirection;        }
  107.     BYTE             GetWipeType()           const { return m_ucWipeType;             }
  108.     UINT32           GetMaxFps()             const { return m_ulMaxFps;               }
  109.     BOOL             GetFirstUse()           const { return m_bFirstUse;              }
  110.     BOOL             GetLastUse()            const { return m_bLastUse;               }
  111.     BOOL             GetDisplayImmediately() const { return m_bDisplayImmediately;    }
  112.     const PXRect&    GetSrcRect()            const { return m_cSrcRect;               }
  113.     const PXRect&    GetDstRect()            const { return m_cDstRect;               }
  114.     HXxRect          GetSrcHXxRect()         const;
  115.     HXxRect          GetDstHXxRect()         const;
  116.     UINT32           GetDstX()               const { return m_cDstRect.GetX();        }
  117.     UINT32           GetDstY()               const { return m_cDstRect.GetY();        }
  118.     UINT32           GetDstWidth()           const { return m_cDstRect.GetWidth();    }
  119.     UINT32           GetDstHeight()          const { return m_cDstRect.GetHeight();   }
  120.     UINT32           GetStartDstX()          const { return m_cStartDstRect.GetX();      }
  121.     UINT32           GetStartDstY()          const { return m_cStartDstRect.GetY();      }
  122.     UINT32           GetStartDstWidth()      const { return m_cStartDstRect.GetWidth();  }
  123.     UINT32           GetStartDstHeight()     const { return m_cStartDstRect.GetHeight(); }
  124.     const PXRect&    GetStartSrcRect()       const { return m_cStartSrcRect;          }
  125.     const PXRect&    GetStartDstRect()       const { return m_cStartDstRect;          }
  126.     const CHXString& GetURL()                const { return m_cURL;                   }
  127.     const PXColor&   GetColor()              const { return m_cColor;                 }
  128.     const CHXString& GetExFxPackage()        const { return m_cPackage;               }
  129.     const CHXString& GetExFxName()           const { return m_cName;                  }
  130.     const CHXString& GetExFxData()           const { return m_cData;                  }
  131.     const CHXString& GetExFxFile()           const { return m_cFile;                  }
  132.     BOOL             GetCenterFlag()         const { return m_bCenterFlag;            }
  133.     UINT32           GetHandle()             const { return m_ulHandle;               }
  134.     UINT32           GetSendTime()           const { return m_ulSendTime;             }
  135.     INT32            GetStartSendTime()      const { return m_lStartSendTime;         }
  136.     BOOL             GetPostBackChannel()    const { return m_bPostBackChannel;       }
  137.     void SetEffectType(BYTE ucEffectType);
  138.     void SetStart(UINT32 ulStart)                                   { m_ulStart = ulStart;                 }
  139.     void SetDuration(UINT32 ulDuration)                             { m_ulDuration = ulDuration;           }
  140.     void SetTarget(UINT32 ulTarget)                                 { m_ulTarget = ulTarget;               }
  141.     void SetAspectFlag(BOOL bAspectFlag)                            { m_bAspectFlag = bAspectFlag;         }
  142.     void SetWipeDirection(BYTE ucWipeDirection)                     { m_ucWipeDirection = ucWipeDirection; }
  143.     void SetWipeType(BYTE ucWipeType)                               { m_ucWipeType = ucWipeType;           }
  144.     void SetMaxFps(UINT32 ulMaxFps)                                 { m_ulMaxFps = ulMaxFps;               }
  145.     void SetDstRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cDstRect.Set(ulX, ulY, ulW, ulH);  }
  146.     void SetDstRect(const PXRect &rRect)                            { m_cDstRect = rRect;                  }
  147.     void SetDstX(UINT32 ulX)                                        { m_cDstRect.SetX(ulX);                }
  148.     void SetDstY(UINT32 ulY)                                        { m_cDstRect.SetY(ulY);                }
  149.     void SetDstWidth(UINT32 ulW)                                    { m_cDstRect.SetWidth(ulW);            }
  150.     void SetDstHeight(UINT32 ulH)                                   { m_cDstRect.SetHeight(ulH);           }
  151.     void SetStartDstX(UINT32 ulX)                                   { m_cStartDstRect.SetX(ulX);           }
  152.     void SetStartDstY(UINT32 ulY)                                   { m_cStartDstRect.SetY(ulY);           }
  153.     void SetStartDstWidth(UINT32 ulW)                               { m_cStartDstRect.SetWidth(ulW);       }
  154.     void SetStartDstHeight(UINT32 ulH)                              { m_cStartDstRect.SetHeight(ulH);      }
  155.     void SetSrcRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cSrcRect.Set(ulX, ulY, ulW, ulH);  }
  156.     void SetSrcRect(const PXRect &rRect)                            { m_cSrcRect = rRect;                  }
  157.     void SetSrcX(UINT32 ulX)                                        { m_cSrcRect.SetX(ulX);                }
  158.     void SetSrcY(UINT32 ulY)                                        { m_cSrcRect.SetY(ulY);                }
  159.     void SetSrcWidth(UINT32 ulW)                                    { m_cSrcRect.SetWidth(ulW);            }
  160.     void SetSrcHeight(UINT32 ulH)                                   { m_cSrcRect.SetHeight(ulH);           }
  161.     void SetStartSrcX(UINT32 ulX)                                   { m_cStartSrcRect.SetX(ulX);           }
  162.     void SetStartSrcY(UINT32 ulY)                                   { m_cStartSrcRect.SetY(ulY);           }
  163.     void SetStartSrcWidth(UINT32 ulW)                               { m_cStartSrcRect.SetWidth(ulW);       }
  164.     void SetStartSrcHeight(UINT32 ulH)                              { m_cStartSrcRect.SetHeight(ulH);      }
  165.     void SetStartDstRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cStartDstRect.Set(ulX, ulY, ulW, ulH);  }
  166.     void SetStartDstRect(const PXRect &rRect)                            { m_cStartDstRect = rRect;                  }
  167.     void SetStartSrcRect(UINT32 ulX, UINT32 ulY, UINT32 ulW, UINT32 ulH) { m_cStartSrcRect.Set(ulX, ulY, ulW, ulH);  }
  168.     void SetStartSrcRect(const PXRect &rRect)                            { m_cStartSrcRect = rRect;                  }
  169.     void SetURL(const char *pszURL)                                 { if (pszURL) m_cURL = pszURL;         }
  170.     void SetURL(const CHXString &rURL)                              { m_cURL = rURL;                       }
  171.     void SetColor(const PXColor &rColor)                            { m_cColor = rColor;                   }
  172.     void SetColor(BYTE ucR, BYTE ucG, BYTE ucB)                     { m_cColor.Set(ucR, ucG, ucB);         }
  173.     void SetColor(UINT32 ulColor)                                   { m_cColor.Set(ulColor);               }
  174.     void SetFirstUse(BOOL bFirstUse)                                { m_bFirstUse = bFirstUse;             }
  175.     void SetLastUse(BOOL bLastUse)                                  { m_bLastUse  = bLastUse;              }
  176.     void SetDisplayImmediately(BOOL bFlag)                          { m_bDisplayImmediately = bFlag;       }
  177.     void SetExFxPackage(const CHXString &rPackage)                  { m_cPackage = rPackage;               }
  178.     void SetExFxPackage(const char *pszPackage)                     { if (pszPackage) m_cPackage = pszPackage; }
  179.     void SetExFxName(const CHXString &rName)                        { m_cName = rName;                     }
  180.     void SetExFxName(const char *pszName)                           { if (pszName) m_cName = pszName;      }
  181.     void SetExFxData(const CHXString &rData)                        { m_cData = rData;                     }
  182.     void SetExFxData(const char *pszData)                           { if (pszData) m_cData = pszData;      }
  183.     void SetExFxFile(const CHXString &rFile)                        { m_cFile = rFile;                     }
  184.     void SetExFxFile(const char *pszFile)                           { if (pszFile) m_cFile = pszFile;      }
  185.     void SetHandle(UINT32 ulHandle)                                 { m_ulHandle = ulHandle;               }
  186.     void SetCenterFlag(BOOL bFlag)                                  { m_bCenterFlag = bFlag;               }
  187.     void SetSendTime(UINT32 ulSendTime)                             { m_ulSendTime = ulSendTime;           }
  188.     void SetStartSendTime(INT32 lStartSendTime)                     { m_lStartSendTime = lStartSendTime;   }
  189.     void SetPostBackChannel(BOOL bFlag)                             { m_bPostBackChannel = bFlag;          }
  190.     UINT32 PackedSize(UINT32 ulMajVer, UINT32 ulMinVer);
  191.     void   Pack(BYTE*& pBuffer, UINT32 ulMajVer, UINT32 ulMinVer);
  192.     void   UnPack(BYTE*& pBuffer, UINT32 ulMajVer, UINT32 ulMinVer);
  193.     BOOL   IsOverlapped(PXEffect* pEffect);
  194. protected:
  195.     // Effect-parameter related members
  196.     BYTE      m_ucEffectType;
  197.     UINT32    m_ulStart;
  198.     UINT32    m_ulDuration;
  199.     BOOL      m_bHasTarget;
  200.     UINT32    m_ulTarget;
  201.     PXRect    m_cSrcRect;
  202.     PXRect    m_cDstRect;
  203.     UINT32    m_ulMaxFps;
  204.     BOOL      m_bAspectFlag;
  205.     PXColor   m_cColor;
  206.     BYTE      m_ucWipeDirection;
  207.     BYTE      m_ucWipeType;
  208.     CHXString m_cURL;
  209.     CHXString m_cPackage;
  210.     CHXString m_cName;
  211.     CHXString m_cData;
  212.     CHXString m_cFile;
  213.     BOOL      m_bFirstUse;
  214.     BOOL      m_bLastUse;
  215.     BOOL      m_bDisplayImmediately;
  216.     PXRect    m_cStartSrcRect;
  217.     PXRect    m_cStartDstRect;
  218.     BOOL      m_bCenterFlag;
  219.     BOOL      m_bPostBackChannel;
  220.     // Object-state-related members
  221.     UINT32    m_ulHandle;
  222.     // Scheduling-related members
  223.     UINT32    m_ulSendTime;
  224.     INT32     m_lStartSendTime;
  225. };
  226. inline void PXEffect::SetEffectType(BYTE ucEffectType)
  227. {
  228.     // Set effect type
  229.     m_ucEffectType = ucEffectType;
  230.     // If we are a <fill> or <fadein>, then we don't
  231.     // have an target image. Otherwise, we do.
  232.     if (m_ucEffectType == kEffectTypeFill ||
  233.         m_ucEffectType == kEffectTypeFadeOut)
  234.     {
  235.         m_bHasTarget = FALSE;
  236.     }
  237.     else
  238.     {
  239.         m_bHasTarget = TRUE;
  240.     }
  241. }
  242. inline HXxRect PXEffect::GetSrcHXxRect() const
  243. {
  244.     HXxRect cRet;
  245.     cRet.left   = (INT32) m_cSrcRect.GetX();
  246.     cRet.top    = (INT32) m_cSrcRect.GetY();
  247.     cRet.right  = (INT32) m_cSrcRect.GetX() + m_cSrcRect.GetWidth();
  248.     cRet.bottom = (INT32) m_cSrcRect.GetY() + m_cSrcRect.GetHeight();
  249.     return cRet;                   
  250. }
  251. inline HXxRect PXEffect::GetDstHXxRect() const
  252. {
  253.     HXxRect cRet;
  254.     cRet.left   = (INT32) m_cDstRect.GetX();
  255.     cRet.top    = (INT32) m_cDstRect.GetY();
  256.     cRet.right  = (INT32) m_cDstRect.GetX() + m_cDstRect.GetWidth();
  257.     cRet.bottom = (INT32) m_cDstRect.GetY() + m_cDstRect.GetHeight();
  258.     return cRet;                   
  259. }
  260. #endif