themes and styles
This commit is contained in:
@@ -51,7 +51,7 @@ func hitPoint(p Point, cx, cy int, zoomFp int, allowWrap bool, worldW, worldH in
|
||||
return Hit{}, false
|
||||
}
|
||||
|
||||
func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, worldW, worldH int) (Hit, bool) {
|
||||
func hitCircle(c Circle, effRadiusFp int, style Style, cx, cy int, zoomFp int, allowWrap bool, worldW, worldH int) (Hit, bool) {
|
||||
slopPx := effectiveHitSlopPx(c.HitSlopPx, DefaultHitSlopCirclePx)
|
||||
slopW := PixelSpanToWorldFixed(slopPx, zoomFp)
|
||||
|
||||
@@ -59,7 +59,7 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
|
||||
// Determine if circle is point-like at current zoom.
|
||||
// IMPORTANT: point-like disc behavior applies only for filled circles.
|
||||
rPx := worldSpanFixedToCanvasPx(c.Radius, zoomFp)
|
||||
rPx := worldSpanFixedToCanvasPx(effRadiusFp, zoomFp)
|
||||
pointLike := fillVisible && rPx < CirclePointLikeMinRadiusPx
|
||||
|
||||
var dx, dy int64
|
||||
@@ -78,8 +78,8 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
// Treat as a disc with minimum visible radius in px.
|
||||
minRW := PixelSpanToWorldFixed(CirclePointLikeMinRadiusPx, zoomFp)
|
||||
effR := minRW
|
||||
if c.Radius > effR {
|
||||
effR = c.Radius
|
||||
if effRadiusFp > effR {
|
||||
effR = effRadiusFp
|
||||
}
|
||||
r := effR + slopW
|
||||
if u128Cmp(ds, sqU128Int64(int64(r))) <= 0 {
|
||||
@@ -91,7 +91,7 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
DistanceSq: ds,
|
||||
X: c.X,
|
||||
Y: c.Y,
|
||||
Radius: c.Radius,
|
||||
Radius: effRadiusFp,
|
||||
}, true
|
||||
}
|
||||
return Hit{}, false
|
||||
@@ -99,7 +99,7 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
|
||||
// Filled circle: hit-test by disc (surface).
|
||||
if fillVisible {
|
||||
r := c.Radius + slopW
|
||||
r := effRadiusFp + slopW
|
||||
if u128Cmp(ds, sqU128Int64(int64(r))) <= 0 {
|
||||
return Hit{
|
||||
ID: c.Id,
|
||||
@@ -109,7 +109,7 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
DistanceSq: ds,
|
||||
X: c.X,
|
||||
Y: c.Y,
|
||||
Radius: c.Radius,
|
||||
Radius: effRadiusFp,
|
||||
}, true
|
||||
}
|
||||
return Hit{}, false
|
||||
@@ -118,7 +118,7 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
// Stroke-only circle: ring hit, but NEVER at exact center.
|
||||
// For very small circles, expand the effective radius to a minimum visible size
|
||||
// so that ring selection remains practical, while still excluding center.
|
||||
effR := c.Radius
|
||||
effR := effRadiusFp
|
||||
if rPx < CirclePointLikeMinRadiusPx {
|
||||
minRW := PixelSpanToWorldFixed(CirclePointLikeMinRadiusPx, zoomFp)
|
||||
if minRW > effR {
|
||||
@@ -145,7 +145,7 @@ func hitCircle(c Circle, style Style, cx, cy int, zoomFp int, allowWrap bool, wo
|
||||
DistanceSq: ds,
|
||||
X: c.X,
|
||||
Y: c.Y,
|
||||
Radius: c.Radius,
|
||||
Radius: effRadiusFp,
|
||||
}, true
|
||||
}
|
||||
return Hit{}, false
|
||||
|
||||
Reference in New Issue
Block a user