screens & basic interactions

This commit is contained in:
galister
2023-12-07 02:07:13 +01:00
parent cb039de409
commit a3b60b9607
19 changed files with 518 additions and 1599 deletions

View File

@@ -3,7 +3,6 @@ use std::{rc::Rc, str::FromStr, sync::Arc};
use fontconfig::{FontConfig, OwnedPattern};
use freetype::{bitmap::PixelMode, face::LoadFlag, Face, Library};
use idmap::IdMap;
use log::debug;
use vulkano::{command_buffer::CommandBufferUsage, format::Format, image::ImmutableImage};
use crate::graphics::WlxGraphics;
@@ -116,7 +115,7 @@ impl FontCache {
let pattern = pattern.font_match(&mut self.fc);
if let Some(path) = pattern.filename() {
debug!(
log::debug!(
"Loading font: {} {}pt",
pattern.name().unwrap_or(path),
size
@@ -203,7 +202,7 @@ impl FontCache {
let mut cmd_buffer = graphics.create_command_buffer(CommandBufferUsage::OneTimeSubmit);
let texture = cmd_buffer.texture2d(bmp.width() as _, bmp.rows() as _, format, buf);
let _ = cmd_buffer.end_and_execute();
cmd_buffer.build_and_execute_now();
let g = Glyph {
tex: Some(texture),

View File

@@ -93,6 +93,7 @@ impl<D, S> CanvasBuilder<D, S> {
}
// Creates a label with fg_color, font_size inherited from the canvas
#[allow(dead_code)]
pub fn label_centered(
&mut self,
x: f32,
@@ -320,13 +321,13 @@ impl<D, S> Canvas<D, S> {
.canvas
.graphics
.create_command_buffer(CommandBufferUsage::OneTimeSubmit)
.begin(self.view_bg.clone(), None);
.begin(self.view_bg.clone());
for c in self.controls.iter_mut() {
if let Some(fun) = c.on_render_bg {
fun(c, &self.canvas, app, &mut cmd_buffer);
}
}
let _ = cmd_buffer.end_render_and_execute();
cmd_buffer.end_render().build_and_execute_now()
}
fn render_fg(&mut self, app: &mut AppState) {
@@ -334,17 +335,13 @@ impl<D, S> Canvas<D, S> {
.canvas
.graphics
.create_command_buffer(CommandBufferUsage::OneTimeSubmit)
.begin(self.view_fg.clone(), None);
.begin(self.view_fg.clone());
for c in self.controls.iter_mut() {
if let Some(fun) = c.on_render_fg {
fun(c, &self.canvas, app, &mut cmd_buffer);
}
}
let _ = cmd_buffer.end_render_and_execute();
}
pub fn render_view(&self) -> Arc<ImageView<AttachmentImage>> {
self.view_final.clone()
cmd_buffer.end_render().build_and_execute_now()
}
}
@@ -385,7 +382,6 @@ impl<D, S> InteractionHandler for Canvas<D, S> {
impl<D, S> OverlayRenderer for Canvas<D, S> {
fn init(&mut self, app: &mut AppState) {
self.render_bg(app);
self.render_fg(app);
}
fn pause(&mut self, _app: &mut AppState) {}
@@ -423,10 +419,7 @@ impl<D, S> OverlayRenderer for Canvas<D, S> {
.canvas
.graphics
.create_command_buffer(CommandBufferUsage::OneTimeSubmit)
.begin(
self.view_final.clone(),
Some(ImageLayout::TransferSrcOptimal),
);
.begin(self.view_final.clone());
if dirty {
self.render_fg(app);
@@ -451,7 +444,7 @@ impl<D, S> OverlayRenderer for Canvas<D, S> {
// mostly static text
cmd_buffer.run_ref(&self.pass_fg);
{
let _ = cmd_buffer.end_render_and_execute();
let _ = cmd_buffer.end_render().build_and_execute();
}
self.canvas
.graphics
@@ -478,7 +471,6 @@ pub struct Control<D, S> {
text: Arc<str>,
size: isize,
dirty: bool,
pass_hl: Option<(WlxPass, WlxPass)>,
pub on_update: Option<fn(&mut Self, &mut D, &mut AppState)>,
pub on_press: Option<fn(&mut Self, &mut D, &mut AppState)>,
@@ -524,7 +516,6 @@ impl<D, S> Control<D, S> {
test_highlight: None,
on_press: None,
on_release: None,
pass_hl: None,
}
}
@@ -537,11 +528,6 @@ impl<D, S> Control<D, S> {
self.dirty = true;
}
#[inline(always)]
pub fn get_text(&self) -> &str {
&self.text
}
fn render_rect(
&self,
canvas: &CanvasData<D>,