summaryrefslogtreecommitdiff
path: root/document/annot.go
diff options
context:
space:
mode:
Diffstat (limited to 'document/annot.go')
-rw-r--r--document/annot.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/document/annot.go b/document/annot.go
new file mode 100644
index 0000000..e280cd0
--- /dev/null
+++ b/document/annot.go
@@ -0,0 +1,76 @@
+package document
+
+import (
+ "github.com/scrotadamus/ghligh/go-poppler"
+)
+
+type AnnotJSON struct {
+ Type poppler.AnnotType `json:"type,omitempty"`
+ Index int `json:"index,omitempty"`
+ Date string `json:"date,omitempty"`
+ Rect poppler.Rectangle `json:"rect,omitempty"`
+ Color poppler.Color `json:"color,omitempty"`
+ Name string `json:"name,omitempty"`
+ Contents string `json:"contents,omitempty"`
+ Flags poppler.AnnotFlag `json:"flags,omitempty"`
+ Quads []poppler.Quad `json:"quads,omitempty"`
+}
+
+func annotToJson(a poppler.Annot) (AnnotJSON) {
+ var aj AnnotJSON
+ aj.Type = a.Type()
+ aj.Index = a.Index()
+ aj.Date = a.Date()
+ aj.Rect = a.Rect()
+ aj.Color = a.Color()
+ aj.Name = a.Name()
+ aj.Contents = a.Contents()
+ aj.Flags = a.Flags()
+ aj.Quads = a.Quads()
+
+ return aj
+}
+
+func (d *GhlighDoc) jsonToAnnot(aJson AnnotJSON) *poppler.Annot {
+
+ annot, _ := d.doc.NewAnnot(poppler.AnnotHighlight, aJson.Rect, aJson.Quads)
+
+ annot.SetColor(aJson.Color)
+ annot.SetContents(aJson.Contents)
+ annot.SetFlags(aJson.Flags)
+
+ return &annot
+}
+
+func popplerAnnotsMatch(a *poppler.Annot, b *poppler.Annot) bool {
+ aRect := a.Rect()
+ bRect := b.Rect()
+
+ aQuads := a.Quads()
+ bQuads := b.Quads()
+
+ if aRect.X1 != bRect.X1 ||
+ aRect.Y1 != bRect.Y1 ||
+ aRect.X2 != bRect.X2 ||
+ aRect.Y2 != bRect.Y2 {
+ return false
+ }
+
+ if len(aQuads) != len(bQuads) {
+ return false
+ }
+
+ for i := range aQuads {
+ q1 := aQuads[i]
+ q2 := bQuads[i]
+
+ if q1.P1.X != q2.P1.X || q1.P1.Y != q2.P1.Y ||
+ q1.P2.X != q2.P2.X || q1.P2.Y != q2.P2.Y ||
+ q1.P3.X != q2.P3.X || q1.P3.Y != q2.P3.Y ||
+ q1.P4.X != q2.P4.X || q1.P4.Y != q2.P4.Y {
+ return false
+ }
+ }
+
+ return true
+}