gui

package
v0.10.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2021 License: GPL-3.0, GPL-3.0 Imports: 1 Imported by: 0

Documentation

Overview

Package gui is an abstraction layer for real GUI implementations. It defines the Events that can be passed from the GUI to the emulation code and also the Requests that can be made from the emulation code to the GUI. Implementations need to convert their specific signals and requests to and from these abstractions.

Index

Constants

View Source
const (
	UnsupportedGuiFeature = "unsupported gui feature: %v"
)

Sentinal error returned if GUI does no support requested feature.

Variables

This section is empty.

Functions

This section is empty.

Types

type EmulationState added in v0.7.1

type EmulationState int

EmulationState indicates to the GUI that the emulatoin is in a particular state.

Note that these should be set for all application types. The GUI state will start in StateInitialising and a playmode for example, should set StateRunning as soon as the emulation begins (with vcs.Run).

const (
	StateInitialising EmulationState = iota
	StatePaused
	StateRunning
	StateStepping
	StateRewinding
	StateEnding
)

List of valid emulation states.

type FeatureReq

type FeatureReq string

FeatureReq is used to request the setting of a gui attribute eg. toggling the overlay.

const (
	// ReqSetPlaymode is called whenever the playmode loop is entered.
	//
	// first argument is a pointer to the VCS, second argument is an instance
	// of received for gui events.
	ReqSetPlaymode FeatureReq = "ReqSetPlaymode" // *hardware.VCS, chan userinput.Event

	// ReqSetDebugmode is called whenever the playmode loop is entered.
	//
	// first argument is a pointer to the debugger, second argument is an
	// instance of received for gui events.
	ReqSetDebugmode FeatureReq = "ReqSetDebugmode" // *debugger.Debugger, chan userinput.Event

	// notify GUI of emulation state. the GUI should use this to alter how
	// infomration, particularly the display of the PixelRenderer.
	ReqState FeatureReq = "ReqState" // EmulationState

	// whether gui should use vsync or not. not all gui modes have to obey this
	// but for presentation/play modes it's a good idea to have it set.
	ReqVSync FeatureReq = "ReqVSync" // bool

	// whether the gui is visible or not. results in an error if requested in
	// playmode.
	ReqSetVisibility FeatureReq = "ReqSetVisibility" // bool

	// put gui output into full-screen mode (ie. no window border and content
	// the size of the monitor).
	ReqFullScreen FeatureReq = "ReqFullScreen" // bool

	// special request for PlusROM cartridges.
	ReqPlusROMFirstInstallation FeatureReq = "ReqPlusROMFirstInstallation" // PlusROMFirstInstallation

	// controller has changed for one of the ports. the string is a description
	// of the controller.
	ReqControllerChange FeatureReq = "ReqControllerChange" // plugging.PortID, string
)

List of valid feature requests. argument must be of the type specified or else the interface{} type conversion will fail and the application will probably crash.

Note that, like the name suggests, these are requests, they may or may not be satisfied depending other conditions in the GUI.

type FeatureReqData added in v0.7.1

type FeatureReqData interface{}

FeatureReqData represents the information associated with a FeatureReq. See commentary for the defined FeatureReq values for the underlying type.

type GUI

type GUI interface {
	// Send a request to set a GUI feature.
	SetFeature(request FeatureReq, args ...FeatureReqData) error

	// Same as SetFeature() but not waiting for the result. Useful in time
	// critical situations when you are absolutely sure there will be no
	// errors that need handling.
	SetFeatureNoError(request FeatureReq, args ...FeatureReqData)

	// Return current state of GUI feautre.
	GetFeature(request FeatureReq) (FeatureReqData, error)
}

GUI defines the operations that can be performed on visual user interfaces.

type PlusROMFirstInstallation added in v0.7.1

type PlusROMFirstInstallation struct {
	Finish chan error
	Cart   *plusrom.PlusROM
}

PlusROMFirstInstallation is used to pass information to the GUI as part of the request.

type Stub added in v0.7.1

type Stub struct{}

func (Stub) GetFeature added in v0.7.1

func (s Stub) GetFeature(request FeatureReq) (FeatureReqData, error)

GetFeature implements the GUI interface.

func (Stub) SetFeature added in v0.7.1

func (s Stub) SetFeature(request FeatureReq, args ...FeatureReqData) error

SetFeature implements the GUI interface.

func (Stub) SetFeatureNoError added in v0.7.1

func (s Stub) SetFeatureNoError(request FeatureReq, args ...FeatureReqData)

SetFeatureNoError implements the GUI interface.

Directories

Path Synopsis
crt
Package CRT contains non-gui-specific and non-VCS-specific information.
Package CRT contains non-gui-specific and non-VCS-specific information.
shaders
Package shaders (sub-package of the CRT package) contains the GLSL shader code used by Gopher2600 to create a CRT like image.
Package shaders (sub-package of the CRT package) contains the GLSL shader code used by Gopher2600 to create a CRT like image.
Package sdlaudio provides the Audio type.
Package sdlaudio provides the Audio type.
This file is part of Gopher2600.
This file is part of Gopher2600.
fonts
Package fonts embeds a set of FontAwesome glyphs as font data into a byte array.
Package fonts embeds a set of FontAwesome glyphs as font data into a byte array.
lazyvalues
Package lazyvalues is the method used by sdlimgui to read emulator data from the GUI thread.
Package lazyvalues is the method used by sdlimgui to read emulator data from the GUI thread.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL