MCPcopy Create free account
hub / github.com/SolarLune/masterplan / Draw

Method Draw

gui.go:255–336  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

253}
254
255func (iconButton *IconButton) Draw() {
256
257 if iconButton.Rect.W == 0 && iconButton.Rect.H == 0 {
258 return
259 }
260
261 orig := *iconButton.Rect
262 rect := &orig
263 guiTex := iconButton.Image.Texture
264
265 if iconButton.WorldSpace {
266 rect = globals.Project.Camera.TranslateRect(rect)
267 }
268
269 currentSize, _ := iconButton.tween.Update(1.0 / float32(targetFPS))
270 rect.W *= currentSize
271 rect.H *= currentSize
272 rect.X += (1 - currentSize) * rect.W / 3
273 rect.Y += (1 - currentSize) * rect.H / 3
274
275 mp := globals.Mouse.Position()
276 if iconButton.WorldSpace {
277 mp = globals.Mouse.WorldPosition()
278 }
279
280 hovering := mp.Inside(iconButton.Rect)
281
282 targetSub := float32(0.3)
283 if hovering || !iconButton.FadeOnInactive || iconButton.AlwaysHighlight {
284 targetSub = 0
285 }
286
287 iconButton.HighlightingTargetColor += (targetSub - iconButton.HighlightingTargetColor) * 0.1
288
289 drawSrc := func(src *sdl.FRect, x, y float32, color Color, rotation float64, flip sdl.FlipMode) {
290
291 guiTex.SetColorMod(color.RGB())
292 guiTex.SetAlphaMod(color[3] - uint8(iconButton.HighlightingTargetColor*255))
293
294 r := *rect
295 r.X += x
296 r.Y += y
297 globals.Renderer.RenderTextureRotated(guiTex, src, &r, rotation, nil, flip)
298
299 }
300
301 if iconButton.BGIconSrc != nil {
302 drawSrc(iconButton.BGIconSrc, 0, 0, iconButton.BGIconTint, iconButton.Rotation, 0)
303 }
304
305 tint := iconButton.Tint
306 if tint == nil {
307 tint = getThemeColor(GUIFontColor)
308 }
309
310 drawSrc(iconButton.IconSrc, 0, 0, tint, iconButton.Rotation, iconButton.Flip)
311
312 r := *iconButton.Rect

Callers

nothing calls this directly

Calls 9

getThemeColorFunction · 0.85
TranslateRectMethod · 0.80
WorldPositionMethod · 0.80
InsideMethod · 0.80
RGBMethod · 0.80
SetRectMethod · 0.80
UpdateMethod · 0.65
DrawMethod · 0.65
PositionMethod · 0.45

Tested by

no test coverage detected