Types
CSSBorderCollapse = enum BorderCollapseSeparate = "separate", BorderCollapseCollapse = "collapse"
CSSBorderStyle = enum BorderStyleNone = "none", BorderStyleHidden = "hidden", BorderStyleDotted = "dotted", BorderStyleDashed = "dashed", BorderStyleSolid = "solid", BorderStyleDouble = "double", BorderStyleGroove = "groove", BorderStyleRidge = "ridge", BorderStyleInset = "inset", BorderStyleOutset = "outset", BorderStyleBracket = "-cha-bracket", BorderStyleParen = "-cha-paren", BorderStyleHash = "-cha-hash", BorderStylePeriod = "-cha-period"
CSSBoxSizing = enum BoxSizingContentBox = "content-box", BoxSizingBorderBox = "border-box"
CSSCaptionSide = enum CaptionSideTop = "top", CaptionSideBottom = "bottom", CaptionSideBlockStart = "block-start", CaptionSideBlockEnd = "block-end"
CSSClear = enum ClearNone = "none", ClearLeft = "left", ClearRight = "right", ClearBoth = "both", ClearInlineStart = "inline-start", ClearInlineEnd = "inline-end"
CSSComputedEntry = object p*: CSSWidePropertyType case et*: CSSEntryType of ceBit: bit*: uint8 of ceHWord: hword*: CSSValueHWord of ceWord: word*: CSSValueWord of ceObject: obj*: CSSValue of ceVar: cvar*: CSSVarEntry of ceGlobal: global*: CSSGlobalType
CSSContent = object case t*: CSSContentType of ContentString: s*: RefString of ContentCounter: counter*: CAtom counterStyle*: CSSListStyleType else: nil
CSSContentType = enum ContentString = "-cha-string", ContentCounter = "-cha-counter", ContentOpenQuote = "open-quote", ContentCloseQuote = "close-quote", ContentNoOpenQuote = "no-open-quote", ContentNoCloseQuote = "no-close-quote"
CSSCounterSet = object name*: CAtom num*: int32
CSSDisplay = enum DisplayInline = "inline", DisplayNone = "none", DisplayBlock = "block", DisplayListItem = "list-item", DisplayInlineBlock = "inline-block", DisplayTable = "table", DisplayInlineTable = "inline-table", DisplayTableRowGroup = "table-row-group", DisplayTableHeaderGroup = "table-header-group", DisplayTableFooterGroup = "table-footer-group", DisplayTableColumnGroup = "table-column-group", DisplayTableRow = "table-row", DisplayTableColumn = "table-column", DisplayTableCell = "table-cell", DisplayTableCaption = "table-caption", DisplayFlowRoot = "flow-root", DisplayFlex = "flex", DisplayInlineFlex = "inline-flex", DisplayGrid = "grid", DisplayInlineGrid = "inline-grid", DisplayTableWrapper = "", DisplayMarker = "", DisplayImageBlock = "", DisplayImageInline = ""
CSSEntryType = enum ceBit, ceWord, ceHWord, ceObject, ceVar, ceGlobal
CSSFlexDirection = enum FlexDirectionRow = "row", FlexDirectionRowReverse = "row-reverse", FlexDirectionColumn = "column", FlexDirectionColumnReverse = "column-reverse"
CSSFlexWrap = enum FlexWrapNowrap = "nowrap", FlexWrapWrap = "wrap", FlexWrapWrapReverse = "wrap-reverse"
CSSFloat = enum FloatNone = "none", FloatLeft = "left", FloatRight = "right"
CSSFontStyle = enum FontStyleNormal = "normal", FontStyleItalic = "italic", FontStyleOblique = "oblique"
CSSGlobalType = enum cgtInitial = "initial", cgtInherit = "inherit", cgtRevert = "revert", cgtUnset = "unset"
CSSLength = object npx*: float32 perc*: float32
CSSListStylePosition = enum ListStylePositionOutside = "outside", ListStylePositionInside = "inside"
CSSListStyleType = enum ListStyleTypeDisc = "disc", ListStyleTypeNone = "none", ListStyleTypeCircle = "circle", ListStyleTypeSquare = "square", ListStyleTypeDecimal = "decimal", ListStyleTypeDisclosureClosed = "disclosure-closed", ListStyleTypeDisclosureOpen = "disclosure-open", ListStyleTypeCjkEarthlyBranch = "cjk-earthly-branch", ListStyleTypeCjkHeavenlyStem = "cjk-heavenly-stem", ListStyleTypeLowerRoman = "lower-roman", ListStyleTypeUpperRoman = "upper-roman", ListStyleTypeLowerAlpha = "lower-alpha", ListStyleTypeUpperAlpha = "upper-alpha", ListStyleTypeLowerGreek = "lower-greek", ListStyleTypeHiragana = "hiragana", ListStyleTypeHiraganaIroha = "hiragana-iroha", ListStyleTypeKatakana = "katakana", ListStyleTypeKatakanaIroha = "katakana-iroha", ListStyleTypeJapaneseInformal = "japanese-informal", ListStyleTypeJapaneseFormal = "japanese-formal", ListStyleTypeHint = "-cha-hint"
CSSOrigin = enum coUserAgent, coUser, coAuthor
CSSOverflow = enum OverflowVisible = "visible", OverflowHidden = "hidden", OverflowClip = "clip", OverflowScroll = "scroll", OverflowAuto = "auto", OverflowOverlay = "overlay"
CSSPosition = enum PositionStatic = "static", PositionRelative = "relative", PositionAbsolute = "absolute", PositionFixed = "fixed", PositionSticky = "sticky"
CSSPropertyReprType = enum cprtBit, cprtHWord, cprtWord, cprtObject
CSSTextAlign = enum TextAlignStart = "start", TextAlignEnd = "end", TextAlignLeft = "left", TextAlignRight = "right", TextAlignCenter = "center", TextAlignJustify = "justify", TextAlignChaCenter = "-cha-center", TextAlignChaLeft = "-cha-left", TextAlignChaRight = "-cha-right"
CSSTextDecoration = enum TextDecorationNone = "none", TextDecorationUnderline = "underline", TextDecorationOverline = "overline", TextDecorationLineThrough = "line-through", TextDecorationBlink = "blink", TextDecorationReverse = "-cha-reverse"
CSSTextTransform = enum TextTransformNone = "none", TextTransformCapitalize = "capitalize", TextTransformUppercase = "uppercase", TextTransformLowercase = "lowercase", TextTransformFullWidth = "full-width", TextTransformFullSizeKana = "full-size-kana", TextTransformChaHalfWidth = "-cha-half-width"
CSSValue = ref object case v*: CSSValueType of cvtContent: content*: seq[CSSContent] of cvtQuotes: quotes*: CSSQuotes of cvtCounterSet: counterSet*: seq[CSSCounterSet] of cvtImage: image*: NetworkBitmap else: nil
CSSValueBit {.union.} = object dummy*: uint8 bgcolorIsCanvas*: bool borderCollapse*: CSSBorderCollapse borderStyle*: CSSBorderStyle boxSizing*: CSSBoxSizing captionSide*: CSSCaptionSide clear*: CSSClear display*: CSSDisplay flexDirection*: CSSFlexDirection flexWrap*: CSSFlexWrap float*: CSSFloat fontStyle*: CSSFontStyle listStylePosition*: CSSListStylePosition listStyleType*: CSSListStyleType overflow*: CSSOverflow position*: CSSPosition textAlign*: CSSTextAlign textDecoration*: set[CSSTextDecoration] textTransform*: CSSTextTransform verticalAlign*: CSSVerticalAlign visibility*: CSSVisibility whiteSpace*: CSSWhiteSpace wordBreak*: CSSWordBreak
CSSValueHWord {.union.} = object integer*: int32 number*: float32 lineWidth*: float32
CSSValues = ref object pseudo*: PseudoElement invalid*: bool relayout*: bool bits*: array[CSSPropertyType.low .. LastBitPropType, CSSValueBit] hwords*: array[FirstHWordPropType .. LastHWordPropType, CSSValueHWord] words*: array[FirstWordPropType .. LastWordPropType, CSSValueWord] objs*: array[FirstObjPropType .. CSSPropertyType.high, CSSValue] vars*: CSSVariableMap next*: CSSValues
CSSValueType = enum cvtBgcolorIsCanvas = "bgcolorIsCanvas", cvtBorderCollapse = "borderCollapse", cvtBorderStyle = "borderStyle", cvtBoxSizing = "boxSizing", cvtCaptionSide = "captionSide", cvtClear = "clear", cvtColor = "color", cvtContent = "content", cvtCounterSet = "counterSet", cvtDisplay = "display", cvtFlexDirection = "flexDirection", cvtFlexWrap = "flexWrap", cvtFloat = "float", cvtFontStyle = "fontStyle", cvtImage = "image", cvtInteger = "integer", cvtLength = "length", cvtLineWidth = "lineWidth", cvtListStylePosition = "listStylePosition", cvtListStyleType = "listStyleType", cvtNumber = "number", cvtOverflow = "overflow", cvtPosition = "position", cvtQuotes = "quotes", cvtTextAlign = "textAlign", cvtTextDecoration = "textDecoration", cvtTextTransform = "textTransform", cvtVerticalAlign = "verticalAlign", cvtVisibility = "visibility", cvtWhiteSpace = "whiteSpace", cvtWordBreak = "wordBreak", cvtZIndex = "zIndex"
CSSValueWord {.union.} = object dummy*: uint64 color*: CSSColor length*: CSSLength zIndex*: CSSZIndex
CSSVarEntry = ref object resolved*: seq[tuple[vars: CSSVariableMap, entries: seq[CSSComputedEntry]]] items*: seq[CSSVarItem]
CSSVariable = ref object name*: CAtom items*: seq[CSSVarItem]
CSSVariableMap = ref object parent*: CSSVariableMap table*: Table[CAtom, CSSVariable]
CSSVarItem = object name*: CAtom toks*: seq[CSSToken]
CSSVerticalAlign = enum VerticalAlignBaseline = "baseline", VerticalAlignSub = "sub", VerticalAlignSuper = "super", VerticalAlignTextTop = "text-top", VerticalAlignTextBottom = "text-bottom", VerticalAlignMiddle = "middle", VerticalAlignTop = "top", VerticalAlignBottom = "bottom", VerticalAlignLength = "-cha-length"
CSSVisibility = enum VisibilityVisible = "visible", VisibilityHidden = "hidden", VisibilityCollapse = "collapse"
CSSWhiteSpace = enum WhiteSpaceNormal = "normal", WhiteSpaceNowrap = "nowrap", WhiteSpacePre = "pre", WhiteSpacePreLine = "pre-line", WhiteSpacePreWrap = "pre-wrap"
CSSWordBreak = enum WordBreakNormal = "normal", WordBreakBreakAll = "break-all", WordBreakKeepAll = "keep-all"
CSSZIndex = object num*: int32
Consts
BorderStyleInput = {BorderStyleBracket, BorderStyleParen, BorderStyleHash}
BorderStyleNoneHidden = {BorderStyleNone, BorderStyleHidden}
CSSLengthAuto = (npx: nan, perc: nan)
CSSLengthZero = (npx: 0.0, perc: 0.0)
DisplayInlineBlockLike = {DisplayInlineTable, DisplayInlineBlock, DisplayInlineFlex, DisplayInlineGrid, DisplayMarker, DisplayImageInline}
DisplayInnerBlock = {DisplayBlock, DisplayFlowRoot, DisplayTableCaption, DisplayTableCell, DisplayInlineBlock, DisplayListItem, DisplayMarker}
DisplayInnerFlex = {DisplayFlex, DisplayInlineFlex}
DisplayInnerGrid = {DisplayGrid, DisplayInlineGrid}
DisplayInnerTable = {DisplayTable, DisplayInlineTable}
DisplayInternalTable = {DisplayTableRowGroup..DisplayTableCaption}
DisplayNeverHasStack = {DisplayTableRowGroup..DisplayTableColumn, DisplayTableCaption}
DisplayOuterBlock = {DisplayFlex, DisplayGrid, DisplayBlock, DisplayImageBlock, DisplayTable, DisplayFlowRoot, DisplayTableWrapper, DisplayListItem}
DisplayOuterInline = {DisplayInline, DisplayInlineBlock, DisplayInlineTable, DisplayInlineFlex, DisplayInlineGrid, DisplayMarker, DisplayImageInline}
FlexReverse = {FlexDirectionRowReverse, FlexDirectionColumnReverse}
LayoutProperties = {cptMarginLeft, cptMarginRight, cptMarginTop, cptMarginBottom, cptPaddingLeft, cptPaddingRight, cptPaddingTop, cptPaddingBottom, cptBoxSizing, cptBorderLeftStyle, cptBorderRightStyle, cptBorderTopStyle, cptBorderBottomStyle, cptBorderLeftWidth, cptBorderRightWidth, cptBorderTopWidth, cptBorderBottomWidth, cptLeft, cptRight, cptTop, cptBottom, cptWidth, cptHeight, cptFlexShrink, cptFlexGrow, cptFlexBasis, cptOverflowX, cptOverflowY, cptWhiteSpace, cptVerticalAlign, cptTextAlign, cptVerticalAlignLength, cptWordBreak, cptTextTransform, cptFloat, cptClear, cptMinWidth, cptMinHeight, cptMaxWidth, cptMaxHeight, cptChaColspan, cptChaRowspan, cptVisibility, cptBorderCollapse, cptBorderSpacingInline, cptBorderSpacingBlock, cptCaptionSide, cptPosition}
OverflowHiddenLike = {OverflowHidden, OverflowClip}
OverflowScrollLike = {OverflowScroll, OverflowAuto, OverflowOverlay}
PositionAbsoluteFixed = {PositionAbsolute, PositionFixed}
RowGroupBox = {DisplayTableRowGroup, DisplayTableHeaderGroup, DisplayTableFooterGroup}
WhiteSpacePreserve = {WhiteSpacePre, WhiteSpacePreLine, WhiteSpacePreWrap}
Procs
proc `$`(bmp: NetworkBitmap): string {....raises: [], tags: [], forbids: [].}
proc `$`(content: CSSContent): string {....raises: [], tags: [], forbids: [].}
proc bfcify(overflow: CSSOverflow): CSSOverflow {....raises: [], tags: [], forbids: [].}
proc blockify(display: CSSDisplay): CSSDisplay {....raises: [], tags: [], forbids: [].}
proc borderChar(style: CSSBorderStyle; c: BoxDrawingChar): string {....raises: [], tags: [], forbids: [].}
proc copyFrom(a, b: CSSValues; t: CSSPropertyType) {....raises: [], tags: [], forbids: [].}
proc copyProperties(props: CSSValues): CSSValues {....raises: [], tags: [], forbids: [].}
proc equals(a, b: CSSValues; t: CSSPropertyType): bool {....raises: [], tags: [], forbids: [].}
proc getBorderStyle(vals: CSSValues; p: CSSPropertyType): CSSBorderStyle {. ...raises: [], tags: [], forbids: [].}
proc getLength(vals: CSSValues; p: CSSPropertyType): CSSLength {....raises: [], tags: [], forbids: [].}
proc getLineWidth(vals: CSSValues; p: CSSPropertyType): float32 {....raises: [], tags: [], forbids: [].}
proc imgify(display: CSSDisplay): CSSDisplay {....raises: [], tags: [], forbids: [].}
proc inherited(t: CSSPropertyType): bool {....raises: [], tags: [], forbids: [].}
proc inheritProperties(parent: CSSValues): CSSValues {....raises: [], tags: [], forbids: [].}
proc initialOrCopyFrom(a, b: CSSValues; t: CSSPropertyType) {....raises: [], tags: [], forbids: [].}
proc initialOrInheritFrom(a, b: CSSValues; t: CSSPropertyType) {....raises: [], tags: [], forbids: [].}
proc isSupportedProperty(s: string): bool {....raises: [], tags: [], forbids: [].}
proc listMarker(t: CSSListStyleType; i: int32; suffix: bool; hintMap: openArray[uint32]): RefString {....raises: [], tags: [], forbids: [].}
proc makeEntry(t: CSSPropertyType; bit: CSSValueBit): CSSComputedEntry {. ...raises: [], tags: [], forbids: [].}
proc makeEntry(t: CSSPropertyType; color: CSSColor): CSSComputedEntry {. ...raises: [], tags: [], forbids: [].}
proc makeEntry(t: CSSPropertyType; integer: int32): CSSComputedEntry {. ...raises: [], tags: [], forbids: [].}
proc makeEntry(t: CSSPropertyType; length: CSSLength): CSSComputedEntry {. ...raises: [], tags: [], forbids: [].}
proc makeEntry(t: CSSPropertyType; number: float32): CSSComputedEntry {. ...raises: [], tags: [], forbids: [].}
proc makeEntry(t: CSSPropertyType; obj: CSSValue): CSSComputedEntry {. ...raises: [], tags: [], forbids: [].}
proc newCSSVariableMap(parent: CSSVariableMap): CSSVariableMap {....raises: [], tags: [], forbids: [].}
proc parseColor(ctx: var CSSParser): Opt[CSSColor] {....raises: [], tags: [RootEffect], forbids: [].}
proc parseComputedValues(res: var seq[CSSComputedEntry]; p: CSSWidePropertyType; toks: openArray[CSSToken]; attrs: WindowAttributes) {. ...raises: [], tags: [RootEffect], forbids: [].}
proc parseComputedValues0(ctx: var CSSParser; p: CSSWidePropertyType; attrs: WindowAttributes; res: var seq[CSSComputedEntry]): Opt[void] {. ...raises: [], tags: [RootEffect], forbids: [].}
proc parseDeclWithVar(p: CSSWidePropertyType; value: openArray[CSSToken]): Opt[ CSSComputedEntry] {....raises: [], tags: [], forbids: [].}
proc parseDeclWithVar0(toks: openArray[CSSToken]): seq[CSSVarItem] {....raises: [], tags: [], forbids: [].}
proc parseLength(ctx: var CSSParser; attrs: WindowAttributes; hasAuto = true; allowNegative = true): Opt[CSSLength] {....raises: [], tags: [RootEffect], forbids: [].}
proc parseLength(toks: openArray[CSSToken]; attrs: WindowAttributes; hasAuto = true; allowNegative = true): Opt[CSSLength] {. ...raises: [], tags: [RootEffect], forbids: [].}
proc putIfAbsent(map: CSSVariableMap; name: CAtom; cvar: CSSVariable) {. ...raises: [], tags: [], forbids: [].}
proc quoteEnd(level: int): string {....raises: [], tags: [], forbids: [].}
proc quoteStart(level: int): string {....raises: [], tags: [], forbids: [].}
proc reprType(t: CSSPropertyType): CSSPropertyReprType {....raises: [], tags: [], forbids: [].}
proc resolveLength(u: CSSUnit; val: float32; attrs: WindowAttributes): CSSLength {. ...raises: [], tags: [], forbids: [].}
proc rootProperties(): CSSValues {....raises: [], tags: [], forbids: [].}
proc serialize(computed: CSSValues; p: CSSPropertyType): string {....raises: [], tags: [], forbids: [].}
proc setAllInitial(a: CSSValues) {....raises: [], tags: [], forbids: [].}
proc setInitial(a: CSSValues; t: CSSPropertyType) {....raises: [], tags: [], forbids: [].}
proc splitTable(computed: CSSValues): tuple[outer, innner: CSSValues] {. ...raises: [], tags: [], forbids: [].}
proc valueType(prop: CSSPropertyType): CSSValueType {....raises: [], tags: [], forbids: [].}
Templates
template cssLengthFrac(n: float32): CSSLength {..}
template cssLengthPerc(n: float32): CSSLength {..}
template makeEntry[T: enum | set](t: CSSPropertyType; val: T): CSSComputedEntry {..}