/* this file has been autogenerated by vtkNodeJsWrap */
/* editing this might proof futile */

#define VTK_WRAPPING_CXX
#define VTK_STREAMS_FWD_ONLY
#include <nan.h>

#include "vtkDataSetAlgorithmWrap.h"
#include "vtkCellQualityWrap.h"
#include "vtkObjectWrap.h"
#include "vtkCellWrap.h"
#include "../../plus/plus.h"

using namespace v8;

extern Nan::Persistent<v8::Object> vtkNodeJsNoWrap;
Nan::Persistent<v8::FunctionTemplate> VtkCellQualityWrap::ptpl;

VtkCellQualityWrap::VtkCellQualityWrap()
{ }

VtkCellQualityWrap::VtkCellQualityWrap(vtkSmartPointer<vtkCellQuality> _native)
{ native = _native; }

VtkCellQualityWrap::~VtkCellQualityWrap()
{ }

void VtkCellQualityWrap::Init(v8::Local<v8::Object> exports)
{
	Nan::SetAccessor(exports, Nan::New("vtkCellQuality").ToLocalChecked(), ConstructorGetter);
	Nan::SetAccessor(exports, Nan::New("CellQuality").ToLocalChecked(), ConstructorGetter);
}

void VtkCellQualityWrap::ConstructorGetter(
	v8::Local<v8::String> property,
	const Nan::PropertyCallbackInfo<v8::Value>& info)
{
	InitPtpl();
	info.GetReturnValue().Set(Nan::New(ptpl)->GetFunction());
}

