Rendering board

This commit is contained in:
Andrew Golovashevich 2026-01-22 06:04:54 +03:00
parent 0f2ec21bf7
commit 3d533d3e54

View File

@ -4,8 +4,9 @@
mod algo; mod algo;
use eframe::egui; use eframe::egui;
use eframe::egui::Ui; use eframe::egui::{CornerRadius, Frame, Ui};
use eframe::emath::Numeric; use eframe::emath::Numeric;
use eframe::epaint::{Color32, Pos2, Rect, RectShape, Rounding, Shape};
use rand::SeedableRng; use rand::SeedableRng;
use std::ops::RangeInclusive; use std::ops::RangeInclusive;
use std::time::{SystemTime, UNIX_EPOCH}; use std::time::{SystemTime, UNIX_EPOCH};
@ -123,30 +124,60 @@ impl eframe::App for MyApp {
} }
}); });
match &self.result { match self.result.clone() {
None => {} None => {}
Some(result) => ui.ctx().show_viewport_immediate( Some(board) => ui.ctx().show_viewport_immediate(
egui::ViewportId::from_hash_of("immediate_viewport"), egui::ViewportId::from_hash_of("board"),
egui::ViewportBuilder::default() egui::ViewportBuilder::default()
.with_title("Immediate Viewport") .with_title("Board")
.with_inner_size([200.0, 100.0]), .with_inner_size([
|ui, class| { 10.0 * self.boardSize as f32,
if class == egui::ViewportClass::Embedded { 10.0 * self.boardSize as f32,
/*ui.label( ]),
"This viewport is embedded in the parent window, and cannot be moved outside of it.", |ui, _| {
);*/ egui::CentralPanel::default()
} else { .frame(Frame::default().inner_margin(0.0))
egui::CentralPanel::default().show(ui, |ui| { .show(ui, |ui| {
ui.label("Hello from immediate viewport"); let painter = ui.painter();
painter.rect_filled(
ui.available_rect_before_wrap(),
CornerRadius::from(0),
Color32::from_rgb(0, 0, 0),
);
for y in 0..self.boardSize {
for x in 0..self.boardSize {
if y % 2 == x % 2 {
painter.rect_filled(
Rect::from_min_max(
Pos2::new((10 * x) as f32, (10 * y) as f32),
Pos2::new(
(10 * (x + 1)) as f32,
(10 * (y + 1)) as f32,
),
),
CornerRadius::from(0),
Color32::from_rgb(255, 255, 255),
);
}
}
}
for i in 0..self.boardSize {
painter.circle_filled(
Pos2::new((10 * board[i] + 5) as f32, (10 * i + 5) as f32),
4.0,
Color32::from_rgb(255, 0, 0),
);
}
if ui.input(|i| i.viewport().close_requested()) { if ui.input(|i| i.viewport().close_requested()) {
self.result = None self.result = None
} }
}); });
}
}, },
), ),
} };
}); });
} }
} }