...
1 package aztec
2
3 import (
4 "bytes"
5 "image"
6 "image/color"
7
8 "github.com/boombuler/barcode"
9 "github.com/boombuler/barcode/utils"
10 )
11
12 type aztecCode struct {
13 *utils.BitList
14 size int
15 content []byte
16 }
17
18 func newAztecCode(size int) *aztecCode {
19 return &aztecCode{utils.NewBitList(size * size), size, nil}
20 }
21
22 func (c *aztecCode) Content() string {
23 return string(c.content)
24 }
25
26 func (c *aztecCode) Metadata() barcode.Metadata {
27 return barcode.Metadata{barcode.TypeAztec, 2}
28 }
29
30 func (c *aztecCode) ColorModel() color.Model {
31 return color.Gray16Model
32 }
33
34 func (c *aztecCode) Bounds() image.Rectangle {
35 return image.Rect(0, 0, c.size, c.size)
36 }
37
38 func (c *aztecCode) At(x, y int) color.Color {
39 if c.GetBit(x*c.size + y) {
40 return color.Black
41 }
42 return color.White
43 }
44
45 func (c *aztecCode) set(x, y int) {
46 c.SetBit(x*c.size+y, true)
47 }
48
49 func (c *aztecCode) string() string {
50 buf := new(bytes.Buffer)
51 for y := 0; y < c.size; y++ {
52 for x := 0; x < c.size; x++ {
53 if c.GetBit(x*c.size + y) {
54 buf.WriteString("X ")
55 } else {
56 buf.WriteString(" ")
57 }
58 }
59 buf.WriteRune('\n')
60 }
61 return buf.String()
62 }
63
View as plain text