summaryrefslogtreecommitdiffstats
path: root/libdimension/texture.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2009-11-09 15:20:58 -0500
committerTavian Barnes <tavianator@gmail.com>2009-11-09 16:07:33 -0500
commit5138e55d3eb41255b1436d40ceba134876c3c5cd (patch)
tree5a3e00248c328b097c4b71e225c597d19a372363 /libdimension/texture.c
parent319491781c1389d82897075b6d890e74d82a08a9 (diff)
downloaddimension-5138e55d3eb41255b1436d40ceba134876c3c5cd.tar.xz
Add support for finishes (BRDFs).
Diffstat (limited to 'libdimension/texture.c')
-rw-r--r--libdimension/texture.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/libdimension/texture.c b/libdimension/texture.c
index 3867628..a9d7de1 100644
--- a/libdimension/texture.c
+++ b/libdimension/texture.c
@@ -21,7 +21,7 @@
#include "dimension.h"
#include <stdlib.h> /* For malloc */
-/* Allocate an dummy pigment */
+/* Allocate a dummy pigment */
dmnsn_pigment *
dmnsn_new_pigment()
{
@@ -44,6 +44,29 @@ dmnsn_delete_pigment(dmnsn_pigment *pigment)
}
}
+/* Allocate a dummy finish */
+dmnsn_finish *
+dmnsn_new_finish()
+{
+ dmnsn_finish *finish = malloc(sizeof(dmnsn_finish));
+ if (finish) {
+ finish->free_fn = NULL;
+ }
+ return finish;
+}
+
+/* Free a finish */
+void
+dmnsn_delete_finish(dmnsn_finish *finish)
+{
+ if (finish) {
+ if (finish->free_fn) {
+ (*finish->free_fn)(finish->ptr);
+ }
+ free(finish);
+ }
+}
+
/* Allocate a dummy texture */
dmnsn_texture *
dmnsn_new_texture()
@@ -51,15 +74,17 @@ dmnsn_new_texture()
dmnsn_texture *texture = malloc(sizeof(dmnsn_texture));
if (texture) {
texture->pigment = NULL;
+ texture->finish = NULL;
}
return texture;
}
-/* Free a dummy texture */
+/* Free a texture */
void
dmnsn_delete_texture(dmnsn_texture *texture)
{
if (texture) {
+ dmnsn_delete_finish(texture->finish);
dmnsn_delete_pigment(texture->pigment);
free(texture);
}