From 597b9a13dae1f514ca8afa56bab008cb67d4ac40 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sun, 12 Jul 2009 21:17:20 +0000 Subject: Add ability to set rendering quality. --- libdimensionxx/dimensionxx/scene.hpp | 26 ++++++++++++++++++++------ libdimensionxx/scene.cpp | 23 +++++++++++++++++++++-- 2 files changed, 41 insertions(+), 8 deletions(-) (limited to 'libdimensionxx') diff --git a/libdimensionxx/dimensionxx/scene.hpp b/libdimensionxx/dimensionxx/scene.hpp index 8b5270c..c79152f 100644 --- a/libdimensionxx/dimensionxx/scene.hpp +++ b/libdimensionxx/dimensionxx/scene.hpp @@ -25,12 +25,19 @@ namespace Dimension { + // Wrapper for dmnsn_quality + enum Quality { + RENDER_NONE = DMNSN_RENDER_NONE, + RENDER_OBJECTS = DMNSN_RENDER_OBJECTS, + RENDER_FULL = DMNSN_RENDER_FULL + }; + // Base scene class. Wraps a dmnsn_scene*. class Scene { public: // Allocate a dmnsn_scene* - Scene(const Color& background, Camera& camera, Canvas& canvas); + Scene(Camera& camera, Canvas& canvas); // Scene(const Scene& scene); @@ -38,14 +45,21 @@ namespace Dimension ~Scene(); // Element access - Color background() const; - Camera& camera(); - const Camera& camera() const; - Canvas& canvas(); - const Canvas& canvas() const; + Color background() const; + void background(const Color& color); + + Camera& camera(); + const Camera& camera() const; + + Canvas& canvas(); + const Canvas& canvas() const; + Array& objects(); const Array& objects() const; + Quality quality() const; + void quality(Quality quality); + // Access the wrapped C object. dmnsn_scene* dmnsn(); const dmnsn_scene* dmnsn() const; diff --git a/libdimensionxx/scene.cpp b/libdimensionxx/scene.cpp index f41f3b5..5695c1b 100644 --- a/libdimensionxx/scene.cpp +++ b/libdimensionxx/scene.cpp @@ -23,7 +23,7 @@ namespace Dimension { // Allocate a dmnsn_scene - Scene::Scene(const Color& background, Camera& camera, Canvas& canvas) + Scene::Scene(Camera& camera, Canvas& canvas) : m_scene(new dmnsn_scene*(dmnsn_new_scene())), m_camera(camera.copy()), m_canvas(new Canvas(canvas)), m_objects(dmnsn()->objects) { @@ -31,9 +31,10 @@ namespace Dimension throw Dimension_Error("Couldn't allocate scene."); } - dmnsn()->background = background.dmnsn(); + dmnsn()->background = Color(sRGB(0.0, 0.0, 0.0)).dmnsn(); dmnsn()->camera = this->camera().dmnsn(); dmnsn()->canvas = this->canvas().dmnsn(); + dmnsn()->quality = static_cast(RENDER_FULL); } // Delete the scene @@ -53,6 +54,12 @@ namespace Dimension return Color(dmnsn()->background); } + void + Scene::background(const Color& color) + { + dmnsn()->background = color.dmnsn(); + } + Camera& Scene::camera() { @@ -89,6 +96,18 @@ namespace Dimension return m_objects; } + Quality + Scene::quality() const + { + return static_cast(dmnsn()->quality); + } + + void + Scene::quality(Quality quality) + { + dmnsn()->quality = static_cast(quality); + } + // Access the wrapped C object. dmnsn_scene* -- cgit v1.2.3