mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: remove the need for [console] for gg or ui programs on windows (#15912)
This commit is contained in:
parent
79a473f8ec
commit
816e9319d7
|
@ -6175,9 +6175,11 @@ fn C.DefWindowProc(hwnd int, msg int, lparam int, wparam int)
|
||||||
type FastFn = fn (int) bool
|
type FastFn = fn (int) bool
|
||||||
|
|
||||||
// Windows only:
|
// Windows only:
|
||||||
// If a default graphics library is imported (ex. gg, ui), then the graphical window takes
|
// Without this attribute all graphical apps will have the following behavior on Windows:
|
||||||
// priority and no console window is created, effectively disabling println() statements.
|
// If run from a console or terminal; keep the terminal open so all (e)println statements can be viewed.
|
||||||
// Use to explicitly create console window. Valid before main() only.
|
// If run from e.g. Explorer, by double-click; app is opened, but no terminal is opened, and no (e)println output can be seen.
|
||||||
|
// Use it to force-open a terminal to view output in, even if the app is started from Explorer.
|
||||||
|
// Valid before main() only.
|
||||||
[console]
|
[console]
|
||||||
fn main() {
|
fn main() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,8 +147,6 @@ fn on_init(mut app App) {
|
||||||
app.resize()
|
app.resize()
|
||||||
}
|
}
|
||||||
|
|
||||||
// is needed for easier diagnostics on windows
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println("Press 'q' to quit.")
|
println("Press 'q' to quit.")
|
||||||
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
|
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
|
||||||
|
|
|
@ -93,8 +93,6 @@ fn (mut app App) resize() {
|
||||||
app.ui.height = size.height
|
app.ui.height = size.height
|
||||||
}
|
}
|
||||||
|
|
||||||
// is needed for easier diagnostics on windows
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
|
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
|
||||||
$if android {
|
$if android {
|
||||||
|
|
|
@ -222,7 +222,6 @@ fn graphics_keydown(code gg.KeyCode, mod gg.Modifier, mut state AppState) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut state := &AppState{}
|
mut state := &AppState{}
|
||||||
state.gg = gg.new_context(
|
state.gg = gg.new_context(
|
||||||
|
|
|
@ -403,8 +403,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
|
||||||
* Main
|
* Main
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
// is needed for easier diagnostics on windows
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// App init
|
// App init
|
||||||
mut app := &App{
|
mut app := &App{
|
||||||
|
|
|
@ -577,7 +577,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
|
||||||
* Main
|
* Main
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
[console] // is needed for easier diagnostics on windows
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// App init
|
// App init
|
||||||
mut app := &App{
|
mut app := &App{
|
||||||
|
|
|
@ -392,7 +392,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Main
|
* Main
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
[console] // is needed for easier diagnostics on windows
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// App init
|
// App init
|
||||||
mut app := &App{
|
mut app := &App{
|
||||||
|
|
|
@ -586,7 +586,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Main
|
* Main
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
[console] // is needed for easier diagnostics on windows
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// App init
|
// App init
|
||||||
mut app := &App{
|
mut app := &App{
|
||||||
|
|
|
@ -475,7 +475,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Main
|
* Main
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
[console] // is needed for easier diagnostics on windows
|
|
||||||
fn main(){
|
fn main(){
|
||||||
// App init
|
// App init
|
||||||
mut app := &App{
|
mut app := &App{
|
||||||
|
|
|
@ -265,8 +265,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Main
|
* Main
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
// is needed for easier diagnostics on windows
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
/*
|
/*
|
||||||
obj.tst()
|
obj.tst()
|
||||||
|
|
|
@ -13,7 +13,6 @@ mut:
|
||||||
font_normal int
|
font_normal int
|
||||||
}
|
}
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut color_action := gfx.ColorAttachmentAction{
|
mut color_action := gfx.ColorAttachmentAction{
|
||||||
action: .clear
|
action: .clear
|
||||||
|
|
|
@ -61,7 +61,6 @@ mut:
|
||||||
inited bool
|
inited bool
|
||||||
}
|
}
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut color_action := gfx.ColorAttachmentAction{
|
mut color_action := gfx.ColorAttachmentAction{
|
||||||
action: .clear
|
action: .clear
|
||||||
|
|
|
@ -116,7 +116,6 @@ fn my_event_manager(mut ev gg.Event, mut app App_data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut app := &App_data{
|
mut app := &App_data{
|
||||||
gg: 0
|
gg: 0
|
||||||
|
|
|
@ -761,8 +761,6 @@ fn load_and_show(file_list []string, mut app App) {
|
||||||
* Main
|
* Main
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
// is needed for easier diagnostics on windows
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// mut font_path := os.resource_abs_path(os.join_path('../assets/fonts/', 'RobotoMono-Regular.ttf'))
|
// mut font_path := os.resource_abs_path(os.join_path('../assets/fonts/', 'RobotoMono-Regular.ttf'))
|
||||||
font_name := 'RobotoMono-Regular.ttf'
|
font_name := 'RobotoMono-Regular.ttf'
|
||||||
|
|
1
vlib/gg/testdata/draw_simple_polygons.vv
vendored
1
vlib/gg/testdata/draw_simple_polygons.vv
vendored
|
@ -10,7 +10,6 @@ mut:
|
||||||
edge int = 3
|
edge int = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println('rotation: left arrow key, right arrow key')
|
println('rotation: left arrow key, right arrow key')
|
||||||
println('center polygon edge: up arrow key, down arrow key')
|
println('center polygon edge: up arrow key, down arrow key')
|
||||||
|
|
1
vlib/gg/testdata/remove_image_from_cache.vv
vendored
1
vlib/gg/testdata/remove_image_from_cache.vv
vendored
|
@ -3,7 +3,6 @@ module main
|
||||||
import gg
|
import gg
|
||||||
import sokol.gfx
|
import sokol.gfx
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut context := gg.new_context(
|
mut context := gg.new_context(
|
||||||
frame_fn: frame
|
frame_fn: frame
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
[direct_array_access; inline; unsafe]
|
[direct_array_access; inline; unsafe]
|
||||||
fn heavily_tagged() {}
|
fn heavily_tagged() {}
|
||||||
|
|
||||||
// console attribute for easier diagnostics on windows
|
// console attribute to force-open a console for easier diagnostics on windows
|
||||||
// also it's not safe to use
|
// also it's not safe to use
|
||||||
[console; unsafe]
|
[console; unsafe]
|
||||||
fn dangerous_console() {}
|
fn dangerous_console() {}
|
||||||
|
|
|
@ -5,6 +5,6 @@
|
||||||
[tom: 'jerry']
|
[tom: 'jerry']
|
||||||
fn heavily_tagged() {}
|
fn heavily_tagged() {}
|
||||||
|
|
||||||
[console] // console attribute for easier diagnostics on windows
|
[console] // console attribute to force-open a console for easier diagnostics on windows
|
||||||
[unsafe] // also it's not safe to use
|
[unsafe] // also it's not safe to use
|
||||||
fn dangerous_console() {}
|
fn dangerous_console() {}
|
||||||
|
|
|
@ -69,6 +69,20 @@ fn (mut g Gen) gen_c_main_function_only_header() {
|
||||||
g.writeln('\tcmd_line_to_argv CommandLineToArgvW = (cmd_line_to_argv)GetProcAddress(shell32_module, "CommandLineToArgvW");')
|
g.writeln('\tcmd_line_to_argv CommandLineToArgvW = (cmd_line_to_argv)GetProcAddress(shell32_module, "CommandLineToArgvW");')
|
||||||
g.writeln('\tint ___argc;')
|
g.writeln('\tint ___argc;')
|
||||||
g.writeln('\twchar_t** ___argv = CommandLineToArgvW(full_cmd_line, &___argc);')
|
g.writeln('\twchar_t** ___argv = CommandLineToArgvW(full_cmd_line, &___argc);')
|
||||||
|
|
||||||
|
g.writeln('BOOL con_valid = FALSE;')
|
||||||
|
if g.force_main_console {
|
||||||
|
g.writeln('con_valid = AllocConsole();')
|
||||||
|
} else {
|
||||||
|
g.writeln('con_valid = AttachConsole(ATTACH_PARENT_PROCESS);')
|
||||||
|
}
|
||||||
|
g.writeln('if (con_valid) {')
|
||||||
|
g.writeln('\tFILE* res_fp = 0;')
|
||||||
|
g.writeln('\terrno_t err;')
|
||||||
|
g.writeln('\terr = freopen_s(&res_fp, "CON", "w", stdout);')
|
||||||
|
g.writeln('\terr = freopen_s(&res_fp, "CON", "w", stderr);')
|
||||||
|
g.writeln('\t(void)err;')
|
||||||
|
g.writeln('}')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Console application
|
// Console application
|
||||||
|
|
|
@ -3,7 +3,6 @@ module main
|
||||||
import gg
|
import gg
|
||||||
import gx
|
import gx
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
x := gg.new_context(
|
x := gg.new_context(
|
||||||
bg_color: gx.rgb(174, 198, 255)
|
bg_color: gx.rgb(174, 198, 255)
|
||||||
|
|
|
@ -57,7 +57,6 @@ Let's start with a simple snippet of code:
|
||||||
import os
|
import os
|
||||||
import x.ttf
|
import x.ttf
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut ttf_font := ttf.TTF_File{}
|
mut ttf_font := ttf.TTF_File{}
|
||||||
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
|
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
|
||||||
|
@ -75,7 +74,6 @@ At this point we can render a simple text:
|
||||||
import os
|
import os
|
||||||
import x.ttf
|
import x.ttf
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut ttf_font := ttf.TTF_File{}
|
mut ttf_font := ttf.TTF_File{}
|
||||||
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
|
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
|
||||||
|
@ -139,7 +137,6 @@ Draw text block draw a justified and indented block of multiline text in the bit
|
||||||
import os
|
import os
|
||||||
import x.ttf
|
import x.ttf
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut ttf_font := ttf.TTF_File{}
|
mut ttf_font := ttf.TTF_File{}
|
||||||
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
|
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
|
||||||
|
@ -268,7 +265,6 @@ fn draw_frame(mut app App_data) {
|
||||||
app.gg.end()
|
app.gg.end()
|
||||||
}
|
}
|
||||||
|
|
||||||
[console]
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut app := &App_data{
|
mut app := &App_data{
|
||||||
gg: 0
|
gg: 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user