diff options
author | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 21:25:21 +0200 |
---|---|---|
committer | Andrey Lihatskiy <alihatskiy@productengine.com> | 2024-05-22 22:40:26 +0300 |
commit | e2e37cced861b98de8c1a7c9c0d3a50d2d90e433 (patch) | |
tree | 1bb897489ce524986f6196201c10ac0d8861aa5f /indra/llwindow/llwindowmacosx.h | |
parent | 069ea06848f766466f1a281144c82a0f2bd79f3a (diff) |
Fix line endlings
Diffstat (limited to 'indra/llwindow/llwindowmacosx.h')
-rw-r--r-- | indra/llwindow/llwindowmacosx.h | 530 |
1 files changed, 265 insertions, 265 deletions
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 9ed51a9f15..3be89c255a 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -1,265 +1,265 @@ -/**
- * @file llwindowmacosx.h
- * @brief Mac implementation of LLWindow 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$
- */
-
-#ifndef LL_LLWINDOWMACOSX_H
-#define LL_LLWINDOWMACOSX_H
-
-#include "llwindow.h"
-#include "llwindowcallbacks.h"
-#include "llwindowmacosx-objc.h"
-
-#include "lltimer.h"
-
-#include <ApplicationServices/ApplicationServices.h>
-#include <OpenGL/OpenGL.h>
-
-// AssertMacros.h does bad things.
-#include "fix_macros.h"
-#undef verify
-#undef require
-
-class LLWindowMacOSX : public LLWindow
-{
-public:
- void show() override;
- void hide() override;
- void close() override;
- bool getVisible() override;
- bool getMinimized() override;
- bool getMaximized() override;
- bool maximize() override;
- void minimize() override;
- void restore() override;
- bool getFullscreen();
- bool getPosition(LLCoordScreen *position) override;
- bool getSize(LLCoordScreen *size) override;
- bool getSize(LLCoordWindow *size) override;
- bool setPosition(LLCoordScreen position) override;
- bool setSizeImpl(LLCoordScreen size) override;
- bool setSizeImpl(LLCoordWindow size) override;
- bool switchContext(bool fullscreen, const LLCoordScreen &size, bool enable_vsync, const LLCoordScreen * const posp = NULL) override;
- bool setCursorPosition(LLCoordWindow position) override;
- bool getCursorPosition(LLCoordWindow *position) override;
- void showCursor() override;
- void hideCursor() override;
- void showCursorFromMouseMove() override;
- void hideCursorUntilMouseMove() override;
- bool isCursorHidden() override;
- void updateCursor() override;
- ECursorType getCursor() const override;
- void captureMouse() override;
- void releaseMouse() override;
- void setMouseClipping( bool b ) override;
- bool isClipboardTextAvailable() override;
- bool pasteTextFromClipboard(LLWString &dst) override;
- bool copyTextToClipboard(const LLWString & src) override;
- void flashIcon(F32 seconds) override;
- F32 getGamma() override;
- bool setGamma(const F32 gamma) override; // Set the gamma
- U32 getFSAASamples() override;
- void setFSAASamples(const U32 fsaa_samples) override;
- bool restoreGamma() override; // Restore original gamma table (before updating gamma)
- ESwapMethod getSwapMethod() override { return mSwapMethod; }
- void gatherInput() override;
- void delayInputProcessing() override {};
- void swapBuffers() override;
-
- // handy coordinate space conversion routines
- bool convertCoords(LLCoordScreen from, LLCoordWindow *to) override;
- bool convertCoords(LLCoordWindow from, LLCoordScreen *to) override;
- bool convertCoords(LLCoordWindow from, LLCoordGL *to) override;
- bool convertCoords(LLCoordGL from, LLCoordWindow *to) override;
- bool convertCoords(LLCoordScreen from, LLCoordGL *to) override;
- bool convertCoords(LLCoordGL from, LLCoordScreen *to) override;
-
- LLWindowResolution* getSupportedResolutions(S32 &num_resolutions) override;
- F32 getNativeAspectRatio() override;
- F32 getPixelAspectRatio() override;
- void setNativeAspectRatio(F32 ratio) override { mOverrideAspectRatio = ratio; }
-
- virtual void setMaxVRAMMegabytes(U32 max_vram) override {}
-
- void beforeDialog() override;
- void afterDialog() override;
-
- bool dialogColorPicker(F32 *r, F32 *g, F32 *b) override;
-
- void *getPlatformWindow() override;
- void bringToFront() override {};
-
- void allowLanguageTextInput(LLPreeditor *preeditor, bool b) override;
- void interruptLanguageTextInput() override;
- void spawnWebBrowser(const std::string& escaped_url, bool async) override;
- F32 getSystemUISize() override;
-
- bool getInputDevices(U32 device_type_filter,
- std::function<bool(std::string&, LLSD&, void*)> osx_callback,
- void* win_callback,
- void* userdata) override;
-
- static std::vector<std::string> getDisplaysResolutionList();
-
- static std::vector<std::string> getDynamicFallbackFontList();
-
- // Provide native key event data
- LLSD getNativeKeyData() override;
-
- void* getWindow() { return mWindow; }
- LLWindowCallbacks* getCallbacks() { return mCallbacks; }
- LLPreeditor* getPreeditor() { return mPreeditor; }
-
- void updateMouseDeltas(float* deltas);
- void getMouseDeltas(float* delta);
-
- void handleDragNDrop(std::string url, LLWindowCallbacks::DragNDropAction action);
-
- bool allowsLanguageInput() { return mLanguageTextInputAllowed; }
-
- //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
- void* createSharedContext() override;
- //make the given context current on the current thread
- void makeContextCurrent(void* context) override;
- //destroy the given context that was retrieved by createSharedContext()
- //Must be called on the same thread that called createSharedContext()
- void destroySharedContext(void* context) override;
-
- void toggleVSync(bool enable_vsync) override;
-
-protected:
- LLWindowMacOSX(LLWindowCallbacks* callbacks,
- const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
- bool fullscreen, bool clearBg, bool enable_vsync, bool use_gl,
- bool ignore_pixel_depth,
- U32 fsaa_samples,
- U32 max_vram);
- ~LLWindowMacOSX();
-
- void initCursors();
- bool isValid() override;
- void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size);
-
-
- // Changes display resolution. Returns true if successful
- bool setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh);
-
- // Go back to last fullscreen display resolution.
- bool setFullscreenResolution();
-
- // Restore the display resolution to its value before we ran the app.
- bool resetDisplayResolution();
-
- bool shouldPostQuit() { return mPostQuit; }
-
- //Satisfy MAINT-3135 and MAINT-3288 with a flag.
- /*virtual */ void setOldResize(bool oldresize) override {setResizeMode(oldresize, mGLView); }
-
-private:
- void restoreGLContext();
-
-protected:
- //
- // Platform specific methods
- //
-
- // create or re-create the GL context/window. Called from the constructor and switchContext().
- bool createContext(int x, int y, int width, int height, int bits, bool fullscreen, bool enable_vsync);
- void destroyContext();
- void setupFailure(const std::string& text, const std::string& caption, U32 type);
- void adjustCursorDecouple(bool warpingMouse = false);
- static MASK modifiersToMask(S16 modifiers);
-
-#if LL_OS_DRAGDROP_ENABLED
-
- //static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, void * handlerRefCon, DragRef theDrag);
- //static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, DragRef theDrag);
-
-
-#endif // LL_OS_DRAGDROP_ENABLED
-
- //
- // Platform specific variables
- //
-
- // Use generic pointers here. This lets us do some funky Obj-C interop using Obj-C objects without having to worry about any compilation problems that may arise.
- NSWindowRef mWindow;
- GLViewRef mGLView;
- CGLContextObj mContext;
- CGLPixelFormatObj mPixelFormat;
- CGDirectDisplayID mDisplay;
-
- LLRect mOldMouseClip; // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse()
- std::string mWindowTitle;
- double mOriginalAspectRatio;
- bool mSimulatedRightClick;
- U32 mLastModifiers;
- bool mHandsOffEvents; // When true, temporarially disable CarbonEvent processing.
- // Used to allow event processing when putting up dialogs in fullscreen mode.
- bool mCursorDecoupled;
- S32 mCursorLastEventDeltaX;
- S32 mCursorLastEventDeltaY;
- bool mCursorIgnoreNextDelta;
- bool mNeedsResize; // Constructor figured out the window is too big, it needs a resize.
- LLCoordScreen mNeedsResizeSize;
- F32 mOverrideAspectRatio;
- bool mMaximized;
- bool mMinimized;
- U32 mFSAASamples;
- bool mForceRebuild;
-
- S32 mDragOverrideCursor;
-
- // Input method management through Text Service Manager.
- bool mLanguageTextInputAllowed;
- LLPreeditor* mPreeditor;
-
-public:
- static bool sUseMultGL;
-
- friend class LLWindowManager;
-
-};
-
-
-class LLSplashScreenMacOSX : public LLSplashScreen
-{
-public:
- LLSplashScreenMacOSX();
- virtual ~LLSplashScreenMacOSX();
-
- void showImpl();
- void updateImpl(const std::string& mesg);
- void hideImpl();
-
-private:
- WindowRef mWindow;
-};
-
-S32 OSMessageBoxMacOSX(const std::string& text, const std::string& caption, U32 type);
-
-void load_url_external(const char* url);
-
-#endif //LL_LLWINDOWMACOSX_H
+/** + * @file llwindowmacosx.h + * @brief Mac implementation of LLWindow 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$ + */ + +#ifndef LL_LLWINDOWMACOSX_H +#define LL_LLWINDOWMACOSX_H + +#include "llwindow.h" +#include "llwindowcallbacks.h" +#include "llwindowmacosx-objc.h" + +#include "lltimer.h" + +#include <ApplicationServices/ApplicationServices.h> +#include <OpenGL/OpenGL.h> + +// AssertMacros.h does bad things. +#include "fix_macros.h" +#undef verify +#undef require + +class LLWindowMacOSX : public LLWindow +{ +public: + void show() override; + void hide() override; + void close() override; + bool getVisible() override; + bool getMinimized() override; + bool getMaximized() override; + bool maximize() override; + void minimize() override; + void restore() override; + bool getFullscreen(); + bool getPosition(LLCoordScreen *position) override; + bool getSize(LLCoordScreen *size) override; + bool getSize(LLCoordWindow *size) override; + bool setPosition(LLCoordScreen position) override; + bool setSizeImpl(LLCoordScreen size) override; + bool setSizeImpl(LLCoordWindow size) override; + bool switchContext(bool fullscreen, const LLCoordScreen &size, bool enable_vsync, const LLCoordScreen * const posp = NULL) override; + bool setCursorPosition(LLCoordWindow position) override; + bool getCursorPosition(LLCoordWindow *position) override; + void showCursor() override; + void hideCursor() override; + void showCursorFromMouseMove() override; + void hideCursorUntilMouseMove() override; + bool isCursorHidden() override; + void updateCursor() override; + ECursorType getCursor() const override; + void captureMouse() override; + void releaseMouse() override; + void setMouseClipping( bool b ) override; + bool isClipboardTextAvailable() override; + bool pasteTextFromClipboard(LLWString &dst) override; + bool copyTextToClipboard(const LLWString & src) override; + void flashIcon(F32 seconds) override; + F32 getGamma() override; + bool setGamma(const F32 gamma) override; // Set the gamma + U32 getFSAASamples() override; + void setFSAASamples(const U32 fsaa_samples) override; + bool restoreGamma() override; // Restore original gamma table (before updating gamma) + ESwapMethod getSwapMethod() override { return mSwapMethod; } + void gatherInput() override; + void delayInputProcessing() override {}; + void swapBuffers() override; + + // handy coordinate space conversion routines + bool convertCoords(LLCoordScreen from, LLCoordWindow *to) override; + bool convertCoords(LLCoordWindow from, LLCoordScreen *to) override; + bool convertCoords(LLCoordWindow from, LLCoordGL *to) override; + bool convertCoords(LLCoordGL from, LLCoordWindow *to) override; + bool convertCoords(LLCoordScreen from, LLCoordGL *to) override; + bool convertCoords(LLCoordGL from, LLCoordScreen *to) override; + + LLWindowResolution* getSupportedResolutions(S32 &num_resolutions) override; + F32 getNativeAspectRatio() override; + F32 getPixelAspectRatio() override; + void setNativeAspectRatio(F32 ratio) override { mOverrideAspectRatio = ratio; } + + virtual void setMaxVRAMMegabytes(U32 max_vram) override {} + + void beforeDialog() override; + void afterDialog() override; + + bool dialogColorPicker(F32 *r, F32 *g, F32 *b) override; + + void *getPlatformWindow() override; + void bringToFront() override {}; + + void allowLanguageTextInput(LLPreeditor *preeditor, bool b) override; + void interruptLanguageTextInput() override; + void spawnWebBrowser(const std::string& escaped_url, bool async) override; + F32 getSystemUISize() override; + + bool getInputDevices(U32 device_type_filter, + std::function<bool(std::string&, LLSD&, void*)> osx_callback, + void* win_callback, + void* userdata) override; + + static std::vector<std::string> getDisplaysResolutionList(); + + static std::vector<std::string> getDynamicFallbackFontList(); + + // Provide native key event data + LLSD getNativeKeyData() override; + + void* getWindow() { return mWindow; } + LLWindowCallbacks* getCallbacks() { return mCallbacks; } + LLPreeditor* getPreeditor() { return mPreeditor; } + + void updateMouseDeltas(float* deltas); + void getMouseDeltas(float* delta); + + void handleDragNDrop(std::string url, LLWindowCallbacks::DragNDropAction action); + + bool allowsLanguageInput() { return mLanguageTextInputAllowed; } + + //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 + void* createSharedContext() override; + //make the given context current on the current thread + void makeContextCurrent(void* context) override; + //destroy the given context that was retrieved by createSharedContext() + //Must be called on the same thread that called createSharedContext() + void destroySharedContext(void* context) override; + + void toggleVSync(bool enable_vsync) override; + +protected: + LLWindowMacOSX(LLWindowCallbacks* callbacks, + const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, + bool fullscreen, bool clearBg, bool enable_vsync, bool use_gl, + bool ignore_pixel_depth, + U32 fsaa_samples, + U32 max_vram); + ~LLWindowMacOSX(); + + void initCursors(); + bool isValid() override; + void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size); + + + // Changes display resolution. Returns true if successful + bool setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh); + + // Go back to last fullscreen display resolution. + bool setFullscreenResolution(); + + // Restore the display resolution to its value before we ran the app. + bool resetDisplayResolution(); + + bool shouldPostQuit() { return mPostQuit; } + + //Satisfy MAINT-3135 and MAINT-3288 with a flag. + /*virtual */ void setOldResize(bool oldresize) override {setResizeMode(oldresize, mGLView); } + +private: + void restoreGLContext(); + +protected: + // + // Platform specific methods + // + + // create or re-create the GL context/window. Called from the constructor and switchContext(). + bool createContext(int x, int y, int width, int height, int bits, bool fullscreen, bool enable_vsync); + void destroyContext(); + void setupFailure(const std::string& text, const std::string& caption, U32 type); + void adjustCursorDecouple(bool warpingMouse = false); + static MASK modifiersToMask(S16 modifiers); + +#if LL_OS_DRAGDROP_ENABLED + + //static OSErr dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, void * handlerRefCon, DragRef theDrag); + //static OSErr dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, DragRef theDrag); + + +#endif // LL_OS_DRAGDROP_ENABLED + + // + // Platform specific variables + // + + // Use generic pointers here. This lets us do some funky Obj-C interop using Obj-C objects without having to worry about any compilation problems that may arise. + NSWindowRef mWindow; + GLViewRef mGLView; + CGLContextObj mContext; + CGLPixelFormatObj mPixelFormat; + CGDirectDisplayID mDisplay; + + LLRect mOldMouseClip; // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse() + std::string mWindowTitle; + double mOriginalAspectRatio; + bool mSimulatedRightClick; + U32 mLastModifiers; + bool mHandsOffEvents; // When true, temporarially disable CarbonEvent processing. + // Used to allow event processing when putting up dialogs in fullscreen mode. + bool mCursorDecoupled; + S32 mCursorLastEventDeltaX; + S32 mCursorLastEventDeltaY; + bool mCursorIgnoreNextDelta; + bool mNeedsResize; // Constructor figured out the window is too big, it needs a resize. + LLCoordScreen mNeedsResizeSize; + F32 mOverrideAspectRatio; + bool mMaximized; + bool mMinimized; + U32 mFSAASamples; + bool mForceRebuild; + + S32 mDragOverrideCursor; + + // Input method management through Text Service Manager. + bool mLanguageTextInputAllowed; + LLPreeditor* mPreeditor; + +public: + static bool sUseMultGL; + + friend class LLWindowManager; + +}; + + +class LLSplashScreenMacOSX : public LLSplashScreen +{ +public: + LLSplashScreenMacOSX(); + virtual ~LLSplashScreenMacOSX(); + + void showImpl(); + void updateImpl(const std::string& mesg); + void hideImpl(); + +private: + WindowRef mWindow; +}; + +S32 OSMessageBoxMacOSX(const std::string& text, const std::string& caption, U32 type); + +void load_url_external(const char* url); + +#endif //LL_LLWINDOWMACOSX_H |