mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
gg: improve Context scale for Android (#13545)
This commit is contained in:
parent
8b033c3993
commit
809772db4e
@ -161,7 +161,7 @@ fn gg_init_sokol_window(user_data voidptr) {
|
|||||||
gfx.setup(&desc)
|
gfx.setup(&desc)
|
||||||
sgl_desc := sgl.Desc{}
|
sgl_desc := sgl.Desc{}
|
||||||
sgl.setup(&sgl_desc)
|
sgl.setup(&sgl_desc)
|
||||||
ctx.scale = dpi_scale()
|
ctx.set_scale()
|
||||||
// is_high_dpi := sapp.high_dpi()
|
// is_high_dpi := sapp.high_dpi()
|
||||||
// fb_w := sapp.width()
|
// fb_w := sapp.width()
|
||||||
// fb_h := sapp.height()
|
// fb_h := sapp.height()
|
||||||
@ -176,7 +176,7 @@ fn gg_init_sokol_window(user_data voidptr) {
|
|||||||
ctx.ft = new_ft(
|
ctx.ft = new_ft(
|
||||||
font_path: ctx.config.font_path
|
font_path: ctx.config.font_path
|
||||||
custom_bold_font_path: ctx.config.custom_bold_font_path
|
custom_bold_font_path: ctx.config.custom_bold_font_path
|
||||||
scale: dpi_scale()
|
scale: ctx.scale
|
||||||
) or { panic(err) }
|
) or { panic(err) }
|
||||||
// println('FT took ${time.ticks()-t} ms')
|
// println('FT took ${time.ticks()-t} ms')
|
||||||
ctx.font_inited = true
|
ctx.font_inited = true
|
||||||
@ -479,9 +479,44 @@ pub fn (ctx &Context) end() {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn (mut ctx Context) set_scale() {
|
||||||
|
mut s := sapp.dpi_scale()
|
||||||
|
$if android {
|
||||||
|
w := ctx.config.width
|
||||||
|
h := ctx.config.height
|
||||||
|
dw := sapp.width()
|
||||||
|
dh := sapp.height()
|
||||||
|
if dw <= dh {
|
||||||
|
if w <= 0 {
|
||||||
|
s = 1.0
|
||||||
|
} else {
|
||||||
|
s = f32(dw) / w
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if h <= 0 {
|
||||||
|
s = 1.0
|
||||||
|
} else {
|
||||||
|
s = f32(dh) / h
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// NB: on older X11, `Xft.dpi` from ~/.Xresources, that sokol uses,
|
||||||
|
// may not be set which leads to sapp.dpi_scale reporting incorrectly 0.0
|
||||||
|
if s < 0.1 {
|
||||||
|
s = 1.0
|
||||||
|
}
|
||||||
|
ctx.scale = s
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (ctx Context) window_size() Size {
|
||||||
|
s := ctx.scale
|
||||||
|
return Size{int(sapp.width() / s), int(sapp.height() / s)}
|
||||||
|
}
|
||||||
|
|
||||||
//---- public module functions
|
//---- public module functions
|
||||||
|
|
||||||
// dpi_scale returns the DPI scale coefficient for the screen
|
// dpi_scale returns the DPI scale coefficient for the screen
|
||||||
|
// Do not use for Android development, use `Context.scale` instead.
|
||||||
pub fn dpi_scale() f32 {
|
pub fn dpi_scale() f32 {
|
||||||
mut s := sapp.dpi_scale()
|
mut s := sapp.dpi_scale()
|
||||||
$if android {
|
$if android {
|
||||||
@ -514,6 +549,7 @@ pub fn screen_size() Size {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// window_size returns the `Size` of the active window
|
// window_size returns the `Size` of the active window
|
||||||
|
// Do not use for Android development, use `Context.window_size()` instead.
|
||||||
pub fn window_size() Size {
|
pub fn window_size() Size {
|
||||||
s := dpi_scale()
|
s := dpi_scale()
|
||||||
return Size{int(sapp.width() / s), int(sapp.height() / s)}
|
return Size{int(sapp.width() / s), int(sapp.height() / s)}
|
||||||
|
Loading…
Reference in New Issue
Block a user