diff --git a/element/main.go b/element/main.go
index 63c06b0..561897c 100644
--- a/element/main.go
+++ b/element/main.go
@@ -4,2 +3,0 @@ import (
- "fmt"
- "gui/selector"
@@ -8 +5,0 @@ import (
- "strings"
@@ -92,32 +88,0 @@ type Colors struct {
-
-func (n *Node) QuerySelectorAll(selectString string) []Node {
- results := []Node{}
- fmt.Println(n.Id, TestSelector(selectString, n))
- if TestSelector(selectString, n) {
- results = append(results, *n)
- }
-
- for _, v := range n.Children {
- cr := v.QuerySelectorAll(selectString)
- if len(cr) > 0 {
- results = append(results, cr...)
- }
- }
- return results
-}
-
-func TestSelector(selectString string, n *Node) bool {
- parts := strings.Split(selectString, ">")
-
- selectors := selector.GetCSSSelectors(n.Node, []string{})
-
- part := selector.SplitSelector(strings.TrimSpace(parts[len(parts)-1]))
-
- has := selector.Contains(part, selectors)
-
- if len(parts) == 1 || !has {
- return has
- } else {
- return TestSelector(strings.Join(parts[0:len(parts)-1], ">"), n.Parent)
- }
-}
package element
import (
"fmt"
"gui/selector"
"image"
ic "image/color"
"strings"
"golang.org/x/image/font"
"golang.org/x/net/html"
)
type Node struct {
Node *html.Node
Parent *Node
Children []Node
Styles map[string]string
Id string
X float32
Y float32
Width float32
Height float32
Margin Margin
Padding Padding
Border Border
EM float32
Text Text
Colors Colors
PrevSibling *Node
NextSibling *Node
}
type Margin struct {
Top float32
Right float32
Bottom float32
Left float32
}
type Padding struct {
Top float32
Right float32
Bottom float32
Left float32
}
type Border struct {
Width string
Style string
Color ic.RGBA
Radius string
}
type Text struct {
Text string
Font font.Face
Color ic.RGBA
Image *image.RGBA
Underlined bool
Overlined bool
LineThrough bool
DecorationColor ic.RGBA
DecorationThickness int
Align string
Indent int // very low priority
LetterSpacing int
LineHeight int
WordSpacing int
WhiteSpace string
Shadows []Shadow // need
Width int
WordBreak string
EM int
X int
}
type Shadow struct {
X int
Y int
Blur int
Color ic.RGBA
}
// Color represents an RGBA color
type Colors struct {
Background ic.RGBA
Font ic.RGBA
TextDecoration ic.RGBA
}
func (n *Node) QuerySelectorAll(selectString string) []Node {
results := []Node{}
fmt.Println(n.Id, TestSelector(selectString, n))
if TestSelector(selectString, n) {
results = append(results, *n)
}
for _, v := range n.Children {
cr := v.QuerySelectorAll(selectString)
if len(cr) > 0 {
results = append(results, cr...)
}
}
return results
}
func TestSelector(selectString string, n *Node) bool {
parts := strings.Split(selectString, ">")
selectors := selector.GetCSSSelectors(n.Node, []string{})
part := selector.SplitSelector(strings.TrimSpace(parts[len(parts)-1]))
has := selector.Contains(part, selectors)
if len(parts) == 1 || !has {
return has
} else {
return TestSelector(strings.Join(parts[0:len(parts)-1], ">"), n.Parent)
}
}