llpanelprimmediacontrols.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:6k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelprimmediacontrols.h
  3.  * @brief Pop-up media controls panel
  4.  *
  5.  * $LicenseInfo:firstyear=2003&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2003-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_PANELPRIMMEDIACONTROLS_H
  33. #define LL_PANELPRIMMEDIACONTROLS_H
  34. #include "llpanel.h"
  35. #include "llviewermedia.h"
  36. class LLButton;
  37. class LLCoordWindow;
  38. class LLIconCtrl;
  39. class LLLayoutStack;
  40. class LLProgressBar;
  41. class LLSliderCtrl;
  42. class LLViewerMediaImpl;
  43. class LLPanelPrimMediaControls : public LLPanel
  44. {
  45. public:
  46. LLPanelPrimMediaControls();
  47. virtual ~LLPanelPrimMediaControls();
  48. /*virtual*/ BOOL postBuild();
  49. virtual void draw();
  50. virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
  51. virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
  52. virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
  53. virtual BOOL handleKeyHere(KEY key, MASK mask);
  54. void updateShape();
  55. bool isMouseOver();
  56. enum EZoomLevel
  57. {
  58. ZOOM_NONE = 0,
  59. ZOOM_FAR,
  60. ZOOM_MEDIUM,
  61. ZOOM_NEAR
  62. };
  63. EZoomLevel getZoomLevel() const { return mCurrentZoom; }
  64. void nextZoomLevel();
  65. void resetZoomLevel(bool reset_camera = true);
  66. void close();
  67. LLHandle<LLPanelPrimMediaControls> getHandle() const { return mPanelHandle; }
  68. void setMediaFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal = LLVector3::zero);
  69. static const EZoomLevel kZoomLevels[];
  70. static const int kNumZoomLevels;
  71. enum EScrollDir
  72. {
  73. SCROLL_UP = 0,
  74. SCROLL_DOWN,
  75. SCROLL_LEFT,
  76. SCROLL_RIGHT,
  77. SCROLL_NONE
  78. };
  79. private:
  80. void onClickClose();
  81. void onClickBack();
  82. void onClickForward();
  83. void onClickHome();
  84. void onClickOpen();
  85. void onClickReload();
  86. void onClickPlay();
  87. void onClickPause();
  88. void onClickStop();
  89. void onClickZoom();
  90. void onClickSkipBack();
  91. void onClickSkipForward();
  92. void onClickMediaStop();
  93. void onCommitURL();
  94. void updateZoom();
  95. void setCurrentURL();
  96. void onCommitSlider();
  97. void onCommitVolumeUp();
  98. void onCommitVolumeDown();
  99. void onCommitVolumeSlider();
  100. void onToggleMute();
  101. void showVolumeSlider();
  102. void hideVolumeSlider();
  103. bool shouldVolumeSliderBeVisible();
  104. static void onScrollUp(void* user_data);
  105. static void onScrollUpHeld(void* user_data);
  106. static void onScrollLeft(void* user_data);
  107. static void onScrollLeftHeld(void* user_data);
  108. static void onScrollRight(void* user_data);
  109. static void onScrollRightHeld(void* user_data);
  110. static void onScrollDown(void* user_data);
  111. static void onScrollDownHeld(void* user_data);
  112. static void onScrollStop(void* user_data);
  113. static void onInputURL(LLFocusableElement* caller, void *userdata);
  114. static bool hasControlsPermission(LLViewerObject *obj, const LLMediaEntry *media_entry);
  115. void focusOnTarget();
  116. LLViewerMediaImpl* getTargetMediaImpl();
  117. LLViewerObject* getTargetObject();
  118. LLPluginClassMedia* getTargetMediaPlugin();
  119. private:
  120. LLView *mMediaRegion;
  121. LLUICtrl *mBackCtrl;
  122. LLUICtrl *mFwdCtrl;
  123. LLUICtrl *mReloadCtrl;
  124. LLUICtrl *mPlayCtrl;
  125. LLUICtrl *mPauseCtrl;
  126. LLUICtrl *mStopCtrl;
  127. LLUICtrl *mMediaStopCtrl;
  128. LLUICtrl *mHomeCtrl;
  129. LLUICtrl *mUnzoomCtrl;
  130. LLUICtrl *mOpenCtrl;
  131. LLUICtrl *mSkipBackCtrl;
  132. LLUICtrl *mSkipFwdCtrl;
  133. LLUICtrl *mZoomCtrl;
  134. LLPanel  *mMediaProgressPanel;
  135. LLProgressBar *mMediaProgressBar;
  136. LLUICtrl *mMediaAddressCtrl;
  137. LLUICtrl *mMediaAddress;
  138. LLUICtrl *mMediaPlaySliderPanel;
  139. LLUICtrl *mMediaPlaySliderCtrl;
  140. LLUICtrl *mVolumeCtrl;
  141. LLButton *mMuteBtn;
  142. LLSliderCtrl *mVolumeSliderCtrl;
  143. LLIconCtrl *mWhitelistIcon;
  144. LLIconCtrl *mSecureLockIcon;
  145. LLLayoutStack *mMediaControlsStack;
  146. LLUICtrl *mLeftBookend;
  147. LLUICtrl *mRightBookend;
  148. LLUIImage* mBackgroundImage;
  149. LLUIImage* mVolumeSliderBackgroundImage;
  150. F32 mSkipStep;
  151. S32 mMinWidth;
  152. S32 mMinHeight;
  153. F32 mZoomNearPadding;
  154. F32 mZoomMediumPadding;
  155. F32 mZoomFarPadding;
  156. S32 mTopWorldViewAvoidZone;
  157. LLUICtrl *mMediaPanelScroll;
  158. LLButton *mScrollUpCtrl;
  159. LLButton *mScrollLeftCtrl;
  160. LLButton *mScrollRightCtrl;
  161. LLButton *mScrollDownCtrl;
  162. bool mPauseFadeout;
  163. bool mUpdateSlider;
  164. bool mClearFaceOnFade;
  165. LLMatrix4 mLastCameraMat;
  166. EZoomLevel mCurrentZoom;
  167. EScrollDir mScrollState;
  168. LLCoordWindow mLastCursorPos;
  169. LLFrameTimer mInactivityTimer;
  170. LLFrameTimer mFadeTimer;
  171. F32 mInactiveTimeout;
  172. F32 mControlFadeTime;
  173. LLRootHandle<LLPanelPrimMediaControls> mPanelHandle;
  174. F32 mAlpha;
  175. std::string mCurrentURL;
  176. std::string mPreviousURL;
  177. F64 mCurrentRate;
  178. F64 mMovieDuration;
  179. LLUUID mTargetObjectID;
  180. S32 mTargetObjectFace;
  181. LLUUID mTargetImplID;
  182. LLVector3 mTargetObjectNormal;
  183. LLUUID mZoomObjectID;
  184. S32 mZoomObjectFace;
  185. S32 mVolumeSliderVisible;
  186. };
  187. #endif // LL_PANELPRIMMEDIACONTROLS_H