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

游戏引擎

开发平台:

C++ Builder

  1. /**
  2.  * @file LLMediaPluginTest.cpp
  3.  * @brief Primary test application for LLMedia (Separate Process) Plugin system
  4.  *
  5.  * $LicenseInfo:firstyear=2008&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2008-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_MEDIA_PLUGIN_TEST_H
  33. #define LL_MEDIA_PLUGIN_TEST_H
  34. #include <vector>
  35. #include <string>
  36. #include "llpluginclassmedia.h"
  37. #include "llgl.h"
  38. // Forward declarations
  39. class GLUI_Rotation;
  40. class GLUI_Translation;
  41. class GLUI_Listbox;
  42. class GLUI_EditText;
  43. class GLUI_StaticText;
  44. class GLUI;
  45. class GLUI_Button;
  46. ////////////////////////////////////////////////////////////////////////////////
  47. //
  48. struct mediaPanel
  49. {
  50. public:
  51. mediaPanel();
  52. ~mediaPanel();
  53. int mId;
  54. std::string mStartUrl;
  55. std::string mMimeType;
  56. LLPluginClassMedia *mMediaSource;
  57. int mMediaWidth;
  58. int mMediaHeight;
  59. int mTextureWidth;
  60. int mTextureHeight;
  61. double mTextureScaleX;
  62. double mTextureScaleY;
  63. GLuint mMediaTextureHandle;
  64. GLuint mPickTextureHandle;
  65. unsigned char* mPickTexturePixels;
  66. bool mAppTextureCoordsOpenGL;
  67. bool mReadyToRender;
  68. };
  69. ////////////////////////////////////////////////////////////////////////////////
  70. //
  71. class LLMediaPluginTest : public LLPluginClassMediaOwner
  72. {
  73. public:
  74. LLMediaPluginTest( int app_window, int window_width, int window_height );
  75. ~LLMediaPluginTest();
  76. void reshape( int width, int height );
  77. void display();
  78. void idle();
  79. void gluiCallback( int control_id );
  80. void keyboard( int key );
  81. void mousePassive( int x, int y );
  82. void mouseButton( int button, int state, int x, int y );
  83. void mouseMove( int x, int y );
  84. void bindTexture(GLuint texture, GLint row_length = 0, GLint alignment = 1);
  85. bool checkGLError(const char *name = "OpenGL");
  86. void drawGeometry( int panel );
  87. void startPanelHighlight( float red, float green, float blue, float line_width );
  88. void endPanelHighlight();
  89. enum { DrawTypePickTexture, DrawTypeMediaTexture };
  90. void draw( int draw_type );
  91. void windowPosToTexturePos( int window_x, int window_y, int& media_x, int& media_y, int& id );
  92. void addMediaPanel( std::string url );
  93. void updateMediaPanel( mediaPanel* panel );
  94. void remMediaPanel( mediaPanel* panel );
  95. void replaceMediaPanel( mediaPanel* panel, std::string url );
  96. void getRandomMediaSize( int& width, int& height, std::string mime_type );
  97. void navigateToNewURI( std::string uri );
  98.         void initUrlHistory( std::string uri );
  99. void selectPanelById( int id );
  100. void selectPanel( mediaPanel* panel );
  101. mediaPanel* findMediaPanel( LLPluginClassMedia* panel );
  102. void makePickTexture( int id, GLuint* texture_handle, unsigned char** texture_pixels );
  103. void makeChrome();
  104. void resetView();
  105. void dumpPanelInfo();
  106. void updateStatusBar();
  107. // Inherited from LLPluginClassMediaOwner
  108. /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, LLPluginClassMediaOwner::EMediaEvent);
  109. private:
  110. const int mVersionMajor;
  111. const int mVersionMinor;
  112. const int mVersionPatch;
  113. const int mMaxPanels;
  114. int mAppWindow;
  115. int mWindowWidth;
  116. int mWindowHeight;
  117. int mCurMouseX;
  118. int mCurMouseY;
  119. unsigned char mPixelReadColor[ 3 ];
  120. bool mFuzzyMedia;
  121. const std::string mHomeWebUrl;
  122. std::vector< mediaPanel* > mMediaPanels;
  123. mediaPanel* mSelectedPanel;
  124. std::string mimeTypeFromUrl( std::string& url );
  125. std::string pluginNameFromMimeType( std::string& mime_type );
  126. GLUI_Rotation* mViewRotationCtrl;
  127. GLUI_Translation* mViewScaleCtrl;
  128. GLUI_Translation* mViewTranslationCtrl;
  129. float mViewportAspect;
  130. float mViewPos[ 3 ];
  131. float mViewRotation[ 16 ];
  132. int mIdControlAddPanel;
  133. int mIdControlRemPanel;
  134. std::vector< std::pair< std::string, std::string > > mBookmarks;
  135. GLUI_Listbox* mBookmarkList;
  136. int mIdBookmarks;
  137. int mIdUrlEdit;
  138. GLUI_EditText* mUrlEdit;
  139.         int mIdUrlInitHistoryEdit;
  140. GLUI_EditText* mUrlInitHistoryEdit;
  141. int mSelBookmark;
  142. int mIdRandomPanelCount;
  143. int mRandomPanelCount;
  144. int mIdRandomBookmarks;
  145. int mRandomBookmarks;
  146. int mIdDisableTimeout;
  147. int mDisableTimeout;
  148. int mIdControlCrashPlugin;
  149. int mIdControlHangPlugin;
  150. int mIdControlExitApp;
  151. GLUI* mGluiMediaTimeControlWindow;
  152. int mIdMediaTimeControlPlay;
  153. int mIdMediaTimeControlLoop;
  154. int mIdMediaTimeControlPause;
  155. int mIdMediaTimeControlStop;
  156. int mIdMediaTimeControlSeek;
  157. int mIdMediaTimeControlVolume;
  158. int mMediaTimeControlVolume;
  159. int mIdMediaTimeControlSeekSeconds;
  160. int mMediaTimeControlSeekSeconds;
  161. int mIdMediaTimeControlRewind;
  162. int mIdMediaTimeControlFastForward;
  163. GLUI* mGluiMediaBrowserControlWindow;
  164. int mIdMediaBrowserControlBack;
  165. GLUI_Button* mMediaBrowserControlBackButton;
  166. int mIdMediaBrowserControlStop;
  167. int mIdMediaBrowserControlForward;
  168. GLUI_Button* mMediaBrowserControlForwardButton;
  169. bool mGluiMediaTimeControlWindowFlag;
  170. bool mGluiMediaBrowserControlWindowFlag;
  171. bool mMediaBrowserControlBackButtonFlag;
  172. bool mMediaBrowserControlForwardButtonFlag;
  173. int mIdMediaBrowserControlHome;
  174. int mIdMediaBrowserControlReload;
  175. int mIdMediaBrowserControlClearCache;
  176. int mIdMediaBrowserControlClearCookies;
  177. int mIdMediaBrowserControlEnableCookies;
  178. int mMediaBrowserControlEnableCookies;
  179. GLUI* mBottomGLUIWindow;
  180. GLUI_StaticText* mStatusText;
  181. };
  182. #endif // LL_MEDIA_PLUGIN_TEST_H