about summary refs log tree commit diff stats
path: root/src/css/cssvalues.nim
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-01-21 17:31:53 +0100
committerbptato <nincsnevem662@gmail.com>2025-01-21 17:31:53 +0100
commitc3461ec8d2a2972cf7ef93e29c756e609af6f94d (patch)
tree662db3ce958d44a2095fb25c083bdc57119ed2f8 /src/css/cssvalues.nim
parent4d57a29eed27c881111ecd4f4d3d57d85d0dac1f (diff)
downloadchawan-c3461ec8d2a2972cf7ef93e29c756e609af6f94d.tar.gz
cssvalues: add newer length units
I'm not convinced that anybody even knows these exist, but whatever.
Diffstat (limited to 'src/css/cssvalues.nim')
-rw-r--r--src/css/cssvalues.nim54
1 files changed, 36 insertions, 18 deletions
diff --git a/src/css/cssvalues.nim b/src/css/cssvalues.nim
index 933b6c87..86309591 100644
--- a/src/css/cssvalues.nim
+++ b/src/css/cssvalues.nim
@@ -99,22 +99,37 @@ type
 
   CSSUnit* = enum
     cuAuto = ""
+    cuCap = "cap"
+    cuCh = "ch"
     cuCm = "cm"
-    cuMm = "mm"
-    cuIn = "in"
-    cuPx = "px"
-    cuPt = "pt"
-    cuPc = "pc"
+    cuDvmax = "dvmax"
+    cuDvmin = "dvmin"
     cuEm = "em"
     cuEx = "ex"
-    cuCh = "ch"
+    cuIc = "ic"
+    cuIn = "in"
+    cuLh = "lh"
+    cuLvmax = "lvmax"
+    cuLvmin = "lvmin"
+    cuMm = "mm"
+    cuPc = "pc"
+    cuPerc = "%"
+    cuPt = "pt"
+    cuPx = "px"
+    cuRcap = "rcap"
+    cuRch = "rch"
     cuRem = "rem"
-    cuVw = "vw"
+    cuRex = "rex"
+    cuRic = "ric"
+    cuRlh = "rlh"
+    cuSvmax = "svmax"
+    cuSvmin = "svmin"
+    cuVb = "vb"
     cuVh = "vh"
-    cuVmin = "vmin"
+    cuVi = "vi"
     cuVmax = "vmax"
-    cuPerc = "%"
-    cuIc = "ic"
+    cuVmin = "vmin"
+    cuVw = "vw"
 
   CSSValueType* = enum
     cvtLength = "length"
@@ -888,10 +903,11 @@ func resolveLength*(u: CSSUnit; val: float32; attrs: WindowAttributes):
     CSSLength =
   return case u
   of cuAuto: CSSLength(u: clAuto)
-  of cuEm, cuRem: cssLength(val * float32(attrs.ppl))
-  of cuCh: cssLength(val * float32(attrs.ppc))
-  of cuIc: cssLength(val * float32(attrs.ppc) * 2)
-  of cuEx: cssLength(val * float32(attrs.ppc) / 2)
+  of cuEm, cuRem, cuCap, cuRcap, cuLh, cuRlh:
+    cssLength(val * float32(attrs.ppl))
+  of cuCh, cuRch: cssLength(val * float32(attrs.ppc))
+  of cuIc, cuRic: cssLength(val * float32(attrs.ppc) * 2)
+  of cuEx, cuRex: cssLength(val * float32(attrs.ppc) / 2)
   of cuPerc: CSSLength(u: clPerc, num: val)
   of cuPx: cssLength(val)
   of cuCm: cssLength(val * 37.8)
@@ -899,10 +915,12 @@ func resolveLength*(u: CSSUnit; val: float32; attrs: WindowAttributes):
   of cuIn: cssLength(val * 96)
   of cuPc: cssLength(val * 16)
   of cuPt: cssLength(val * 4 / 3)
-  of cuVw: cssLength(float32(attrs.widthPx) * val / 100)
-  of cuVh: cssLength(float32(attrs.heightPx) * val / 100)
-  of cuVmin: cssLength(min(attrs.widthPx, attrs.heightPx) / 100 * val)
-  of cuVmax: cssLength(max(attrs.widthPx, attrs.heightPx) / 100 * val)
+  of cuVw, cuVi: cssLength(float32(attrs.widthPx) * val / 100)
+  of cuVh, cuVb: cssLength(float32(attrs.heightPx) * val / 100)
+  of cuVmin, cuSvmin, cuLvmin, cuDvmin:
+    cssLength(min(attrs.widthPx, attrs.heightPx) / 100 * val)
+  of cuVmax, cuSvmax, cuLvmax, cuDvmax:
+    cssLength(max(attrs.widthPx, attrs.heightPx) / 100 * val)
 
 func parseLength(val: float32; u: string; attrs: WindowAttributes):
     Opt[CSSLength] =