mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 23:31:12 +00:00
Store button styles in Button
This commit is contained in:
parent
f1b7c7383f
commit
90a25efbd8
4 changed files with 27 additions and 7 deletions
|
@ -6,4 +6,10 @@ app "hello-gui"
|
|||
render =
|
||||
# btn = button { onPress : \prev, _ -> Action.none } (text "Hello, button!")
|
||||
|
||||
Button (Text "Hello, World!") { left: 300, top: 400, height: 300, width: 400 }
|
||||
div0 = \numerator, denominator -> (numerator / denominator) |> Result.withDefault 0
|
||||
|
||||
rgba = \r, g, b, a -> { r: div0 r 255, g: div0 g 255, b: div0 b 255, a }
|
||||
|
||||
styles = { bgColor: rgba 100 200 250 1, borderColor: rgba 10 20 30 1, borderWidth : 10, textColor : rgba 220 220 250 1 }
|
||||
|
||||
Button (Text "Hello, World!") styles
|
||||
|
|
|
@ -5,9 +5,11 @@ platform "examples/hello-world"
|
|||
imports []
|
||||
provides [ renderForHost ]
|
||||
|
||||
Dim : { left : F32, top : F32, width : F32, height : F32 }
|
||||
Rgba : { r : F32, g : F32, b : F32, a : F32 }
|
||||
|
||||
Elem : [ Button Elem Dim, Col (List Elem), Row (List Elem), Text Str ]
|
||||
ButtonStyles : { bgColor : Rgba, borderColor : Rgba, borderWidth : F32, textColor : Rgba }
|
||||
|
||||
Elem : [ Button Elem ButtonStyles, Col (List Elem), Row (List Elem), Text Str ]
|
||||
|
||||
renderForHost : Elem
|
||||
renderForHost = render
|
||||
|
|
|
@ -550,6 +550,7 @@ fn add_drawable(
|
|||
match elem.tag() {
|
||||
Button => {
|
||||
let button = unsafe { &elem.entry().button };
|
||||
let styles = button.styles;
|
||||
let child_bounds = add_drawable(&*button.child, bounds, drawables, glyph_brush);
|
||||
|
||||
drawables.push(Drawable {
|
||||
|
@ -557,9 +558,9 @@ fn add_drawable(
|
|||
offset: (0.0, 0.0).into(),
|
||||
// TODO let buttons specify this
|
||||
content: DrawableContent::FillRect {
|
||||
color: (0.2, 0.2, 0.5, 1.0),
|
||||
border_width: 10.0,
|
||||
border_color: (0.2, 0.5, 0.5, 1.0),
|
||||
color: styles.bg_color,
|
||||
border_width: styles.border_width,
|
||||
border_color: styles.border_color,
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
use crate::graphics::colors::RgbaTup;
|
||||
use crate::graphics::primitives::rect::Rect;
|
||||
use core::ffi::c_void;
|
||||
use core::mem::{self, ManuallyDrop};
|
||||
|
@ -70,6 +71,7 @@ impl RocElem {
|
|||
}
|
||||
|
||||
#[repr(u8)]
|
||||
#[allow(unused)] // This is actually used, just via a mem::transmute from u8
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum RocElemTag {
|
||||
Button = 0,
|
||||
|
@ -81,7 +83,16 @@ pub enum RocElemTag {
|
|||
#[repr(C)]
|
||||
pub struct RocButton {
|
||||
pub child: ManuallyDrop<RocElem>,
|
||||
pub bounds: Rect,
|
||||
pub styles: ButtonStyles,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub struct ButtonStyles {
|
||||
pub bg_color: RgbaTup,
|
||||
pub border_color: RgbaTup,
|
||||
pub border_width: f32,
|
||||
pub text_color: RgbaTup,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue