summaryrefslogtreecommitdiff
path: root/indra/llwindow/llwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llwindow/llwindow.h')
-rw-r--r--indra/llwindow/llwindow.h370
1 files changed, 185 insertions, 185 deletions
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 279e269f43..aff9334cb6 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -1,25 +1,25 @@
-/**
+/**
* @file llwindow.h
* @brief Basic graphical window class
*
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -44,40 +44,40 @@ class LLWindow : public LLInstanceTracker<LLWindow>
{
public:
- struct LLWindowResolution
- {
- S32 mWidth;
- S32 mHeight;
- };
- enum ESwapMethod
- {
- SWAP_METHOD_UNDEFINED,
- SWAP_METHOD_EXCHANGE,
- SWAP_METHOD_COPY
- };
- enum EFlags
- {
- // currently unused
- };
+ struct LLWindowResolution
+ {
+ S32 mWidth;
+ S32 mHeight;
+ };
+ enum ESwapMethod
+ {
+ SWAP_METHOD_UNDEFINED,
+ SWAP_METHOD_EXCHANGE,
+ SWAP_METHOD_COPY
+ };
+ enum EFlags
+ {
+ // currently unused
+ };
public:
- virtual void show() = 0;
- virtual void hide() = 0;
- virtual void close() = 0;
- virtual BOOL getVisible() = 0;
- virtual BOOL getMinimized() = 0;
- virtual BOOL getMaximized() = 0;
- virtual BOOL maximize() = 0;
- virtual void minimize() = 0;
- virtual void restore() = 0;
- BOOL getFullscreen() { return mFullscreen; };
- virtual BOOL getPosition(LLCoordScreen *position) = 0;
- virtual BOOL getSize(LLCoordScreen *size) = 0;
- virtual BOOL getSize(LLCoordWindow *size) = 0;
- virtual BOOL setPosition(LLCoordScreen position) = 0;
- BOOL setSize(LLCoordScreen size);
- BOOL setSize(LLCoordWindow size);
- virtual void setMinSize(U32 min_width, U32 min_height, bool enforce_immediately = true);
- virtual BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL enable_vsync, const LLCoordScreen * const posp = NULL) = 0;
+ virtual void show() = 0;
+ virtual void hide() = 0;
+ virtual void close() = 0;
+ virtual BOOL getVisible() = 0;
+ virtual BOOL getMinimized() = 0;
+ virtual BOOL getMaximized() = 0;
+ virtual BOOL maximize() = 0;
+ virtual void minimize() = 0;
+ virtual void restore() = 0;
+ BOOL getFullscreen() { return mFullscreen; };
+ virtual BOOL getPosition(LLCoordScreen *position) = 0;
+ virtual BOOL getSize(LLCoordScreen *size) = 0;
+ virtual BOOL getSize(LLCoordWindow *size) = 0;
+ virtual BOOL setPosition(LLCoordScreen position) = 0;
+ BOOL setSize(LLCoordScreen size);
+ BOOL setSize(LLCoordWindow size);
+ virtual void setMinSize(U32 min_width, U32 min_height, bool enforce_immediately = true);
+ virtual BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL enable_vsync, const LLCoordScreen * const posp = NULL) = 0;
//create a new GL context that shares a namespace with this Window's main GL context and make it current on the current thread
// returns a pointer to be handed back to destroySharedConext/makeContextCurrent
@@ -91,111 +91,111 @@ public:
virtual void toggleVSync(bool enable_vsync) = 0;
virtual BOOL setCursorPosition(LLCoordWindow position) = 0;
- virtual BOOL getCursorPosition(LLCoordWindow *position) = 0;
+ virtual BOOL getCursorPosition(LLCoordWindow *position) = 0;
#if LL_WINDOWS
virtual BOOL getCursorDelta(LLCoordCommon* delta) = 0;
#endif
- virtual void showCursor() = 0;
- virtual void hideCursor() = 0;
- virtual BOOL isCursorHidden() = 0;
- virtual void showCursorFromMouseMove() = 0;
- virtual void hideCursorUntilMouseMove() = 0;
+ virtual void showCursor() = 0;
+ virtual void hideCursor() = 0;
+ virtual BOOL isCursorHidden() = 0;
+ virtual void showCursorFromMouseMove() = 0;
+ virtual void hideCursorUntilMouseMove() = 0;
// Provide a way to set the Viewer window title after the
// windows has been created. The initial use case for this
- // is described in SL-16102 (update window title with agent
+ // is described in SL-16102 (update window title with agent
// name, location etc. for non-interactive viewer) but it
// may also be useful in other cases.
virtual void setTitle(const std::string title);
- // These two functions create a way to make a busy cursor instead
- // of an arrow when someone's busy doing something. Draw an
- // arrow/hour if busycount > 0.
- virtual void incBusyCount();
- virtual void decBusyCount();
- virtual void resetBusyCount();
- virtual S32 getBusyCount() const;
+ // These two functions create a way to make a busy cursor instead
+ // of an arrow when someone's busy doing something. Draw an
+ // arrow/hour if busycount > 0.
+ virtual void incBusyCount();
+ virtual void decBusyCount();
+ virtual void resetBusyCount();
+ virtual S32 getBusyCount() const;
- // Sets cursor, may set to arrow+hourglass
- virtual void setCursor(ECursorType cursor) { mNextCursor = cursor; };
+ // Sets cursor, may set to arrow+hourglass
+ virtual void setCursor(ECursorType cursor) { mNextCursor = cursor; };
virtual ECursorType getCursor() const;
virtual ECursorType getNextCursor() const { return mNextCursor; };
- virtual void updateCursor() = 0;
-
- virtual void captureMouse() = 0;
- virtual void releaseMouse() = 0;
- virtual void setMouseClipping( BOOL b ) = 0;
-
- virtual BOOL isClipboardTextAvailable() = 0;
- virtual BOOL pasteTextFromClipboard(LLWString &dst) = 0;
- virtual BOOL copyTextToClipboard(const LLWString &src) = 0;
-
- virtual BOOL isPrimaryTextAvailable();
- virtual BOOL pasteTextFromPrimary(LLWString &dst);
- virtual BOOL copyTextToPrimary(const LLWString &src);
-
- virtual void flashIcon(F32 seconds) = 0;
- virtual F32 getGamma() = 0;
- virtual BOOL setGamma(const F32 gamma) = 0; // Set the gamma
- virtual void setFSAASamples(const U32 fsaa_samples) = 0; //set number of FSAA samples
- virtual U32 getFSAASamples() = 0;
- virtual BOOL restoreGamma() = 0; // Restore original gamma table (before updating gamma)
- virtual ESwapMethod getSwapMethod() { return mSwapMethod; }
- virtual void processMiscNativeEvents();
- virtual void gatherInput() = 0;
- virtual void delayInputProcessing() = 0;
- virtual void swapBuffers() = 0;
- virtual void bringToFront() = 0;
- virtual void focusClient() { }; // this may not have meaning or be required on other platforms, therefore, it's not abstract
- virtual void setOldResize(bool oldresize) { };
- // handy coordinate space conversion routines
- // NB: screen to window and vice verse won't work on width/height coordinate pairs,
- // as the conversion must take into account left AND right border widths, etc.
- virtual BOOL convertCoords( LLCoordScreen from, LLCoordWindow *to) = 0;
- virtual BOOL convertCoords( LLCoordWindow from, LLCoordScreen *to) = 0;
- virtual BOOL convertCoords( LLCoordWindow from, LLCoordGL *to) = 0;
- virtual BOOL convertCoords( LLCoordGL from, LLCoordWindow *to) = 0;
- virtual BOOL convertCoords( LLCoordScreen from, LLCoordGL *to) = 0;
- virtual BOOL convertCoords( LLCoordGL from, LLCoordScreen *to) = 0;
-
- // query supported resolutions
- virtual LLWindowResolution* getSupportedResolutions(S32 &num_resolutions) = 0;
- virtual F32 getNativeAspectRatio() = 0;
- virtual F32 getPixelAspectRatio() = 0;
- virtual void setNativeAspectRatio(F32 aspect) = 0;
-
- // query VRAM usage
- virtual U32 getAvailableVRAMMegabytes() = 0;
-
- virtual void beforeDialog() {}; // prepare to put up an OS dialog (if special measures are required, such as in fullscreen mode)
- virtual void afterDialog() {}; // undo whatever was done in beforeDialog()
-
- // opens system default color picker, modally
- // Returns TRUE if valid color selected
- virtual BOOL dialogColorPicker(F32 *r, F32 *g, F32 *b);
+ virtual void updateCursor() = 0;
+
+ virtual void captureMouse() = 0;
+ virtual void releaseMouse() = 0;
+ virtual void setMouseClipping( BOOL b ) = 0;
+
+ virtual BOOL isClipboardTextAvailable() = 0;
+ virtual BOOL pasteTextFromClipboard(LLWString &dst) = 0;
+ virtual BOOL copyTextToClipboard(const LLWString &src) = 0;
+
+ virtual BOOL isPrimaryTextAvailable();
+ virtual BOOL pasteTextFromPrimary(LLWString &dst);
+ virtual BOOL copyTextToPrimary(const LLWString &src);
+
+ virtual void flashIcon(F32 seconds) = 0;
+ virtual F32 getGamma() = 0;
+ virtual BOOL setGamma(const F32 gamma) = 0; // Set the gamma
+ virtual void setFSAASamples(const U32 fsaa_samples) = 0; //set number of FSAA samples
+ virtual U32 getFSAASamples() = 0;
+ virtual BOOL restoreGamma() = 0; // Restore original gamma table (before updating gamma)
+ virtual ESwapMethod getSwapMethod() { return mSwapMethod; }
+ virtual void processMiscNativeEvents();
+ virtual void gatherInput() = 0;
+ virtual void delayInputProcessing() = 0;
+ virtual void swapBuffers() = 0;
+ virtual void bringToFront() = 0;
+ virtual void focusClient() { }; // this may not have meaning or be required on other platforms, therefore, it's not abstract
+ virtual void setOldResize(bool oldresize) { };
+ // handy coordinate space conversion routines
+ // NB: screen to window and vice verse won't work on width/height coordinate pairs,
+ // as the conversion must take into account left AND right border widths, etc.
+ virtual BOOL convertCoords( LLCoordScreen from, LLCoordWindow *to) = 0;
+ virtual BOOL convertCoords( LLCoordWindow from, LLCoordScreen *to) = 0;
+ virtual BOOL convertCoords( LLCoordWindow from, LLCoordGL *to) = 0;
+ virtual BOOL convertCoords( LLCoordGL from, LLCoordWindow *to) = 0;
+ virtual BOOL convertCoords( LLCoordScreen from, LLCoordGL *to) = 0;
+ virtual BOOL convertCoords( LLCoordGL from, LLCoordScreen *to) = 0;
+
+ // query supported resolutions
+ virtual LLWindowResolution* getSupportedResolutions(S32 &num_resolutions) = 0;
+ virtual F32 getNativeAspectRatio() = 0;
+ virtual F32 getPixelAspectRatio() = 0;
+ virtual void setNativeAspectRatio(F32 aspect) = 0;
+
+ // query VRAM usage
+ virtual U32 getAvailableVRAMMegabytes() = 0;
+
+ virtual void beforeDialog() {}; // prepare to put up an OS dialog (if special measures are required, such as in fullscreen mode)
+ virtual void afterDialog() {}; // undo whatever was done in beforeDialog()
+
+ // opens system default color picker, modally
+ // Returns TRUE if valid color selected
+ virtual BOOL dialogColorPicker(F32 *r, F32 *g, F32 *b);
// return a platform-specific window reference (HWND on Windows, WindowRef on the Mac, Gtk window on Linux)
- virtual void *getPlatformWindow() = 0;
+ virtual void *getPlatformWindow() = 0;
// return the platform-specific window reference we use to initialize llmozlib (HWND on Windows, WindowRef on the Mac, Gtk window on Linux)
- virtual void *getMediaWindow();
-
- // control platform's Language Text Input mechanisms.
- virtual void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) {}
- virtual void setLanguageTextInput( const LLCoordGL & pos ) {};
- virtual void updateLanguageTextInputArea() {}
- virtual void interruptLanguageTextInput() {}
- virtual void spawnWebBrowser(const std::string& escaped_url, bool async) {};
+ virtual void *getMediaWindow();
+
+ // control platform's Language Text Input mechanisms.
+ virtual void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) {}
+ virtual void setLanguageTextInput( const LLCoordGL & pos ) {};
+ virtual void updateLanguageTextInputArea() {}
+ virtual void interruptLanguageTextInput() {}
+ virtual void spawnWebBrowser(const std::string& escaped_url, bool async) {};
+
+ static std::vector<std::string> getDynamicFallbackFontList();
- static std::vector<std::string> getDynamicFallbackFontList();
-
- // Provide native key event data
- virtual LLSD getNativeKeyData() { return LLSD::emptyMap(); }
+ // Provide native key event data
+ virtual LLSD getNativeKeyData() { return LLSD::emptyMap(); }
- // Get system UI size based on DPI (for 96 DPI UI size should be 1.0)
- virtual F32 getSystemUISize() { return 1.0; }
+ // Get system UI size based on DPI (for 96 DPI UI size should be 1.0)
+ virtual F32 getSystemUISize() { return 1.0; }
- static std::vector<std::string> getDisplaysResolutionList();
+ static std::vector<std::string> getDisplaysResolutionList();
// windows only DirectInput8 for joysticks
virtual void* getDirectInput8() { return NULL; };
@@ -209,49 +209,49 @@ public:
virtual S32 getRefreshRate() { return mRefreshRate; }
protected:
- LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags);
- virtual ~LLWindow();
- // Defaults to true
- virtual BOOL isValid();
- // Defaults to true
- virtual BOOL canDelete();
+ LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags);
+ virtual ~LLWindow();
+ // Defaults to true
+ virtual BOOL isValid();
+ // Defaults to true
+ virtual BOOL canDelete();
- virtual BOOL setSizeImpl(LLCoordScreen size) = 0;
- virtual BOOL setSizeImpl(LLCoordWindow size) = 0;
+ virtual BOOL setSizeImpl(LLCoordScreen size) = 0;
+ virtual BOOL setSizeImpl(LLCoordWindow size) = 0;
protected:
- LLWindowCallbacks* mCallbacks;
-
- BOOL mPostQuit; // should this window post a quit message when destroyed?
- BOOL mFullscreen;
- S32 mFullscreenWidth;
- S32 mFullscreenHeight;
- S32 mFullscreenBits;
- S32 mFullscreenRefresh;
- LLWindowResolution* mSupportedResolutions;
- S32 mNumSupportedResolutions;
- ECursorType mCurrentCursor;
- ECursorType mNextCursor;
- BOOL mCursorHidden;
- S32 mBusyCount; // how deep is the "cursor busy" stack?
- BOOL mIsMouseClipping; // Is this window currently clipping the mouse
- ESwapMethod mSwapMethod;
- BOOL mHideCursorPermanent;
- U32 mFlags;
- U16 mHighSurrogate;
- S32 mMinWindowWidth;
- S32 mMinWindowHeight;
+ LLWindowCallbacks* mCallbacks;
+
+ BOOL mPostQuit; // should this window post a quit message when destroyed?
+ BOOL mFullscreen;
+ S32 mFullscreenWidth;
+ S32 mFullscreenHeight;
+ S32 mFullscreenBits;
+ S32 mFullscreenRefresh;
+ LLWindowResolution* mSupportedResolutions;
+ S32 mNumSupportedResolutions;
+ ECursorType mCurrentCursor;
+ ECursorType mNextCursor;
+ BOOL mCursorHidden;
+ S32 mBusyCount; // how deep is the "cursor busy" stack?
+ BOOL mIsMouseClipping; // Is this window currently clipping the mouse
+ ESwapMethod mSwapMethod;
+ BOOL mHideCursorPermanent;
+ U32 mFlags;
+ U16 mHighSurrogate;
+ S32 mMinWindowWidth;
+ S32 mMinWindowHeight;
S32 mRefreshRate;
- // Handle a UTF-16 encoding unit received from keyboard.
- // Converting the series of UTF-16 encoding units to UTF-32 data,
- // this method passes the resulting UTF-32 data to mCallback's
- // handleUnicodeChar. The mask should be that to be passed to the
- // callback. This method uses mHighSurrogate as a dedicated work
- // variable.
- void handleUnicodeUTF16(U16 utf16, MASK mask);
+ // Handle a UTF-16 encoding unit received from keyboard.
+ // Converting the series of UTF-16 encoding units to UTF-32 data,
+ // this method passes the resulting UTF-32 data to mCallback's
+ // handleUnicodeChar. The mask should be that to be passed to the
+ // callback. This method uses mHighSurrogate as a dedicated work
+ // variable.
+ void handleUnicodeUTF16(U16 utf16, MASK mask);
- friend class LLWindowManager;
+ friend class LLWindowManager;
};
@@ -264,24 +264,24 @@ protected:
class LLSplashScreen
{
public:
- LLSplashScreen() { };
- virtual ~LLSplashScreen() { };
+ LLSplashScreen() { };
+ virtual ~LLSplashScreen() { };
- // Call to display the window.
- static LLSplashScreen * create();
- static void show();
- static void hide();
- static void update(const std::string& string);
+ // Call to display the window.
+ static LLSplashScreen * create();
+ static void show();
+ static void hide();
+ static void update(const std::string& string);
- static bool isVisible();
+ static bool isVisible();
protected:
- // These are overridden by the platform implementation
- virtual void showImpl() = 0;
- virtual void updateImpl(const std::string& string) = 0;
- virtual void hideImpl() = 0;
+ // These are overridden by the platform implementation
+ virtual void showImpl() = 0;
+ virtual void updateImpl(const std::string& string) = 0;
+ virtual void hideImpl() = 0;
- static BOOL sVisible;
+ static BOOL sVisible;
};
@@ -303,21 +303,21 @@ const S32 OSBTN_CANCEL = 3;
class LLWindowManager
{
public:
- static LLWindow *createWindow(
- LLWindowCallbacks* callbacks,
- const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
- U32 flags = 0,
- BOOL fullscreen = FALSE,
- BOOL clearBg = FALSE,
- BOOL enable_vsync = FALSE,
- BOOL use_gl = TRUE,
- BOOL ignore_pixel_depth = FALSE,
- U32 fsaa_samples = 0,
+ static LLWindow *createWindow(
+ LLWindowCallbacks* callbacks,
+ const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
+ U32 flags = 0,
+ BOOL fullscreen = FALSE,
+ BOOL clearBg = FALSE,
+ BOOL enable_vsync = FALSE,
+ BOOL use_gl = TRUE,
+ BOOL ignore_pixel_depth = FALSE,
+ U32 fsaa_samples = 0,
U32 max_cores = 0,
U32 max_vram = 0,
F32 max_gl_version = 4.6f);
- static BOOL destroyWindow(LLWindow* window);
- static BOOL isWindowValid(LLWindow *window);
+ static BOOL destroyWindow(LLWindow* window);
+ static BOOL isWindowValid(LLWindow *window);
};
//