about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-01-12 21:29:30 +0100
committerbptato <nincsnevem662@gmail.com>2025-01-12 21:47:04 +0100
commit530a72a49295120bc9a55cb87ce416d1dc114fb9 (patch)
tree0b9a8a47dc81a6a974252d8564f3438610ee33e2 /src
parent7b005123a364660f8ea8d801f84bf7a5f746d654 (diff)
downloadchawan-530a72a49295120bc9a55cb87ce416d1dc114fb9.tar.gz
cssvalues: set text-decoration to bit, vertical-align to word
they fit into 8 and 64 bits respectively
Diffstat (limited to 'src')
-rw-r--r--src/css/cssvalues.nim52
1 files changed, 25 insertions, 27 deletions
diff --git a/src/css/cssvalues.nim b/src/css/cssvalues.nim
index ae655610..fa24b39b 100644
--- a/src/css/cssvalues.nim
+++ b/src/css/cssvalues.nim
@@ -36,6 +36,7 @@ type
     cptOverflowY = "overflow-y"
     cptPosition = "position"
     cptTextAlign = "text-align"
+    cptTextDecoration = "text-decoration"
     cptTextTransform = "text-transform"
     cptVisibility = "visibility"
     cptWhiteSpace = "white-space"
@@ -67,17 +68,16 @@ type
     cptPaddingTop = "padding-top"
     cptRight = "right"
     cptTop = "top"
+    cptVerticalAlign = "vertical-align"
     cptWidth = "width"
     cptZIndex = "z-index"
 
-    # object properties: stored as pointer to a ref object
+    # object properties: stored as a tagged ref object
     cptBackgroundImage = "background-image"
     cptBorderSpacing = "border-spacing"
     cptContent = "content"
     cptCounterReset = "counter-reset"
     cptQuotes = "quotes"
-    cptTextDecoration = "text-decoration"
-    cptVerticalAlign = "vertical-align"
 
 const LastBitPropType = cptWordBreak
 const FirstWordPropType = LastBitPropType.succ
@@ -372,6 +372,7 @@ type
     overflow*: CSSOverflow
     position*: CSSPosition
     textAlign*: CSSTextAlign
+    textDecoration*: set[CSSTextDecoration]
     textTransform*: CSSTextTransform
     visibility*: CSSVisibility
     whiteSpace*: CSSWhiteSpace
@@ -383,6 +384,7 @@ type
     integer*: int32
     length*: CSSLength
     number*: float32
+    verticalAlign*: CSSVerticalAlign
 
   CSSValue* = ref object
     case v*: CSSValueType
@@ -390,10 +392,6 @@ type
       content*: seq[CSSContent]
     of cvtQuotes:
       quotes*: CSSQuotes
-    of cvtTextDecoration:
-      textDecoration*: set[CSSTextDecoration]
-    of cvtVerticalAlign:
-      verticalAlign*: CSSVerticalAlign
     of cvtLength2:
       length2*: CSSLength2
     of cvtCounterReset:
