package fbdraw

// FrameGenerator generates frames for a screen
type FrameGenerator interface {
	// Init is called once when the screen is added to the carousel
	// width and height are the character dimensions that frames will be requested at
	Init(width, height int) error

	// GenerateFrame is called to render a new frame
	GenerateFrame(grid *CharGrid) error

	// FramesPerSecond returns the desired frame rate
	FramesPerSecond() float64
}

// FramebufferDisplay interface represents the output device
type FramebufferDisplay interface {
	// Write renders a grid to the display
	Write(grid *CharGrid) error

	// Size returns the display dimensions in characters
	Size() (width, height int)

	// PixelSize returns the display dimensions in pixels
	PixelSize() (width, height int)

	// Close cleans up resources
	Close() error
}
