/*
	ZTessellatorBase.h
	Author: James Russell <jcrussell@762studios.com>

	Purpose: TODO

	Changelog
	2011/09/18 - creation (jcrussell)
*/

#pragma once

#ifndef _ZTESSELLATORBASE_HPP
#define _ZTESSELLATORBASE_HPP

#include <ZRendererUtil/ZTessellator.hpp>

//#if WINDOWS
#include <windows.h>
//#endif

#include <GL/glu.h> //TODO: remove dependency on GLU for tessellation

class ZTessellatorBase : public ZTessellator
{
protected:
	//Outline Evaluator to use
	ZOutlineEvaluator* Evaluator;

	//Tessellator (TODO: remove dependency on GLU)
	GLUtesselator *Tessellator;

public:
	/*
	Default Constructor.
	*/
	ZTessellatorBase(ZOutlineEvaluator* _eval);

	/*
	Destructor.
	*/
	virtual ~ZTessellatorBase();

	//Subclass Implementation
	virtual void Tesselate();

	//Not Implemented
	virtual void BeginTessellate() = 0;

	//Not Implemented
	virtual void EndTessellate() = 0;

	//Not Implemented
	virtual void BeginPoly( ZTesselatorPolyType type ) = 0;

	//Not Implemented
	virtual void EndPoly() = 0;

	//Not Implemented
	virtual void Vertex( SST_Vec2f* p ) = 0;
};

#endif
 