func Measure(ctx context.Context, opts Options) Measured {
	if opts.Vertical {
		return measureVertical(ctx, opts)
	}
	return measureHorizontal(ctx, opts)
}
Measure measures the axis sizes, and returns some state that can be used
to draw on to some canvas.
package axis
import (
	"context"
	"image"
	"github.com/vivint/rothko/draw"
	"golang.org/x/image/font"
	"golang.org/x/image/math/fixed"
)
const (
	tickSize          = 10  
	axisWidth         = 1   
	tickPadding       = 2   
	horizLabelSpacing = 10  
	vertLabelSpacing  = 2   
	textOffset = axisWidth + tickSize + tickPadding  
)
type Measured struct {
	Width int
	Height int
	opts      Options
	bounds    []fixed.Rectangle26_6  
	maxHeight int                    
}
func copyLabels(labels []Label) (out []Label) {
	return append(out, labels...)
}
type Label struct {
	Position float64
	Text string
}
type Options struct {
	Face font.Face
	Labels []Label
	Vertical bool
	Length int
	Flip bool
	DontBleed bool
}
func (o Options) copy() Options {
	o.Labels = copyLabels(o.Labels)
	return o
}
func Draw(ctx context.Context, opts Options) *draw.RGB {
	return Measure(ctx, opts).Draw(ctx, nil)
}