about summary refs log tree commit diff stats
path: root/src/layout/box.nim
blob: d31f0e1d3e5d5f96e56b8db43f594cc2971407e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import types/enums
import css/values
import html/dom

type
  CSSRect* = object
    x1*: int
    y1*: int
    x2*: int
    y2*: int

  CSSBox* = ref CSSBoxObj
  CSSBoxObj = object of RootObj
    x*: int
    y*: int
    width*: int
    height*: int
    children*: seq[CSSBox]
    context*: Context
    bcontext*: BlockContext
    cssvalues*: CSSComputedValues

  Context* = ref object
    context*: FormatContextType
    fromx*: int
    fromy*: int
    marginx*: int
    marginy*: int
    conty*: bool
    whitespace*: bool
    ws_initial*: bool

  InlineContext* = object
    cssvalues*: CSSComputedValues

  BlockContext* = ref object
    context*: FormatContextType
    marginx*: int
    marginy*: int
    nodes*: seq[Node]

  CSSRowBox* = object
    x*: int
    y*: int
    width*: int
    height*: int
    color*: CSSColor
    fontstyle*: CSSFontStyle
    fontweight*: int
    textdecoration*: CSSTextDecoration
    str*: string
    nodes*: seq[Node]

  CSSInlineBox* = ref CSSInlineBoxObj
  CSSInlineBoxObj = object of CSSBox
    content*: seq[CSSRowBox]

  CSSBlockBox* = ref CSSBlockBoxObj
  CSSBlockBoxObj = object of CSSBox
    tag*: string

  FormatContextType* = enum
    CONTEXT_BLOCK, CONTEXT_INLINE