| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | //-----------------------------------------------------------------------------// Copyright (c) 2012 GarageGames, LLC//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS// IN THE SOFTWARE.//-----------------------------------------------------------------------------#include "platform/platform.h"#include "windowManager/platformWindowMgr.h"#include "gfx/gfxInit.h"#include "gfx/gfxDevice.h"#include "core/util/journal/process.h"#include "core/util/autoPtr.h"// This file converts from the windowmanager system to the old platform and// event interfaces. So it's a bit hackish but hopefully will not be necessary// for very long. Because of the heavy use of globals in the old platform// layer, this layer also has a fair number of globals.// WindowManager//// PlatformWindowManager::get() wrapped in Macro WindowManagerstatic AutoPtr< PlatformWindowManager > smWindowManager;PlatformWindowManager *PlatformWindowManager::get() {   if( smWindowManager.isNull() )      smWindowManager = CreatePlatformWindowManager();   return smWindowManager.ptr();}void PlatformWindowManager::processCmdLineArgs( const S32 argc, const char **argv ){   // Only call the get() routine if we have arguments on the command line   if(argc > 0)   {      PlatformWindowManager::get()->_processCmdLineArgs(argc, argv);   }}GFXDevice *gDevice          = NULL;PlatformWindow *gWindow     = NULL;// Conversion from window manager input conventions to Torque standard.static struct ModifierBitMap {   U32 grendelMask,torqueMask;} _ModifierBitMap[] = {   { IM_LSHIFT, SI_LSHIFT   },   { IM_RSHIFT, SI_RSHIFT   },   { IM_LALT,   SI_LALT     },   { IM_RALT,   SI_RALT     },   { IM_LCTRL,  SI_LCTRL    },   { IM_RCTRL,  SI_RCTRL    },   { IM_LOPT,   SI_MAC_LOPT },   { IM_ROPT,   SI_MAC_ROPT },};static S32 _ModifierBitMapCount = sizeof(_ModifierBitMap) / sizeof(ModifierBitMap);InputModifiers convertModifierBits(const U32 in){   U32 out=0;   for(S32 i=0; i<_ModifierBitMapCount; i++)      if(in & _ModifierBitMap[i].grendelMask)         out |= _ModifierBitMap[i].torqueMask;   return (InputModifiers)out;}//------------------------------------------------------------------------------void Platform::setWindowSize(U32 newWidth, U32 newHeight, bool fullScreen ){   AssertISV(gWindow, "Platform::setWindowSize - no window present!");   // Grab the curent video settings and diddle them with the new values.   GFXVideoMode vm = gWindow->getVideoMode();   vm.resolution.set(newWidth, newHeight);   vm.fullScreen = fullScreen;   gWindow->setVideoMode(vm);}void Platform::setWindowLocked(bool locked){   PlatformWindow* window = WindowManager->getFirstWindow();   if( window )      window->setMouseLocked( locked );}void Platform::minimizeWindow(){   // requires PlatformWindow API extension...   if(gWindow)      gWindow->minimize();}void Platform::closeWindow(){   // Shutdown all our stuff.   //SAFE_DELETE(gDevice); // <-- device is already cleaned up elsewhere by now...   SAFE_DELETE(gWindow);}//------------------------------------------------------------------------------#ifdef TORQUE_OS_WIN// Hack so we can get the HWND of the global window more easily - replacement// for the HWND that was in the platstate.#include "windowManager/win32/win32Window.h"HWND getWin32WindowHandle(){   PlatformWindow* window = WindowManager->getFocusedWindow();   if( !window )   {      window = WindowManager->getFirstWindow();      if( !window )         return NULL;   }   return (HWND)window->getSystemWindow( PlatformWindow::WindowSystem_Windows );}#endif
 |