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
event_fn: on_event
user_data: app
init_fn: init_images
init_fn: app.init_images_wrapper
font_path: font_path
)
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 {
background := os.read_apk_asset('img/background.png') or { panic(err) }
app.background = app.gg.create_image_from_byte_array(background)
bird := os.read_apk_asset('img/bird.png') or { panic(err) }
app.bird = app.gg.create_image_from_byte_array(bird)
pipetop := os.read_apk_asset('img/pipetop.png') or { panic(err) }
app.pipetop = app.gg.create_image_from_byte_array(pipetop)
pipebottom := os.read_apk_asset('img/pipebottom.png') or { panic(err) }
app.pipebottom = app.gg.create_image_from_byte_array(pipebottom)
background := os.read_apk_asset('img/background.png')!
app.background = app.gg.create_image_from_byte_array(background)!
bird := os.read_apk_asset('img/bird.png')!
app.bird = app.gg.create_image_from_byte_array(bird)!
pipetop := os.read_apk_asset('img/pipetop.png')!
app.pipetop = app.gg.create_image_from_byte_array(pipetop)!
pipebottom := os.read_apk_asset('img/pipebottom.png')!
app.pipebottom = app.gg.create_image_from_byte_array(pipebottom)!
} $else {
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.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.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.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'))!
}
}

View File

@ -12,9 +12,9 @@ pub mut:
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'))
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) {

View File

@ -30,7 +30,7 @@ fn main() {
init_fn: init_images
)
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()
}

View File

@ -10,7 +10,9 @@ pub mut:
}
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() {

View File

@ -82,7 +82,7 @@ fn main() {
fn init_images(mut app App) {
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) {

View File

@ -25,11 +25,10 @@ pub mut:
}
// 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")')
if !os.exists(file) {
return Image{}
return error('image file "${file}" not found')
}
$if macos {
if ctx.native_rendering {
@ -47,7 +46,7 @@ pub fn (ctx &Context) create_image(file string) Image {
if !gfx.is_valid() {
// Sokol is not initialized yet, add stbi object to a queue/cache
// ctx.image_queue << file
stb_img := stbi.load(file) or { return Image{} }
stb_img := stbi.load(file)!
img := Image{
width: stb_img.width
height: stb_img.height
@ -220,8 +219,8 @@ fn create_image(file string) Image {
// memory buffer `buf` of size `bufsize`.
//
// See also: create_image_from_byte_array
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{} }
pub fn (mut ctx Context) create_image_from_memory(buf &u8, bufsize int) !Image {
stb_img := stbi.load_from_memory(buf, bufsize)!
mut img := Image{
width: stb_img.width
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`.
//
// 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)
}