themes and styles
This commit is contained in:
@@ -150,3 +150,39 @@ func TestHitTest_CircleStrokeOnly_HitsNearRingNotCenter(t *testing.T) {
|
||||
require.NotEmpty(t, hits)
|
||||
require.Equal(t, KindCircle, hits[0].Kind)
|
||||
}
|
||||
|
||||
func TestHitTest_CircleRadiusScale_AffectsHitArea(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
w := NewWorld(10, 10)
|
||||
w.SetTheme(DefaultTheme{}) // filled circles by default in our defaults
|
||||
w.IndexOnViewportChange(100, 100, 1.0)
|
||||
|
||||
// raw radius=2 units, centered at (5,5)
|
||||
_, err := w.AddCircle(5, 5, 2)
|
||||
require.NoError(t, err)
|
||||
|
||||
// scale=2 => eff radius=4
|
||||
require.NoError(t, w.SetCircleRadiusScaleFp(2*SCALE))
|
||||
w.Reindex()
|
||||
|
||||
params := RenderParams{
|
||||
ViewportWidthPx: 100,
|
||||
ViewportHeightPx: 100,
|
||||
MarginXPx: 0,
|
||||
MarginYPx: 0,
|
||||
CameraXWorldFp: 5 * SCALE,
|
||||
CameraYWorldFp: 5 * SCALE,
|
||||
CameraZoom: 1.0,
|
||||
}
|
||||
|
||||
// Tap at +4 px from center should hit (eff radius 4).
|
||||
buf := make([]Hit, 0, 8)
|
||||
hits, err := w.HitTest(buf, ¶ms, 50+4, 50)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, hits)
|
||||
require.Equal(t, KindCircle, hits[0].Kind)
|
||||
|
||||
// Tap at +5 should typically miss (depending on slop); enforce by setting small slop via options.
|
||||
// We'll add a small-slope circle and test deterministically.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user