@@ -443,6 +441,7 @@ const ValueTypes = [
   cptOverflowY: cvtOverflow,
   cptPosition: cvtPosition,
   cptTextAlign: cvtTextAlign,
+  cptTextDecoration: cvtTextDecoration,
   cptTextTransform: cvtTextTransform,
   cptVisibility: cvtVisibility,
   cptWhiteSpace: cvtWhiteSpace,
@@ -474,6 +473,7 @@ const ValueTypes = [
   cptPaddingTop: cvtLength,
   cptRight: cvtLength,
   cptTop: cvtLength,
+  cptVerticalAlign: cvtVerticalAlign,
   cptWidth: cvtLength,
   cptZIndex: cvtInteger,
 
@@ -483,8 +483,6 @@ const ValueTypes = [
   cptContent: cvtContent,
   cptCounterReset: cvtCounterReset,
   cptQuotes: cvtQuotes,
-  cptTextDecoration: cvtTextDecoration,
-  cptVerticalAlign: cvtVerticalAlign,
 ]
 
 const InheritedProperties = {
@@ -550,8 +548,6 @@ func `$`(counterreset: seq[CSSCounterReset]): string =
 func serialize(val: CSSValue): string =
   case val.v
   of cvtImage: return $val.image
-  of cvtTextDecoration: return $val.textDecoration
-  of cvtVerticalAlign: return $val.verticalAlign
   of cvtLength2: return $val.length2.a & " " & $val.length2.b
   of cvtContent:
     var s = ""
@@ -570,29 +566,31 @@ func serialize(val: CSSValueWord; t: CSSValueType): string =
   of cvtInteger: return $val.integer
   of cvtLength: return $val.length
   of cvtNumber: return $val.number
+  of cvtVerticalAlign: return $val.verticalAlign
   else: assert false
 
 func serialize(val: CSSValueBit; t: CSSValueType): string =
   case t
-  of cvtDisplay: return $val.display
-  of cvtFontStyle: return $val.fontStyle
-  of cvtWhiteSpace: return $val.whiteSpace
-  of cvtWordBreak: return $val.wordBreak
-  of cvtListStyleType: return $val.listStyleType
-  of cvtTextAlign: return $val.textAlign
-  of cvtListStylePosition: return $val.listStylePosition
-  of cvtPosition: return $val.position
-  of cvtCaptionSide: return $val.captionSide
+  of cvtBgcolorIsCanvas: return $val.bgcolorIsCanvas
   of cvtBorderCollapse: return $val.borderCollapse
-  of cvtFloat: return $val.float
-  of cvtVisibility: return $val.visibility
   of cvtBoxSizing: return $val.boxSizing
+  of cvtCaptionSide: return $val.captionSide
   of cvtClear: return $val.clear
-  of cvtTextTransform: return $val.textTransform
-  of cvtBgcolorIsCanvas: return $val.bgcolorIsCanvas
+  of cvtDisplay: return $val.display
   of cvtFlexDirection: return $val.flexDirection
   of cvtFlexWrap: return $val.flexWrap
+  of cvtFloat: return $val.float
+  of cvtFontStyle: return $val.fontStyle
+  of cvtListStylePosition: return $val.listStylePosition
+  of cvtListStyleType: return $val.listStyleType
   of cvtOverflow: return $val.overflow
+  of cvtPosition: return $val.position
+  of cvtTextAlign: return $val.textAlign
+  of cvtTextDecoration: return $val.textDecoration
+  of cvtTextTransform: return $val.textTransform
+  of cvtVisibility: return $val.visibility
+  of cvtWhiteSpace: return $val.whiteSpace
+  of cvtWordBreak: return $val.wordBreak
   else: assert false
 
 func serialize*(computed: CSSValues; p: CSSPropertyType): string =
@@ -1276,7 +1274,7 @@ proc parseValue(cvals: openArray[CSSComponentValue];
   template set_word(prop, val: untyped) =
     entry.word = CSSValueWord(prop: val)
   template set_bit(prop, val: untyped) =
-    entry.bit = uint8(val)
+    entry.bit = cast[uint8](val)
   case v
   of cvtDisplay: set_bit display, ?parseIdent[CSSDisplay](cval)
   of cvtWhiteSpace: set_bit whiteSpace, ?parseIdent[CSSWhiteSpace](cval)
@@ -1304,8 +1302,8 @@ proc parseValue(cvals: openArray[CSSComponentValue];
     of cptChaRowspan: set_word integer, ?parseInteger(cval, 0i32 .. 65534i32)
     of cptZIndex: set_word integer, ?parseInteger(cval, -65534i32 .. 65534i32)
     else: assert false
-  of cvtTextDecoration: set_new textdecoration, ?cssTextDecoration(cvals)
-  of cvtVerticalAlign: set_new verticalAlign, ?cssVerticalAlign(cval, attrs)
+  of cvtTextDecoration: set_bit textDecoration, ?cssTextDecoration(cvals)
+  of cvtVerticalAlign: set_word verticalAlign, ?cssVerticalAlign(cval, attrs)
   of cvtTextAlign: set_bit textAlign, ?parseIdent[CSSTextAlign](cval)
   of cvtListStylePosition:
     set_bit listStylePosition, ?parseIdent[CSSListStylePosition](cval)