mirror of
https://github.com/griffi-gh/hUI.git
synced 2024-11-25 08:28:42 -06:00
change bg color api again
This commit is contained in:
parent
047d53016f
commit
f05659e35b
|
@ -11,26 +11,26 @@ use crate::rectangle::Corners;
|
||||||
|
|
||||||
//TODO: move this into the color module?
|
//TODO: move this into the color module?
|
||||||
#[derive(Clone, Copy, Default, Debug, PartialEq)]
|
#[derive(Clone, Copy, Default, Debug, PartialEq)]
|
||||||
pub enum RectBackground {
|
pub enum BackgroundColor {
|
||||||
#[default]
|
#[default]
|
||||||
Transparent,
|
Transparent,
|
||||||
Solid(Vec4),
|
Solid(Vec4),
|
||||||
Gradient(Corners<Vec4>),
|
Gradient(Corners<Vec4>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<(f32, f32, f32, f32)> for RectBackground {
|
impl From<(f32, f32, f32, f32)> for BackgroundColor {
|
||||||
fn from(color: (f32, f32, f32, f32)) -> Self {
|
fn from(color: (f32, f32, f32, f32)) -> Self {
|
||||||
Self::Solid(vec4(color.0, color.1, color.2, color.3))
|
Self::Solid(vec4(color.0, color.1, color.2, color.3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Corners<Vec4>> for RectBackground {
|
impl From<Corners<Vec4>> for BackgroundColor {
|
||||||
fn from(corners: Corners<Vec4>) -> Self {
|
fn from(corners: Corners<Vec4>) -> Self {
|
||||||
Self::Gradient(corners)
|
Self::Gradient(corners)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Option<Vec4>> for RectBackground {
|
impl From<Option<Vec4>> for BackgroundColor {
|
||||||
fn from(color: Option<Vec4>) -> Self {
|
fn from(color: Option<Vec4>) -> Self {
|
||||||
match color {
|
match color {
|
||||||
Some(color) => Self::Solid(color),
|
Some(color) => Self::Solid(color),
|
||||||
|
@ -39,19 +39,19 @@ impl From<Option<Vec4>> for RectBackground {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Vec4> for RectBackground {
|
impl From<Vec4> for BackgroundColor {
|
||||||
fn from(color: Vec4) -> Self {
|
fn from(color: Vec4) -> Self {
|
||||||
Self::Solid(color)
|
Self::Solid(color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<(f32, f32, f32)> for RectBackground {
|
impl From<(f32, f32, f32)> for BackgroundColor {
|
||||||
fn from(color: (f32, f32, f32)) -> Self {
|
fn from(color: (f32, f32, f32)) -> Self {
|
||||||
Self::Solid(vec4(color.0, color.1, color.2, 1.))
|
Self::Solid(vec4(color.0, color.1, color.2, 1.))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Corners<Vec3>> for RectBackground {
|
impl From<Corners<Vec3>> for BackgroundColor {
|
||||||
fn from(corners: Corners<Vec3>) -> Self {
|
fn from(corners: Corners<Vec3>) -> Self {
|
||||||
Self::Gradient(Corners {
|
Self::Gradient(Corners {
|
||||||
top_left: corners.top_left.extend(1.),
|
top_left: corners.top_left.extend(1.),
|
||||||
|
@ -62,7 +62,7 @@ impl From<Corners<Vec3>> for RectBackground {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Option<Vec3>> for RectBackground {
|
impl From<Option<Vec3>> for BackgroundColor {
|
||||||
fn from(color: Option<Vec3>) -> Self {
|
fn from(color: Option<Vec3>) -> Self {
|
||||||
match color {
|
match color {
|
||||||
Some(color) => Self::Solid(color.extend(1.)),
|
Some(color) => Self::Solid(color.extend(1.)),
|
||||||
|
@ -71,21 +71,19 @@ impl From<Option<Vec3>> for RectBackground {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Vec3> for RectBackground {
|
impl From<Vec3> for BackgroundColor {
|
||||||
fn from(color: Vec3) -> Self {
|
fn from(color: Vec3) -> Self {
|
||||||
Self::Solid(color.extend(1.))
|
Self::Solid(color.extend(1.))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RectBackground {
|
impl BackgroundColor {
|
||||||
/// Currently, never returns None.\
|
/// Returns the colors of individual corners
|
||||||
/// `Option` has been added in preparation for future changes.\
|
pub fn corners(&self) -> Corners<Vec4> {
|
||||||
/// (`Background::Texture` etc)
|
|
||||||
pub fn corners(&self) -> Option<Corners<Vec4>> {
|
|
||||||
match *self {
|
match *self {
|
||||||
Self::Transparent => Some(Corners::all(Vec4::ZERO)),
|
Self::Transparent => Corners::all(Vec4::ZERO),
|
||||||
Self::Solid(color) => Some(Corners::all(color)),
|
Self::Solid(color) => Corners::all(color),
|
||||||
Self::Gradient(corners) => Some(corners),
|
Self::Gradient(corners) => corners,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,9 +103,3 @@ impl RectBackground {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// impl From<(GradientDirection, Vec4, Vec4)> for Background {
|
|
||||||
// fn from(gradient: (GradientDirection, Vec4, Vec4)) -> Self {
|
|
||||||
// Self::Gradient(gradient.0, gradient.1, gradient.2)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
use derive_setters::Setters;
|
use derive_setters::Setters;
|
||||||
use glam::{Vec2, vec2};
|
use glam::{Vec2, vec2};
|
||||||
use crate::{
|
use crate::{
|
||||||
background::RectBackground,
|
background::BackgroundColor,
|
||||||
draw::{RoundedCorners, UiDrawCommand},
|
draw::{RoundedCorners, UiDrawCommand},
|
||||||
element::{ElementList, MeasureContext, ProcessContext, UiElement},
|
element::{ElementList, MeasureContext, ProcessContext, UiElement},
|
||||||
layout::{Alignment, Alignment2d, LayoutInfo, UiDirection, Size, Size2d},
|
layout::{Alignment, Alignment2d, LayoutInfo, UiDirection, Size, Size2d},
|
||||||
|
@ -57,7 +57,7 @@ pub struct Container {
|
||||||
|
|
||||||
/// Background color of the container
|
/// Background color of the container
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
pub background: RectBackground,
|
pub background: BackgroundColor,
|
||||||
|
|
||||||
/// Corner radius of the background rectangle
|
/// Corner radius of the background rectangle
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
|
@ -311,7 +311,7 @@ impl UiElement for Container {
|
||||||
|
|
||||||
//background
|
//background
|
||||||
if !self.background.is_transparent() {
|
if !self.background.is_transparent() {
|
||||||
let corner_colors = self.background.corners().unwrap();
|
let corner_colors = self.background.corners();
|
||||||
ctx.draw.add(UiDrawCommand::Rectangle {
|
ctx.draw.add(UiDrawCommand::Rectangle {
|
||||||
position,
|
position,
|
||||||
size: ctx.measure.size,
|
size: ctx.measure.size,
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
use derive_setters::Setters;
|
use derive_setters::Setters;
|
||||||
use glam::{vec2, Vec4};
|
use glam::{vec2, Vec4};
|
||||||
use crate::{
|
use crate::{
|
||||||
background::RectBackground,
|
background::BackgroundColor,
|
||||||
draw::{UiDrawCommand, RoundedCorners},
|
draw::{UiDrawCommand, RoundedCorners},
|
||||||
element::{UiElement, MeasureContext, ProcessContext},
|
element::{UiElement, MeasureContext, ProcessContext},
|
||||||
layout::{Size, Size2d},
|
layout::{Size, Size2d},
|
||||||
|
@ -22,7 +22,7 @@ pub struct FillRect {
|
||||||
|
|
||||||
/// Background color of the rectangle
|
/// Background color of the rectangle
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
pub background: RectBackground,
|
pub background: BackgroundColor,
|
||||||
|
|
||||||
/// Corner radius of the rectangle
|
/// Corner radius of the rectangle
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
|
@ -67,7 +67,7 @@ impl UiElement for FillRect {
|
||||||
ctx.draw.add(UiDrawCommand::Rectangle {
|
ctx.draw.add(UiDrawCommand::Rectangle {
|
||||||
position: ctx.layout.position,
|
position: ctx.layout.position,
|
||||||
size: ctx.measure.size,
|
size: ctx.measure.size,
|
||||||
color: self.background.corners().unwrap(),
|
color: self.background.corners(),
|
||||||
texture: None,
|
texture: None,
|
||||||
rounded_corners: (self.corner_radius.max_f32() > 0.).then_some({
|
rounded_corners: (self.corner_radius.max_f32() > 0.).then_some({
|
||||||
RoundedCorners::from_radius(self.corner_radius)
|
RoundedCorners::from_radius(self.corner_radius)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use derive_setters::Setters;
|
use derive_setters::Setters;
|
||||||
use glam::{vec2, vec4};
|
use glam::{vec2, vec4};
|
||||||
use crate::{
|
use crate::{
|
||||||
background::RectBackground,
|
background::BackgroundColor,
|
||||||
draw::{RoundedCorners, UiDrawCommand},
|
draw::{RoundedCorners, UiDrawCommand},
|
||||||
element::{MeasureContext, ProcessContext, UiElement},
|
element::{MeasureContext, ProcessContext, UiElement},
|
||||||
layout::{Size, Size2d},
|
layout::{Size, Size2d},
|
||||||
|
@ -21,11 +21,11 @@ pub struct ProgressBar {
|
||||||
|
|
||||||
/// Foreground (bar) color
|
/// Foreground (bar) color
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
pub foreground: RectBackground,
|
pub foreground: BackgroundColor,
|
||||||
|
|
||||||
/// Background color
|
/// Background color
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
pub background: RectBackground,
|
pub background: BackgroundColor,
|
||||||
|
|
||||||
/// Corner radius of the progress bar
|
/// Corner radius of the progress bar
|
||||||
#[setters(into)]
|
#[setters(into)]
|
||||||
|
@ -94,7 +94,7 @@ impl UiElement for ProgressBar {
|
||||||
ctx.draw.add(UiDrawCommand::Rectangle {
|
ctx.draw.add(UiDrawCommand::Rectangle {
|
||||||
position: ctx.layout.position,
|
position: ctx.layout.position,
|
||||||
size: ctx.measure.size,
|
size: ctx.measure.size,
|
||||||
color: self.background.corners().unwrap(),
|
color: self.background.corners(),
|
||||||
texture: None,
|
texture: None,
|
||||||
rounded_corners
|
rounded_corners
|
||||||
});
|
});
|
||||||
|
@ -103,7 +103,7 @@ impl UiElement for ProgressBar {
|
||||||
ctx.draw.add(UiDrawCommand::Rectangle {
|
ctx.draw.add(UiDrawCommand::Rectangle {
|
||||||
position: ctx.layout.position,
|
position: ctx.layout.position,
|
||||||
size: ctx.measure.size * vec2(value, 1.0),
|
size: ctx.measure.size * vec2(value, 1.0),
|
||||||
color: self.foreground.corners().unwrap(),
|
color: self.foreground.corners(),
|
||||||
texture: None,
|
texture: None,
|
||||||
rounded_corners,
|
rounded_corners,
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue