Skip to content

Commit

Permalink
Convert the positioning enums and LayoutView to Proto
Browse files Browse the repository at this point in the history
Fixes #1725
Fixes #1723

# Conflicts:
#	crates/figma_import/src/tools/fetch_layout.rs
#	crates/figma_import/tests/layout-unit-tests.dcf
#	crates/layout/src/layout_style.rs
#	crates/layout/src/styles.rs
#	designcompose/src/main/assets/figma/DesignSwitcherDoc_Ljph4e3sC0lHcynfXpoh9f.dcf
#	integration-tests/validation/src/main/assets/figma/AlignmentTestDoc_JIjE9oKQbq8ipi66ab5UaK.dcf
#	integration-tests/validation/src/main/assets/figma/BattleshipDoc_RfGl9SWnBEvdg8T1Ex6ZAR.dcf
#	integration-tests/validation/src/main/assets/figma/BlendModeTestDoc_ZqX5i5g6inv9tANIwMMXUV.dcf
#	integration-tests/validation/src/main/assets/figma/ColorTintTestDoc_MCtUD3yjONxK6rQm65yqM5.dcf
#	integration-tests/validation/src/main/assets/figma/ComponentReplaceDoc_bQVVy2GSZJ8veYaJUrG6Ni.dcf
#	integration-tests/validation/src/main/assets/figma/ComponentReplaceRelayoutDoc_qIh0IOQTCtgeAWZFF5gYSk.dcf
#	integration-tests/validation/src/main/assets/figma/ConstraintsDoc_KuHLbsKA23DjZPhhgHqt71.dcf
#	integration-tests/validation/src/main/assets/figma/CrossAxisFillTestDoc_GPr1cx4n3zBPwLhqlSL1ba.dcf
#	integration-tests/validation/src/main/assets/figma/CustomBrushTestDoc_oetCBVw8gCAxmCNllXx7zO.dcf
#	integration-tests/validation/src/main/assets/figma/DialsGaugesTestDoc_lZj6E9GtIQQE4HNLpzgETw.dcf
#	integration-tests/validation/src/main/assets/figma/FancyFillTestDoc_xQ9cunHt8VUm6xqJJ2Pjb2.dcf
#	integration-tests/validation/src/main/assets/figma/FillTestDoc_dB3q96FkxkTO4czn5NqnxV.dcf
#	integration-tests/validation/src/main/assets/figma/GridLayoutDoc_MBNjjSbzzKeN7nBjVoewsl.dcf
#	integration-tests/validation/src/main/assets/figma/GridLayoutTestDoc_JOSOEvsrjvMqanyQa5OpNR.dcf
#	integration-tests/validation/src/main/assets/figma/GridWidgetTestDoc_OBhNItd9i9J2LwVYuLxEIx.dcf
#	integration-tests/validation/src/main/assets/figma/HelloByeDoc_MCHaMYcIEnRpbvU9Ms7a0o.dcf
#	integration-tests/validation/src/main/assets/figma/HelloVersionDoc_v62Vwlxa4Bb6nopJiAxQAQ_5668177823.dcf
#	integration-tests/validation/src/main/assets/figma/HelloWorldDoc_pxVlixodJqZL95zo2RzTHl.dcf
#	integration-tests/validation/src/main/assets/figma/HyperlinkValidationDoc_uBExbEg4lcRa0xN2yaLTX8.dcf
#	integration-tests/validation/src/main/assets/figma/IgnoreAutoLayoutTestDoc_vPNR6N02HfdcpC8wR5yBYP.dcf
#	integration-tests/validation/src/main/assets/figma/ImageUpdateTestDoc_oQw7kiy94fvdVouCYBC9T0.dcf
#	integration-tests/validation/src/main/assets/figma/InteractionTestDoc_8Zg9viyjYTnyN29pbkR1CE.dcf
#	integration-tests/validation/src/main/assets/figma/ItemSpacingTestDoc_YXrHBp6C6OaW5ShcCYeGJc.dcf
#	integration-tests/validation/src/main/assets/figma/LayoutReplacementTestDoc_dwk2GF7RiNvlbbAKPjqldx.dcf
#	integration-tests/validation/src/main/assets/figma/LayoutTestsDoc_Gv63fYTzpeH2ZtxP4go31E.dcf
#	integration-tests/validation/src/main/assets/figma/ListWidgetTestDoc_9ev0MBNHFrgTqJOrAGcEpV.dcf
#	integration-tests/validation/src/main/assets/figma/MaskTestDoc_mEmdUVEIjvBBbV0kELPy37.dcf
#	integration-tests/validation/src/main/assets/figma/ModuleExampleDoc_hPEGkrF0LUqNYEZObXqjXZ.dcf
#	integration-tests/validation/src/main/assets/figma/OnePxSeparatorDoc_EXjTHxfMNBtXDrz8hr6MFB.dcf
#	integration-tests/validation/src/main/assets/figma/OpenLinkTestDoc_r7m4tqyKv6y9DWcg7QBEDf.dcf
#	integration-tests/validation/src/main/assets/figma/RecursiveCustomizationsDoc_o0GWzcqdOWEgzj4kIeIlAu.dcf
#	integration-tests/validation/src/main/assets/figma/ShadowsTestDoc_OqK58Y46IqP4wIgKCWys48.dcf
#	integration-tests/validation/src/main/assets/figma/SmartAnimateTestDoc_RW3lFurXCoVDeqY2Y7bf4v.dcf
#	integration-tests/validation/src/main/assets/figma/StyledTextRunsDoc_mIYV4YsYYaMTsBMCVskA4N.dcf
#	integration-tests/validation/src/main/assets/figma/TelltaleTestDoc_TZgHrKWx8wvQM7UPTyEpmz.dcf
#	integration-tests/validation/src/main/assets/figma/TextElideTestDoc_oQ7nK49Ya5PJ3GpjI5iy8d.dcf
#	integration-tests/validation/src/main/assets/figma/TextResizingTestDoc_kAoYvgHkPzA4J4pALZ3Xhg.dcf
#	integration-tests/validation/src/main/assets/figma/VariableBorderTestDoc_MWnVAfW3FupV4VMLNR1m67.dcf
#	integration-tests/validation/src/main/assets/figma/VariantAnimationTestDoc_pghyUUhlzJNoxxSK86ngiw.dcf
#	integration-tests/validation/src/main/assets/figma/VariantAnimationTimelineTestDoc_vJRf4zxY4QX4zzSSUd1nJ5.dcf
#	integration-tests/validation/src/main/assets/figma/VariantAsteriskTestDoc_gQeYHGCSaBE4zYSFpBrhre.dcf
#	integration-tests/validation/src/main/assets/figma/VariantInteractionsTestDoc_WcsgoLR4aDRSkZHY29Qdhq.dcf
#	integration-tests/validation/src/main/assets/figma/VariantPropertiesTestDoc_4P7zDdrQxj7FZsKJoIQcx1.dcf
#	integration-tests/validation/src/main/assets/figma/VectorRenderingTestDoc_Z3ucY0wMAbIwZIa6mLEWIK.dcf
#	reference-apps/tutorial/app/src/main/assets/figma/TutorialDoc_3z4xExq0INrL9vxPhj9tl7.dcf
  • Loading branch information
