Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Additional library for FlexBox #442

Open
ronjunevaldoz opened this issue Nov 19, 2022 · 5 comments
Open

Additional library for FlexBox #442

ronjunevaldoz opened this issue Nov 19, 2022 · 5 comments
Labels
scene2d Issues of the ktx-scene2d module and Scene2D integration in general

Comments

@ronjunevaldoz
Copy link

ronjunevaldoz commented Nov 19, 2022

I have recently implemented the FlexBox widget locally, maybe this could be added as future library?

gdx-flexbox

image

// my initial implementation
flexBox {
    label("Item 1") {
        setAlignment(Align.center)
    }.flex {
        setSize(100f)
    }
    label("Item 2") {
        setAlignment(Align.center)
    }.flex {
        setWidth(100f).setHeight(100f)
        positionType = YogaPositionType.ABSOLUTE
        setPosition(YogaEdge.LEFT, 10f)
    }
}
or 
flexBox {
    label("Item 1") {
        setAlignment(Align.center)
    }.flex(size = 100f)
    label("Item 2") {
        setAlignment(Align.center)
    }.flex(width = 100f, height = 100f, positionType  = YogaPositionType.ABSOLUTE, positionLeft = 10f)
}

extensions .flex could be implemented like .cell

@czyzby
Copy link
Member

czyzby commented Nov 19, 2022

How is that different from Scene2D Table? Can you upload a screenshot of an example layout? Perhaps something that would be difficult to achieve in plain Scene2D.

@czyzby czyzby added the scene2d Issues of the ktx-scene2d module and Scene2D integration in general label Nov 19, 2022
@ronjunevaldoz
Copy link
Author

ronjunevaldoz commented Nov 19, 2022

How is that different from Scene2D Table? Can you upload a screenshot of an example layout? Perhaps something that would be difficult to achieve in plain Scene2D.

we can then define position much easier or if we are already using flex we can use this as reference yoga playground. Also can be alternative to the table

In this example, if we want the actors to be centered horizontally and vertically.

flexBox(YogaFlexDirection.ROW) {
    root.justifyContent = YogaJustify.CENTER
    root.alignItems = YogaAlign.CENTER 
    // ... actors
}

image

If we wanted the 2 actors to overlap

flexBox(YogaFlexDirection.ROW) {
    root.justifyContent = YogaJustify.CENTER
    root.alignItems = YogaAlign.CENTER 
    
    label(1) 
    label(2).flex(absolute = true)
}

image

If we want the actors to be in a column

flexBox(YogaFlexDirection.COLUMN) {
    root.justifyContent = YogaJustify.CENTER
    root.alignItems = YogaAlign.CENTER 
    // ... actors
}

image

@czyzby
Copy link
Member

czyzby commented Nov 19, 2022

I could see it being useful as a separate module that extends ktx-scene2d. Do you think you could implement KTX DSL based on ktx-scene2d/ktx-vis? This section of the contribution guide describes how to add a new module.

@ronjunevaldoz
Copy link
Author

ronjunevaldoz commented Nov 19, 2022

I could see it being useful as a separate module that extends ktx-scene2d. Do you think you could implement KTX DSL based on ktx-scene2d/ktx-vis? This section of the contribution guide describes how to add a new module.

I think I could implement it, but there's a problem I think the minimum requirements for flexbox is 1.8 and the current project uis using 1.7 this might blocked the repository download from jitpack.io, I could create a sample patch for you to test locally my initial implementation, maybe you could share your email so I could send the patch file?

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

@czyzby
Copy link
Member

czyzby commented Nov 19, 2022

That might prevent the library from working correctly on iOS. Are you able to check if the library works correctly on all official platforms other than GWT?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
scene2d Issues of the ktx-scene2d module and Scene2D integration in general
Projects
None yet
Development

No branches or pull requests

2 participants