package exhibit import ( "image" ) type Block struct { Rect image.Rectangle Cells map[image.Point]Cell } func NewBlock(originx, originy, sizex, sizey int) Block { b := Block{} b.Rect = image.Rect(originx, originy, originx+sizex, originy+sizey) b.Cells = make(map[image.Point]Cell) return b } func (b Block) Size() image.Point { return b.Rect.Size() } func (b *Block) SetSize(p image.Point) { dx := b.Rect.Min.X dy := b.Rect.Min.Y b.Rect.Max.X = p.X + dx b.Rect.Max.Y = p.Y + dy } func (b Block) Origin() image.Point { return b.Rect.Min } func (b *Block) SetOrigin(p image.Point) { d := p.Sub(b.Rect.Min) b.Rect = b.Rect.Add(d) }