shithub: libobj

Download patch

ref: 074b1e1072158a1b687cf2ae8ebd5397948e9262
parent: 2f612ec29e18ac8cf1a83fd341508ab7b753bdab
author: rodri <rgl@antares-labs.eu>
date: Mon Jun 16 13:08:19 EDT 2025

simplify readimagefile()

--- a/obj.c
+++ b/obj.c
@@ -139,43 +139,28 @@
 }
 
 static Memimage *
-readtga(char *path)
-{
-	return genreadimage("tga", path);
-}
-
-static Memimage *
-readpng(char *path)
-{
-	return genreadimage("png", path);
-}
-
-static Memimage *
-readjpg(char *path)
-{
-	return genreadimage("jpg", path);
-}
-
-static Memimage *
 readimagefile(char *path)
 {
-	Memimage *i;
 	char *ext;
+	static struct {
+		char *ext;
+		char *prog;
+	} fmttab[] = {
+		"tga", "tga",
+		"png", "png",
+		"jpg", "jpg",
+		"jpeg", "jpg",
+	}, *fmt;
 
-	i = nil;
 	ext = strrchr(path, '.');
 	if(ext++ != nil){
-		if(strcmp(ext, "tga") == 0)
-			i = readtga(path);
-		else if(strcmp(ext, "png") == 0)
-			i = readpng(path);
-		else if(strcmp(ext, "jpg") == 0)
-			i = readjpg(path);
-		else
-			werrstr("file format not supported");
+		for(fmt = &fmttab[0]; fmt < fmttab+nelem(fmttab); fmt++)
+			if(strcmp(ext, fmt->ext) == 0)
+				return genreadimage(fmt->prog, path);
+		werrstr("file format not supported");
 	}else
 		werrstr("unknown format");
-	return i;
+	return nil;
 }
 
 static void
@@ -998,6 +983,9 @@
 			n += fmtprint(f, "Ni %g\n", m->Ni);
 			n += fmtprint(f, "d %g\n", m->d);
 			n += fmtprint(f, "illum %d\n", m->illum);
+			n += fmtprint(f, "map_Kd %s_diffuse.png\n", m->name);
+			n += fmtprint(f, "map_Ks %s_specular.png\n", m->name);
+			n += fmtprint(f, "norm %s_normal.png\n", m->name);
 			n += fmtprint(f, "\n");
 		}
 
--