From 17fb6add26291b31f7020e3551a7c8487130a747 Mon Sep 17 00:00:00 2001 From: "F.O." Date: Sun, 16 Feb 2025 17:56:08 +0100 Subject: genesi --- document/annot.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 document/annot.go (limited to 'document/annot.go') 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 +} -- cgit v1.2.3