Skip to content

Commit

Permalink
cgen: remove the need for [console] for gg or ui programs on windows (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
Larpon committed Sep 29, 2022
1 parent 79a473f commit 816e931
Show file tree
Hide file tree
Showing 21 changed files with 28 additions and 37 deletions.
8 changes: 5 additions & 3 deletions doc/docs.md
Expand Up @@ -6175,9 +6175,11 @@ fn C.DefWindowProc(hwnd int, msg int, lparam int, wparam int)
type FastFn = fn (int) bool
// Windows only:
// If a default graphics library is imported (ex. gg, ui), then the graphical window takes
// priority and no console window is created, effectively disabling println() statements.
// Use to explicitly create console window. Valid before main() only.
// Without this attribute all graphical apps will have the following behavior on Windows:
// If run from a console or terminal; keep the terminal open so all (e)println statements can be viewed.
// 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]
fn main() {
}
Expand Down
2 changes: 0 additions & 2 deletions examples/clock/clock.v
Expand Up @@ -147,8 +147,6 @@ fn on_init(mut app App) {
app.resize()
}

// is needed for easier diagnostics on windows
[console]
fn main() {
println("Press 'q' to quit.")
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
Expand Down
2 changes: 0 additions & 2 deletions examples/fireworks/fireworks.v
Expand Up @@ -93,8 +93,6 @@ fn (mut app App) resize() {
app.ui.height = size.height
}

// is needed for easier diagnostics on windows
[console]
fn main() {
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
$if android {
Expand Down
1 change: 0 additions & 1 deletion examples/gg/mandelbrot.v
Expand Up @@ -222,7 +222,6 @@ fn graphics_keydown(code gg.KeyCode, mod gg.Modifier, mut state AppState) {
}
}

[console]
fn main() {
mut state := &AppState{}
state.gg = gg.new_context(
Expand Down
2 changes: 0 additions & 2 deletions examples/sokol/01_cubes/cube.v
Expand Up @@ -403,8 +403,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
* Main
*
******************************************************************************/
// is needed for easier diagnostics on windows
[console]
fn main() {
// App init
mut app := &App{
Expand Down
1 change: 0 additions & 1 deletion examples/sokol/02_cubes_glsl/cube_glsl.v
Expand Up @@ -577,7 +577,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
* Main
*
******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main() {
// App init
mut app := &App{
Expand Down
1 change: 0 additions & 1 deletion examples/sokol/03_march_tracing_glsl/rt_glsl.v
Expand Up @@ -392,7 +392,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/******************************************************************************
* Main
******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main() {
// App init
mut app := &App{
Expand Down
1 change: 0 additions & 1 deletion examples/sokol/04_multi_shader_glsl/rt_glsl.v
Expand Up @@ -586,7 +586,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/******************************************************************************
* Main
******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main() {
// App init
mut app := &App{
Expand Down
1 change: 0 additions & 1 deletion examples/sokol/05_instancing_glsl/rt_glsl.v
Expand Up @@ -475,7 +475,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/******************************************************************************
* Main
******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main(){
// App init
mut app := &App{
Expand Down
2 changes: 0 additions & 2 deletions examples/sokol/06_obj_viewer/show_obj.v
Expand Up @@ -265,8 +265,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/******************************************************************************
* Main
******************************************************************************/
// is needed for easier diagnostics on windows
[console]
fn main() {
/*
obj.tst()
Expand Down
1 change: 0 additions & 1 deletion examples/sokol/fonts.v
Expand Up @@ -13,7 +13,6 @@ mut:
font_normal int
}

[console]
fn main() {
mut color_action := gfx.ColorAttachmentAction{
action: .clear
Expand Down
1 change: 0 additions & 1 deletion examples/sokol/freetype_raven.v
Expand Up @@ -61,7 +61,6 @@ mut:
inited bool
}

[console]
fn main() {
mut color_action := gfx.ColorAttachmentAction{
action: .clear
Expand Down
1 change: 0 additions & 1 deletion examples/ttf_font/example_ttf.v
Expand Up @@ -116,7 +116,6 @@ fn my_event_manager(mut ev gg.Event, mut app App_data) {
}
}

[console]
fn main() {
mut app := &App_data{
gg: 0
Expand Down
16 changes: 7 additions & 9 deletions examples/viewer/view.v
Expand Up @@ -444,7 +444,7 @@ fn frame(mut app App) {
if app.show_info_flag == true && app.scale > 1 {
mut bw := f32(0.25)
mut bh := f32(0.25 / app.img_ratio)
// manage the rotations
if rotation & 1 == 1 {
bw,bh = bh,bw
Expand All @@ -454,11 +454,11 @@ fn frame(mut app App) {
if rotation & 1 == 1 {
bx,by = by,bx
}
bh_old1 := bh
bh *= ratio
by += (bh_old1 - bh)
// draw the zoom icon
sgl.begin_quads()
r := int(u32(rotation) << 1)
Expand All @@ -467,17 +467,17 @@ fn frame(mut app App) {
sgl.v2f_t2f_c3b(bx + bw, by + bh, uv[(4 + r) & 7] , uv[(5 + r) & 7], c[0], c[1], c[2])
sgl.v2f_t2f_c3b(bx , by + bh, uv[(6 + r) & 7] , uv[(7 + r) & 7], c[0], c[1], c[2])
sgl.end()
// draw the zoom rectangle
sgl.disable_texture()
bw_old := bw
bh_old := bh
bw /= app.scale
bh /= app.scale
bx += (bw_old - bw) / 2 - (tr_x / 8) / app.scale
by += (bh_old - bh) / 2 - ((tr_y / 8) / app.scale) * ratio
c = [u8(255),255,0]! // yellow
sgl.begin_line_strip()
sgl.v2f_c3b(bx , by , c[0], c[1], c[2])
Expand Down Expand Up @@ -517,7 +517,7 @@ fn frame(mut app App) {
scale_str := "${app.scale:.2}"
text := "${num}/${of_num} [${app.img_w},${app.img_h}]=>[${x_screen},${y_screen}] ${app.item_list.lst[app.item_list.item_index].name} scale: ${scale_str} rotation: ${rotation_angle}"
//text := "${num}/${of_num}"
draw_text(mut app, text, 10, 10, 20)
draw_text(mut app, text, 10, 10, 20)
unsafe{
text.free()
}
Expand Down Expand Up @@ -761,8 +761,6 @@ fn load_and_show(file_list []string, mut app App) {
* Main
*
******************************************************************************/
// is needed for easier diagnostics on windows
[console]
fn main() {
// mut font_path := os.resource_abs_path(os.join_path('../assets/fonts/', 'RobotoMono-Regular.ttf'))
font_name := 'RobotoMono-Regular.ttf'
Expand Down
1 change: 0 additions & 1 deletion vlib/gg/testdata/draw_simple_polygons.vv
Expand Up @@ -10,7 +10,6 @@ mut:
edge int = 3
}

[console]
fn main() {
println('rotation: left arrow key, right arrow key')
println('center polygon edge: up arrow key, down arrow key')
Expand Down
1 change: 0 additions & 1 deletion vlib/gg/testdata/remove_image_from_cache.vv
Expand Up @@ -3,7 +3,6 @@ module main
import gg
import sokol.gfx

[console]
fn main() {
mut context := gg.new_context(
frame_fn: frame
Expand Down
2 changes: 1 addition & 1 deletion vlib/v/fmt/tests/attrs_expected.vv
Expand Up @@ -3,7 +3,7 @@
[direct_array_access; inline; unsafe]
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
[console; unsafe]
fn dangerous_console() {}
2 changes: 1 addition & 1 deletion vlib/v/fmt/tests/attrs_input.vv
Expand Up @@ -5,6 +5,6 @@
[tom: 'jerry']
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
fn dangerous_console() {}
14 changes: 14 additions & 0 deletions vlib/v/gen/c/cmain.v
Expand Up @@ -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('\tint ___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
}
// Console application
Expand Down
1 change: 0 additions & 1 deletion vlib/v/tests/skip_unused/gg_code.vv
Expand Up @@ -3,7 +3,6 @@ module main
import gg
import gx

[console]
fn main() {
x := gg.new_context(
bg_color: gx.rgb(174, 198, 255)
Expand Down
4 changes: 0 additions & 4 deletions vlib/x/ttf/README.md
Expand Up @@ -57,7 +57,6 @@ Let's start with a simple snippet of code:
import os
import x.ttf
[console]
fn main() {
mut ttf_font := ttf.TTF_File{}
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
Expand All @@ -75,7 +74,6 @@ At this point we can render a simple text:
import os
import x.ttf
[console]
fn main() {
mut ttf_font := ttf.TTF_File{}
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
Expand Down Expand Up @@ -139,7 +137,6 @@ Draw text block draw a justified and indented block of multiline text in the bit
import os
import x.ttf
[console]
fn main() {
mut ttf_font := ttf.TTF_File{}
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
Expand Down Expand Up @@ -268,7 +265,6 @@ fn draw_frame(mut app App_data) {
app.gg.end()
}
[console]
fn main() {
mut app := &App_data{
gg: 0
Expand Down

0 comments on commit 816e931

Please sign in to comment.