From 88669946d7248932951b16d4e7613b2ec8384fbe Mon Sep 17 00:00:00 2001 From: Ingo Ruhnke Date: Tue, 5 Aug 2014 02:15:04 +0200 Subject: [PATCH] Splitted the mouse cursor into three separate images to avoid blending artifacts --- data/images/engine/menu/mousecursor-click.png | Bin 0 -> 1895 bytes data/images/engine/menu/mousecursor-link.png | Bin 0 -> 2418 bytes data/images/engine/menu/mousecursor.png | Bin 5056 -> 1723 bytes src/gui/mousecursor.cpp | 68 ++++++++---------- src/gui/mousecursor.hpp | 27 ++++--- src/supertux/resources.cpp | 5 +- 6 files changed, 45 insertions(+), 55 deletions(-) create mode 100644 data/images/engine/menu/mousecursor-click.png create mode 100644 data/images/engine/menu/mousecursor-link.png diff --git a/data/images/engine/menu/mousecursor-click.png b/data/images/engine/menu/mousecursor-click.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2852f057bb5d19d49104370e59ce60b24a93fc GIT binary patch literal 1895 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 literal 0 HcmV?d00001 diff --git a/data/images/engine/menu/mousecursor.png b/data/images/engine/menu/mousecursor.png index 888152fd5c9318fbdf17a4cf8157a841c541ff83..e846b9e3ccbd5941d973186cbad81df3cf271537 100644 GIT binary patch delta 1720 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 WL5T@*=G>700000to_logical(x, y); - Vector mouse_pos = Renderer::instance()->to_logical(x, y); + x = int(mouse_pos.x); + y = int(mouse_pos.y); - x = int(mouse_pos.x); - y = int(mouse_pos.y); - - w = (int) cursor->get_width(); - h = (int) (cursor->get_height() / MC_STATES_NB); - if(ispressed &SDL_BUTTON(1) || ispressed &SDL_BUTTON(2)) { - if(cur_state != MC_CLICK) { - state_before_click = cur_state; - cur_state = MC_CLICK; + int tmp_state = m_state; + if (ispressed & SDL_BUTTON(1) || ispressed & SDL_BUTTON(2)) + { + tmp_state = MC_CLICK; } - } else { - if(cur_state == MC_CLICK) - cur_state = state_before_click; - } - context.draw_surface_part(cursor, Vector(0, h*cur_state), - Vector(w, h), Vector(x-mid_x, y-mid_y), LAYER_GUI+100); + context.draw_surface(m_cursor[static_cast(tmp_state)], + Vector(x - m_mid_x, y - m_mid_y), + LAYER_GUI + 100); + } } /* EOF */ diff --git a/src/gui/mousecursor.hpp b/src/gui/mousecursor.hpp index 30afd565537..3ecd84e785b 100644 --- a/src/gui/mousecursor.hpp +++ b/src/gui/mousecursor.hpp @@ -23,7 +23,8 @@ #define MC_STATES_NB 3 -enum { +enum MouseCursorState +{ MC_NORMAL = 0, MC_CLICK, MC_LINK, @@ -40,16 +41,15 @@ class DrawingContext; class MouseCursor { public: - /// Constructor of MouseCursor. - /** Expects an imagefile for the cursor and the number of animation frames it contains. */ - MouseCursor(std::string cursor_file); + MouseCursor(const std::string& cursor_file, + const std::string& cursor_click_file, + const std::string& cursor_link_file); ~MouseCursor(); - /// Get MouseCursor state. - /** (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */ - int state(); + /// Set MouseCursor state. /** (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */ - void set_state(int nstate); + void set_state(MouseCursorState nstate); + /// Define the middle of a MouseCursor. /** Useful for cross mouse cursor images in example. */ void set_mid(int x, int y); @@ -64,14 +64,11 @@ class MouseCursor static void set_current(MouseCursor* pcursor) { current_ = pcursor; }; - friend class Resources; - private: - int mid_x; - int mid_y; - int state_before_click; - int cur_state; - SurfacePtr cursor; + int m_mid_x; + int m_mid_y; + MouseCursorState m_state; + std::vector m_cursor; private: static MouseCursor* current_; diff --git a/src/supertux/resources.cpp b/src/supertux/resources.cpp index 011393c54f0..2eac6a6d8e1 100644 --- a/src/supertux/resources.cpp +++ b/src/supertux/resources.cpp @@ -41,7 +41,9 @@ void Resources::load_shared() { /* Load the mouse-cursor */ - mouse_cursor = new MouseCursor("images/engine/menu/mousecursor.png"); + mouse_cursor = new MouseCursor("images/engine/menu/mousecursor.png", + "images/engine/menu/mousecursor-click.png", + "images/engine/menu/mousecursor-link.png"); MouseCursor::set_current(mouse_cursor); /* Load global images: */ @@ -106,7 +108,6 @@ Resources::unload_shared() /* Free mouse-cursor */ if(mouse_cursor != NULL) { - mouse_cursor->cursor.reset(); delete mouse_cursor; } }