From 4e1b1900ed22962add76357f0248decb71a9e4ac Mon Sep 17 00:00:00 2001 From: Don Bright Date: Thu, 12 Sep 2013 00:42:38 -0500 Subject: remove redundant code diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc index adaec4a..09070d5 100644 --- a/src/CGALEvaluator.cc +++ b/src/CGALEvaluator.cc @@ -216,7 +216,7 @@ CGAL_Nef_polyhedron CGALEvaluator::applyResize(const CgaladvNode &node) bbox_size.push_back( bb.ymax()-bb.ymin() ); bbox_size.push_back( bb.zmax()-bb.zmin() ); int newsizemax_index = 0; - for (int i=0;i<3;i++) { + for (int i=0;isave(output); } +enum Previewer { OPENCSG, THROWN } previewer; + #ifdef ENABLE_OPENCSG #include "OpenCSGRenderer.h" #include #endif +#include "ThrownTogetherRenderer.h" -void export_png_with_opencsg(Tree &tree, Camera &cam, std::ostream &output) +void export_png_preview_common( Tree &tree, Camera &cam, std::ostream &output, Previewer previewer = OPENCSG ) { -#ifdef ENABLE_OPENCSG CsgInfo csgInfo = CsgInfo(); if ( !csgInfo.compile_chains( tree ) ) { - fprintf(stderr,"Couldn't initialize OpenCSG chains\n"); + fprintf(stderr,"Couldn't initialize CSG chains\n"); return; } @@ -71,7 +73,16 @@ void export_png_with_opencsg(Tree &tree, Camera &cam, std::ostream &output) return; } - OpenCSGRenderer opencsgRenderer(csgInfo.root_chain, csgInfo.highlights_chain, csgInfo.background_chain, csgInfo.glview->shaderinfo); + Renderer *renderer; + if ( previewer == OPENCSG) { +#ifdef ENABLE_OPENCSG + OpenCSGRenderer openCSGRenderer(csgInfo.root_chain, csgInfo.highlights_chain, csgInfo.background_chain, csgInfo.glview->shaderinfo); + renderer = &openCSGRenderer; +#endif + } else { + ThrownTogetherRenderer thrownTogetherRenderer( csgInfo.root_chain, csgInfo.highlights_chain, csgInfo.background_chain ); + renderer = &thrownTogetherRenderer; + } if (cam.type == Camera::NONE) { cam.type = Camera::VECTOR; @@ -86,51 +97,29 @@ void export_png_with_opencsg(Tree &tree, Camera &cam, std::ostream &output) } csgInfo.glview->setCamera( cam ); - csgInfo.glview->setRenderer(&opencsgRenderer); +#ifdef ENABLE_OPENCSG + csgInfo.glview->setRenderer(renderer); OpenCSG::setContext(0); OpenCSG::setOption(OpenCSG::OffscreenSetting, OpenCSG::FrameBufferObject); +#else + csgInfo.glview->setRenderer(renderer); +#endif csgInfo.glview->paintGL(); csgInfo.glview->save(output); +} + +void export_png_with_opencsg(Tree &tree, Camera &cam, std::ostream &output) +{ +#ifdef ENABLE_OPENCSG + export_png_preview_common( tree, cam, output, OPENCSG ); #else fprintf(stderr,"This openscad was built without OpenCSG support\n"); #endif } -#include "ThrownTogetherRenderer.h" void export_png_with_throwntogether(Tree &tree, Camera &cam, std::ostream &output) { - CsgInfo csgInfo = CsgInfo(); - if ( !csgInfo.compile_chains( tree ) ) { - fprintf(stderr,"Couldn't initialize OpenCSG chains\n"); - return; - } - - try { - csgInfo.glview = new OffscreenView( cam.pixel_width, cam.pixel_height ); - } catch (int error) { - fprintf(stderr,"Can't create OpenGL OffscreenView. Code: %i.\n", error); - return; - } - - ThrownTogetherRenderer thrownTogetherRenderer( csgInfo.root_chain, - csgInfo.highlights_chain, csgInfo.background_chain ); - - if (cam.type == Camera::NONE) { - cam.type = Camera::VECTOR; - double radius = 1.0; - if (csgInfo.root_chain) { - BoundingBox bbox = csgInfo.root_chain->getBoundingBox(); - cam.center = (bbox.min() + bbox.max()) / 2; - radius = (bbox.max() - bbox.min()).norm() / 2; - } - Vector3d cameradir(1, 1, -0.5); - cam.eye = cam.center - radius*1.8*cameradir; - } - - csgInfo.glview->setCamera( cam ); - csgInfo.glview->setRenderer(&thrownTogetherRenderer); - csgInfo.glview->paintGL(); - csgInfo.glview->save(output); + export_png_preview_common( tree, cam, output, THROWN ); } -- cgit v0.10.1