color tests etc.
This commit is contained in:
parent
d9b5269579
commit
10950a3bf2
4 changed files with 76 additions and 4 deletions
|
@ -483,3 +483,24 @@ func TestChartCheckRangesWithRanges(t *testing.T) {
|
|||
xr, yr, yra := c.getRanges()
|
||||
assert.Nil(c.checkRanges(xr, yr, yra))
|
||||
}
|
||||
|
||||
func TestChartE2ELine(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
c := Chart{
|
||||
Series: []Series{
|
||||
ContinuousSeries{
|
||||
XValues: Sequence.Float64(0, 4, 1),
|
||||
YValues: Sequence.Float64(0, 4, 1),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
var buffer = &bytes.Buffer{}
|
||||
err := c.Render(PNG, buffer)
|
||||
assert.Nil(err)
|
||||
|
||||
// do color tests ...
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -46,12 +46,20 @@ func ColorFromHex(hex string) Color {
|
|||
return c
|
||||
}
|
||||
|
||||
// ColorFromAlphaMixedRGBA returns the system alpha mixed rgba values.
|
||||
func ColorFromAlphaMixedRGBA(r, g, b, a uint32) Color {
|
||||
fa := float64(a) / 255.0
|
||||
var c Color
|
||||
c.R = uint8(float64(r) / fa)
|
||||
c.G = uint8(float64(g) / fa)
|
||||
c.B = uint8(float64(b) / fa)
|
||||
c.A = uint8(a | (a >> 8))
|
||||
return c
|
||||
}
|
||||
|
||||
// Color is our internal color type because color.Color is bullshit.
|
||||
type Color struct {
|
||||
R uint8
|
||||
G uint8
|
||||
B uint8
|
||||
A uint8
|
||||
R, G, B, A uint8
|
||||
}
|
||||
|
||||
// RGBA returns the color as a pre-alpha mixed color set.
|
||||
|
@ -88,6 +96,14 @@ func (c Color) WithAlpha(a uint8) Color {
|
|||
}
|
||||
}
|
||||
|
||||
// Equals returns true if the color equals another.
|
||||
func (c Color) Equals(other Color) bool {
|
||||
return c.R == other.R &&
|
||||
c.G == other.G &&
|
||||
c.B == other.B &&
|
||||
c.A == other.A
|
||||
}
|
||||
|
||||
// String returns a css string representation of the color.
|
||||
func (c Color) String() string {
|
||||
fa := float64(c.A) / float64(255)
|
||||
|
|
|
@ -3,6 +3,8 @@ package drawing
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"image/color"
|
||||
|
||||
"github.com/blendlabs/go-assert"
|
||||
)
|
||||
|
||||
|
@ -39,3 +41,13 @@ func TestColorFromHex(t *testing.T) {
|
|||
shortBlue := ColorFromHex("00F")
|
||||
assert.Equal(ColorBlue, shortBlue)
|
||||
}
|
||||
|
||||
func TestColorFromAlphaMixedRGBA(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
black := ColorFromAlphaMixedRGBA(color.Black.RGBA())
|
||||
assert.True(black.Equals(ColorBlack), black.String())
|
||||
|
||||
white := ColorFromAlphaMixedRGBA(color.White.RGBA())
|
||||
assert.True(white.Equals(ColorWhite), white.String())
|
||||
}
|
||||
|
|
23
drawing/image.go
Normal file
23
drawing/image.go
Normal file
|
@ -0,0 +1,23 @@
|
|||
package drawing
|
||||
|
||||
import "image"
|
||||
|
||||
// Image is a helper wraper that allows (sane) access to pixel info.
|
||||
type Image struct {
|
||||
Inner *image.RGBA
|
||||
}
|
||||
|
||||
// Width returns the image's width in pixels.
|
||||
func (i Image) Width() int {
|
||||
return i.Inner.Rect.Size().X
|
||||
}
|
||||
|
||||
// Height returns the image's height in pixels.
|
||||
func (i Image) Height() int {
|
||||
return i.Inner.Rect.Size().Y
|
||||
}
|
||||
|
||||
// At returns a pixel color at a given x/y.
|
||||
func (i Image) At(x, y int) Color {
|
||||
return ColorFromAlphaMixedRGBA(i.Inner.At(x, y).RGBA())
|
||||
}
|
Loading…
Reference in a new issue