From: <ave...@us...> - 2007-02-28 19:01:36
|
Revision: 4509 http://gemrb.svn.sourceforge.net/gemrb/?rev=4509&view=rev Author: avenger_teambg Date: 2007-02-28 11:01:36 -0800 (Wed, 28 Feb 2007) Log Message: ----------- implemented SDLVideo::MouseClick Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/EventMgr.h gemrb/trunk/gemrb/plugins/Core/Video.h gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.cpp gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.h Modified: gemrb/trunk/gemrb/plugins/Core/EventMgr.h =================================================================== --- gemrb/trunk/gemrb/plugins/Core/EventMgr.h 2007-02-27 23:03:36 UTC (rev 4508) +++ gemrb/trunk/gemrb/plugins/Core/EventMgr.h 2007-02-28 19:01:36 UTC (rev 4509) @@ -54,6 +54,8 @@ // Mouse buttons #define GEM_MB_ACTION 1 #define GEM_MB_MENU 4 +//not working actually +#define GEM_MB_DOUBLECLICK 256 #ifdef WIN32 Modified: gemrb/trunk/gemrb/plugins/Core/Video.h =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Video.h 2007-02-27 23:03:36 UTC (rev 4508) +++ gemrb/trunk/gemrb/plugins/Core/Video.h 2007-02-28 19:01:36 UTC (rev 4509) @@ -168,8 +168,10 @@ /** Transforms sprite to have an alpha channel */ virtual void CreateAlpha(Sprite2D *sprite) = 0; - /** Convers a Screen Coordinate to a Game Coordinate */ + /** Converts a Screen Coordinate to a Game Coordinate */ virtual void ConvertToGame(short& x, short& y) = 0; + /** Converts a Game Coordinate to a Screen Coordinate */ + virtual void ConvertToScreen(short& x, short& y) = 0; /** Sets the Fading Color */ virtual void SetFadeColor(int r, int g, int b) = 0; /** Sets the Fading to Color Percentage */ @@ -180,6 +182,8 @@ virtual void GetClipRect(Region& clip) = 0; /** returns the current mouse coordinates */ virtual void GetMousePos(int &x, int &y) = 0; + /** clicks the mouse forcibly */ + virtual void ClickMouse(unsigned int button) = 0; /** moves the mouse forcibly */ virtual void MoveMouse(unsigned int x, unsigned int y) = 0; /** initializes the screen for movie */ Modified: gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.cpp 2007-02-27 23:03:36 UTC (rev 4508) +++ gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.cpp 2007-02-28 19:01:36 UTC (rev 4509) @@ -2250,6 +2250,27 @@ SDL_WarpMouse(x,y); } +void SDLVideoDriver::ClickMouse(unsigned int button) +{ + MouseClickEvent(SDL_MOUSEBUTTONDOWN, (Uint8) button); + MouseClickEvent(SDL_MOUSEBUTTONUP, (Uint8) button); + if (button&GEM_MB_DOUBLECLICK) { + MouseClickEvent(SDL_MOUSEBUTTONDOWN, (Uint8) button); + MouseClickEvent(SDL_MOUSEBUTTONUP, (Uint8) button); + } +} + +void SDLVideoDriver::MouseClickEvent(Uint8 type, Uint8 button) +{ + SDL_MouseButtonEvent *event = new SDL_MouseButtonEvent(); + event->type = type; + event->button = button; + event->state = (type==SDL_MOUSEBUTTONDOWN)?SDL_PRESSED:SDL_RELEASED; + event->x = CursorPos.x; + event->y = CursorPos.y; + SDL_PushEvent((SDL_Event *) event); +} + void SDLVideoDriver::InitMovieScreen(int &w, int &h) { SDL_LockSurface( disp ); Modified: gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.h =================================================================== --- gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.h 2007-02-27 23:03:36 UTC (rev 4508) +++ gemrb/trunk/gemrb/plugins/SDLVideo/SDLVideoDriver.h 2007-02-28 19:01:36 UTC (rev 4509) @@ -70,6 +70,8 @@ void GetMousePos(int &x, int &y); void MouseMovement(int x, int y); void MoveMouse(unsigned int x, unsigned int y); + void ClickMouse(unsigned int button); + void MouseClickEvent(Uint8 type, Uint8 button); Sprite2D* CreateSprite(int w, int h, int bpp, ieDword rMask, ieDword gMask, ieDword bMask, ieDword aMask, void* pixels, bool cK = false, int index = 0); @@ -139,6 +141,12 @@ y += Viewport.y; } + void ConvertToScreen(short&x, short& y) + { + x -= Viewport.x; + y -= Viewport.y; + } + void SetFadeColor(int r, int g, int b); void SetFadePercent(int percent); void InitMovieScreen(int &w, int &h); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |