//////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// #include "wxSFMLCanvas.hpp" #include //////////////////////////////////////////////////////////// /// Custom SFML canvas //////////////////////////////////////////////////////////// class MyCanvas : public wxSFMLCanvas { public : //////////////////////////////////////////////////////////// /// Construct the canvas /// //////////////////////////////////////////////////////////// MyCanvas(wxWindow* parent, wxWindowID id, const wxPoint& position, const wxSize& size, long style = 0) : wxSFMLCanvas(parent, id, position, size, style) { // Load an image and assign it to our sprite myImage.LoadFromFile("datas/wxwidgets/sfml.png"); mySprite.SetImage(myImage); mySprite.SetOrigin(mySprite.GetSize() / 2.f); // Catch the mouse move event Connect(wxEVT_MOTION, wxMouseEventHandler(MyCanvas::OnMouseMove)); } private : //////////////////////////////////////////////////////////// /// /see wxSFMLCanvas::OnUpdate /// //////////////////////////////////////////////////////////// virtual void OnUpdate() { // Rotate the sprite if (GetInput().IsMouseButtonDown(sf::Mouse::Left)) mySprite.Rotate( GetFrameTime() * 50); if (GetInput().IsMouseButtonDown(sf::Mouse::Right)) mySprite.Rotate(-GetFrameTime() * 50); // Clear the view Clear(sf::Color(0, 128, 128)); // Display the sprite in the view Draw(mySprite); } //////////////////////////////////////////////////////////// /// Function called when the mouse cursor moves /// //////////////////////////////////////////////////////////// void OnMouseMove(wxMouseEvent& event) { // Make the sprite follow the mouse cursor mySprite.SetPosition(ConvertCoords(event.GetX(), event.GetY())); } //////////////////////////////////////////////////////////// /// Member data //////////////////////////////////////////////////////////// sf::Image myImage; ///< Some image to load... sf::Sprite mySprite; ///< Something to draw... }; //////////////////////////////////////////////////////////// /// Our main window //////////////////////////////////////////////////////////// class MyFrame : public wxFrame { public : //////////////////////////////////////////////////////////// /// Default constructor : setup the window /// //////////////////////////////////////////////////////////// MyFrame() : wxFrame(NULL, wxID_ANY, wxT("SFML wxWidgets"), wxDefaultPosition, wxSize(440, 280)) { // Let's create a SFML view new MyCanvas(this, wxID_ANY, wxPoint(20, 20), wxSize(400, 200)); } }; //////////////////////////////////////////////////////////// /// Our application class //////////////////////////////////////////////////////////// class MyApplication : public wxApp { private : //////////////////////////////////////////////////////////// /// Initialize the application /// //////////////////////////////////////////////////////////// virtual bool OnInit() { // Create the main window MyFrame* mainFrame = new MyFrame; mainFrame->Show(); return true; } }; IMPLEMENT_APP(MyApplication);