void VtkCellQualityWrap::InitPtpl()
{
	if (!ptpl.IsEmpty()) return;
	v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(New);
	VtkDataSetAlgorithmWrap::InitPtpl( );
	tpl->Inherit(Nan::New<FunctionTemplate>(VtkDataSetAlgorithmWrap::ptpl));
	tpl->SetClassName(Nan::New("VtkCellQualityWrap").ToLocalChecked());
	tpl->InstanceTemplate()->SetInternalFieldCount(1);

	Nan::SetPrototypeMethod(tpl, "GetClassName", GetClassName);
	Nan::SetPrototypeMethod(tpl, "getClassName", GetClassName);

	Nan::SetPrototypeMethod(tpl, "GetQualityMeasure", GetQualityMeasure);
	Nan::SetPrototypeMethod(tpl, "getQualityMeasure", GetQualityMeasure);

	Nan::SetPrototypeMethod(tpl, "GetUndefinedQuality", GetUndefinedQuality);
	Nan::SetPrototypeMethod(tpl, "getUndefinedQuality", GetUndefinedQuality);

	Nan::SetPrototypeMethod(tpl, "GetUnsupportedGeometry", GetUnsupportedGeometry);
	Nan::SetPrototypeMethod(tpl, "getUnsupportedGeometry", GetUnsupportedGeometry);

	Nan::SetPrototypeMethod(tpl, "IsA", IsA);
	Nan::SetPrototypeMethod(tpl, "isA", IsA);

	Nan::SetPrototypeMethod(tpl, "NewInstance", NewInstance);
	Nan::SetPrototypeMethod(tpl, "newInstance", NewInstance);

	Nan::SetPrototypeMethod(tpl, "PixelArea", PixelArea);
	Nan::SetPrototypeMethod(tpl, "pixelArea", PixelArea);

	Nan::SetPrototypeMethod(tpl, "PolygonArea", PolygonArea);
	Nan::SetPrototypeMethod(tpl, "polygonArea", PolygonArea);

	Nan::SetPrototypeMethod(tpl, "SafeDownCast", SafeDownCast);
	Nan::SetPrototypeMethod(tpl, "safeDownCast", SafeDownCast);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasure", SetQualityMeasure);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasure", SetQualityMeasure);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToArea", SetQualityMeasureToArea);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToArea", SetQualityMeasureToArea);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToAspectBeta", SetQualityMeasureToAspectBeta);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToAspectBeta", SetQualityMeasureToAspectBeta);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToAspectFrobenius", SetQualityMeasureToAspectFrobenius);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToAspectFrobenius", SetQualityMeasureToAspectFrobenius);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToAspectGamma", SetQualityMeasureToAspectGamma);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToAspectGamma", SetQualityMeasureToAspectGamma);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToAspectRatio", SetQualityMeasureToAspectRatio);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToAspectRatio", SetQualityMeasureToAspectRatio);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToCollapseRatio", SetQualityMeasureToCollapseRatio);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToCollapseRatio", SetQualityMeasureToCollapseRatio);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToCondition", SetQualityMeasureToCondition);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToCondition", SetQualityMeasureToCondition);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToDiagonal", SetQualityMeasureToDiagonal);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToDiagonal", SetQualityMeasureToDiagonal);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToDimension", SetQualityMeasureToDimension);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToDimension", SetQualityMeasureToDimension);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToDistortion", SetQualityMeasureToDistortion);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToDistortion", SetQualityMeasureToDistortion);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToJacobian", SetQualityMeasureToJacobian);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToJacobian", SetQualityMeasureToJacobian);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToMaxAngle", SetQualityMeasureToMaxAngle);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToMaxAngle", SetQualityMeasureToMaxAngle);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToMaxAspectFrobenius", SetQualityMeasureToMaxAspectFrobenius);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToMaxAspectFrobenius", SetQualityMeasureToMaxAspectFrobenius);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToMaxEdgeRatio", SetQualityMeasureToMaxEdgeRatio);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToMaxEdgeRatio", SetQualityMeasureToMaxEdgeRatio);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToMedAspectFrobenius", SetQualityMeasureToMedAspectFrobenius);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToMedAspectFrobenius", SetQualityMeasureToMedAspectFrobenius);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToMinAngle", SetQualityMeasureToMinAngle);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToMinAngle", SetQualityMeasureToMinAngle);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToOddy", SetQualityMeasureToOddy);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToOddy", SetQualityMeasureToOddy);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToRadiusRatio", SetQualityMeasureToRadiusRatio);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToRadiusRatio", SetQualityMeasureToRadiusRatio);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToRelativeSizeSquared", SetQualityMeasureToRelativeSizeSquared);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToRelativeSizeSquared", SetQualityMeasureToRelativeSizeSquared);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToScaledJacobian", SetQualityMeasureToScaledJacobian);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToScaledJacobian", SetQualityMeasureToScaledJacobian);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToShape", SetQualityMeasureToShape);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToShape", SetQualityMeasureToShape);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToShapeAndSize", SetQualityMeasureToShapeAndSize);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToShapeAndSize", SetQualityMeasureToShapeAndSize);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToShear", SetQualityMeasureToShear);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToShear", SetQualityMeasureToShear);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToShearAndSize", SetQualityMeasureToShearAndSize);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToShearAndSize", SetQualityMeasureToShearAndSize);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToSkew", SetQualityMeasureToSkew);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToSkew", SetQualityMeasureToSkew);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToStretch", SetQualityMeasureToStretch);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToStretch", SetQualityMeasureToStretch);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToTaper", SetQualityMeasureToTaper);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToTaper", SetQualityMeasureToTaper);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToVolume", SetQualityMeasureToVolume);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToVolume", SetQualityMeasureToVolume);

	Nan::SetPrototypeMethod(tpl, "SetQualityMeasureToWarpage", SetQualityMeasureToWarpage);
	Nan::SetPrototypeMethod(tpl, "setQualityMeasureToWarpage", SetQualityMeasureToWarpage);

	Nan::SetPrototypeMethod(tpl, "SetUndefinedQuality", SetUndefinedQuality);
	Nan::SetPrototypeMethod(tpl, "setUndefinedQuality", SetUndefinedQuality);

	Nan::SetPrototypeMethod(tpl, "SetUnsupportedGeometry", SetUnsupportedGeometry);
	Nan::SetPrototypeMethod(tpl, "setUnsupportedGeometry", SetUnsupportedGeometry);

	Nan::SetPrototypeMethod(tpl, "TriangleStripArea", TriangleStripArea);
	Nan::SetPrototypeMethod(tpl, "triangleStripArea", TriangleStripArea);

#ifdef VTK_NODE_PLUS_VTKCELLQUALITYWRAP_INITPTPL
	VTK_NODE_PLUS_VTKCELLQUALITYWRAP_INITPTPL
#endif
	ptpl.Reset( tpl );
}