timothyfroehlich committed Nov 14, 2024
1 parent 5e466a0 commit 96b48bb
Show file tree
Hide file tree
Showing 82 changed files with 628 additions and 702 deletions.
58 changes: 58 additions & 0 deletions crates/dc_bundle/src/definition/layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,63 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
use crate::definition::element::{DimensionProto, DimensionRect, Size};
use crate::definition::layout::item_spacing::ItemSpacingType;
use crate::Error;
use crate::Error::MissingFieldError;

include!(concat!(env!("OUT_DIR"), "/designcompose.definition.layout.rs"));

impl ItemSpacing {
pub fn new_default() -> Option<Self> {
Some(Self { item_spacing_type: Some(ItemSpacingType::Fixed(0)) })
}
}

impl LayoutStyle {
pub fn bounding_box(&self) -> Result<&Size, Error> {
self.bounding_box.as_ref().ok_or(MissingFieldError { field: "bounding_box".to_string() })
}

pub(crate) fn new_default() -> LayoutStyle {
LayoutStyle {
margin: DimensionRect::new(),
padding: DimensionRect::new(),
item_spacing: ItemSpacing::new_default(),
top: DimensionProto::new_undefined(),
left: DimensionProto::new_undefined(),
bottom: DimensionProto::new_undefined(),
right: DimensionProto::new_undefined(),
width: DimensionProto::new_undefined(),
height: DimensionProto::new_undefined(),
min_width: DimensionProto::new_undefined(),
max_width: DimensionProto::new_undefined(),
min_height: DimensionProto::new_undefined(),
max_height: DimensionProto::new_undefined(),
bounding_box: Some(Size::default()),
flex_grow: 0.0,
flex_shrink: 0.0,
flex_basis: DimensionProto::new_undefined(),
align_self: AlignSelf::Auto.into(),
align_content: AlignContent::Stretch.into(),
align_items: AlignItems::Stretch.into(),
flex_direction: FlexDirection::Row.into(),
justify_content: JustifyContent::FlexStart.into(),
position_type: PositionType::Relative.into(),
}
}
}

impl ItemSpacing {
pub fn fixed(value: i32) -> Self {
Self { item_spacing_type: Some(item_spacing::ItemSpacingType::Fixed(value)) }
}
pub fn auto(width: i32, height: i32) -> Self {
Self {
item_spacing_type: Some(item_spacing::ItemSpacingType::Auto(item_spacing::Auto {
width,
height,
})),
}
}
}
2 changes: 0 additions & 2 deletions crates/dc_bundle/src/legacy_definition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,11 @@ use std::sync::Arc;
// To help keep the legacy definition files clear we alias `crate::definition`, which is the base
// module for the generated protobuf files to `proto`, so that all of the protobuf-generated types
// inside `legacy_definition` must be prepended with `proto::`
pub(crate) use crate::definition as proto;
use crate::definition::element::ImageKey;
use crate::definition::element::VariableMap;
use crate::legacy_definition::element::node::NodeQuery;

pub mod element;
pub mod layout;
pub mod plugin;
pub mod view;

Expand Down
18 changes: 0 additions & 18 deletions crates/dc_bundle/src/legacy_definition/layout.rs

This file was deleted.

122 changes: 0 additions & 122 deletions crates/dc_bundle/src/legacy_definition/layout/layout_style.rs

This file was deleted.

Loading

0 comments on commit 96b48bb

Please sign in to comment.