diff options
Diffstat (limited to 'indra/llwindow')
| -rw-r--r-- | indra/llwindow/llwindow.cpp | 27 | ||||
| -rw-r--r-- | indra/llwindow/llwindow.h | 15 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx-objc.h | 1 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx-objc.mm | 9 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx.cpp | 20 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx.h | 2 | ||||
| -rw-r--r-- | indra/llwindow/llwindowsdl.cpp | 41 | ||||
| -rw-r--r-- | indra/llwindow/llwindowsdl.h | 3 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 11 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.h | 3 | 
10 files changed, 132 insertions, 0 deletions
| diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp index 1c6c9e6e9d..b77deb003f 100644 --- a/indra/llwindow/llwindow.cpp +++ b/indra/llwindow/llwindow.cpp @@ -407,3 +407,30 @@ BOOL LLWindowManager::isWindowValid(LLWindow *window)  {  	return sWindowList.find(window) != sWindowList.end();  } + +S32 LLDisplayInfo::getDisplayWidth() const +{ +#if LL_WINDOWS +	return LLWindowWin32::getDisplayWidth(); +#elif LL_DARWIN +	return LLWindowMacOSX::getDisplayWidth(); +#elif LL_SDL +	return LLWindowSDL::getDisplayWidth(); +#else +	return 1024; //*FIXME +#endif +} + +S32 LLDisplayInfo::getDisplayHeight() const +{ +#if LL_WINDOWS +	return LLWindowWin32::getDisplayHeight(); +#elif LL_DARWIN +	return LLWindowMacOSX::getDisplayHeight(); +#elif LL_SDL +	return LLWindowSDL::getDisplayHeight(); +#else +	return 768; //*FIXME +#endif +} + diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index 55b221e716..b769f5071b 100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -281,4 +281,19 @@ extern const std::string gURLProtocolWhitelistHandler[];  void simpleEscapeString ( std::string& stringIn  ); +//============================================================================= +// +//	CLASS		LLDisplayInfo +class LLDisplayInfo + +/*!	@brief		Class to query the information about some display settings +*/ +{ +public: +	LLDisplayInfo(){}; ///< Default constructor + +	S32 getDisplayWidth() const; ///< display width +	S32 getDisplayHeight() const; ///< display height +}; +  #endif // _LL_window_h_ diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index ed5d7b1e74..66851300d4 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -40,4 +40,5 @@ void setupCocoa();  CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY);  OSErr releaseImageCursor(CursorRef ref);  OSErr setImageCursor(CursorRef ref); +void getScreenSize(int* width, int* height); diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index 59b25e1726..6eca24ec1d 100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -116,3 +116,12 @@ OSErr setImageCursor(CursorRef ref)  	return noErr;  } +void getScreenSize(int* width, int* height) +{ +	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; +	NSRect screen_rect = [[NSScreen mainScreen] frame]; +	if (width)  *width  = (int)(screen_rect.size.width); +	if (height) *height = (int)(screen_rect.size.height); +	[pool release]; +} + diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index ad97bc45fc..5b21e06fe2 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -3464,6 +3464,26 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)  	return mask;  }	 +// static +S32 LLWindowMacOSX::getDisplayWidth() +{ +	S32 width = 1024; +	// Need to invoke cocoa before use getScreenSize() +	setupCocoa(); +	getScreenSize(&width, NULL); +	return width; +} + +// static +S32 LLWindowMacOSX::getDisplayHeight() +{ +	S32 height = 768; +	// Need to invoke cocoa before use getScreenSize() +	setupCocoa(); +	getScreenSize(NULL, &height); +	return height; +} +  #if LL_OS_DRAGDROP_ENABLED  OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 7c6b324029..86036a261c 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -123,6 +123,8 @@ public:  	// Provide native key event data  	/*virtual*/ LLSD getNativeKeyData(); +	static S32 getDisplayWidth(); +	static S32 getDisplayHeight();  protected:  	LLWindowMacOSX(LLWindowCallbacks* callbacks, diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index 1f705f9e60..fe0ada5b09 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -187,6 +187,47 @@ Display* LLWindowSDL::get_SDL_Display(void)  }  #endif // LL_X11 +// static +S32 LLWindowSDL::getDisplayWidth() +{ +#if LL_GTK +	if (LLWindowSDL::ll_try_gtk_init()) +	{ +		return gdk_screen_width(); +	} +#endif // LL_GTK + +#if LL_X11 +	Display *display = XOpenDisplay(NULL); +	int screen_num = DefaultScreen(display); +	S32 width = DisplayWidth(display, screen_num); +	XCloseDisplay(display); +	return width; +#endif //LL_X11 + +	return 1024; +} + +// static +S32 LLWindowSDL::getDisplayHeight() +{ +#if LL_GTK +	if (LLWindowSDL::ll_try_gtk_init()) +	{ +		return gdk_screen_height(); +	} +#endif // LL_GTK + +#if LL_X11 +	Display *display = XOpenDisplay(NULL); +	int screen_num = DefaultScreen(display); +	S32 height = DisplayHeight(display, screen_num); +	XCloseDisplay(display); +	return height; +#endif //LL_X11 + +	return 768; +}  LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,  			 const std::string& title, S32 x, S32 y, S32 width, diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h index e6bdd46a77..2311a361fa 100644 --- a/indra/llwindow/llwindowsdl.h +++ b/indra/llwindow/llwindowsdl.h @@ -148,6 +148,9 @@ public:  	static Display* get_SDL_Display(void);  #endif // LL_X11	 +	static S32 getDisplayWidth(); +	static S32 getDisplayHeight(); +  protected:  	LLWindowSDL(LLWindowCallbacks* callbacks,  		const std::string& title, int x, int y, int width, int height, U32 flags, diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index c80392ad45..4be5d06c2b 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -3714,5 +3714,16 @@ std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList()  	return std::vector<std::string>();  } +// static +S32 LLWindowWin32::getDisplayWidth() +{ +	return ::GetSystemMetrics(SM_CXVIRTUALSCREEN); +} + +// static +S32 LLWindowWin32::getDisplayHeight() +{ +	return ::GetSystemMetrics(SM_CYVIRTUALSCREEN); +}  #endif // LL_WINDOWS diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index 9d57735772..c221ec0192 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -120,6 +120,9 @@ public:  	static std::vector<std::string> getDynamicFallbackFontList(); +	static S32 getDisplayWidth(); +	static S32 getDisplayHeight(); +  protected:  	LLWindowWin32(LLWindowCallbacks* callbacks,  		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,  | 
