From a8c789be9ab0fec65004118b7df373e84900cb1a Mon Sep 17 00:00:00 2001 From: rodri Date: Sat, 21 Sep 2024 16:15:21 +0000 Subject: camera: add a Camv constructor. --- camera.c | 24 ++++++++++++++++++------ graphics.h | 3 ++- util.c | 2 +- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/camera.c b/camera.c index 12f37eb..439c596 100644 --- a/camera.c +++ b/camera.c @@ -96,21 +96,33 @@ verifycfg(Camera *c) } Camera * -Cam(Rectangle vr, Renderer *r, Projection p, double fov, double n, double f) +Camv(Viewport *v, Renderer *r, Projection p, double fov, double n, double f) { Camera *c; - c = newcamera(); - c->view = mkviewport(vr); - if(c->view == nil){ - werrstr("mkviewport: %r"); + if(v == nil || r == nil) return nil; - } + + c = newcamera(); + c->view = v; c->rctl = r; configcamera(c, p, fov, n, f); return c; } +Camera * +Cam(Rectangle vr, Renderer *r, Projection p, double fov, double n, double f) +{ + Viewport *v; + + v = mkviewport(vr); + if(v == nil){ + werrstr("mkviewport: %r"); + return nil; + } + return Camv(v, r, p, fov, n, f); +} + Camera * newcamera(void) { diff --git a/graphics.h b/graphics.h index 089156a..2fd516e 100644 --- a/graphics.h +++ b/graphics.h @@ -368,6 +368,7 @@ struct Camera }; /* camera */ +Camera *Camv(Viewport*, Renderer*, Projection, double, double, double); Camera *Cam(Rectangle, Renderer*, Projection, double, double, double); Camera *newcamera(void); void delcamera(Camera*); @@ -443,7 +444,7 @@ Point2 maxpt2(Point2, Point2); Point3 modulapt3(Point3, Point3); Point3 minpt3(Point3, Point3); Point3 maxpt3(Point3, Point3); -Memimage *rgb(ulong); +Memimage *rgba(ulong); Memimage *dupmemimage(Memimage*); /* color */ diff --git a/util.c b/util.c index babaaf4..3ff7323 100644 --- a/util.c +++ b/util.c @@ -101,7 +101,7 @@ memsetl(void *dp, ulong v, usize len) } Memimage * -rgb(ulong c) +rgba(ulong c) { Memimage *i; -- cgit v1.2.3