From bf485fa577a76731f9eac97de3b0a647cd492e49 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 28 Feb 2022 13:44:27 +0100 Subject: Refactoring game tab --- src/game_tab/editor/EditorCanvas.cpp | 188 ----------------------------------- 1 file changed, 188 deletions(-) delete mode 100644 src/game_tab/editor/EditorCanvas.cpp (limited to 'src/game_tab/editor/EditorCanvas.cpp') diff --git a/src/game_tab/editor/EditorCanvas.cpp b/src/game_tab/editor/EditorCanvas.cpp deleted file mode 100644 index 0e2f77a..0000000 --- a/src/game_tab/editor/EditorCanvas.cpp +++ /dev/null @@ -1,188 +0,0 @@ -#include "EditorCanvas.hpp" - -EditorCanvas::EditorCanvas(wxFrame *parent) - : wxPanel(parent), NeedRedraw(false) { - hide_icon = LoadPNG("hide", wxSize(CGEditor::status.MoveIconWidth, - CGEditor::status.MoveIconWidth)); - t.ResizePieces(CGEditor::status.MoveIconWidth); -} - -void EditorCanvas::OnPaint(wxPaintEvent &event) { - wxPaintDC current_dc(this); - dc = ¤t_dc; - - // Refresh canvas size - wxSize sz = GetClientSize(); - CGEditor::status.CanvasWidth = sz.GetWidth(); - CGEditor::status.CanvasHeight = sz.GetHeight(); - CGEditor::status.UseMoveIcons = - true; // Piece image should be drawn before the move ? - - const wxPoint pt = wxGetMousePosition(); - CGEditor::status.MouseX = pt.x - this->GetScreenPosition().x; - CGEditor::status.MouseY = pt.y - this->GetScreenPosition().y; - CGEditor::Draw(); -} - -/** - * @brief Convenient fonction to center text - * - * @param e Element to center - * @return wxPoint The centered version of e according to wdWidget API - */ -wxPoint EditorCanvas::Middle(cgeditor::Element e) { - wxSize sz = dc->GetTextExtent(e.text); - return (wxPoint(e.x + (e.width - sz.GetWidth()) / 2, - e.y + (e.height - sz.GetHeight()) / 2)); -} - -void EditorCanvas::DrawElement(const cgeditor::Element &e) { - dc->SetPen(wxNullPen); - dc->SetBrush(*wxRED_BRUSH); - if (e.prop & cgeditor::Property::Rectangle) { - if (e.prop & cgeditor::Property::Scrollbarbg) { - dc->SetBrush(*wxCYAN_BRUSH); - } else if (e.prop & cgeditor::Property::Scrollbar) { - dc->SetBrush(*wxGREY_BRUSH); - } else if (e.prop & cgeditor::Property::Margin) { - dc->SetBrush(*wxLIGHT_GREY_BRUSH); - } else if (e.prop & cgeditor::Property::Button) { - if (e.prop & cgeditor::Property::On) { - dc->DrawBitmap(hide_icon, e.x, e.y); - return; - } - dc->SetBrush(*wxBLACK_BRUSH); - } - wxRect recToDraw(e.x, e.y, e.width, e.height); - dc->DrawRectangle(recToDraw); - } else if (e.prop & cgeditor::Property::Text || - e.prop & cgeditor::Property::Image) { - if (e.prop & cgeditor::Property::Image) { - // Draw your pieces images instead - std::uint32_t y = Middle(e).y - CGEditor::status.MoveIconWidth / 2; - char p = 'P'; - if (e.prop & cgeditor::Property::Knight) { - p = 'N'; - } else if (e.prop & cgeditor::Property::Bishop) { - p = 'B'; - } else if (e.prop & cgeditor::Property::Queen) { - p = 'Q'; - } else if (e.prop & cgeditor::Property::King) { - p = 'K'; - } else if (e.prop & cgeditor::Property::Rook) { - p = 'R'; - } - if (e.prop & cgeditor::Property::Black) { - p = std::tolower(p); - } - if (e.prop & cgeditor::Property::Current) { - wxRect recToDraw(e.x, e.y, e.width, e.height); - dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->DrawRectangle(recToDraw); - } - dc->DrawBitmap(*t.Get(p), e.x, y); - } else if (e.prop & cgeditor::Property::Comment) { - wxRect recToDraw(e.x, e.y, e.width, e.height); - dc->SetBrush(*wxYELLOW_BRUSH); - dc->DrawRectangle(recToDraw); - dc->DrawText(wxString(e.text), wxPoint(e.x, e.y)); - } else if (e.prop & cgeditor::Property::Menuitem) { - wxRect recToDraw(e.x, e.y, e.width, e.height); - dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->DrawRectangle(recToDraw); - dc->DrawText(wxString(e.text), wxPoint(e.x, Middle(e).y)); - } else { - if (e.prop & cgeditor::Property::Move) { - if (e.prop & cgeditor::Property::Current) { - wxRect recToDraw(e.x, e.y, e.width, e.height); - dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->DrawRectangle(recToDraw); - } - if (CGEditor::status.UseMoveIcons) { - dc->DrawText(wxString(e.text), wxPoint(e.x, Middle(e).y)); - } else { - dc->DrawText(wxString(e.text), Middle(e)); - } - } else { - dc->DrawText(wxString(e.text), Middle(e)); - } - } - } -} -void EditorCanvas::HandleEvent(const cgeditor::Event &e) { - wxLogDebug("Editor event!"); - if (e.type == cgeditor::Event::Goto) { - wxCommandEvent event(GOTO_MOVE_EVENT, GetId()); - event.SetEventObject(this); - event.SetClientData(e.move); - ProcessEvent(event); - } else if (e.type == cgeditor::Event::Delete) { - wxCommandEvent event(DELETE_MOVE_EVENT, GetId()); - event.SetEventObject(this); - event.SetClientData(e.move); - ProcessEvent(event); - } else if (e.type == cgeditor::Event::Promote) { - wxCommandEvent event(PROMOTE_MOVE_EVENT, GetId()); - event.SetEventObject(this); - event.SetClientData(e.move); - ProcessEvent(event); - } else if (e.type == cgeditor::Event::SetAsMainline) { - wxCommandEvent event(SET_AS_MAINLINE_EVENT, GetId()); - event.SetEventObject(this); - event.SetClientData(e.move); - ProcessEvent(event); - } -} - -void EditorCanvas::MouseEvent(wxMouseEvent &event) { - if (event.Dragging()) { - CGEditor::status.LeftClick = false; - CGEditor::status.IsDrag = true; - Refresh(); - } else if (event.LeftDown()) { - SetFocus(); - CGEditor::status.LeftClick = true; - Refresh(); - } else if (event.RightDown()) { - SetFocus(); - CGEditor::status.RightClick = true; - Refresh(); - } else if (event.GetWheelRotation() != 0) { - SetFocus(); - if (event.GetWheelRotation() < 0) { - CGEditor::status.EventVScroll = 50; - } else { - CGEditor::status.EventVScroll = -50; - } - Refresh(); - } - - // Should another draw of CGEditor be made? - if (NeedRedraw) { - Refresh(); - NeedRedraw = false; - } -} - -void EditorCanvas::SetMoves(HalfMove *moves, HalfMove *current) { - CGEditor::status.Moves = moves; - CGEditor::status.CurrentMove = current; - - Refresh(); -} - -void EditorCanvas::OnKeyEvent(wxKeyEvent &event) { - if (event.GetKeyCode() == WXK_LEFT) { - wxCommandEvent previousEvent(PREVIOUS_MOVE_EVENT, GetId()); - previousEvent.SetEventObject(this); - ProcessEvent(previousEvent); - } else if (event.GetKeyCode() == WXK_RIGHT) { - wxCommandEvent nextEvent(NEXT_MOVE_EVENT, GetId()); - nextEvent.SetEventObject(this); - ProcessEvent(nextEvent); - } -} - -wxBEGIN_EVENT_TABLE(EditorCanvas, wxPanel) EVT_PAINT(EditorCanvas::OnPaint) - EVT_MOUSE_EVENTS(EditorCanvas::MouseEvent) - EVT_CHAR_HOOK(EditorCanvas::OnKeyEvent) wxEND_EVENT_TABLE() -- cgit v1.2.3