44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
// Copyright ©2017 The Gonum Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package plotter
|
|
|
|
import (
|
|
"image/color"
|
|
|
|
"gonum.org/v1/plot"
|
|
"gonum.org/v1/plot/palette"
|
|
"gonum.org/v1/plot/vg"
|
|
"gonum.org/v1/plot/vg/draw"
|
|
)
|
|
|
|
// PaletteThumbnailers creates a slice of plot.Thumbnailers that can be used to
|
|
// add legend entries for the colors in a color palette.
|
|
func PaletteThumbnailers(p palette.Palette) []plot.Thumbnailer {
|
|
colors := p.Colors()
|
|
thumbnailers := make([]plot.Thumbnailer, len(colors))
|
|
for i, c := range colors {
|
|
thumbnailers[i] = paletteThumbnailer{color: c}
|
|
}
|
|
return thumbnailers
|
|
}
|
|
|
|
// paletteThumbnailer implements the Thumbnailer interface
|
|
// for color palettes.
|
|
type paletteThumbnailer struct {
|
|
color color.Color
|
|
}
|
|
|
|
// Thumbnail satisfies the plot.Thumbnailer interface.
|
|
func (t paletteThumbnailer) Thumbnail(c *draw.Canvas) {
|
|
pts := []vg.Point{
|
|
{X: c.Min.X, Y: c.Min.Y},
|
|
{X: c.Min.X, Y: c.Max.Y},
|
|
{X: c.Max.X, Y: c.Max.Y},
|
|
{X: c.Max.X, Y: c.Min.Y},
|
|
}
|
|
poly := c.ClipPolygonY(pts)
|
|
c.FillPolygon(t.color, poly)
|
|
}
|