Subversion Repositories gelsvn

Rev

Rev 403 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 *  VisObj.cpp
 *  GEL
 *
 *  Created by J. Andreas Bærentzen on 20/09/08.
 *  Copyright 2008 __MyCompanyName__. All rights reserved.
 *
 */

#include "VisObj.h"

#include <HMesh/load.h>

using namespace std;
using namespace CGLA;
using namespace HMesh;


int WINX=800, WINY=800;


bool VisObj::reload(string _file)
{
        if(_file != "") file = _file;
        mani.clear();
        if(!load(file, mani))
                return false;
        Vec3f c(0,0,0);
        float r = 5;
        mani.get_bsphere(c,r);
        view_ctrl.set_centre(c);
        view_ctrl.set_eye_dist(2*r);
        return true;
}


void VisObj::display(const std::string& display_method , bool smooth)
{
        if(create_display_list)
        {
                create_display_list = false;
                delete renderer;
                
                if(display_method.substr(0,4) == "wire")
                        renderer = new WireframeRenderer(mani, smooth);
                else if(display_method.substr(0,4) == "harm")
                        renderer = new HarmonicsRenderer(harmonics);
                else if(display_method.substr(0,3) == "iso")
                        renderer = new IsophoteLineRenderer(mani);
                else if(display_method.substr(0,3) == "ref")
                        renderer = new ReflectionLineRenderer(mani);
                else if(display_method.substr(0,3) == "gou")
                        renderer = new NormalRenderer(mani,smooth);
                else
                        renderer = new MetallicRenderer(mani);
                
        }
        view_ctrl.set_gl_modelview();
        renderer->draw();
}