datamatrixcode.go 983 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package datamatrix
  2. import (
  3. "github.com/boombuler/barcode"
  4. "image"
  5. "image/color"
  6. )
  7. type datamatrixCode struct {
  8. *barcode.BitList
  9. *dmCodeSize
  10. content string
  11. }
  12. func newDataMatrixCode(size *dmCodeSize) *datamatrixCode {
  13. return &datamatrixCode{barcode.NewBitList(size.Rows * size.Columns), size, ""}
  14. }
  15. func (c *datamatrixCode) Content() string {
  16. return c.content
  17. }
  18. func (c *datamatrixCode) Metadata() barcode.Metadata {
  19. return barcode.Metadata{"DataMatrix", 2}
  20. }
  21. func (c *datamatrixCode) ColorModel() color.Model {
  22. return color.Gray16Model
  23. }
  24. func (c *datamatrixCode) Bounds() image.Rectangle {
  25. return image.Rect(0, 0, c.Columns, c.Rows)
  26. }
  27. func (c *datamatrixCode) At(x, y int) color.Color {
  28. if c.get(x, y) {
  29. return color.Black
  30. }
  31. return color.White
  32. }
  33. func (c *datamatrixCode) get(x, y int) bool {
  34. return c.GetBit(x*c.Rows + y)
  35. }
  36. func (c *datamatrixCode) set(x, y int, value bool) {
  37. c.SetBit(x*c.Rows+y, value)
  38. }