fun treeChangesShouldUpdateScreenBounds()

in platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/HierarchyTest.kt [17:65]


    fun treeChangesShouldUpdateScreenBounds() {
        val doc = mapSvg {
            svgDocument(width = 400, height = 300) {
                g(id = "root_g") {
                    g(translate(x = 5, y = 20), HIDDEN, id = "hidden_g") {
                        g(id = "hidden_sub_g") {
                            rect(x = 0, y = 0, width = 10, height = 5, id = "hidden_rect")
                        }
                    }

                    g(translate(x = 10, y = 50), id = "vis_g") {
                        rect(x = 0, y = 0, width = 10, height = 10, id = "vis_rect")
                    }
                }
            }
        }

        val visBounds = makeLTRB(10f, 50f, 20f, 60f)

        with(doc) {
            val hiddenBounds = makeLTRB(5f, 20f, 15f, 25f)
            assertThat(element("hidden_g").screenBounds).isEqualTo(hiddenBounds)
            assertThat(element("hidden_sub_g").screenBounds).isEqualTo(hiddenBounds)
            assertThat(element("hidden_rect").screenBounds).isEqualTo(hiddenBounds)

            // visible elements
            assertThat(element("vis_g").screenBounds).isEqualTo(visBounds)
            assertThat(element("vis_rect").screenBounds).isEqualTo(visBounds)

            // outer group
            assertThat(element("root_g").screenBounds).isEqualTo(makeLTRB(5f, 20f, 20f, 60f))
        }

        doc.element("hidden_g").transform = Matrix33.makeTranslate(60f, 20f)

        with(doc) {
            val hiddenBounds = makeLTRB(60f, 20f, 70f, 25f)
            assertThat(element("hidden_g").screenBounds).isEqualTo(hiddenBounds)
            assertThat(element("hidden_sub_g").screenBounds).isEqualTo(hiddenBounds)
            assertThat(element("hidden_rect").screenBounds).isEqualTo(hiddenBounds)

            // visible elements
            assertThat(element("vis_g").screenBounds).isEqualTo(visBounds)
            assertThat(element("vis_rect").screenBounds).isEqualTo(visBounds)

            // outer group
            assertThat(element("root_g").screenBounds).isEqualTo(makeLTRB(10f, 20f, 70f, 60f))
        }
    }