//=============================================================================
//
// OpenFlipper
// Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
// www.openflipper.org
//
//-----------------------------------------------------------------------------
//
// License
//
// OpenFlipper is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenFlipper is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenFlipper. If not, see .
//
//-----------------------------------------------------------------------------
//
// $Revision$
// $Author$
// $Date$
//
//=============================================================================
//=============================================================================
//
// Types
//
//=============================================================================
/**
* \file Types.hh
* This File contains the basic available datatypes in the Framework.
*/
#ifndef TYPES_HH
#define TYPES_HH
#include "GlobalDefines.hh"
#include
//== Global Typedefs =================================================================
/** \brief Field describing the type of Objects.
*
* This is an enumerator defining the supported data types. To decide which object
* type an object has, get the dataType from it.
*/
/// None of the other Objects
const unsigned int DATA_NONE = 0;
/// Items used for Grouping
const unsigned int DATA_GROUP = 1;
/// Point based objects
const unsigned int DATA_POINTS = 2;
/// PolyLine objects
const unsigned int DATA_POLY_LINE = 4;
/// Triangle Mesh objects
const unsigned int DATA_TRIANGLE_MESH = 8;
/// Poly Mesh Objects
const unsigned int DATA_POLY_MESH = 16;
/// BSpline objects
const unsigned int DATA_BSPLINE_CURVE = 32;
/// Volumetric objects
const unsigned int DATA_VOLUME = 64;
/// BSpline Surface objects
const unsigned int DATA_BSPLINE_SURFACE = 128;
/// Skeletons
const unsigned int DATA_SKELETON = 256;
/// Gis Data
const unsigned int DATA_GIS = 512;
/// Identifier for all available objects
const unsigned int DATA_ALL = UINT_MAX;
typedef unsigned int DataType;
// TODO: Make types runtime addable
//== INCLUDES =================================================================
#include "BaseObject.hh"
#include "GroupObject.hh"
#include "BaseObjectData.hh"
#include "MeshObjectT.hh"
#ifdef ENABLE_BSPLINESURFACE_SUPPORT
#include "BSplineSurface/BSplineSurfaceObject.hh"
#endif
//== TYPEDEFS =================================================================
/// Standard Type for 3d Vector used for scripting
typedef ACG::Vec3d Vector;
/// Standard Type for id Lists used for scripting
typedef std::vector< int > idList;
/// Standard Type for a 4x4 Matrix used for scripting
typedef ACG::Matrix4x4d Matrix4x4;
Q_DECLARE_METATYPE(idList);
Q_DECLARE_METATYPE(QVector< int >);
Q_DECLARE_METATYPE(Vector);
Q_DECLARE_METATYPE(Matrix4x4);
/// Vector Type containing the Data Objects
typedef std::vector DataContainer;
/// Typedef for a Meshobject containing a triangle mesh
typedef MeshObject< TriMesh , DATA_TRIANGLE_MESH > TriMeshObject;
/// Typedef for a Meshobject containing a poly mesh
typedef MeshObject< PolyMesh , DATA_POLY_MESH > PolyMeshObject;
//== Functions for adding dataTypes =========================================================
/// Adds a datatype and returns the id for the new type
DataType addDataType(QString _name);
/// Given a dataType Identifier string this function will return the id of the datatype
DataType typeId(QString _name);
//=============================================================================
#endif // TYPES_HH defined
//=============================================================================