git.sr.ht/~pingoo/stdx@v0.0.0-20240218134121-094174641f6e/barcode/utils/base1dcode.go (about) 1 // Package utils contain some utilities which are needed to create barcodes 2 package utils 3 4 import ( 5 "image" 6 "image/color" 7 8 "git.sr.ht/~pingoo/stdx/barcode" 9 ) 10 11 type base1DCode struct { 12 *BitList 13 kind string 14 content string 15 } 16 17 type base1DCodeIntCS struct { 18 base1DCode 19 checksum int 20 } 21 22 func (c *base1DCode) Content() string { 23 return c.content 24 } 25 26 func (c *base1DCode) Metadata() barcode.Metadata { 27 return barcode.Metadata{c.kind, 1} 28 } 29 30 func (c *base1DCode) ColorModel() color.Model { 31 return color.Gray16Model 32 } 33 34 func (c *base1DCode) Bounds() image.Rectangle { 35 return image.Rect(0, 0, c.Len(), 1) 36 } 37 38 func (c *base1DCode) At(x, y int) color.Color { 39 if c.GetBit(x) { 40 return color.Black 41 } 42 return color.White 43 } 44 45 func (c *base1DCodeIntCS) CheckSum() int { 46 return c.checksum 47 } 48 49 // New1DCodeIntCheckSum creates a new 1D barcode where the bars are represented by the bits in the bars BitList 50 func New1DCodeIntCheckSum(codeKind, content string, bars *BitList, checksum int) barcode.BarcodeIntCS { 51 return &base1DCodeIntCS{base1DCode{bars, codeKind, content}, checksum} 52 } 53 54 // New1DCode creates a new 1D barcode where the bars are represented by the bits in the bars BitList 55 func New1DCode(codeKind, content string, bars *BitList) barcode.Barcode { 56 return &base1DCode{bars, codeKind, content} 57 }