izapple2/screen/videoSource.go

55 lines
1.6 KiB
Go

package screen
import (
"image"
"image/color"
)
// Base Video Modes
const (
VideoBaseMask uint16 = 0x1f
VideoText40 uint16 = 0x01
VideoGR uint16 = 0x02
VideoHGR uint16 = 0x03
VideoText80 uint16 = 0x08
VideoDGR uint16 = 0x09
VideoDHGR uint16 = 0x0a
VideoText40RGB uint16 = 0x10
VideoMono560 uint16 = 0x11
VideoRGBMix uint16 = 0x12
VideoRGB160 uint16 = 0x13
VideoSHR uint16 = 0x14
VideoVidex uint16 = 0x15
)
// Mix text video mdes modifiers
const (
VideoMixTextMask uint16 = 0x0f00
VideoMixText40 uint16 = 0x0100
VideoMixText80 uint16 = 0x0200
VideoMixText40RGB uint16 = 0x0300
)
// Other video mode modifiers
const (
VideoModifiersMask uint16 = 0xf000
VideoSecondPage uint16 = 0x1000
VideoAltText uint16 = 0x2000
)
// VideoSource provides the info to build the video output
type VideoSource interface {
// GetCurrentVideoMode returns the active video mode
GetCurrentVideoMode() uint16
// GetTextMemory returns a slice to the text memory pages
GetTextMemory(secondPage bool, ext bool) []uint8
// GetVideoMemory returns a slice to the video memory pages
GetVideoMemory(secondPage bool, ext bool) []uint8
// GetCharactePixel returns the pixel as output by the character generator
GetCharacterPixel(char uint8, rowInChar int, colInChar int, isAltText bool, isFlashedFrame bool) bool
// GetSuperVideoMemory returns a slice to the SHR video memory
GetSuperVideoMemory() []uint8
// GetCardImage returns an image provided by a card, like the videx card
GetCardImage(light color.Color) *image.RGBA
}