mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-26 03:38:55 +01:00
internal/ui: refactoring: add (*Monitor).deviceScaleFactor
This commit is contained in:
parent
0e23045b90
commit
b32575b7b2
@ -68,7 +68,7 @@ func (u *userInterfaceImpl) updateInputStateImpl() error {
|
||||
}
|
||||
|
||||
m := u.currentMonitor()
|
||||
s := u.deviceScaleFactor(m)
|
||||
s := m.deviceScaleFactor()
|
||||
|
||||
cx, cy := u.savedCursorX, u.savedCursorY
|
||||
defer func() {
|
||||
|
@ -41,6 +41,15 @@ func (m *Monitor) Name() string {
|
||||
return m.name
|
||||
}
|
||||
|
||||
func (m *Monitor) deviceScaleFactor() float64 {
|
||||
// It is rare, but monitor can be nil when glfw.GetPrimaryMonitor returns nil.
|
||||
// In this case, return 1 as a tentative scale (#1878).
|
||||
if m == nil {
|
||||
return 1
|
||||
}
|
||||
return m.contentScale
|
||||
}
|
||||
|
||||
type monitors struct {
|
||||
// monitors is the monitor list cache for desktop glfw compile targets.
|
||||
// populated by 'updateMonitors' which is called on init and every
|
||||
|
@ -724,7 +724,7 @@ func (u *userInterfaceImpl) DeviceScaleFactor() float64 {
|
||||
return 0
|
||||
}
|
||||
if !u.isRunning() {
|
||||
return u.deviceScaleFactor(u.getInitMonitor())
|
||||
return u.getInitMonitor().deviceScaleFactor()
|
||||
}
|
||||
|
||||
var f float64
|
||||
@ -732,21 +732,11 @@ func (u *userInterfaceImpl) DeviceScaleFactor() float64 {
|
||||
if u.isTerminated() {
|
||||
return
|
||||
}
|
||||
f = u.deviceScaleFactor(u.currentMonitor())
|
||||
f = u.currentMonitor().deviceScaleFactor()
|
||||
})
|
||||
return f
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) deviceScaleFactor(monitor *Monitor) float64 {
|
||||
// It is rare, but monitor can be nil when glfw.GetPrimaryMonitor returns nil.
|
||||
// In this case, return 1 as a tentative scale (#1878).
|
||||
if monitor == nil {
|
||||
return 1
|
||||
}
|
||||
|
||||
return monitor.contentScale
|
||||
}
|
||||
|
||||
func init() {
|
||||
// Lock the main thread.
|
||||
runtime.LockOSThread()
|
||||
@ -853,7 +843,7 @@ func (u *userInterfaceImpl) registerWindowFramebufferSizeCallback() {
|
||||
|
||||
// The framebuffer size is always scaled by the device scale factor (#1975).
|
||||
// See also the implementation in uiContext.updateOffscreen.
|
||||
s := u.deviceScaleFactor(u.currentMonitor())
|
||||
s := u.currentMonitor().deviceScaleFactor()
|
||||
ww := int(float64(w) / s)
|
||||
wh := int(float64(h) / s)
|
||||
u.setWindowSizeInDIP(ww, wh, false)
|
||||
@ -1172,7 +1162,7 @@ func (u *userInterfaceImpl) updateGame() error {
|
||||
var err error
|
||||
if u.mainThread.Call(func() {
|
||||
outsideWidth, outsideHeight, err = u.update()
|
||||
deviceScaleFactor = u.deviceScaleFactor(u.currentMonitor())
|
||||
deviceScaleFactor = u.currentMonitor().deviceScaleFactor()
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -1332,7 +1322,7 @@ func (u *userInterfaceImpl) setWindowSizeInDIP(width, height int, callSetSize bo
|
||||
height = 1
|
||||
}
|
||||
|
||||
scale := u.deviceScaleFactor(u.currentMonitor())
|
||||
scale := u.currentMonitor().deviceScaleFactor()
|
||||
if u.origWindowWidthInDIP == width && u.origWindowHeightInDIP == height && u.lastDeviceScaleFactor == scale {
|
||||
return
|
||||
}
|
||||
|
@ -111,15 +111,15 @@ func videoModeScale(m *glfw.Monitor) float64 {
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) dipFromGLFWMonitorPixel(x float64, monitor *Monitor) float64 {
|
||||
return x / (monitor.videoModeScale * u.deviceScaleFactor(monitor))
|
||||
return x / (monitor.videoModeScale * monitor.deviceScaleFactor())
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) dipFromGLFWPixel(x float64, monitor *Monitor) float64 {
|
||||
return x / u.deviceScaleFactor(monitor)
|
||||
return x / monitor.deviceScaleFactor()
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) dipToGLFWPixel(x float64, monitor *Monitor) float64 {
|
||||
return x * u.deviceScaleFactor(monitor)
|
||||
return x * monitor.deviceScaleFactor()
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) adjustWindowPosition(x, y int, monitor *Monitor) (int, int) {
|
||||
|
@ -92,15 +92,15 @@ func videoModeScale(monitor *glfw.Monitor) float64 {
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) dipFromGLFWMonitorPixel(x float64, monitor *Monitor) float64 {
|
||||
return x / u.deviceScaleFactor(monitor)
|
||||
return x / monitor.deviceScaleFactor()
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) dipFromGLFWPixel(x float64, monitor *Monitor) float64 {
|
||||
return x / u.deviceScaleFactor(monitor)
|
||||
return x / monitor.deviceScaleFactor()
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) dipToGLFWPixel(x float64, monitor *Monitor) float64 {
|
||||
return x * u.deviceScaleFactor(monitor)
|
||||
return x * monitor.deviceScaleFactor()
|
||||
}
|
||||
|
||||
func (u *userInterfaceImpl) adjustWindowPosition(x, y int, monitor *Monitor) (int, int) {
|
||||
|
Loading…
Reference in New Issue
Block a user