diff options
Diffstat (limited to 'indra/llwindow/llwindowmacosx-objc.h')
-rw-r--r-- | indra/llwindow/llwindowmacosx-objc.h | 372 |
1 files changed, 186 insertions, 186 deletions
diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index e406f7dd19..609a441d66 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -1,186 +1,186 @@ -/** - * @file llwindowmacosx-objc.h - * @brief Prototypes for functions shared between llwindowmacosx.cpp - * and llwindowmacosx-objc.mm. - * - * $LicenseInfo:firstyear=2006&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_OBJC_H -#define LL_LLWINDOWMACOSX_OBJC_H - -#include <map> -#include <vector> -#include <deque> - -//fir CGSize -#include <CoreGraphics/CGGeometry.h> - -typedef std::vector<std::pair<int, bool> > segment_t; - -typedef std::vector<int> segment_lengths; -typedef std::deque<bool> segment_standouts; - -struct attributedStringInfo { - segment_lengths seg_lengths; - segment_standouts seg_standouts; -}; - -// This will actually hold an NSCursor*, but that type is only available in objective C. -typedef void *CursorRef; -typedef void *NSWindowRef; -typedef void *GLViewRef; - - -struct NativeKeyEventData { - enum EventType { - KEYUNKNOWN, - KEYUP, - KEYDOWN, - KEYCHAR - }; - - EventType mKeyEvent = KEYUNKNOWN; - uint32_t mEventType = 0; - uint32_t mEventModifiers = 0; - uint32_t mEventKeyCode = 0; - uint32_t mEventChars = 0; - uint32_t mEventUnmodChars = 0; - bool mEventRepeat = false; -}; - -typedef const NativeKeyEventData * NSKeyEventRef; - -// These are defined in llappviewermacosx.cpp. -bool initViewer(); -void handleQuit(); -bool pumpMainLoop(); -void initMainLoop(); -void cleanupViewer(); -void handleUrl(const char* url); -void dispatchUrl(std::string url); - -/* Defined in llwindowmacosx-objc.mm: */ -int createNSApp(int argc, const char **argv); -void setupCocoa(); -bool pasteBoardAvailable(); -bool copyToPBoard(const unsigned short *str, unsigned int len); -unsigned short *copyFromPBoard(); -CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY); -short releaseImageCursor(CursorRef ref); -short setImageCursor(CursorRef ref); -void setArrowCursor(); -void setIBeamCursor(); -void setPointingHandCursor(); -void setCopyCursor(); -void setCrossCursor(); -void setNotAllowedCursor(); -void hideNSCursor(); -void showNSCursor(); -bool isCGCursorVisible(); -void hideNSCursorTillMove(bool hide); -void requestUserAttention(); -long showAlert(std::string title, std::string text, int type); -void setResizeMode(bool oldresize, void* glview); - -NSWindowRef createNSWindow(int x, int y, int width, int height); - -#include <OpenGL/OpenGL.h> - -GLViewRef createOpenGLView(NSWindowRef window, unsigned int samples, bool vsync); -void glSwapBuffers(void* context); -CGLContextObj getCGLContextObj(GLViewRef view); -unsigned long getVramSize(GLViewRef view); -float getDeviceUnitSize(GLViewRef view); -CGPoint getContentViewBoundsPosition(NSWindowRef window); -CGSize getContentViewBoundsSize(NSWindowRef window); -CGSize getDeviceContentViewSize(NSWindowRef window, GLViewRef view); -void getWindowSize(NSWindowRef window, float* size); -void setWindowSize(NSWindowRef window, int width, int height); -void getCursorPos(NSWindowRef window, float* pos); -void makeWindowOrderFront(NSWindowRef window); -void convertScreenToWindow(NSWindowRef window, float *coord); -void convertWindowToScreen(NSWindowRef window, float *coord); -void convertScreenToView(NSWindowRef window, float *coord); -void convertRectToScreen(NSWindowRef window, float *coord); -void convertRectFromScreen(NSWindowRef window, float *coord); -void setWindowPos(NSWindowRef window, float* pos); -void closeWindow(NSWindowRef window); -void removeGLView(GLViewRef view); -void makeFirstResponder(NSWindowRef window, GLViewRef view); -void setupInputWindow(NSWindowRef window, GLViewRef view); - -// These are all implemented in llwindowmacosx.cpp. -// This is largely for easier interop between Obj-C and C++ (at least in the viewer's case due to the BOOL vs. BOOL conflict) -bool callKeyUp(NSKeyEventRef event, unsigned short key, unsigned int mask); -bool callKeyDown(NSKeyEventRef event, unsigned short key, unsigned int mask, wchar_t character); -void callResetKeys(); -bool callUnicodeCallback(wchar_t character, unsigned int mask); -void callRightMouseDown(float *pos, unsigned int mask); -void callRightMouseUp(float *pos, unsigned int mask); -void callLeftMouseDown(float *pos, unsigned int mask); -void callLeftMouseUp(float *pos, unsigned int mask); -void callDoubleClick(float *pos, unsigned int mask); -void callResize(unsigned int width, unsigned int height); -void callMouseMoved(float *pos, unsigned int mask); -void callMouseDragged(float *pos, unsigned int mask); -void callScrollMoved(float deltaX, float deltaY); -void callMouseExit(); -void callWindowFocus(); -void callWindowUnfocus(); -void callWindowHide(); -void callWindowUnhide(); -void callWindowDidChangeScreen(); -void callDeltaUpdate(float *delta, unsigned int mask); -void callOtherMouseDown(float *pos, unsigned int mask, int button); -void callOtherMouseUp(float *pos, unsigned int mask, int button); -void callFocus(); -void callFocusLost(); -void callModifier(unsigned int mask); -void callQuitHandler(); -void commitCurrentPreedit(GLViewRef glView); - -#include <string> -void callHandleDragEntered(std::string url); -void callHandleDragExited(std::string url); -void callHandleDragUpdated(std::string url); -void callHandleDragDropped(std::string url); - -// LLPreeditor C bindings. -std::basic_string<wchar_t> getPreeditString(); -void getPreeditSelectionRange(int *position, int *length); -void getPreeditMarkedRange(int *position, int *length); -bool handleUnicodeCharacter(wchar_t c); -void updatePreeditor(unsigned short *str); -void setPreeditMarkedRange(int position, int length); -void resetPreedit(); -int wstring_length(const std::basic_string<wchar_t> & wstr, const int woffset, const int utf16_length, int *unaligned); -void setMarkedText(unsigned short *text, unsigned int *selectedRange, unsigned int *replacementRange, long text_len, attributedStringInfo segments); -void getPreeditLocation(float *location, unsigned int length); -void allowDirectMarkedTextInput(bool allow, GLViewRef glView); - -NSWindowRef getMainAppWindow(); -GLViewRef getGLView(); - -unsigned int getModifiers(); - -#endif // LL_LLWINDOWMACOSX_OBJC_H +/**
+ * @file llwindowmacosx-objc.h
+ * @brief Prototypes for functions shared between llwindowmacosx.cpp
+ * and llwindowmacosx-objc.mm.
+ *
+ * $LicenseInfo:firstyear=2006&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_OBJC_H
+#define LL_LLWINDOWMACOSX_OBJC_H
+
+#include <map>
+#include <vector>
+#include <deque>
+
+//fir CGSize
+#include <CoreGraphics/CGGeometry.h>
+
+typedef std::vector<std::pair<int, bool> > segment_t;
+
+typedef std::vector<int> segment_lengths;
+typedef std::deque<bool> segment_standouts;
+
+struct attributedStringInfo {
+ segment_lengths seg_lengths;
+ segment_standouts seg_standouts;
+};
+
+// This will actually hold an NSCursor*, but that type is only available in objective C.
+typedef void *CursorRef;
+typedef void *NSWindowRef;
+typedef void *GLViewRef;
+
+
+struct NativeKeyEventData {
+ enum EventType {
+ KEYUNKNOWN,
+ KEYUP,
+ KEYDOWN,
+ KEYCHAR
+ };
+
+ EventType mKeyEvent = KEYUNKNOWN;
+ uint32_t mEventType = 0;
+ uint32_t mEventModifiers = 0;
+ uint32_t mEventKeyCode = 0;
+ uint32_t mEventChars = 0;
+ uint32_t mEventUnmodChars = 0;
+ bool mEventRepeat = false;
+};
+
+typedef const NativeKeyEventData * NSKeyEventRef;
+
+// These are defined in llappviewermacosx.cpp.
+bool initViewer();
+void handleQuit();
+bool pumpMainLoop();
+void initMainLoop();
+void cleanupViewer();
+void handleUrl(const char* url);
+void dispatchUrl(std::string url);
+
+/* Defined in llwindowmacosx-objc.mm: */
+int createNSApp(int argc, const char **argv);
+void setupCocoa();
+bool pasteBoardAvailable();
+bool copyToPBoard(const unsigned short *str, unsigned int len);
+unsigned short *copyFromPBoard();
+CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY);
+short releaseImageCursor(CursorRef ref);
+short setImageCursor(CursorRef ref);
+void setArrowCursor();
+void setIBeamCursor();
+void setPointingHandCursor();
+void setCopyCursor();
+void setCrossCursor();
+void setNotAllowedCursor();
+void hideNSCursor();
+void showNSCursor();
+bool isCGCursorVisible();
+void hideNSCursorTillMove(bool hide);
+void requestUserAttention();
+long showAlert(std::string title, std::string text, int type);
+void setResizeMode(bool oldresize, void* glview);
+
+NSWindowRef createNSWindow(int x, int y, int width, int height);
+
+#include <OpenGL/OpenGL.h>
+
+GLViewRef createOpenGLView(NSWindowRef window, unsigned int samples, bool vsync);
+void glSwapBuffers(void* context);
+CGLContextObj getCGLContextObj(GLViewRef view);
+unsigned long getVramSize(GLViewRef view);
+float getDeviceUnitSize(GLViewRef view);
+CGPoint getContentViewBoundsPosition(NSWindowRef window);
+CGSize getContentViewBoundsSize(NSWindowRef window);
+CGSize getDeviceContentViewSize(NSWindowRef window, GLViewRef view);
+void getWindowSize(NSWindowRef window, float* size);
+void setWindowSize(NSWindowRef window, int width, int height);
+void getCursorPos(NSWindowRef window, float* pos);
+void makeWindowOrderFront(NSWindowRef window);
+void convertScreenToWindow(NSWindowRef window, float *coord);
+void convertWindowToScreen(NSWindowRef window, float *coord);
+void convertScreenToView(NSWindowRef window, float *coord);
+void convertRectToScreen(NSWindowRef window, float *coord);
+void convertRectFromScreen(NSWindowRef window, float *coord);
+void setWindowPos(NSWindowRef window, float* pos);
+void closeWindow(NSWindowRef window);
+void removeGLView(GLViewRef view);
+void makeFirstResponder(NSWindowRef window, GLViewRef view);
+void setupInputWindow(NSWindowRef window, GLViewRef view);
+
+// These are all implemented in llwindowmacosx.cpp.
+// This is largely for easier interop between Obj-C and C++ (at least in the viewer's case due to the BOOL vs. BOOL conflict)
+bool callKeyUp(NSKeyEventRef event, unsigned short key, unsigned int mask);
+bool callKeyDown(NSKeyEventRef event, unsigned short key, unsigned int mask, wchar_t character);
+void callResetKeys();
+bool callUnicodeCallback(wchar_t character, unsigned int mask);
+void callRightMouseDown(float *pos, unsigned int mask);
+void callRightMouseUp(float *pos, unsigned int mask);
+void callLeftMouseDown(float *pos, unsigned int mask);
+void callLeftMouseUp(float *pos, unsigned int mask);
+void callDoubleClick(float *pos, unsigned int mask);
+void callResize(unsigned int width, unsigned int height);
+void callMouseMoved(float *pos, unsigned int mask);
+void callMouseDragged(float *pos, unsigned int mask);
+void callScrollMoved(float deltaX, float deltaY);
+void callMouseExit();
+void callWindowFocus();
+void callWindowUnfocus();
+void callWindowHide();
+void callWindowUnhide();
+void callWindowDidChangeScreen();
+void callDeltaUpdate(float *delta, unsigned int mask);
+void callOtherMouseDown(float *pos, unsigned int mask, int button);
+void callOtherMouseUp(float *pos, unsigned int mask, int button);
+void callFocus();
+void callFocusLost();
+void callModifier(unsigned int mask);
+void callQuitHandler();
+void commitCurrentPreedit(GLViewRef glView);
+
+#include <string>
+void callHandleDragEntered(std::string url);
+void callHandleDragExited(std::string url);
+void callHandleDragUpdated(std::string url);
+void callHandleDragDropped(std::string url);
+
+// LLPreeditor C bindings.
+std::basic_string<wchar_t> getPreeditString();
+void getPreeditSelectionRange(int *position, int *length);
+void getPreeditMarkedRange(int *position, int *length);
+bool handleUnicodeCharacter(wchar_t c);
+void updatePreeditor(unsigned short *str);
+void setPreeditMarkedRange(int position, int length);
+void resetPreedit();
+int wstring_length(const std::basic_string<wchar_t> & wstr, const int woffset, const int utf16_length, int *unaligned);
+void setMarkedText(unsigned short *text, unsigned int *selectedRange, unsigned int *replacementRange, long text_len, attributedStringInfo segments);
+void getPreeditLocation(float *location, unsigned int length);
+void allowDirectMarkedTextInput(bool allow, GLViewRef glView);
+
+NSWindowRef getMainAppWindow();
+GLViewRef getGLView();
+
+unsigned int getModifiers();
+
+#endif // LL_LLWINDOWMACOSX_OBJC_H
|