27 # define WRITE(n) Internal::write<sizeof((n))>(out, (const char *)(&(n)))
28 # define READ(n) Internal::read<sizeof((n))>(in, (char *)(&(n)))
30 # define WRITE(n) out.write((const char *)(&(n)), sizeof((n)))
31 # define READ(n) in.read((char *)(&(n)), sizeof((n)))
34 #define WRITE_IF_NON_NULL(ptr) \
36 WRITE((ptr)->userdata); \
43 #define READ_IF_NON_NULL(ptr, array) \
46 (ptr) = (array)[tmp]; \
93 vector<Vec3r> tmp_vec;
96 for (
unsigned int i = 0; i < tmp; i++) {
114 for (i = 0; i < 4; i++) {
117 m.
setDiffuse(tmp_array[0], tmp_array[1], tmp_array[2], tmp_array[3]);
120 for (i = 0; i < 4; i++) {
123 m.
setSpecular(tmp_array[0], tmp_array[1], tmp_array[2], tmp_array[3]);
126 for (i = 0; i < 4; i++) {
129 m.
setAmbient(tmp_array[0], tmp_array[1], tmp_array[2], tmp_array[3]);
132 for (i = 0; i < 4; i++) {
135 m.
setEmission(tmp_array[0], tmp_array[1], tmp_array[2], tmp_array[3]);
146 if (!vs || !vs->
sshape()) {
166 unsigned i,
size, tmp;
170 vector<FrsMaterial> frs_materials;
172 for (i = 0; i <
size; ++i) {
174 frs_materials.push_back(m);
180 for (i = 0; i <
size; i++) {
188 for (i = 0; i <
size; i++) {
196 for (i = 0; i <
size; i++) {
204 for (i = 0; i <
size; i++) {
212 for (i = 0; i <
size; i++) {
252 fe->setHasVisibilityPoint(b);
256 unsigned int matindex;
261 fe->setVisibilityPointA(
v);
265 fe->setVisibilityPointB(
v);
378 for (i = 0; i <
size; i++) {
386 for (i = 0; i <
size; i++) {
452 for (
unsigned int i = 0; i <
size; i++) {
530 for (
unsigned int i = 0; i <
size; i++) {
594 for (i = 0; i < 4; i++) {
599 for (i = 0; i < 4; i++) {
604 for (i = 0; i < 4; i++) {
609 for (i = 0; i < 4; i++) {
622 if (!vs || !vs->
sshape()) {
623 cerr <<
"Warning: null ViewShape" << endl;
647 for (
unsigned int i = 0; i <
size; ++i) {
663 for (vector<FEdge *>::const_iterator i2 = vs->
sshape()->
getChains().begin();
679 tmp = vs->
edges().size();
681 for (vector<ViewEdge *>::const_iterator i4 = vs->
edges().begin(); i4 != vs->
edges().end();
689 for (vector<ViewVertex *>::const_iterator i5 = vs->
vertices().begin();
701 cerr <<
"Warning: null FEdge" << endl;
722 b = fe->hasVisibilityPoint();
726 save(out, fe->visibilityPointA());
729 save(out, fe->visibilityPointB());
787 cerr <<
"Warning: null SVertex" << endl;
818 set<Vec3r>::const_iterator i;
819 for (i = sv->
normals().begin(), tmp = 0; i != sv->
normals().end(); i++, tmp++) {
828 tmp = sv->
fedges().size();
840 cerr <<
"Warning: null ViewEdge" << endl;
857 unsigned qi = ve->
qi();
882 for (vector<ViewShape *>::const_iterator i = ve->
occluders().begin();
895 cerr <<
"Warning: null ViewVertex" << endl;
943 vector<ViewVertex::directedViewEdge>::const_iterator i = ntv->
viewedges().begin();
944 for (; i != ntv->
viewedges().end(); i++) {
950 cerr <<
"Warning: unexpected ViewVertex nature" << endl;
961 #define SET_PROGRESS(n) \
963 pb->setProgress((n)); \
992 unsigned vs_s, fe_s, fe_rle1, fe_rle2, sv_s, ve_s, vv_s, vv_rle1, vv_rle2;
1000 for (
READ(fe_rle1), fe_rle2 = 0; fe_rle1 <= fe_s; fe_rle2 = fe_rle1,
READ(fe_rle1)) {
1002 for (
unsigned int i = fe_rle2; i < fe_rle1; i++) {
1009 for (
unsigned int i = fe_rle2; i < fe_rle1; i++) {
1026 for (
READ(vv_rle1), vv_rle2 = 0; vv_rle1 <= vv_s; vv_rle2 = vv_rle1,
READ(vv_rle1)) {
1028 for (
unsigned int i = vv_rle2; i < vv_rle1; i++) {
1035 for (
unsigned int i = vv_rle2; i < vv_rle1; i++) {
1044 for (
unsigned int i0 = 0; i0 < vs_s; i0++) {
1052 for (
unsigned int i1 = 0;
i1 < fe_s;
i1++) {
1057 for (
unsigned int i2 = 0; i2 < sv_s; i2++) {
1061 for (
unsigned int i3 = 0; i3 < ve_s; i3++) {
1068 for (vector<ViewShape *>::const_iterator i4 = vm->
ViewShapes().begin();
1074 for (vector<FEdge *>::const_iterator i5 = vm->
FEdges().begin(); i5 != vm->
FEdges().end(); i5++) {
1078 for (vector<SVertex *>::const_iterator i6 = vm->
SVertices().begin(); i6 != vm->
SVertices().end();
1083 for (vector<ViewEdge *>::const_iterator i7 = vm->
ViewEdges().begin();
1089 for (vector<ViewVertex *>::const_iterator i8 = vm->
ViewVertices().begin();
1100 for (
unsigned int i4 = 0; i4 < map_s; ++i4) {
1133 for (
unsigned int i2 = 0; i2 < vm->
SVertices().
size(); i2++) {
1136 for (
unsigned int i3 = 0; i3 < vm->
ViewEdges().
size(); i3++) {
1154 bool b = vm->
FEdges()[0]->isSmooth();
1156 for (
unsigned int i = 0; i <
size; i++) {
1157 while (i <
size && (vm->
FEdges()[i]->isSmooth() == b)) {
1179 for (
unsigned int i = 0; i <
size; i++) {
1195 for (vector<ViewShape *>::const_iterator i5 = vm->
ViewShapes().begin();
1201 for (vector<FEdge *>::const_iterator i6 = vm->
FEdges().begin(); i6 != vm->
FEdges().end(); i6++) {
1205 for (vector<SVertex *>::const_iterator i7 = vm->
SVertices().begin(); i7 != vm->
SVertices().end();
1210 for (vector<ViewEdge *>::const_iterator i8 = vm->
ViewEdges().begin();
1216 for (vector<ViewVertex *>::const_iterator i9 = vm->
ViewVertices().begin();
1225 unsigned int id, index;
1231 index = mit->second;
1237 for (vector<ViewShape *>::const_iterator j0 = vm->
ViewShapes().begin();
1240 (*j0)->userdata =
nullptr;
1241 (*j0)->sshape()->userdata =
nullptr;
1243 for (vector<FEdge *>::const_iterator j1 = vm->
FEdges().begin(); j1 != vm->
FEdges().end(); j1++) {
1244 (*j1)->userdata =
nullptr;
1246 for (vector<SVertex *>::const_iterator j2 = vm->
SVertices().begin(); j2 != vm->
SVertices().end();
1248 (*j2)->userdata =
nullptr;
1250 for (vector<ViewEdge *>::const_iterator j3 = vm->
ViewEdges().begin();
1253 (*j3)->userdata =
nullptr;
1255 for (vector<ViewVertex *>::const_iterator j4 = vm->
ViewVertices().begin();
1258 (*j4)->userdata =
nullptr;
1269 namespace Internal {
#define POINTER_FROM_UINT(i)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint i1
#define READ_IF_NON_NULL(ptr, array)
#define WRITE_IF_NON_NULL(ptr)
Functions to manage I/O for the view map.
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
unsigned aFrsMaterialIndex() const
void setbFrsMaterialIndex(unsigned i)
unsigned bFrsMaterialIndex() const
void setNormalB(const Vec3r &iNormal)
void setaFrsMaterialIndex(unsigned i)
void setNormalA(const Vec3r &iNormal)
unsigned frs_materialIndex() const
void setNormal(const Vec3r &iNormal)
void setFrsMaterialIndex(unsigned i)
void setOccludeeEmpty(bool iempty)
const Vec3r & getOccludeeIntersection()
const Polygon3r & aFace() const
void setVertexB(SVertex *vB)
ViewEdge * viewedge() const
void setViewEdge(ViewEdge *iViewEdge)
void setNextEdge(FEdge *iEdge)
void setNature(Nature::EdgeNature iNature)
void setPreviousEdge(FEdge *iEdge)
void setaFace(Polygon3r &iFace)
void setVertexA(SVertex *vA)
Nature::EdgeNature getNature() const
void setOccludeeIntersection(const Vec3r &iPoint)
const float * diffuse() const
void setSpecular(const float r, const float g, const float b, const float a)
void setEmission(const float r, const float g, const float b, const float a)
void setDiffuse(const float r, const float g, const float b, const float a)
void setShininess(const float s)
void setAmbient(const float r, const float g, const float b, const float a)
const float * specular() const
const float * ambient() const
const float shininess() const
const float * emission() const
const vector< Point > & getVertices() const
void setVertices(const vector< Point > &vertices)
id_type getSecond() const
edges_container & viewedges()
void AddViewEdge(ViewEdge *iVEdge, bool incoming=true)
void setSVertex(SVertex *iSVertex)
virtual void setLabelText(const string &s)
virtual void setProgress(unsigned i)
virtual void setTotalSteps(unsigned n)
vector< SVertex * > & getVertexList()
void AddChain(FEdge *iEdge)
const vector< FrsMaterial > & frs_materials() const
void setFrsMaterials(const vector< FrsMaterial > &iMaterials)
void setImportance(float importance)
void setViewShape(ViewShape *iShape)
vector< FEdge * > & getEdgeList()
const FrsMaterial & frs_material(unsigned i) const
void AddNewVertex(SVertex *iv)
vector< FEdge * > & getChains()
void AddEdge(FEdge *iEdge)
const vector< FEdge * > & fedges()
ViewVertex * viewvertex()
void setPoint2D(const Vec3r &iPoint2D)
void setViewVertex(ViewVertex *iViewVertex)
void setShape(SShape *iShape)
fedges_container::iterator fedges_begin()
fedges_container::iterator fedges_end()
void AddNormal(const Vec3r &iNormal)
const Vec3r & point3D() const
void setPoint3D(const Vec3r &iPoint3D)
void AddFEdge(FEdge *iFEdge)
const Vec3r & point2D() const
void setId(const Id &iId)
directedViewEdge & frontEdgeB()
directedViewEdge & frontEdgeA()
void setBackEdgeA(ViewEdge *iBackEdgeA, bool incoming=true)
directedViewEdge & backEdgeB()
void setBackEdgeB(ViewEdge *iBackEdgeB, bool incoming=true)
void setBackSVertex(SVertex *iBackSVertex)
void setFrontEdgeB(ViewEdge *iFrontEdgeB, bool incoming=true)
directedViewEdge & backEdgeA()
void setFrontSVertex(SVertex *iFrontSVertex)
void setFrontEdgeA(ViewEdge *iFrontEdgeA, bool incoming=true)
Vec< real, 3 >::value_type value_type
void setaShape(ViewShape *iShape)
virtual Nature::EdgeNature getNature() const
vector< ViewShape * > & occluders()
void setFEdgeB(FEdge *iFEdge)
void setA(ViewVertex *iA)
void setFEdgeA(FEdge *iFEdge)
void setShape(ViewShape *iVShape)
const SShape * shape() const
void AddOccluder(ViewShape *iShape)
void setNature(Nature::EdgeNature iNature)
void setB(ViewVertex *iB)
void AddViewShape(ViewShape *iVShape)
void AddSVertex(SVertex *iSVertex)
viewshapes_container & ViewShapes()
svertices_container & SVertices()
viewvertices_container & ViewVertices()
fedges_container & FEdges()
void AddFEdge(FEdge *iFEdge)
id_to_index_map & shapeIdToIndexMap()
void AddViewVertex(ViewVertex *iVVertex)
void AddViewEdge(ViewEdge *iVEdge)
viewedges_container & ViewEdges()
vector< ViewEdge * > & edges()
void AddVertex(ViewVertex *iVertex)
vector< ViewVertex * > & vertices()
void setSShape(SShape *iSShape)
void AddEdge(ViewEdge *iEdge)
virtual Nature::VertexNature getNature() const
void setNature(Nature::VertexNature iNature)
unsigned short VertexNature
unsigned short EdgeNature
static const VertexNature VIEW_VERTEX
static const VertexNature T_VERTEX
static const VertexNature NON_T_VERTEX
int save(ostream &out, const Vec3r &v)
int load(istream &in, Vec3r &v)
static string g_models_path
static unsigned char g_flags
static const unsigned char NO_OCCLUDERS
void rmFlags(const unsigned char flags)
static const unsigned char FLOAT_VECTORS
void setModelsPath(const string &path)
void setFlags(const unsigned char flags)
void addFlags(const unsigned char flags)
int save(ostream &out, ViewMap *vm, ProgressBar *pb)
int load(istream &in, ViewMap *vm, ProgressBar *pb)