MCPcopy
hub / github.com/skip2/go-qrcode / addData

Method addData

regular_symbol.go:244–315  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

242)
243
244func (m *regularSymbol) addData() (bool, error) {
245 xOffset := 1
246 dir := up
247
248 x := m.size - 2
249 y := m.size - 1
250
251 for i := 0; i < m.data.Len(); i++ {
252 var mask bool
253 switch m.mask {
254 case 0:
255 mask = (y+x+xOffset)%2 == 0
256 case 1:
257 mask = y%2 == 0
258 case 2:
259 mask = (x+xOffset)%3 == 0
260 case 3:
261 mask = (y+x+xOffset)%3 == 0
262 case 4:
263 mask = (y/2+(x+xOffset)/3)%2 == 0
264 case 5:
265 mask = (y*(x+xOffset))%2+(y*(x+xOffset))%3 == 0
266 case 6:
267 mask = ((y*(x+xOffset))%2+((y*(x+xOffset))%3))%2 == 0
268 case 7:
269 mask = ((y+x+xOffset)%2+((y*(x+xOffset))%3))%2 == 0
270 }
271
272 // != is equivalent to XOR.
273 m.symbol.set(x+xOffset, y, mask != m.data.At(i))
274
275 if i == m.data.Len()-1 {
276 break
277 }
278
279 // Find next free bit in the symbol.
280 for {
281 if xOffset == 1 {
282 xOffset = 0
283 } else {
284 xOffset = 1
285
286 if dir == up {
287 if y > 0 {
288 y--
289 } else {
290 dir = down
291 x -= 2
292 }
293 } else {
294 if y < m.size-1 {
295 y++
296 } else {
297 dir = up
298 x -= 2
299 }
300 }
301 }

Callers 1

buildRegularSymbolFunction · 0.95

Calls 4

LenMethod · 0.80
setMethod · 0.80
AtMethod · 0.80
emptyMethod · 0.80

Tested by

no test coverage detected