aboutsummaryrefslogtreecommitdiff
path: root/src/game_tab/left_panel/board/BoardCanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game_tab/left_panel/board/BoardCanvas.cpp')
-rw-r--r--src/game_tab/left_panel/board/BoardCanvas.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/game_tab/left_panel/board/BoardCanvas.cpp b/src/game_tab/left_panel/board/BoardCanvas.cpp
index 29eac3e..5297250 100644
--- a/src/game_tab/left_panel/board/BoardCanvas.cpp
+++ b/src/game_tab/left_panel/board/BoardCanvas.cpp
@@ -19,12 +19,22 @@ BoardCanvas::BoardCanvas(wxFrame *parent)
adata.duration=5000;
adata.duration_fast=80;
adata.fps=30;
+ adata.buffer=new wxBitmap(500,500,32);
// Let GameTableLeftPanel process keyboard events:
Bind(wxEVT_KEY_DOWN, [p=this](wxKeyEvent &e){e.ResumePropagation(1);e.Skip();});
Bind(wxEVT_KEY_UP, [p=this](wxKeyEvent &e){e.ResumePropagation(1);e.Skip();});
Bind(wxEVT_PAINT, &BoardCanvas::OnPaint, this);
- //Bind(wxEVT_IDLE, [p=this](wxIdleEvent& event){p->Refresh();p->Update();});
+ Bind(wxEVT_SIZE, &BoardCanvas::OnResize, this);
+}
+void BoardCanvas::OnResize(wxSizeEvent &e){
+ wxSize size=e.GetSize();
+ if(size.x>100 && size.y>100){
+ // Setup buffer (use for animations)
+ if(adata.buffer!=nullptr)
+ free(adata.buffer);
+ adata.buffer=new wxBitmap(size.x,size.y,32);
+ }
}
BoardCanvas::~BoardCanvas() {
@@ -46,8 +56,6 @@ BoardCanvas::BoardCanvas(wxFrame *parent, std::uint32_t square_width,
void BoardCanvas::OnPaint(wxPaintEvent &event) {
wxBufferedPaintDC dc(this);
dc.SetBackground(*wxWHITE_BRUSH);
- dc.Clear();
- wxLogDebug("lll");
if(!adata.reuseBuffer){
// Setting up required attributes
@@ -60,12 +68,8 @@ void BoardCanvas::OnPaint(wxPaintEvent &event) {
boardX = 0;
if (boardY > canvas_size.y)
boardY = 0;
-
- // Setup buffer (later use for animations)
- if(adata.buffer!=nullptr)
- free(adata.buffer);
- adata.buffer=new wxBitmap(canvas_size.x,canvas_size.y,32);
wxMemoryDC memDC(*adata.buffer);
+ memDC.Clear();
DrawBoard(memDC);
dc.Blit(0,0,canvas_size.x,canvas_size.y,(wxDC*)&memDC,0,0);
}
@@ -77,8 +81,7 @@ void BoardCanvas::OnPaint(wxPaintEvent &event) {
dc.DrawBitmap(*t->Get(adata.piece_moved),
adata.src.x + adata.frame*(adata.transVect.x/adata.frames),
adata.src.y + adata.frame*(adata.transVect.y/adata.frames), false);
- wxLogDebug("Here: %d",(int)adata.src.y + adata.frame*(adata.transVect.y/adata.frames));
- // end drawing
+ // End drawing
adata.frame++;
}
}
@@ -390,7 +393,8 @@ void BoardCanvas::MouseEvent(wxMouseEvent &event) {
}
void BoardCanvas::Zoom(std::int32_t zoom) {
- t->Zoom(zoom);
+ if(!t->Zoom(zoom))
+ return;
t_captures->ResizePieces(t->GetPiecesSizes() * CAPTURE_FACTOR);
Refresh();
}