diff options
Diffstat (limited to 'pkg/line')
-rw-r--r-- | pkg/line/line.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/pkg/line/line.go b/pkg/line/line.go new file mode 100644 index 0000000..d4e3e44 --- /dev/null +++ b/pkg/line/line.go @@ -0,0 +1,57 @@ +package line + +import ( + "image" + "image/png" + "io" + "os" +) + +type Detail struct { + Name string + Avgconf float64 + Img CopyableImg + Text string + OcrName string +} + +type CopyableImg interface { + CopyLineTo(io.Writer) error +} + +type Details []Detail + +func (l Details) Len() int { return len(l) } +func (l Details) Less(i, j int) bool { return l[i].Avgconf < l[j].Avgconf } +func (l Details) Swap(i, j int) { l[i], l[j] = l[j], l[i] } + +// This is an implementation of the CopyableImg interface that +// stores the image directly as an image.Image +type ImgDirect struct { + Img image.Image +} + +func (i ImgDirect) CopyLineTo(w io.Writer) error { + err := png.Encode(w, i.Img) + if err != nil { + return err + } + return nil +} + +// This is an implementation of the CopyableImg interface that +// stores the path of an image +type ImgPath struct { + Path string +} + +func (i ImgPath) CopyLineTo(w io.Writer) error { + f, err := os.Open(i.Path) + if err != nil { + return err + } + defer f.Close() + + _, err = io.Copy(w, f) + return err +} |