mirror of
https://github.com/taigrr/gopher-os
synced 2025-01-18 04:43:13 -08:00
89 lines
2.5 KiB
Go
89 lines
2.5 KiB
Go
package console
|
|
|
|
import (
|
|
"gopheros/device/video/console/font"
|
|
"gopheros/device/video/console/logo"
|
|
"gopheros/kernel/cpu"
|
|
"gopheros/kernel/hal/multiboot"
|
|
"gopheros/kernel/mem/vmm"
|
|
"image/color"
|
|
)
|
|
|
|
var (
|
|
mapRegionFn = vmm.MapRegion
|
|
portWriteByteFn = cpu.PortWriteByte
|
|
getFramebufferInfoFn = multiboot.GetFramebufferInfo
|
|
)
|
|
|
|
// ScrollDir defines a scroll direction.
|
|
type ScrollDir uint8
|
|
|
|
// The supported list of scroll directions for the console Scroll() calls.
|
|
const (
|
|
ScrollDirUp ScrollDir = iota
|
|
ScrollDirDown
|
|
)
|
|
|
|
// Dimension defines the types of dimensions that can be queried off a device.
|
|
type Dimension uint8
|
|
|
|
const (
|
|
// Characters describes the number of characters in
|
|
// the console depending on the currently active
|
|
// font.
|
|
Characters Dimension = iota
|
|
|
|
// Pixels describes the number of pixels in the console framebuffer.
|
|
Pixels
|
|
)
|
|
|
|
// The Device interface is implemented by objects that can function as system
|
|
// consoles.
|
|
type Device interface {
|
|
// Pixel returns the width and height of the console
|
|
// using a particual dimension.
|
|
Dimensions(Dimension) (uint32, uint32)
|
|
|
|
// DefaultColors returns the default foreground and background colors
|
|
// used by this console.
|
|
DefaultColors() (fg, bg uint8)
|
|
|
|
// Fill sets the contents of the specified rectangular region to the
|
|
// requested color. Both x and y coordinates are 1-based (top-left
|
|
// corner has coordinates 1,1).
|
|
Fill(x, y, width, height uint32, fg, bg uint8)
|
|
|
|
// Scroll the console contents to the specified direction. The caller
|
|
// is responsible for updating (e.g. clear or replace) the contents of
|
|
// the region that was scrolled.
|
|
Scroll(dir ScrollDir, lines uint32)
|
|
|
|
// Write a char to the specified location. Both x and y coordinates are
|
|
// 1-based (top-left corner has coordinates 1,1).
|
|
Write(ch byte, fg, bg uint8, x, y uint32)
|
|
|
|
// Palette returns the active color palette for this console.
|
|
Palette() color.Palette
|
|
|
|
// SetPaletteColor updates the color definition for the specified
|
|
// palette index. Passing a color index greated than the number of
|
|
// supported colors should be a no-op.
|
|
SetPaletteColor(uint8, color.RGBA)
|
|
}
|
|
|
|
// FontSetter is an interface implemented by console devices that
|
|
// support loadable bitmap fonts.
|
|
//
|
|
// SetFont selects a bitmap font to be used by the console.
|
|
type FontSetter interface {
|
|
SetFont(*font.Font)
|
|
}
|
|
|
|
// LogoSetter is an interface implemented by console devices that
|
|
// support drawing of logo images.
|
|
//
|
|
// SetLogo selects the logo to be drawn by the console.
|
|
type LogoSetter interface {
|
|
SetLogo(*logo.Image)
|
|
}
|