llpanelprimmediacontrols.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:6k
源码类别:
游戏引擎
开发平台:
C++ Builder
- /**
- * @file llpanelprimmediacontrols.h
- * @brief Pop-up media controls panel
- *
- * $LicenseInfo:firstyear=2003&license=viewergpl$
- *
- * Copyright (c) 2003-2010, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
- #ifndef LL_PANELPRIMMEDIACONTROLS_H
- #define LL_PANELPRIMMEDIACONTROLS_H
- #include "llpanel.h"
- #include "llviewermedia.h"
- class LLButton;
- class LLCoordWindow;
- class LLIconCtrl;
- class LLLayoutStack;
- class LLProgressBar;
- class LLSliderCtrl;
- class LLViewerMediaImpl;
- class LLPanelPrimMediaControls : public LLPanel
- {
- public:
- LLPanelPrimMediaControls();
- virtual ~LLPanelPrimMediaControls();
- /*virtual*/ BOOL postBuild();
- virtual void draw();
- virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
- virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- virtual BOOL handleKeyHere(KEY key, MASK mask);
- void updateShape();
- bool isMouseOver();
- enum EZoomLevel
- {
- ZOOM_NONE = 0,
- ZOOM_FAR,
- ZOOM_MEDIUM,
- ZOOM_NEAR
- };
- EZoomLevel getZoomLevel() const { return mCurrentZoom; }
- void nextZoomLevel();
- void resetZoomLevel(bool reset_camera = true);
- void close();
- LLHandle<LLPanelPrimMediaControls> getHandle() const { return mPanelHandle; }
- void setMediaFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal = LLVector3::zero);
- static const EZoomLevel kZoomLevels[];
- static const int kNumZoomLevels;
- enum EScrollDir
- {
- SCROLL_UP = 0,
- SCROLL_DOWN,
- SCROLL_LEFT,
- SCROLL_RIGHT,
- SCROLL_NONE
- };
- private:
- void onClickClose();
- void onClickBack();
- void onClickForward();
- void onClickHome();
- void onClickOpen();
- void onClickReload();
- void onClickPlay();
- void onClickPause();
- void onClickStop();
- void onClickZoom();
- void onClickSkipBack();
- void onClickSkipForward();
- void onClickMediaStop();
- void onCommitURL();
- void updateZoom();
- void setCurrentURL();
- void onCommitSlider();
- void onCommitVolumeUp();
- void onCommitVolumeDown();
- void onCommitVolumeSlider();
- void onToggleMute();
- void showVolumeSlider();
- void hideVolumeSlider();
- bool shouldVolumeSliderBeVisible();
- static void onScrollUp(void* user_data);
- static void onScrollUpHeld(void* user_data);
- static void onScrollLeft(void* user_data);
- static void onScrollLeftHeld(void* user_data);
- static void onScrollRight(void* user_data);
- static void onScrollRightHeld(void* user_data);
- static void onScrollDown(void* user_data);
- static void onScrollDownHeld(void* user_data);
- static void onScrollStop(void* user_data);
- static void onInputURL(LLFocusableElement* caller, void *userdata);
- static bool hasControlsPermission(LLViewerObject *obj, const LLMediaEntry *media_entry);
- void focusOnTarget();
- LLViewerMediaImpl* getTargetMediaImpl();
- LLViewerObject* getTargetObject();
- LLPluginClassMedia* getTargetMediaPlugin();
- private:
- LLView *mMediaRegion;
- LLUICtrl *mBackCtrl;
- LLUICtrl *mFwdCtrl;
- LLUICtrl *mReloadCtrl;
- LLUICtrl *mPlayCtrl;
- LLUICtrl *mPauseCtrl;
- LLUICtrl *mStopCtrl;
- LLUICtrl *mMediaStopCtrl;
- LLUICtrl *mHomeCtrl;
- LLUICtrl *mUnzoomCtrl;
- LLUICtrl *mOpenCtrl;
- LLUICtrl *mSkipBackCtrl;
- LLUICtrl *mSkipFwdCtrl;
- LLUICtrl *mZoomCtrl;
- LLPanel *mMediaProgressPanel;
- LLProgressBar *mMediaProgressBar;
- LLUICtrl *mMediaAddressCtrl;
- LLUICtrl *mMediaAddress;
- LLUICtrl *mMediaPlaySliderPanel;
- LLUICtrl *mMediaPlaySliderCtrl;
- LLUICtrl *mVolumeCtrl;
- LLButton *mMuteBtn;
- LLSliderCtrl *mVolumeSliderCtrl;
- LLIconCtrl *mWhitelistIcon;
- LLIconCtrl *mSecureLockIcon;
- LLLayoutStack *mMediaControlsStack;
- LLUICtrl *mLeftBookend;
- LLUICtrl *mRightBookend;
- LLUIImage* mBackgroundImage;
- LLUIImage* mVolumeSliderBackgroundImage;
- F32 mSkipStep;
- S32 mMinWidth;
- S32 mMinHeight;
- F32 mZoomNearPadding;
- F32 mZoomMediumPadding;
- F32 mZoomFarPadding;
- S32 mTopWorldViewAvoidZone;
- LLUICtrl *mMediaPanelScroll;
- LLButton *mScrollUpCtrl;
- LLButton *mScrollLeftCtrl;
- LLButton *mScrollRightCtrl;
- LLButton *mScrollDownCtrl;
- bool mPauseFadeout;
- bool mUpdateSlider;
- bool mClearFaceOnFade;
- LLMatrix4 mLastCameraMat;
- EZoomLevel mCurrentZoom;
- EScrollDir mScrollState;
- LLCoordWindow mLastCursorPos;
- LLFrameTimer mInactivityTimer;
- LLFrameTimer mFadeTimer;
- F32 mInactiveTimeout;
- F32 mControlFadeTime;
- LLRootHandle<LLPanelPrimMediaControls> mPanelHandle;
- F32 mAlpha;
- std::string mCurrentURL;
- std::string mPreviousURL;
- F64 mCurrentRate;
- F64 mMovieDuration;
- LLUUID mTargetObjectID;
- S32 mTargetObjectFace;
- LLUUID mTargetImplID;
- LLVector3 mTargetObjectNormal;
- LLUUID mZoomObjectID;
- S32 mZoomObjectFace;
- S32 mVolumeSliderVisible;
- };
- #endif // LL_PANELPRIMMEDIACONTROLS_H