50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
|
/*package hrend
|
||
|
|
||
|
import (
|
||
|
"image"
|
||
|
)
|
||
|
|
||
|
// Color is in RGB (alpha not used right now)
|
||
|
type ImageFramebuffer struct {
|
||
|
Data image.Image
|
||
|
Width uint
|
||
|
Height uint
|
||
|
}
|
||
|
|
||
|
// Sure hope this gets inlined...
|
||
|
func (fb *ImageFramebuffer) Set(x uint, y uint, r byte, g byte, b byte) {
|
||
|
if x >= fb.Width || y >= fb.Height {
|
||
|
return
|
||
|
}
|
||
|
image.New
|
||
|
fb.Data.
|
||
|
fb.Data[(x+y*fb.Width)*3] = r
|
||
|
fb.Data[(x+y*fb.Width)*3+1] = g
|
||
|
fb.Data[(x+y*fb.Width)*3+2] = b
|
||
|
}
|
||
|
|
||
|
func (fb *SimpleFramebuffer) Get(x uint, y uint) (byte, byte, byte) {
|
||
|
if x >= fb.Width || y >= fb.Height {
|
||
|
return 0, 0, 0
|
||
|
}
|
||
|
return fb.Data[(x+y*fb.Width)*3],
|
||
|
fb.Data[(x+y*fb.Width)*3+1],
|
||
|
fb.Data[(x+y*fb.Width)*3+2]
|
||
|
}
|
||
|
|
||
|
func (fb *SimpleFramebuffer) GetUv(u float32, v float32) (byte, byte, byte) {
|
||
|
x := uint(float32(fb.Width)*u) & (fb.Width - 1)
|
||
|
y := uint(float32(fb.Height)*(1-v)) & (fb.Height - 1)
|
||
|
return fb.Data[(x+y*fb.Width)*3],
|
||
|
fb.Data[(x+y*fb.Width)*3+1],
|
||
|
fb.Data[(x+y*fb.Width)*3+2]
|
||
|
}
|
||
|
|
||
|
func NewSimpleFramebuffer(width uint, height uint) *SimpleFramebuffer {
|
||
|
return &SimpleFramebuffer{
|
||
|
Data: make([]byte, width*height*3),
|
||
|
Width: width,
|
||
|
Height: height,
|
||
|
}
|
||
|
}*/
|