void VtkCellQualityWrap::New(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	if(!info.IsConstructCall())
	{
		Nan::ThrowError("Constructor not called in a construct call.");
		return;
	}

	if(info.Length() == 0)
	{
		vtkSmartPointer<vtkCellQuality> native = vtkSmartPointer<vtkCellQuality>::New();
		VtkCellQualityWrap* obj = new VtkCellQualityWrap(native);
		obj->Wrap(info.This());
	}
	else
	{
		if(info[0]->ToObject() != vtkNodeJsNoWrap )
		{
			Nan::ThrowError("Parameter Error");
			return;
		}
	}

	info.GetReturnValue().Set(info.This());
}

void VtkCellQualityWrap::GetClassName(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	char const * r;
	if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	r = native->GetClassName();
	info.GetReturnValue().Set(Nan::New(r).ToLocalChecked());
}

void VtkCellQualityWrap::GetQualityMeasure(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	int r;
	if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	r = native->GetQualityMeasure();
	info.GetReturnValue().Set(Nan::New(r));
}

void VtkCellQualityWrap::GetUndefinedQuality(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	double r;
	if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	r = native->GetUndefinedQuality();
	info.GetReturnValue().Set(Nan::New(r));
}

void VtkCellQualityWrap::GetUnsupportedGeometry(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	double r;
	if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	r = native->GetUnsupportedGeometry();
	info.GetReturnValue().Set(Nan::New(r));
}

