aboutsummaryrefslogtreecommitdiffstats
path: root/lay/strain/constraint.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2026-03-02 17:38:55 -0500
committerSam Anthony <sam@samanthony.xyz>2026-03-02 17:38:55 -0500
commit8858a54b5ddb3a2d8a42ecb1a837c02800bc934f (patch)
tree2428c445936eb8865c0b7c8f52560e97a44082f3 /lay/strain/constraint.go
parentc6cd37a6b80d4e5ad1dbf8c8968b818811b8aa54 (diff)
downloadgui-8858a54b5ddb3a2d8a42ecb1a837c02800bc934f.zip
create lay/strain package
The lay/strain package uses the Cassowary algorithm to solve systems of layout constraints.
Diffstat (limited to 'lay/strain/constraint.go')
-rw-r--r--lay/strain/constraint.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/lay/strain/constraint.go b/lay/strain/constraint.go
new file mode 100644
index 0000000..44c9e0a
--- /dev/null
+++ b/lay/strain/constraint.go
@@ -0,0 +1,28 @@
+package strain
+
+import (
+ "github.com/lithdew/casso"
+ "golang.org/x/exp/shiny/unit"
+)
+
+// Constraint imposes a restriction on the size of a widget or layout.
+type Constraint struct {
+ // Dimension is the dimension to constrain: width/height.
+ Dimension
+
+ // Relation declares whether the constraint is an upper, lower,
+ // or exact bound.
+ casso.Op
+
+ // Value is the target or threshold value.
+ unit.Value
+}
+
+// Dim is a dimension of a widget or layout that can be constrained.
+type Dimension int
+
+const (
+ _ Dimension = iota
+ Width
+ Height
+)