mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-02 08:11:12 +00:00
display example text on screen
This commit is contained in:
parent
9efd352d43
commit
51d86f101f
4 changed files with 74 additions and 9 deletions
|
@ -1,9 +1,9 @@
|
||||||
app "hello-gui"
|
app "hello-gui"
|
||||||
packages { pf: "platform" }
|
packages { pf: "platform" }
|
||||||
imports [ pf.Action.{ Action }, pf.Elem.{ button, text, row, col } ]
|
imports [ ] #[ pf.Action.{ Action }, pf.Elem.{ button, text, row, col } ]
|
||||||
provides [ render ] to pf
|
provides [ render ] to pf
|
||||||
|
|
||||||
render =
|
render =
|
||||||
btn = button { onPress : \prev, _ -> Action.none } (text "Hello, button!")
|
# btn = button { onPress : \prev, _ -> Action.none } (text "Hello, button!")
|
||||||
|
|
||||||
"Hello, World!"
|
"Hello, World!"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::graphics::{
|
use crate::{graphics::{
|
||||||
lowlevel::buffer::create_rect_buffers, lowlevel::ortho::update_ortho_buffer,
|
lowlevel::buffer::create_rect_buffers, lowlevel::ortho::update_ortho_buffer,
|
||||||
lowlevel::pipelines, primitives::rect::Rect, primitives::text::build_glyph_brush,
|
lowlevel::pipelines, primitives::rect::Rect, primitives::text::{build_glyph_brush, owned_section_from_text, Text}, colors,
|
||||||
};
|
}, rects_and_texts::RectsAndTexts};
|
||||||
use pipelines::RectResources;
|
use pipelines::RectResources;
|
||||||
use roc_std::RocStr;
|
use roc_std::RocStr;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
@ -88,6 +88,19 @@ fn run_event_loop(title: &str) -> Result<(), Box<dyn Error>> {
|
||||||
|
|
||||||
let mut keyboard_modifiers = ModifiersState::empty();
|
let mut keyboard_modifiers = ModifiersState::empty();
|
||||||
|
|
||||||
|
let mut rects_and_texts = RectsAndTexts::new();
|
||||||
|
|
||||||
|
let hello_text = owned_section_from_text(&Text {
|
||||||
|
position: (50.0, 50.0).into(),
|
||||||
|
area_bounds: (size.width as f32, size.height as f32).into(),
|
||||||
|
color: colors::WHITE,
|
||||||
|
text: "Hello, World!",
|
||||||
|
size: 40.0,
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
|
||||||
|
rects_and_texts.add_text_behind(hello_text);
|
||||||
|
|
||||||
// Render loop
|
// Render loop
|
||||||
window.request_redraw();
|
window.request_redraw();
|
||||||
|
|
||||||
|
@ -192,11 +205,11 @@ fn run_event_loop(title: &str) -> Result<(), Box<dyn Error>> {
|
||||||
.texture
|
.texture
|
||||||
.create_view(&wgpu::TextureViewDescriptor::default());
|
.create_view(&wgpu::TextureViewDescriptor::default());
|
||||||
|
|
||||||
// for text_section in &rendered_wgpu.text_sections_behind {
|
for text_section in &rects_and_texts.text_sections_behind {
|
||||||
// let borrowed_text = text_section.to_borrowed();
|
let borrowed_text = text_section.to_borrowed();
|
||||||
|
|
||||||
// glyph_brush.queue(borrowed_text);
|
glyph_brush.queue(borrowed_text);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// draw first layer of text
|
// draw first layer of text
|
||||||
glyph_brush
|
glyph_brush
|
||||||
|
|
|
@ -7,6 +7,7 @@ use std::os::raw::c_char;
|
||||||
|
|
||||||
mod graphics;
|
mod graphics;
|
||||||
mod gui;
|
mod gui;
|
||||||
|
mod rects_and_texts;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#[link_name = "roc__renderForHost_1_exposed"]
|
#[link_name = "roc__renderForHost_1_exposed"]
|
||||||
|
|
51
examples/gui/platform/src/rects_and_texts.rs
Normal file
51
examples/gui/platform/src/rects_and_texts.rs
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
use crate::graphics::primitives::rect::Rect;
|
||||||
|
use crate::graphics::primitives::text::{owned_section_from_text, Text};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct RectsAndTexts {
|
||||||
|
pub text_sections_behind: Vec<glyph_brush::OwnedSection>, // displayed in front of rect_behind, behind everything else
|
||||||
|
pub text_sections_front: Vec<glyph_brush::OwnedSection>, // displayed in front of everything
|
||||||
|
pub rects_behind: Vec<Rect>, // displayed at lowest depth
|
||||||
|
pub rects_front: Vec<Rect>, // displayed in front of text_sections_behind, behind text_sections_front
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RectsAndTexts {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
text_sections_behind: Vec::new(),
|
||||||
|
text_sections_front: Vec::new(),
|
||||||
|
rects_behind: Vec::new(),
|
||||||
|
rects_front: Vec::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_text_behind(&mut self, new_text_section: glyph_brush::OwnedSection) {
|
||||||
|
self.text_sections_behind.push(new_text_section);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_text_front(&mut self, new_text_section: glyph_brush::OwnedSection) {
|
||||||
|
self.text_sections_front.push(new_text_section);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_rect_behind(&mut self, new_rect: Rect) {
|
||||||
|
self.rects_behind.push(new_rect);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_rects_behind(&mut self, new_rects: Vec<Rect>) {
|
||||||
|
self.rects_behind.extend(new_rects);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_rect_front(&mut self, new_rect: Rect) {
|
||||||
|
self.rects_front.push(new_rect);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn extend(&mut self, rects_and_texts: RectsAndTexts) {
|
||||||
|
self.text_sections_behind
|
||||||
|
.extend(rects_and_texts.text_sections_behind);
|
||||||
|
self.text_sections_front
|
||||||
|
.extend(rects_and_texts.text_sections_front);
|
||||||
|
self.rects_behind.extend(rects_and_texts.rects_behind);
|
||||||
|
self.rects_front.extend(rects_and_texts.rects_front);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue