rui_orig/demo/clipDemo.go

55 lines
1.6 KiB
Go

package main
import "github.com/anoshenko/rui"
const clipDemoText = `
GridLayout {
width = 100%, height = 100%, cell-height = "auto, 1fr",
cell-horizontal-align = center, cell-vertical-align = center,
content = [
DropDownList {
id = clipType, current = 0, margin = 8px, max-width = 100%,
items = ["none",
"inset(20%, 10%, 20%, 10%, 16px / 32px)",
"circle(50%, 45%, 45%)",
"ellipse(50%, 50%, 35%, 50%)",
"polygon(50%, 2.4%, 34.5%, 33.8%, 0%, 38.8%, 25%, 63.1%, 19.1%, 97.6%, 50%, 81.3%, 80.9%, 97.6%, 75%, 63.1%, 100%, 38.8%, 65.5%, 33.8%)"],
},
ImageView {
id = clipImage, row = 1, src = "cat.jpg",
}
]
}
`
func createClipDemo(session rui.Session) rui.View {
view := rui.CreateViewFromText(session, clipDemoText)
if view == nil {
return nil
}
rui.Set(view, "clipType", rui.DropDownEvent, func(number int) {
switch number {
case 0:
rui.Set(view, "clipImage", rui.Clip, nil)
case 1:
rui.Set(view, "clipImage", rui.Clip, rui.InsetClip(rui.Percent(20), rui.Percent(10),
rui.Percent(20), rui.Percent(10), rui.NewRadiusProperty(rui.Params{
rui.X: rui.Px(16),
rui.Y: rui.Px(32),
})))
case 2:
rui.Set(view, "clipImage", rui.Clip, rui.CircleClip(rui.Percent(50), rui.Percent(45), rui.Percent(45)))
case 3:
rui.Set(view, "clipImage", rui.Clip, rui.EllipseClip(rui.Percent(50), rui.Percent(50), rui.Percent(35), rui.Percent(50)))
case 4:
rui.Set(view, "clipImage", rui.Clip, rui.PolygonClip([]interface{}{"50%", "2.4%", "34.5%", "33.8%", "0%", "38.8%", "25%", "63.1%", "19.1%", "97.6%", "50%", "81.3%", "80.9%", "97.6%", "75%", "63.1%", "100%", "38.8%", "65.5%", "33.8%"}))
}
})
return view
}