()
| 253 | } |
| 254 | |
| 255 | func (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 |
nothing calls this directly
no test coverage detected