1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

gg: make create_image() return !Image

This commit is contained in:
Alexander Medvednikov 2023-03-29 19:04:41 +02:00
parent 75deb66fd4
commit d60ceb45cd
6 changed files with 31 additions and 26 deletions

View File

@ -190,7 +190,7 @@ fn main() {
frame_fn: frame frame_fn: frame
event_fn: on_event event_fn: on_event
user_data: app user_data: app
init_fn: init_images init_fn: app.init_images_wrapper
font_path: font_path font_path: font_path
) )
app.nv = neuroevolution.Generations{ app.nv = neuroevolution.Generations{
@ -209,21 +209,25 @@ fn (mut app App) run() {
} }
} }
fn init_images(mut app App) { fn (mut app App) init_images_wrapper() {
app.init_images() or { panic(err) }
}
fn (mut app App) init_images() ! {
$if android { $if android {
background := os.read_apk_asset('img/background.png') or { panic(err) } background := os.read_apk_asset('img/background.png')!
app.background = app.gg.create_image_from_byte_array(background) app.background = app.gg.create_image_from_byte_array(background)!
bird := os.read_apk_asset('img/bird.png') or { panic(err) } bird := os.read_apk_asset('img/bird.png')!
app.bird = app.gg.create_image_from_byte_array(bird) app.bird = app.gg.create_image_from_byte_array(bird)!
pipetop := os.read_apk_asset('img/pipetop.png') or { panic(err) } pipetop := os.read_apk_asset('img/pipetop.png')!
app.pipetop = app.gg.create_image_from_byte_array(pipetop) app.pipetop = app.gg.create_image_from_byte_array(pipetop)!
pipebottom := os.read_apk_asset('img/pipebottom.png') or { panic(err) } pipebottom := os.read_apk_asset('img/pipebottom.png')!
app.pipebottom = app.gg.create_image_from_byte_array(pipebottom) app.pipebottom = app.gg.create_image_from_byte_array(pipebottom)!
} $else { } $else {
app.background = app.gg.create_image(os.resource_abs_path('assets/img/background.png')) app.background = app.gg.create_image(os.resource_abs_path('assets/img/background.png'))!
app.bird = app.gg.create_image(os.resource_abs_path('assets/img/bird.png')) app.bird = app.gg.create_image(os.resource_abs_path('assets/img/bird.png'))!
app.pipetop = app.gg.create_image(os.resource_abs_path('assets/img/pipetop.png')) app.pipetop = app.gg.create_image(os.resource_abs_path('assets/img/pipetop.png'))!
app.pipebottom = app.gg.create_image(os.resource_abs_path('assets/img/pipebottom.png')) app.pipebottom = app.gg.create_image(os.resource_abs_path('assets/img/pipebottom.png'))!
} }
} }

View File

@ -12,9 +12,9 @@ pub mut:
image gg.Image image gg.Image
} }
pub fn (mut window Window) init(_ voidptr) { pub fn (mut window Window) init() {
logo_path := os.resource_abs_path(os.join_path('..', 'assets', 'logo.png')) logo_path := os.resource_abs_path(os.join_path('..', 'assets', 'logo.png'))
window.image = window.ctx.create_image(logo_path) window.image = window.ctx.create_image(logo_path) or { panic(err) }
} }
pub fn (mut window Window) draw(_ voidptr) { pub fn (mut window Window) draw(_ voidptr) {

View File

@ -30,7 +30,7 @@ fn main() {
init_fn: init_images init_fn: init_images
) )
mut logo_path := os.resource_abs_path(os.join_path('..', 'assets', 'logo.png')) mut logo_path := os.resource_abs_path(os.join_path('..', 'assets', 'logo.png'))
app.image = app.gg.create_image(logo_path).id app.image = app.gg.create_image(logo_path)!.id
app.gg.run() app.gg.run()
} }

View File

@ -10,7 +10,9 @@ pub mut:
} }
pub fn (mut window Window) init() { pub fn (mut window Window) init() {
window.img = window.ctx.create_image(os.resource_abs_path('../assets/logo.png')) window.img = window.ctx.create_image(os.resource_abs_path('../assets/logo.png')) or {
panic(err)
}
} }
pub fn (mut window Window) draw() { pub fn (mut window Window) draw() {

View File

@ -82,7 +82,7 @@ fn main() {
fn init_images(mut app App) { fn init_images(mut app App) {
mut logo_path := os.resource_abs_path(os.join_path('..', 'assets', 'logo.png')) mut logo_path := os.resource_abs_path(os.join_path('..', 'assets', 'logo.png'))
app.image = app.gg.create_image(logo_path) app.image = app.gg.create_image(logo_path) or { panic(err) }
} }
fn frame(mut app App) { fn frame(mut app App) {

View File

@ -25,11 +25,10 @@ pub mut:
} }
// create_image creates an `Image` from `file`. // create_image creates an `Image` from `file`.
// TODO return !Image pub fn (ctx &Context) create_image(file string) !Image {
pub fn (ctx &Context) create_image(file string) Image {
// println('\ncreate_image("$file")') // println('\ncreate_image("$file")')
if !os.exists(file) { if !os.exists(file) {
return Image{} return error('image file "${file}" not found')
} }
$if macos { $if macos {
if ctx.native_rendering { if ctx.native_rendering {
@ -47,7 +46,7 @@ pub fn (ctx &Context) create_image(file string) Image {
if !gfx.is_valid() { if !gfx.is_valid() {
// Sokol is not initialized yet, add stbi object to a queue/cache // Sokol is not initialized yet, add stbi object to a queue/cache
// ctx.image_queue << file // ctx.image_queue << file
stb_img := stbi.load(file) or { return Image{} } stb_img := stbi.load(file)!
img := Image{ img := Image{
width: stb_img.width width: stb_img.width
height: stb_img.height height: stb_img.height
@ -220,8 +219,8 @@ fn create_image(file string) Image {
// memory buffer `buf` of size `bufsize`. // memory buffer `buf` of size `bufsize`.
// //
// See also: create_image_from_byte_array // See also: create_image_from_byte_array
pub fn (mut ctx Context) create_image_from_memory(buf &u8, bufsize int) Image { pub fn (mut ctx Context) create_image_from_memory(buf &u8, bufsize int) !Image {
stb_img := stbi.load_from_memory(buf, bufsize) or { return Image{} } stb_img := stbi.load_from_memory(buf, bufsize)!
mut img := Image{ mut img := Image{
width: stb_img.width width: stb_img.width
height: stb_img.height height: stb_img.height
@ -239,7 +238,7 @@ pub fn (mut ctx Context) create_image_from_memory(buf &u8, bufsize int) Image {
// byte array `b`. // byte array `b`.
// //
// See also: create_image_from_memory // See also: create_image_from_memory
pub fn (mut ctx Context) create_image_from_byte_array(b []u8) Image { pub fn (mut ctx Context) create_image_from_byte_array(b []u8) !Image {
return ctx.create_image_from_memory(b.data, b.len) return ctx.create_image_from_memory(b.data, b.len)
} }