Documentation ¶
Overview ¶
Package render provides several types of renderable entities, methods for loading images from file, and methods for drawing those entities to screen.
Index ¶
- Constants
- Variables
- func BatchLoad(baseFolder string) error
- func BoundingRect(points []physics.Vector) (MinX, MinY, MaxX, MaxY float64, w, h int)
- func DrawForTime(r Renderable, l int, t time.Duration)
- func DrawLineOnto(rgba *image.RGBA, x1, y1, x2, y2 int, c color.Color)
- func DrawPolygonDim() (int, int, int, int)
- func FlipX(rgba image.Image) *image.RGBA
- func FlipY(rgba *image.RGBA) *image.RGBA
- func FontColor(s string) image.Image
- func GetSheet(fileName string) [][]*Sprite
- func InDrawPolygon(xi, yi, x2i, y2i int) bool
- func LoadFont(dir string, fontFile string) *truetype.Font
- func PreDraw()
- func ReplaceDraw(r1, r2 Renderable, stackLayer, layer int)
- func ResetDrawStack()
- func SetDrawPolygon(p clip.Polygon)
- func SetDrawStack(as ...Addable)
- func SetFontDefaults(wd, assetPath, fontPath, hinting, color, file string, size, dpi float64)
- func ShinyDraw(buff draw.Image, img image.Image, x, y int)
- func ShinyOverwrite(buff draw.Image, img image.Image, x, y int)
- func ShinySet(buff draw.Image, c color.Color, x, y int)
- func Tween(a image.Image, b image.Image, frames int) []*image.RGBA
- func UndrawAfter(r Renderable, t time.Duration)
- func UpdateDebugMap(rName string, r Renderable)
- type Addable
- type Animation
- func (a *Animation) Copy() Modifiable
- func (a *Animation) Draw(buff draw.Image)
- func (a *Animation) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (a *Animation) GetDims() (int, int)
- func (a *Animation) GetRGBA() *image.RGBA
- func (a *Animation) Modify(ms ...Modification) Modifiable
- func (a *Animation) Pause()
- func (a *Animation) SetTriggerID(id event.CID)
- func (a *Animation) Unpause()
- type Composite
- func (cs *Composite) Add(i int, r Modifiable)
- func (cs *Composite) AddOffset(i int, v physics.Vector)
- func (cs *Composite) AlwaysDirty() bool
- func (cs *Composite) Append(r Modifiable)
- func (cs *Composite) AppendOffset(r Modifiable, v physics.Vector)
- func (cs *Composite) Copy() Modifiable
- func (cs *Composite) Draw(buff draw.Image)
- func (cs *Composite) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (cs *Composite) Get(i int) Modifiable
- func (cs *Composite) GetRGBA() *image.RGBA
- func (cs *Composite) Modify(ms ...Modification) Modifiable
- func (cs *Composite) SetOffsets(vs []physics.Vector)
- func (cs *Composite) String() string
- func (cs *Composite) UnDraw()
- type CompositeR
- func (cs *CompositeR) Add(r Renderable, i int) Renderable
- func (cs *CompositeR) AddOffset(i int, v physics.Vector)
- func (cs *CompositeR) AlwaysDirty() bool
- func (cs *CompositeR) Append(r Renderable)
- func (cs *CompositeR) AppendOffset(r Renderable, v physics.Vector)
- func (cs *CompositeR) Copy() Addable
- func (cs *CompositeR) Draw(buff draw.Image)
- func (cs *CompositeR) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (cs *CompositeR) Get(i int) Renderable
- func (cs *CompositeR) GetRGBA() *image.RGBA
- func (cs *CompositeR) PreDraw()
- func (cs *CompositeR) Replace(r1, r2 Renderable, i int)
- func (cs *CompositeR) SetOffsets(ps []physics.Vector)
- func (cs *CompositeR) String() string
- func (cs *CompositeR) UnDraw()
- type Compound
- func (c *Compound) Add(k string, v Modifiable)
- func (c *Compound) Copy() Modifiable
- func (c *Compound) Draw(buff draw.Image)
- func (c *Compound) DrawOffset(buff draw.Image, xOff float64, yOff float64)
- func (c *Compound) Get() string
- func (c *Compound) GetDims() (int, int)
- func (c *Compound) GetRGBA() *image.RGBA
- func (c *Compound) GetSub(s string) Modifiable
- func (c *Compound) IsInterruptable() bool
- func (c *Compound) IsStatic() bool
- func (c *Compound) Modify(ms ...Modification) Modifiable
- func (c *Compound) Pause()
- func (c *Compound) Revert(mod int)
- func (c *Compound) RevertAll()
- func (c *Compound) Set(k string)
- func (c *Compound) SetOffsets(k string, offsets physics.Vector)
- func (c *Compound) SetPos(x, y float64)
- func (c *Compound) ShiftPos(x, y float64)
- func (c *Compound) ShiftX(x float64)
- func (c *Compound) ShiftY(y float64)
- func (c *Compound) Unpause()
- type DrawFPS
- type DrawStack
- type Font
- type FontGenerator
- type FontManager
- type Layered
- type LayeredPoint
- func (ldp *LayeredPoint) Copy() LayeredPoint
- func (ldp *LayeredPoint) GetDims() (int, int)
- func (ldp *LayeredPoint) GetLayer() int
- func (ldp *LayeredPoint) SetPos(x, y float64)
- func (ldp *LayeredPoint) ShiftX(x float64)
- func (ldp *LayeredPoint) ShiftY(y float64)
- func (ldp *LayeredPoint) String() string
- type LogicFPS
- type Modifiable
- type Modification
- func And(ms ...Modification) Modification
- func ApplyColor(c color.Color) Modification
- func ApplyMask(img image.RGBA) Modification
- func Brighten(brightenBy float32) Modification
- func ColorBalance(r, g, b float32) Modification
- func Cut(newWidth, newHeight int) Modification
- func CutRel(relWidth, relHeight float64) Modification
- func CutRound(xOff, yOff float64) Modification
- func Fade(alpha int) Modification
- func FillMask(img image.RGBA) Modification
- func Rotate(degrees int) Modification
- func Scale(xRatio, yRatio float64) Modification
- type Polygon
- func (pg *Polygon) Contains(x, y float64) (contains bool)
- func (pg *Polygon) ConvexContains(x, y float64) bool
- func (pg *Polygon) Fill(c color.Color)
- func (pg *Polygon) FillInverse(c color.Color)
- func (pg *Polygon) GetOutline(c color.Color) *Composite
- func (pg *Polygon) UpdatePoints(points []physics.Vector)
- func (pg *Polygon) WrappingContains(x, y float64) bool
- type Rect
- type Renderable
- type RenderableHeap
- func (rh *RenderableHeap) Add(r Renderable, layer int) Renderable
- func (rh *RenderableHeap) Copy() Addable
- func (rh *RenderableHeap) Len() int
- func (rh *RenderableHeap) Less(i, j int) bool
- func (rh *RenderableHeap) Pop() interface{}
- func (rh *RenderableHeap) PreDraw()
- func (rh *RenderableHeap) Push(r interface{})
- func (rh *RenderableHeap) Replace(r1, r2 Renderable, layer int)
- func (rh *RenderableHeap) Swap(i, j int)
- type Reverting
- func (rv *Reverting) Copy() Modifiable
- func (rv *Reverting) IsInterruptable() bool
- func (rv *Reverting) IsStatic() bool
- func (rv *Reverting) Modify(ms ...Modification) Modifiable
- func (rv *Reverting) Pause()
- func (rv *Reverting) Revert(n int)
- func (rv *Reverting) RevertAll()
- func (rv *Reverting) RevertAndModify(n int, ms ...Modification) Modifiable
- func (rv *Reverting) Set(k string)
- func (rv *Reverting) Unpause()
- type ScrollBox
- func (s *ScrollBox) AddRenderable(rs ...Renderable)
- func (s *ScrollBox) Draw(buff draw.Image)
- func (s *ScrollBox) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (s *ScrollBox) Pause()
- func (s *ScrollBox) SetReappearPos(x, y float64) error
- func (s *ScrollBox) SetScrollRate(milliPerPixelX, milliPerPixelY int)
- func (s *ScrollBox) Unpause()
- type Sequence
- func (sq *Sequence) Copy() Modifiable
- func (sq *Sequence) Draw(buff draw.Image)
- func (sq *Sequence) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (sq *Sequence) Get(i int) Modifiable
- func (sq *Sequence) GetRGBA() *image.RGBA
- func (sq *Sequence) Modify(ms ...Modification) Modifiable
- func (sq *Sequence) Pause()
- func (sq *Sequence) SetTriggerID(id event.CID)
- func (sq *Sequence) Unpause()
- type Sheet
- type Sprite
- func LoadSprite(fileName string) *Sprite
- func NewCircularGradientBox(w, h int, startColor, endColor color.Color) *Sprite
- func NewColorBox(w, h int, c color.Color) *Sprite
- func NewEmptySprite(x, y float64, w, h int) *Sprite
- func NewGradientBox(w, h int, startColor, endColor color.Color, pFunction progressFunction) *Sprite
- func NewHorizontalGradientBox(w, h int, startColor, endColor color.Color) *Sprite
- func NewLine(x1, y1, x2, y2 float64, c color.Color) *Sprite
- func NewNoiseBox(w, h int) *Sprite
- func NewSeededNoiseBox(w, h int, seed int64) *Sprite
- func NewSprite(x, y float64, r *image.RGBA) *Sprite
- func NewThickLine(x1, y1, x2, y2 float64, c color.Color, thickness int) *Sprite
- func NewVerticalGradientBox(w, h int, startColor, endColor color.Color) *Sprite
- func OverlaySprites(sps []Sprite) *Sprite
- func ParseSubSprite(sheet string, x, y, w, h, pad int) *Sprite
- func (s *Sprite) Copy() Modifiable
- func (s *Sprite) Draw(buff draw.Image)
- func (s *Sprite) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (s *Sprite) GetDims() (int, int)
- func (s *Sprite) GetRGBA() *image.RGBA
- func (s *Sprite) IsNil() bool
- func (s *Sprite) Modify(ms ...Modification) Modifiable
- func (s *Sprite) SetRGBA(r *image.RGBA)
- type Text
- func (t *Text) Center()
- func (t *Text) Draw(buff draw.Image)
- func (t *Text) DrawOffset(buff draw.Image, xOff, yOff float64)
- func (t *Text) SetFont(f *Font)
- func (t *Text) SetInt(i int)
- func (t *Text) SetIntP(i *int)
- func (t *Text) SetString(str string)
- func (t *Text) SetText(str fmt.Stringer)
- func (t *Text) String() string
- func (t *Text) Wrap(charLimit int, vertInc float64) []*Text
Constants ¶
const ( // FpsSmoothing is how much of the fps of the upcoming frame is used // relative to the previous fps total when calculating the fps at a given // frame FpsSmoothing = .25 )
const (
// Undraw is a constant used to undraw elements
Undraw = -1000
)
Variables ¶
var ( //HorizontalProgress is a function to keep track of fractional progress across an object with progress x on width w HorizontalProgress = func(x, y, w, h int) float64 { return float64(x) / float64(w) } //VerticalProgress is a function to keep track of fractional progress across an object with progress y on height h VerticalProgress = func(x, y, w, h int) float64 { return float64(y) / float64(h) } //CircularProgress is a functino to obtain a single progress metric given some distance x, y out from an objects origin with w, h diameters CircularProgress = func(x, y, w, h int) float64 { xRadius := float64(w) / 2 yRadius := float64(h) / 2 dX := math.Abs(float64(x) - xRadius) dY := math.Abs(float64(y) - yRadius) progress := math.Pow(dX/xRadius, 2) + math.Pow(dY/yRadius, 2) if progress > 1 { progress = 1 } return progress } )
Progress functions
var ( // DefFontGenerator is a default font generator of no options DefFontGenerator = FontGenerator{} )
var ( // GlobalDrawStack is the stack that all draw calls are parsed through. GlobalDrawStack = &DrawStack{ as: []Addable{NewHeap(false)}, } )
Functions ¶
func BatchLoad ¶
BatchLoad loads subdirectories from the given base folder and imports all files, using alias rules to automatically determine the size of sprites and sheets in subfolders. A folder named 16x16 will have its images split into sheets where each sprite is 16x16, for example. Same forr 16x8. 16 is a shorter way of writing 16x16. An alias.json file can be included that can indicate what dimensions named folders represent, so a tiles: "32x32" field in the json would indicate that sprite sheets in the /tiles folder should be read as 32x32
func BoundingRect ¶
BoundingRect converts a set of points into their minimum bounding rectangle
func DrawForTime ¶
func DrawForTime(r Renderable, l int, t time.Duration)
DrawForTime is a wrapper for Draw and UndrawAfter
func DrawLineOnto ¶
DrawLineOnto draws a line onto an image rgba from one point to another
func DrawPolygonDim ¶
DrawPolygonDim returns the dimensions of the draw polygon, or all zeroes if there is none.
func FontColor ¶
FontColor converts a small set of strings to colors TODO: Implement a better version or pull in an outside library already doing this as this should be a fairly common utility function
func GetSheet ¶
GetSheet tries to find the given file in the set of loaded sheets. If it fails, it will panic unhelpfully. Todo: fix this If it succeeds, it will return the sheet (a 2d array of sprites)
func InDrawPolygon ¶
InDrawPolygon returns whehter a coordinate and dimension set should be drawn given the draw polygon
func LoadFont ¶
LoadFont loads in a font file and stores it with the given name. This is necessary before using the fonttype for a Font
func PreDraw ¶
func PreDraw()
PreDraw tries to reset the GlobalDrawStack or performs the GlobalDrawStack's predraw functions
func ReplaceDraw ¶
func ReplaceDraw(r1, r2 Renderable, stackLayer, layer int)
ReplaceDraw will undraw r1 and draw r2 after the next draw frame Useful for not working
func ResetDrawStack ¶
func ResetDrawStack()
ResetDrawStack resets the Global stack back to the initial stack
func SetDrawPolygon ¶
SetDrawPolygon sets the draw polygon and flags that draw functions should check for containment in the polygon before running
func SetDrawStack ¶
func SetDrawStack(as ...Addable)
SetDrawStack takes in a set of Addables which act as the set of Drawstacks available
func SetFontDefaults ¶
SetFontDefaults updates the default font parameters with the passed in arguments
func ShinyDraw ¶
ShinyDraw performs a draw operation at -x, -y, because shiny/screen represents quadrant 4 as negative in both axes. draw.Over will merge two pixels at a given position based on their alpha channel.
func ShinyOverwrite ¶
ShinyOverwrite is equivalent to ShinyDraw, but uses draw.Src draw.Src will overwrite pixels beneath the given image regardless of the new image's alpha.
func Tween ¶
Tween takes two images and returns a set of images tweening between the two over some number of frames
func UndrawAfter ¶
func UndrawAfter(r Renderable, t time.Duration)
UndrawAfter will trigger a renderable's undraw function after a given time has passed
func UpdateDebugMap ¶
func UpdateDebugMap(rName string, r Renderable)
UpdateDebugMap sets a value within the debugMap
Types ¶
type Addable ¶
type Addable interface { PreDraw() Add(Renderable, int) Renderable Replace(Renderable, Renderable, int) Copy() Addable // contains filtered or unexported methods }
An Addable manages Renderables
type Animation ¶
type Animation struct { LayeredPoint Interruptable bool // contains filtered or unexported fields }
Animation takes a set of frames and provides a framework for animating them
func LoadAnimation ¶
LoadAnimation takes in a sheet with sheet dimensions, a frame rate and a list of frames where frames are in x,y pairs ([0,0,1,0,2,0] for (0,0) (1,0) (2,0), and returns an animation from that
func LoadSheetAnimation ¶
func LoadSheetAnimation(fileName string, w, h, pad int, fps float64, frames []int) (*Animation, error)
LoadSheetAnimation loads a sheet and then calls LoadAnimation on that sheet
func NewAnimation ¶
NewAnimation creates an Animation
func (*Animation) Copy ¶
func (a *Animation) Copy() Modifiable
Copy creates a new Modifiable that is a copy of the current animation.
func (*Animation) DrawOffset ¶
DrawOffset draws the animation with some x,y offset from its logical location
func (*Animation) Modify ¶
func (a *Animation) Modify(ms ...Modification) Modifiable
Modify applies a set of modifications to the Animation
func (*Animation) SetTriggerID ¶
SetTriggerID sets animation's id to the passed in id.
type Composite ¶
type Composite struct { LayeredPoint // contains filtered or unexported fields }
Composite Types, distinct from Compound Types, Display all of their parts at the same time, and respect the positions and layers of their parts.
func (*Composite) Add ¶
func (cs *Composite) Add(i int, r Modifiable)
Add places a renderable at a certain point in the composites renderable slice
func (*Composite) AlwaysDirty ¶
AlwaysDirty shows that the Composite always needs updating
func (*Composite) Append ¶
func (cs *Composite) Append(r Modifiable)
Append adds a renderable as is to the composite
func (*Composite) AppendOffset ¶
func (cs *Composite) AppendOffset(r Modifiable, v physics.Vector)
AppendOffset adds a new offset modifiable to the composite
func (*Composite) Copy ¶
func (cs *Composite) Copy() Modifiable
Copy makes a new Composite with the same renderables
func (*Composite) DrawOffset ¶
DrawOffset draws the Composite with some offset from its logical position (and therefore sub renderables logical positions).
func (*Composite) Get ¶
func (cs *Composite) Get(i int) Modifiable
Get returns a renderable at the given index within the composite
func (*Composite) Modify ¶
func (cs *Composite) Modify(ms ...Modification) Modifiable
Modify applies modifications to the composite
func (*Composite) SetOffsets ¶
SetOffsets applies the initial offsets to the entire Composite
type CompositeR ¶
type CompositeR struct { LayeredPoint // contains filtered or unexported fields }
CompositeR keeps track of a set of renderables at a location
func NewCompositeR ¶
func NewCompositeR(sl []Renderable) *CompositeR
NewCompositeR creates a new CompositeR from a slice of renderables
func (*CompositeR) Add ¶
func (cs *CompositeR) Add(r Renderable, i int) Renderable
Add stages a renderable to be added to CompositeR at a give position in the slice
func (*CompositeR) AddOffset ¶
func (cs *CompositeR) AddOffset(i int, v physics.Vector)
AddOffset adds an offset to a given renderable of the slice
func (*CompositeR) AlwaysDirty ¶
func (cs *CompositeR) AlwaysDirty() bool
AlwaysDirty notes that CompositeR is alwaysdirty
func (*CompositeR) Append ¶
func (cs *CompositeR) Append(r Renderable)
Append adds a new renderable to CompositeR
func (*CompositeR) AppendOffset ¶
func (cs *CompositeR) AppendOffset(r Renderable, v physics.Vector)
AppendOffset adds a new renderable to CompositeR with an offset
func (*CompositeR) Copy ¶
func (cs *CompositeR) Copy() Addable
Copy returns a new composite with the same length slice of renderables but no actual renderables... CompositeRs cannot have their internal elements copied, as renderables cannot be copied.
func (*CompositeR) Draw ¶
func (cs *CompositeR) Draw(buff draw.Image)
Draw draws the CompositeR at its logical location and therefore its consituent renderables as well
func (*CompositeR) DrawOffset ¶
func (cs *CompositeR) DrawOffset(buff draw.Image, xOff, yOff float64)
DrawOffset Draws the CompositeR with an offset from its logical location.
func (*CompositeR) Get ¶
func (cs *CompositeR) Get(i int) Renderable
Get returns renderable at given location in CompositeR
func (*CompositeR) GetRGBA ¶
func (cs *CompositeR) GetRGBA() *image.RGBA
GetRGBA does not work on composites and returns nil
func (*CompositeR) PreDraw ¶
func (cs *CompositeR) PreDraw()
PreDraw updates the CompositeR with the new renderables to add. This helps keep consistency and mitigates the threat of unsafe operations.
func (*CompositeR) Replace ¶
func (cs *CompositeR) Replace(r1, r2 Renderable, i int)
Replace updates a renderable in the CompositeR to the new Renderable
func (*CompositeR) SetOffsets ¶
func (cs *CompositeR) SetOffsets(ps []physics.Vector)
SetOffsets sets all renderables in CompositeR to the passed in Vector positions positions
func (*CompositeR) String ¶
func (cs *CompositeR) String() string
func (*CompositeR) UnDraw ¶
func (cs *CompositeR) UnDraw()
UnDraw undraws the CompositeR and therefore its consituent renderables as well
type Compound ¶
type Compound struct { LayeredPoint // contains filtered or unexported fields }
The Compound type is intended for use to easily swap between multiple renderables that are drawn at the same position on the same layer. A common use case for this would be a character entitiy who switches their animation based on how they are moving or what they are doing.
The Compound type removes the need to repeatedly draw and undraw elements of a character, which has a tendency to leave nothing drawn for a draw frame.
func NewCompound ¶
func NewCompound(start string, m map[string]Modifiable) *Compound
NewCompound creates a new compound from a map of names to modifiables
func (*Compound) Add ¶
func (c *Compound) Add(k string, v Modifiable)
Add makes a new entry in the Compounds map
func (*Compound) DrawOffset ¶
DrawOffset draws the Compound at an offset from its logical location
func (*Compound) GetSub ¶
func (c *Compound) GetSub(s string) Modifiable
GetSub returns a given subrenderable from the map
func (*Compound) IsInterruptable ¶
IsInterruptable returns whether the current renderable is interruptable
func (*Compound) Modify ¶
func (c *Compound) Modify(ms ...Modification) Modifiable
Modify performs a series of modifications on the Compound
func (*Compound) RevertAll ¶
func (c *Compound) RevertAll()
RevertAll tries to revert the all sub-Renderables if possible
func (*Compound) SetOffsets ¶
SetOffsets sets the logical offset for the specified subrenderable
type DrawFPS ¶
type DrawFPS struct {
// contains filtered or unexported fields
}
DrawFPS is a draw stack element that will draw the fps onto the screen
func (*DrawFPS) Add ¶
func (df *DrawFPS) Add(Renderable, int) Renderable
Add does nothing for a drawFPS
func (*DrawFPS) Replace ¶
func (df *DrawFPS) Replace(Renderable, Renderable, int)
Replace does nothing for a drawFPS
type DrawStack ¶
type DrawStack struct {
// contains filtered or unexported fields
}
The DrawStack is a stack with a safe adding mechanism that creates isolation between draw steps via predraw
type Font ¶
type Font struct { FontGenerator font.Drawer }
A Font can both be generated and drawn
func (*Font) NewIntText ¶
NewIntText wraps the given int pointer in a stringer interface
func (*Font) NewStrText ¶
NewStrText is a helper to take in a string instead of a stringer for NewText
func (*Font) NewText ¶
NewText takes in anything that has a String() function and returns a text object with the associated font and screen position
type FontGenerator ¶
A FontGenerator stores a set of information that can be used to create a font
func (*FontGenerator) Copy ¶
func (fg *FontGenerator) Copy() *FontGenerator
Copy cretaes a copy of the FontGenerator
func (*FontGenerator) Generate ¶
func (fg *FontGenerator) Generate() *Font
Generate creates a font from the FontGenerator
type FontManager ¶
A FontManager is just a map for fonts that contains a default font
func NewFontManager ¶
func NewFontManager() *FontManager
NewFontManager returns a FontManager where 'def' is the default font
func (*FontManager) Get ¶
func (fm *FontManager) Get(name string) *Font
Get retrieves a font from a manager
func (*FontManager) NewFont ¶
func (fm *FontManager) NewFont(name string, fg FontGenerator) error
NewFont adds to the font manager and potentially returns if the key was already defined in the map
type Layered ¶
type Layered struct {
// contains filtered or unexported fields
}
A Layered object is one with a layer
func (*Layered) GetLayer ¶
GetLayer returns the layer of an object if it has one or else returns that the object needs to be undrawn
type LayeredPoint ¶
A LayeredPoint is an object with a position Vector and a layer
func NewLayeredPoint ¶
func NewLayeredPoint(x, y float64, l int) LayeredPoint
NewLayeredPoint creates a new LayeredPoint at a given location and layer
func (*LayeredPoint) Copy ¶
func (ldp *LayeredPoint) Copy() LayeredPoint
Copy deep copies the LayeredPoint
func (*LayeredPoint) GetDims ¶
func (ldp *LayeredPoint) GetDims() (int, int)
GetDims returns a static small amount so that polygon containment does not throw errors
func (*LayeredPoint) GetLayer ¶
func (ldp *LayeredPoint) GetLayer() int
GetLayer returns the layer of an object if it has one or else returns that the object needs to be undrawn as it does not have a layer
func (*LayeredPoint) SetPos ¶
func (ldp *LayeredPoint) SetPos(x, y float64)
SetPos sets the LayeredPoint's position to the given x, y
func (*LayeredPoint) ShiftX ¶
func (ldp *LayeredPoint) ShiftX(x float64)
ShiftX moves the LayeredPoint by the given x
func (*LayeredPoint) ShiftY ¶
func (ldp *LayeredPoint) ShiftY(y float64)
ShiftY moves the LayeredPoint by the given y
func (*LayeredPoint) String ¶
func (ldp *LayeredPoint) String() string
type LogicFPS ¶
LogicFPS is a draw stack element that will draw the fps onto the screen
func (*LogicFPS) Add ¶
func (lf *LogicFPS) Add(Renderable, int) Renderable
Add does nothing for a drawFPS
func (*LogicFPS) Replace ¶
func (lf *LogicFPS) Replace(Renderable, Renderable, int)
Replace does nothing for a drawFPS
type Modifiable ¶
type Modifiable interface { Renderable GetRGBA() *image.RGBA Modify(...Modification) Modifiable Copy() Modifiable }
A Modifiable is a Renderable that has functions to change its underlying image. This may be replaced with the gift library down the line
func EmptyRenderable ¶
func EmptyRenderable() Modifiable
EmptyRenderable creates a tiny renderable with no real dimensions
type Modification ¶
A Modification takes in an image buffer and returns a new image buffer
func And ¶
func And(ms ...Modification) Modification
And chains together multiple Modifications into a single Modification
func ApplyColor ¶
func ApplyColor(c color.Color) Modification
ApplyColor mixes a color into the rgba values of an image and returns that new rgba.
func ApplyMask ¶
func ApplyMask(img image.RGBA) Modification
ApplyMask mixes the rgba values of two images, according to their alpha levels, and returns that as a new rgba.
func ColorBalance ¶
func ColorBalance(r, g, b float32) Modification
ColorBalance takes in 3 numbers between -100 and 500 and applies it to the given image
func Cut ¶
func Cut(newWidth, newHeight int) Modification
Cut reduces (or increases, adding nothing) the dimensions of the input image, setting them to newWidth and newHeight. (Consider: use generic int modifiers here so we don't need CutRel and Cut? i.e a function header like Cut(wMod, hMod func(int) int)? )
func CutRel ¶
func CutRel(relWidth, relHeight float64) Modification
CutRel acts like Cut, but takes in a multiplier on the existing dimensions of the image.
func CutRound ¶
func CutRound(xOff, yOff float64) Modification
CutRound rounds the edges of the Modifiable with Bezier curves. Todo: A nice bezier curve toolset would be nice
func FillMask ¶
func FillMask(img image.RGBA) Modification
FillMask replaces alpha 0 pixels in an RGBA with corresponding pixels in a second RGBA.
type Polygon ¶
A Polygon is a renderable that is represented by a set of in order points on a plane.
func NewPolygon ¶
NewPolygon takes in a set of points and returns a polygon. If less than three points are provided, this fails.
func ScreenPolygon ¶
ScreenPolygon returns a polygon on the screen, used for draw polygons.
func (*Polygon) Contains ¶
Contains Returns whether or not the current Polygon contains the passed in Point.
func (*Polygon) ConvexContains ¶
ConvexContains returns whether the given point is contained by the input polygon. It assumes the polygon is convex.
func (*Polygon) FillInverse ¶
FillInverse colors this polygon's exterior the given color
func (*Polygon) GetOutline ¶
GetOutline returns a set of lines of the given color along this polygon's outline
func (*Polygon) UpdatePoints ¶
UpdatePoints resets the points of this polygon to be the passed in points
func (*Polygon) WrappingContains ¶
WrappingContains returns whether the given point is contained by the input polygon.
type Rect ¶
type Rect struct {
MinX, MaxX, MinY, MaxY float64
}
A Rect is a helper type storing X1,Y1,X2,Y2 in floats
type Renderable ¶
type Renderable interface { // As the engine currently exists, // the buffer which is passed into draw // is always the same. This leads to // several parts of the engine being // reliant on shiny/screen when they // could call out to somewhere else to // determine what they are drawn onto. // // On the other hand, this allows manually // duplicating renderables onto multiple // buffers, but in certain implementations // (i.e Animation) would have unintended // consequences. Draw(buff draw.Image) DrawOffset(buff draw.Image, xOff, yOff float64) // Basic Implementing struct: Point ShiftX(x float64) GetX() float64 ShiftY(y float64) GetY() float64 SetPos(x, y float64) GetDims() (int, int) // Basic Implementing struct: Layered GetLayer() int SetLayer(l int) UnDraw() // Utilities String() string // Physics physics.Attachable }
A Renderable is anything which can be drawn at a given draw layer, undrawn, and set in a particular position.
Basic Implementing struct: Sprite
func DrawColor ¶
func DrawColor(c color.Color, x1, y1, x2, y2 float64, layer, stackLayer int) Renderable
DrawColor is equivalent to LoadSpriteAndDraw, but with colorboxes.
func GetDebugRenderable ¶
func GetDebugRenderable(rName string) (Renderable, bool)
GetDebugRenderable gets a value from the debugMap
func LoadSpriteAndDraw ¶
func LoadSpriteAndDraw(filename string, l int) (Renderable, error)
LoadSpriteAndDraw is shorthand for LoadSprite followed by Draw.
type RenderableHeap ¶
type RenderableHeap struct {
// contains filtered or unexported fields
}
The RenderableHeap type is set up to manage a set of renderables to prevent any unsafe operations and allow for distinct updates between draw cycles
func (*RenderableHeap) Add ¶
func (rh *RenderableHeap) Add(r Renderable, layer int) Renderable
Add stages a new Renderable to add to the heap
func (*RenderableHeap) Copy ¶
func (rh *RenderableHeap) Copy() Addable
Copy on a renderableHeap does not include any of its elements, as renderables cannot be copied.
func (*RenderableHeap) Len ¶
func (rh *RenderableHeap) Len() int
Satisfying the Heap interface Len gets the length of the current heap
func (*RenderableHeap) Less ¶
func (rh *RenderableHeap) Less(i, j int) bool
Less returns whether a renderable at index i is at a lower layer than the one at index j
func (*RenderableHeap) PreDraw ¶
func (rh *RenderableHeap) PreDraw()
PreDraw parses through renderables to be pushed and adds them to the drawheap.
func (*RenderableHeap) Push ¶
func (rh *RenderableHeap) Push(r interface{})
Push adds to the renderable heap
func (*RenderableHeap) Replace ¶
func (rh *RenderableHeap) Replace(r1, r2 Renderable, layer int)
Replace adds a Renderable and removes an old one
type Reverting ¶
type Reverting struct { Modifiable // contains filtered or unexported fields }
The Reverting structure lets modifications be made to a Modifiable and then reverted, up to arbitrary history limits.
func NewReverting ¶
func NewReverting(m Modifiable) *Reverting
NewReverting returns a Reverting type wrapped around the given modifiable
func (*Reverting) Copy ¶
func (rv *Reverting) Copy() Modifiable
Copy returns a copy of the Reverting
func (*Reverting) IsInterruptable ¶
IsInterruptable returns if the underlying Modifiable for this reverting is interruptable.
func (*Reverting) IsStatic ¶
IsStatic returns if the underlying Modifiable for this reverting is static.
func (*Reverting) Modify ¶
func (rv *Reverting) Modify(ms ...Modification) Modifiable
Modify alters this reverting by the given modifications, appending the new modified renderable to it's list of modified versions and displaying it.
func (*Reverting) Pause ¶
func (rv *Reverting) Pause()
Pause ceases animating any renderable types that animate underneath this
func (*Reverting) Revert ¶
Revert goes back n steps in this Reverting's history and displays that Modifiable
func (*Reverting) RevertAll ¶
func (rv *Reverting) RevertAll()
RevertAll resets this reverting to its original Modifiable
func (*Reverting) RevertAndModify ¶
func (rv *Reverting) RevertAndModify(n int, ms ...Modification) Modifiable
RevertAndModify reverts n steps and then modifies this reverting. This is a separate function from Revert followed by Modify to prevent skipped draw frames.
type ScrollBox ¶
type ScrollBox struct { *Sprite Rs []Renderable View physics.Vector // contains filtered or unexported fields }
A ScrollBox is a renderable that draws other renderables to itself in a scrolling fashion, for animating ticker tape feeds or rotating background animations.
func NewScrollBox ¶
func NewScrollBox(rs []Renderable, milliPerPixelX, milliPerPixelY, width, height int) *ScrollBox
NewScrollBox returns a ScrollBox of the input renderables and the given dimensions.
func (*ScrollBox) AddRenderable ¶
func (s *ScrollBox) AddRenderable(rs ...Renderable)
AddRenderable adds the inputs to this scrollbox.
func (*ScrollBox) DrawOffset ¶
DrawOffset draws this scroll box at +xOff, +yOff
func (*ScrollBox) SetReappearPos ¶
SetReappearPos sets at what point renderables in this box should loop back on themselves to begin scrolling again
func (*ScrollBox) SetScrollRate ¶
SetScrollRate sets how fast this scroll box should rotate its x and y axes
type Sequence ¶
type Sequence struct { LayeredPoint Interruptable bool // contains filtered or unexported fields }
A Sequence is a series of modifiables drawn as an animation. It is more primitive than animation, but less efficient.
func NewNoiseSequence ¶
NewNoiseSequence returns a sequence of noise boxes
func NewSequence ¶
func NewSequence(mods []Modifiable, fps float64) *Sequence
NewSequence returns a new sequence from the input modifiables, playing at fps rate
func TweenSequence ¶
TweenSequence returns a sequence that is the tweening between the input images at the given frame rate over the given frame count.
func (*Sequence) Copy ¶
func (sq *Sequence) Copy() Modifiable
Copy copies each modifiable inside this sequence in order to produce a new copied sequence
func (*Sequence) DrawOffset ¶
DrawOffset draws this sequence at +xOff, +yOff
func (*Sequence) Get ¶
func (sq *Sequence) Get(i int) Modifiable
Get returns the Modifiable stored at this sequence's ith index. If the sequence does not have an ith index this panics todo: don't panic, return an error
func (*Sequence) Modify ¶
func (sq *Sequence) Modify(ms ...Modification) Modifiable
Modify alters each renderable in this sequence by the given modifications
func (*Sequence) SetTriggerID ¶
SetTriggerID sets the ID that AnimationEnd will be triggered on when this sequence loops over from its last frame to its first
type Sheet ¶
Sheet is a 2D array of image rgbas
type Sprite ¶
type Sprite struct { LayeredPoint // contains filtered or unexported fields }
A Sprite is a basic wrapper around image data and a point. The most basic Renderable.
func LoadSprite ¶
LoadSprite loads the input fileName into a Sprite
func NewCircularGradientBox ¶
NewCircularGradientBox passes CircularProgress into NewGradientBox
func NewColorBox ¶
NewColorBox returns a Sprite full of a given color with the given dimensions
func NewEmptySprite ¶
NewEmptySprite returns a sprite of the given dimensions with a blank RGBA
func NewGradientBox ¶
NewGradientBox returns a gradient box defined on the two input colors and the given progress function
func NewHorizontalGradientBox ¶
NewHorizontalGradientBox passes HorizontalProgress into NewGradientBox
func NewSeededNoiseBox ¶
NewSeededNoiseBox returns a box of noise seeded at a specific value this previously used a complex noise function, but this refused to run on windows 32bit and was overkill, so it now uses math/rand
func NewThickLine ¶
NewThickLine returns a Line that has some value of thickness
func NewVerticalGradientBox ¶
NewVerticalGradientBox passes VerticalProgress into NewGradientBox
func OverlaySprites ¶
OverlaySprites combines sprites together through masking to form a single sprite
func ParseSubSprite ¶
ParseSubSprite pulls a sprite from a loaded sheet
func (*Sprite) DrawOffset ¶
DrawOffset draws this sprite at +xOff, +yOff
func (*Sprite) GetDims ¶
GetDims returns the dimensions of this sprite, or if this sprite has no defined RGBA returns default values. BUG: The reason the default values of 6,6 are returned is to cover a bug in the library we are using for polygon intersection. Too small objects will always be considered to intersect a draw polygon.
func (*Sprite) Modify ¶
func (s *Sprite) Modify(ms ...Modification) Modifiable
Modify takes in modifications (modify.go) and alters this sprite accordingly
type Text ¶
type Text struct { LayeredPoint // contains filtered or unexported fields }
A Text is a renderable that represents some text to print on screen
func (*Text) Center ¶
func (t *Text) Center()
Center will shift the text so that the existing leftmost point where the text sits becomes the center of the new text.
func (*Text) DrawOffset ¶
DrawOffset for a text object draws the text at t.(X,Y) + (xOff,yOff)
func (*Text) SetIntP ¶
SetIntP takes in an integer pointer that will be drawn at whatever the value is behind the pointer when it is drawn
Source Files ¶
- animation.go
- colorbox.go
- compositeSlice.go
- compound.go
- debugMap.go
- draw.go
- drawHeap.go
- drawPolygon.go
- drawStack.go
- font.go
- fontManager.go
- fps.go
- gradientbox.go
- layered.go
- line.go
- loader.go
- logicfps.go
- modify.go
- noisebox.go
- polygon.go
- renderable.go
- reverting.go
- scrollbox.go
- sequence.go
- shiny.go
- sprite.go
- text.go
- tween.go