void VtkCellQualityWrap::IsA(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsString())
	{
		Nan::Utf8String a0(info[0]);
		int r;
		if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		r = native->IsA(
			*a0
		);
		info.GetReturnValue().Set(Nan::New(r));
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::NewInstance(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	vtkCellQuality * r;
	if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	r = native->NewInstance();
	VtkCellQualityWrap::InitPtpl();
	v8::Local<v8::Value> argv[1] =
		{ Nan::New(vtkNodeJsNoWrap) };
	v8::Local<v8::Function> cons =
		Nan::New<v8::FunctionTemplate>(VtkCellQualityWrap::ptpl)->GetFunction();
	v8::Local<v8::Object> wo = cons->NewInstance(1, argv);
	VtkCellQualityWrap *w = new VtkCellQualityWrap();
	w->native = r;
	w->Wrap(wo);
	info.GetReturnValue().Set(wo);
}

void VtkCellQualityWrap::PixelArea(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsObject() && (Nan::New(VtkCellWrap::ptpl))->HasInstance(info[0]))
	{
		VtkCellWrap *a0 = ObjectWrap::Unwrap<VtkCellWrap>(info[0]->ToObject());
		double r;
		if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		r = native->PixelArea(
			(vtkCell *) a0->native.GetPointer()
		);
		info.GetReturnValue().Set(Nan::New(r));
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::PolygonArea(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsObject() && (Nan::New(VtkCellWrap::ptpl))->HasInstance(info[0]))
	{
		VtkCellWrap *a0 = ObjectWrap::Unwrap<VtkCellWrap>(info[0]->ToObject());
		double r;
		if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		r = native->PolygonArea(
			(vtkCell *) a0->native.GetPointer()
		);
		info.GetReturnValue().Set(Nan::New(r));
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::SafeDownCast(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsObject() && (Nan::New(VtkObjectWrap::ptpl))->HasInstance(info[0]))
	{
		VtkObjectWrap *a0 = ObjectWrap::Unwrap<VtkObjectWrap>(info[0]->ToObject());
		vtkCellQuality * r;
		if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		r = native->SafeDownCast(
			(vtkObject *) a0->native.GetPointer()
		);
		VtkCellQualityWrap::InitPtpl();
		v8::Local<v8::Value> argv[1] =
			{ Nan::New(vtkNodeJsNoWrap) };
		v8::Local<v8::Function> cons =
			Nan::New<v8::FunctionTemplate>(VtkCellQualityWrap::ptpl)->GetFunction();
		v8::Local<v8::Object> wo = cons->NewInstance(1, argv);
		VtkCellQualityWrap *w = new VtkCellQualityWrap();
		w->native = r;
		w->Wrap(wo);
		info.GetReturnValue().Set(wo);
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::SetQualityMeasure(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsInt32())
	{
				if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		native->SetQualityMeasure(
			info[0]->Int32Value()
		);
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::SetQualityMeasureToArea(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToArea();
}

void VtkCellQualityWrap::SetQualityMeasureToAspectBeta(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToAspectBeta();
}

void VtkCellQualityWrap::SetQualityMeasureToAspectFrobenius(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToAspectFrobenius();
}

void VtkCellQualityWrap::SetQualityMeasureToAspectGamma(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToAspectGamma();
}

void VtkCellQualityWrap::SetQualityMeasureToAspectRatio(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToAspectRatio();
}

void VtkCellQualityWrap::SetQualityMeasureToCollapseRatio(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToCollapseRatio();
}

void VtkCellQualityWrap::SetQualityMeasureToCondition(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToCondition();
}

void VtkCellQualityWrap::SetQualityMeasureToDiagonal(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToDiagonal();
}

void VtkCellQualityWrap::SetQualityMeasureToDimension(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToDimension();
}

void VtkCellQualityWrap::SetQualityMeasureToDistortion(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToDistortion();
}

void VtkCellQualityWrap::SetQualityMeasureToJacobian(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToJacobian();
}

void VtkCellQualityWrap::SetQualityMeasureToMaxAngle(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToMaxAngle();
}

void VtkCellQualityWrap::SetQualityMeasureToMaxAspectFrobenius(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToMaxAspectFrobenius();
}

void VtkCellQualityWrap::SetQualityMeasureToMaxEdgeRatio(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToMaxEdgeRatio();
}

void VtkCellQualityWrap::SetQualityMeasureToMedAspectFrobenius(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToMedAspectFrobenius();
}

void VtkCellQualityWrap::SetQualityMeasureToMinAngle(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToMinAngle();
}

void VtkCellQualityWrap::SetQualityMeasureToOddy(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToOddy();
}

void VtkCellQualityWrap::SetQualityMeasureToRadiusRatio(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToRadiusRatio();
}

void VtkCellQualityWrap::SetQualityMeasureToRelativeSizeSquared(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToRelativeSizeSquared();
}

void VtkCellQualityWrap::SetQualityMeasureToScaledJacobian(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToScaledJacobian();
}

void VtkCellQualityWrap::SetQualityMeasureToShape(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToShape();
}

void VtkCellQualityWrap::SetQualityMeasureToShapeAndSize(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToShapeAndSize();
}

void VtkCellQualityWrap::SetQualityMeasureToShear(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToShear();
}

void VtkCellQualityWrap::SetQualityMeasureToShearAndSize(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToShearAndSize();
}

void VtkCellQualityWrap::SetQualityMeasureToSkew(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToSkew();
}

void VtkCellQualityWrap::SetQualityMeasureToStretch(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToStretch();
}

void VtkCellQualityWrap::SetQualityMeasureToTaper(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToTaper();
}

void VtkCellQualityWrap::SetQualityMeasureToVolume(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToVolume();
}

void VtkCellQualityWrap::SetQualityMeasureToWarpage(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
		if(info.Length() != 0)
	{
		Nan::ThrowError("Too many parameters.");
		return;
	}
	native->SetQualityMeasureToWarpage();
}

void VtkCellQualityWrap::SetUndefinedQuality(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsNumber())
	{
				if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		native->SetUndefinedQuality(
			info[0]->NumberValue()
		);
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::SetUnsupportedGeometry(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsNumber())
	{
				if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		native->SetUnsupportedGeometry(
			info[0]->NumberValue()
		);
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

void VtkCellQualityWrap::TriangleStripArea(const Nan::FunctionCallbackInfo<v8::Value>& info)
{
	VtkCellQualityWrap *wrapper = ObjectWrap::Unwrap<VtkCellQualityWrap>(info.Holder());
	vtkCellQuality *native = (vtkCellQuality *)wrapper->native.GetPointer();
	if(info.Length() > 0 && info[0]->IsObject() && (Nan::New(VtkCellWrap::ptpl))->HasInstance(info[0]))
	{
		VtkCellWrap *a0 = ObjectWrap::Unwrap<VtkCellWrap>(info[0]->ToObject());
		double r;
		if(info.Length() != 1)
		{
			Nan::ThrowError("Too many parameters.");
			return;
		}
		r = native->TriangleStripArea(
			(vtkCell *) a0->native.GetPointer()
		);
		info.GetReturnValue().Set(Nan::New(r));
		return;
	}
	Nan::ThrowError("Parameter mismatch");
}

