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