Skip to content

Commit

Permalink
Review suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
noituri committed Jan 29, 2025
1 parent 67d3378 commit bb380a1
Show file tree
Hide file tree
Showing 15 changed files with 69 additions and 50 deletions.
9 changes: 9 additions & 0 deletions compositor_api/src/types/component.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,15 @@ pub struct View {
/// List of box shadows.
pub box_shadow: Option<Vec<BoxShadow>>,

/// (**default=`0.0`**) Padding for all sides of the component.
pub padding: Option<f32>,

/// (**default=`0.0`**) Padding for the top and bottom of the component.
pub padding_vertical: Option<f32>,

/// (**default=`0.0`**) Padding for the left and right of the component.
pub padding_horizontal: Option<f32>,

/// (**default=`0.0`**) Padding on top side in pixels.
pub padding_top: Option<f32>,

Expand Down
8 changes: 4 additions & 4 deletions compositor_api/src/types/from_component.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,10 @@ impl TryFrom<View> for scene::ViewComponent {
None => scene::Overflow::Hidden,
};
let padding = scene::Padding {
top: view.padding_top.unwrap_or(0.0),
right: view.padding_right.unwrap_or(0.0),
bottom: view.padding_bottom.unwrap_or(0.0),
left: view.padding_left.unwrap_or(0.0),
top: view.padding_top.or(view.padding_vertical).or(view.padding).unwrap_or(0.0),
bottom: view.padding_bottom.or(view.padding_vertical).or(view.padding).unwrap_or(0.0),
left: view.padding_left.or(view.padding_horizontal).or(view.padding).unwrap_or(0.0),
right: view.padding_right.or(view.padding_horizontal).or(view.padding).unwrap_or(0.0),
};

if padding.top < 0.0 || padding.right < 0.0 || padding.bottom < 0.0 || padding.left < 0.0 {
Expand Down
9 changes: 2 additions & 7 deletions compositor_render/src/scene/layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,16 +161,11 @@ impl StatefulLayoutComponent {
child: &mut StatefulComponent,
position: AbsolutePosition,
parent_size: Size,
child_padding: Padding,
parent_padding: Padding,
pts: Duration,
) -> NestedLayout {
let width = position
.width
.unwrap_or(parent_size.width + child_padding.horizontal());
let height = position
.height
.unwrap_or(parent_size.height + child_padding.vertical());
let width = position.width.unwrap_or(parent_size.width);
let height = position.height.unwrap_or(parent_size.height);

let top = match position.position_vertical {
VerticalPosition::TopOffset(top) => top + parent_padding.top,
Expand Down
4 changes: 0 additions & 4 deletions compositor_render/src/scene/view_component.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,6 @@ impl StatefulViewComponent {
.with_padding(view.padding)
}

pub(super) fn padding(&self, pts: Duration) -> Padding {
self.view(pts).padding
}

pub(super) fn component_id(&self) -> Option<&ComponentId> {
self.end.id.as_ref()
}
Expand Down
23 changes: 8 additions & 15 deletions compositor_render/src/scene/view_component/layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use std::time::Duration;

use crate::{
scene::{
layout::StatefulLayoutComponent, BorderRadius, Overflow, Padding, Position, RGBAColor,
Size, StatefulComponent, ViewChildrenDirection,
layout::StatefulLayoutComponent, BorderRadius, Overflow, Position, RGBAColor, Size,
StatefulComponent, ViewChildrenDirection,
},
transformations::layout::{LayoutContent, Mask, NestedLayout},
};
Expand Down Expand Up @@ -72,18 +72,12 @@ impl ViewComponentParam {
let children: Vec<_> = children
.iter_mut()
.map(|child| {
let (position, padding) = match child {
StatefulComponent::Layout(StatefulLayoutComponent::View(view)) => {
(view.position(pts), view.padding(pts))
}
StatefulComponent::Layout(layout) => (layout.position(pts), Padding::default()),
ref non_layout_component => (
Position::Static {
width: non_layout_component.width(pts),
height: non_layout_component.height(pts),
},
Padding::default(),
),
let position = match child {
StatefulComponent::Layout(layout) => layout.position(pts),
ref non_layout_component => Position::Static {
width: non_layout_component.width(pts),
height: non_layout_component.height(pts),
},
};
match position {
Position::Static { width, height } => {
Expand All @@ -108,7 +102,6 @@ impl ViewComponentParam {
child,
position,
size,
padding,
self.padding,
pts,
)
Expand Down
24 changes: 24 additions & 0 deletions schemas/scene.schema.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions snapshot_tests/view/nested_padding_static_children.scene.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
"children": [
{
"type": "view",
"padding_top": 10,
"padding_left": 5,
"border_width": 4,
"border_color": "#FF00FFFF",
"background_color": "#0000FFFF",
Expand Down
2 changes: 0 additions & 2 deletions snapshot_tests/view/padding_absolute_left_children.scene.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
"children": [
{
"type": "view",
"padding_top": 10,
"padding_left": 5,
"background_color": "#0000FFFF",
"children": []
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
"children": [
{
"type": "view",
"padding_top": 10,
"padding_left": 5,
"background_color": "#0000FFFF",
"children": []
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"children": [
{
"type": "view",
"padding_left": 20,
"background_color": "#0000FFFF",
"children": []
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,9 @@
"type": "view",
"background_color": "#FF0000FF",
"direction": "column",
"width": 300,
"height": 300,
"children": [
{
"type": "view",
"padding_top": 10,
"padding_left": 20,
"border_width": 4,
"border_color": "#FF00FFFF",
"background_color": "#0000FFFF",
Expand All @@ -32,8 +28,6 @@
"children": [
{
"type": "view",
"width": 250,
"height": 250,
"border_width": 4,
"border_color": "#FF00FFFF",
"background_color": "#00FFFFFF",
Expand Down
4 changes: 2 additions & 2 deletions src/snapshot_tests/view_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,9 @@ fn view_tests() {
..default.clone()
});
runner.add(TestCase {
name: "view/column_view_padding_static_children",
name: "view/unsized_view_padding_static_children",
scene_updates: scene_from_json(include_str!(
"../../snapshot_tests/view/column_view_padding_static_children.scene.json"
"../../snapshot_tests/view/unsized_view_padding_static_children.scene.json"
)),
..default.clone()
});
Expand Down
12 changes: 12 additions & 0 deletions ts/live-compositor/src/api.generated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,18 @@ export type Component =
* List of box shadows.
*/
box_shadow?: BoxShadow[] | null;
/**
* (**default=`0.0`**) Padding for all sides of the component.
*/
padding?: number | null;
/**
* (**default=`0.0`**) Padding for the top and bottom of the component.
*/
padding_vertical?: number | null;
/**
* (**default=`0.0`**) Padding for the left and right of the component.
*/
padding_horizontal?: number | null;
/**
* (**default=`0.0`**) Padding on top side in pixels.
*/
Expand Down
11 changes: 7 additions & 4 deletions ts/live-compositor/src/components/View.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,13 @@ function sceneBuilder(

box_shadow: style.boxShadow,

padding_top: style.paddingTop ?? style.paddingVertical ?? style.padding,
padding_bottom: style.paddingBottom ?? style.paddingVertical ?? style.padding,
padding_right: style.paddingRight ?? style.paddingHorizontal ?? style.padding,
padding_left: style.paddingLeft ?? style.paddingHorizontal ?? style.padding,
padding: style.padding,
padding_vertical: style.paddingVertical,
padding_horizontal: style.padding,
padding_top: style.paddingTop,
padding_bottom: style.paddingBottom,
padding_right: style.paddingRight,
padding_left: style.paddingLeft,
};
}

Expand Down

0 comments on commit bb380a1

Please sign in to comment.