began ppm struct passing
This commit is contained in:
parent
ee59abaeee
commit
55f0d4d9a8
57
ppm.odin
Normal file
57
ppm.odin
Normal file
@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import "core:c"
|
||||
import "core:fmt"
|
||||
import "core:os"
|
||||
import "core:strconv"
|
||||
import "core:strings"
|
||||
|
||||
PPM_MAGIC_NUMBER :: enum {
|
||||
P6,
|
||||
P3,
|
||||
}
|
||||
|
||||
Ppm_file :: struct {
|
||||
magic_num: PPM_MAGIC_NUMBER,
|
||||
width: int,
|
||||
height: int,
|
||||
data: []byte,
|
||||
}
|
||||
|
||||
load_ppm :: proc(ppm_file: ^Ppm_file, filename: string) -> (success: bool) {
|
||||
if !strings.has_suffix(filename, ".ppm") {
|
||||
fmt.eprintfln("ERROR: File %s does not have a valid ppm extention (.ppm)", filename)
|
||||
return false
|
||||
}
|
||||
|
||||
succ: bool
|
||||
ppm_file.data, succ = os.read_entire_file_from_filename(filename, context.temp_allocator)
|
||||
if !succ {
|
||||
fmt.eprintfln("ERROR: Failed to load file: %s ", filename)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
ppm_parse :: proc(ppm_file: ^Ppm_file) {
|
||||
|
||||
it := string(ppm_file.data)
|
||||
for line in strings.split_lines_iterator(&it) {
|
||||
if strings.starts_with(line, "#") {continue} //ignore comments
|
||||
if strings.starts_with(line, "P") {
|
||||
num, _ := strconv.parse_int(strings.trim(line, "P"))
|
||||
if num == 3 {
|
||||
ppm_file.magic_num = .P3
|
||||
} else if num == 6 {
|
||||
ppm_file.magic_num = .P6
|
||||
}
|
||||
}
|
||||
|
||||
w_h_parts := strings.split(line, " ")
|
||||
if len(w_h_parts) == 2 {
|
||||
ppm_file.width, _ = strconv.parse_int(w_h_parts[0])
|
||||
ppm_file.height, _ = strconv.parse_int(w_h_parts[1])
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user