1
0
mirror of https://github.com/zellyn/go6502.git synced 2024-06-24 15:29:40 +00:00
go6502/visual/bitmap.go
2018-09-03 17:55:34 -04:00

33 lines
574 B
Go

package visual
type bitmap []uint64
const BITMAP_SHIFT = 6
const BITMAP_MASK = 63
func wordsForBits(bits uint) uint {
return bits/64 + 1
}
func newBitmap(bits uint) bitmap {
return make([]uint64, wordsForBits(bits))
}
func (b bitmap) clear() {
for i := range b {
b[i] = 0
}
}
func (b bitmap) set(index uint, state bool) {
if state {
b[index>>BITMAP_SHIFT] |= 1 << (index & BITMAP_MASK)
} else {
b[index>>BITMAP_SHIFT] &^= 1 << (index & BITMAP_MASK)
}
}
func (b bitmap) get(index uint) bool {
return (b[index>>BITMAP_SHIFT]>>(index&BITMAP_MASK))&1 > 0
}