Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
ae57c469
Commit
ae57c469
authored
Apr 13, 2015
by
Brian Sidebotham
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move S3D_MESH* to smart pointer to fix CID 108646
parent
c519eea1
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
74 additions
and
89 deletions
+74
-89
3d_mesh_model.cpp
3d-viewer/3d_mesh_model.cpp
+8
-15
3d_mesh_model.h
3d-viewer/3d_mesh_model.h
+10
-3
modelparsers.h
3d-viewer/modelparsers.h
+9
-8
vrml_v1_modelparser.cpp
3d-viewer/vrml_v1_modelparser.cpp
+6
-6
vrml_v2_modelparser.cpp
3d-viewer/vrml_v2_modelparser.cpp
+39
-39
vrmlmodelparser.cpp
3d-viewer/vrmlmodelparser.cpp
+0
-8
x3dmodelparser.cpp
3d-viewer/x3dmodelparser.cpp
+2
-10
No files found.
3d-viewer/3d_mesh_model.cpp
View file @
ae57c469
...
@@ -68,13 +68,6 @@ S3D_MESH::S3D_MESH()
...
@@ -68,13 +68,6 @@ S3D_MESH::S3D_MESH()
S3D_MESH
::~
S3D_MESH
()
S3D_MESH
::~
S3D_MESH
()
{
{
for
(
unsigned
int
idx
=
0
;
idx
<
childs
.
size
();
idx
++
)
{
if
(
childs
[
idx
]
)
{
delete
childs
[
idx
];
}
}
}
}
...
@@ -82,7 +75,7 @@ CBBOX &S3D_MESH::getBBox( )
...
@@ -82,7 +75,7 @@ CBBOX &S3D_MESH::getBBox( )
{
{
if
(
!
m_BBox
.
IsInitialized
()
)
if
(
!
m_BBox
.
IsInitialized
()
)
calcBBoxAllChilds
();
calcBBoxAllChilds
();
return
m_BBox
;
return
m_BBox
;
}
}
...
@@ -100,7 +93,7 @@ void S3D_MESH::calcBBoxAllChilds( )
...
@@ -100,7 +93,7 @@ void S3D_MESH::calcBBoxAllChilds( )
// Calc transformation matrix
// Calc transformation matrix
glm
::
mat4
fullTransformMatrix
;
glm
::
mat4
fullTransformMatrix
;
glm
::
mat4
translationMatrix
=
glm
::
translate
(
glm
::
mat4
(),
m_translation
);
glm
::
mat4
translationMatrix
=
glm
::
translate
(
glm
::
mat4
(),
m_translation
);
if
(
m_rotation
[
3
]
!=
0.0
f
)
if
(
m_rotation
[
3
]
!=
0.0
f
)
{
{
glm
::
mat4
rotationMatrix
=
glm
::
rotate
(
translationMatrix
,
glm
::
radians
(
m_rotation
[
3
]
),
glm
::
mat4
rotationMatrix
=
glm
::
rotate
(
translationMatrix
,
glm
::
radians
(
m_rotation
[
3
]
),
...
@@ -110,7 +103,7 @@ void S3D_MESH::calcBBoxAllChilds( )
...
@@ -110,7 +103,7 @@ void S3D_MESH::calcBBoxAllChilds( )
else
else
fullTransformMatrix
=
glm
::
scale
(
translationMatrix
,
m_scale
);
fullTransformMatrix
=
glm
::
scale
(
translationMatrix
,
m_scale
);
// Apply transformation
// Apply transformation
m_BBox
.
Set
(
S3D_VERTEX
(
fullTransformMatrix
*
glm
::
vec4
(
tmpBBox
.
Min
(),
1.0
f
)
),
m_BBox
.
Set
(
S3D_VERTEX
(
fullTransformMatrix
*
glm
::
vec4
(
tmpBBox
.
Min
(),
1.0
f
)
),
S3D_VERTEX
(
fullTransformMatrix
*
glm
::
vec4
(
tmpBBox
.
Max
(),
1.0
f
)
)
);
S3D_VERTEX
(
fullTransformMatrix
*
glm
::
vec4
(
tmpBBox
.
Max
(),
1.0
f
)
)
);
...
@@ -243,7 +236,7 @@ void S3D_MESH::openGL_Render( bool aIsRenderingJustNonTransparentObjects,
...
@@ -243,7 +236,7 @@ void S3D_MESH::openGL_Render( bool aIsRenderingJustNonTransparentObjects,
if
(
m_MaterialIndex
.
size
()
>
idx
)
if
(
m_MaterialIndex
.
size
()
>
idx
)
{
{
bool
isTransparent
=
m_Materials
->
SetOpenGLMaterial
(
m_MaterialIndex
[
idx
],
useMaterial
);
bool
isTransparent
=
m_Materials
->
SetOpenGLMaterial
(
m_MaterialIndex
[
idx
],
useMaterial
);
if
(
isTransparent
&&
aIsRenderingJustNonTransparentObjects
)
if
(
isTransparent
&&
aIsRenderingJustNonTransparentObjects
)
continue
;
continue
;
...
@@ -652,7 +645,7 @@ void S3D_MESH::calcPerFaceNormals()
...
@@ -652,7 +645,7 @@ void S3D_MESH::calcPerFaceNormals()
l,
l,
(unsigned int)m_CoordIndex[idx].size()) );
(unsigned int)m_CoordIndex[idx].size()) );
*/
*/
if
(
(
cross_prod
.
x
>
cross_prod
.
y
)
&&
(
cross_prod
.
x
>
cross_prod
.
z
)
)
if
(
(
cross_prod
.
x
>
cross_prod
.
y
)
&&
(
cross_prod
.
x
>
cross_prod
.
z
)
)
{
{
cross_prod
.
x
=
0.0
f
;
cross_prod
.
x
=
0.0
f
;
...
@@ -713,7 +706,7 @@ void S3D_MESH::calcPerPointNormals()
...
@@ -713,7 +706,7 @@ void S3D_MESH::calcPerPointNormals()
for
(
unsigned
int
each_face_A_idx
=
0
;
each_face_A_idx
<
m_CoordIndex
.
size
();
each_face_A_idx
++
)
for
(
unsigned
int
each_face_A_idx
=
0
;
each_face_A_idx
<
m_CoordIndex
.
size
();
each_face_A_idx
++
)
{
{
glm
::
vec3
initVertexFaceNormal
=
m_PerFaceNormalsRaw_X_PerFaceSquaredArea
[
each_face_A_idx
];
glm
::
vec3
initVertexFaceNormal
=
m_PerFaceNormalsRaw_X_PerFaceSquaredArea
[
each_face_A_idx
];
std
::
vector
<
glm
::
vec3
>&
face_A_normals
=
m_PerFaceVertexNormals
[
each_face_A_idx
];
std
::
vector
<
glm
::
vec3
>&
face_A_normals
=
m_PerFaceVertexNormals
[
each_face_A_idx
];
for
(
unsigned
int
each_vert_A_idx
=
0
;
each_vert_A_idx
<
m_CoordIndex
[
each_face_A_idx
].
size
();
each_vert_A_idx
++
)
for
(
unsigned
int
each_vert_A_idx
=
0
;
each_vert_A_idx
<
m_CoordIndex
[
each_face_A_idx
].
size
();
each_vert_A_idx
++
)
...
@@ -722,7 +715,7 @@ void S3D_MESH::calcPerPointNormals()
...
@@ -722,7 +715,7 @@ void S3D_MESH::calcPerPointNormals()
}
}
}
}
#ifdef USE_OPENMP
#ifdef USE_OPENMP
#pragma omp parallel for
#pragma omp parallel for
#endif
/* USE_OPENMP */
#endif
/* USE_OPENMP */
...
@@ -732,7 +725,7 @@ void S3D_MESH::calcPerPointNormals()
...
@@ -732,7 +725,7 @@ void S3D_MESH::calcPerPointNormals()
{
{
// n = face A facet normal
// n = face A facet normal
std
::
vector
<
glm
::
vec3
>&
face_A_normals
=
m_PerFaceVertexNormals
[
each_face_A_idx
];
std
::
vector
<
glm
::
vec3
>&
face_A_normals
=
m_PerFaceVertexNormals
[
each_face_A_idx
];
// loop through all vertices
// loop through all vertices
// for each vert in face A
// for each vert in face A
for
(
unsigned
int
each_vert_A_idx
=
0
;
each_vert_A_idx
<
m_CoordIndex
[
each_face_A_idx
].
size
();
each_vert_A_idx
++
)
for
(
unsigned
int
each_vert_A_idx
=
0
;
each_vert_A_idx
<
m_CoordIndex
[
each_face_A_idx
].
size
();
each_vert_A_idx
++
)
...
...
3d-viewer/3d_mesh_model.h
View file @
ae57c469
...
@@ -24,12 +24,14 @@
...
@@ -24,12 +24,14 @@
/**
/**
* @file 3d_mesh_model.h
* @file 3d_mesh_model.h
* @brief
* @brief
*/
*/
#ifndef __3D_MESH_MODEL_H__
#ifndef __3D_MESH_MODEL_H__
#define __3D_MESH_MODEL_H__
#define __3D_MESH_MODEL_H__
#include <memory>
#include <boost/shared_ptr.hpp>
#include <vector>
#include <vector>
#define GLM_FORCE_RADIANS
#define GLM_FORCE_RADIANS
#include <gal/opengl/glm/glm.hpp>
#include <gal/opengl/glm/glm.hpp>
...
@@ -37,9 +39,14 @@
...
@@ -37,9 +39,14 @@
#include "3d_material.h"
#include "3d_material.h"
#include "CBBox.h"
#include "CBBox.h"
class
S3D_MESH
;
class
S3D_MESH
;
/** A smart pointer to an S3D_MESH object */
typedef
boost
::
shared_ptr
<
S3D_MESH
>
S3D_MESH_PTR
;
/** A container of smar S3D_MESH object pointers */
typedef
std
::
vector
<
S3D_MESH_PTR
>
S3D_MESH_PTRS
;
class
S3D_MESH
class
S3D_MESH
{
{
public
:
public
:
...
@@ -60,7 +67,7 @@ public:
...
@@ -60,7 +67,7 @@ public:
std
::
vector
<
S3D_VERTEX
>
m_PerFaceNormalsNormalized
;
std
::
vector
<
S3D_VERTEX
>
m_PerFaceNormalsNormalized
;
std
::
vector
<
S3D_VERTEX
>
m_PerVertexNormalsNormalized
;
std
::
vector
<
S3D_VERTEX
>
m_PerVertexNormalsNormalized
;
std
::
vector
<
int
>
m_MaterialIndex
;
std
::
vector
<
int
>
m_MaterialIndex
;
std
::
vector
<
S3D_MESH
*
>
childs
;
S3D_MESH_PTRS
childs
;
S3D_VERTEX
m_translation
;
S3D_VERTEX
m_translation
;
glm
::
vec4
m_rotation
;
glm
::
vec4
m_rotation
;
...
...
3d-viewer/modelparsers.h
View file @
ae57c469
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
#define MODELPARSERS_H
#define MODELPARSERS_H
#include <map>
#include <map>
#include <memory>
#include <vector>
#include <vector>
#include <wx/string.h>
#include <wx/string.h>
#include <3d_mesh_model.h>
#include <3d_mesh_model.h>
...
@@ -71,11 +72,11 @@ public:
...
@@ -71,11 +72,11 @@ public:
* @param aFilename = the full file name of the file to load
* @param aFilename = the full file name of the file to load
* @return true if as succeeded
* @return true if as succeeded
*/
*/
virtual
bool
Load
(
const
wxString
&
aFilename
)
{
virtual
bool
Load
(
const
wxString
&
aFilename
)
{
return
false
;
return
false
;
};
};
std
::
vector
<
S3D_MESH
*
>
childs
;
S3D_MESH_PTRS
childs
;
private
:
private
:
S3D_MASTER
*
master
;
S3D_MASTER
*
master
;
...
@@ -127,7 +128,7 @@ public:
...
@@ -127,7 +128,7 @@ public:
private
:
private
:
wxString
m_Filename
;
wxString
m_Filename
;
S3D_MESH
*
m_model
;
S3D_MESH
_PTR
m_model
;
std
::
vector
<
wxString
>
vrml_materials
;
std
::
vector
<
wxString
>
vrml_materials
;
std
::
vector
<
wxString
>
vrml_points
;
std
::
vector
<
wxString
>
vrml_points
;
...
@@ -143,7 +144,7 @@ private:
...
@@ -143,7 +144,7 @@ private:
typedef
std
::
map
<
std
::
string
,
std
::
vector
<
glm
::
vec3
>
>
VRML2_COORDINATE_MAP
;
typedef
std
::
map
<
std
::
string
,
std
::
vector
<
glm
::
vec3
>
>
VRML2_COORDINATE_MAP
;
typedef
std
::
map
<
std
::
string
,
S3D_MESH
*
>
VRML2_DEF_GROUP_MAP
;
typedef
std
::
map
<
std
::
string
,
S3D_MESH
_PTR
>
VRML2_DEF_GROUP_MAP
;
/**
/**
* class VRML2_MODEL_PARSER
* class VRML2_MODEL_PARSER
...
@@ -164,7 +165,7 @@ public:
...
@@ -164,7 +165,7 @@ public:
* @param aTransformationModel a model with translation, rotation and scale to apply to default root
* @param aTransformationModel a model with translation, rotation and scale to apply to default root
* @return bool - true if finnished with success
* @return bool - true if finnished with success
*/
*/
bool
Load
(
const
wxString
&
aFilename
,
S3D_MESH
*
aTransformationModel
);
bool
Load
(
const
wxString
&
aFilename
,
S3D_MESH
_PTR
aTransformationModel
);
/**
/**
* Return string representing VRML2 file in vrml2 format
* Return string representing VRML2 file in vrml2 format
...
@@ -174,7 +175,7 @@ public:
...
@@ -174,7 +175,7 @@ public:
wxString
VRML2_representation
();
wxString
VRML2_representation
();
private
:
private
:
int
loadFileModel
(
S3D_MESH
*
transformationModel
);
int
loadFileModel
(
S3D_MESH
_PTR
transformationModel
);
int
read_Transform
();
int
read_Transform
();
int
read_DEF
();
int
read_DEF
();
int
read_DEF_Coordinate
();
int
read_DEF_Coordinate
();
...
@@ -211,7 +212,7 @@ private:
...
@@ -211,7 +212,7 @@ private:
bool
m_normalPerVertex
;
bool
m_normalPerVertex
;
bool
colorPerVertex
;
bool
colorPerVertex
;
S3D_MESH
*
m_model
;
///< It stores the current model that the parsing is adding data
S3D_MESH
_PTR
m_model
;
///< It stores the current model that the parsing is adding data
FILE
*
m_file
;
FILE
*
m_file
;
wxFileName
m_Filename
;
wxFileName
m_Filename
;
VRML2_COORDINATE_MAP
m_defCoordinateMap
;
VRML2_COORDINATE_MAP
m_defCoordinateMap
;
...
@@ -266,7 +267,7 @@ private:
...
@@ -266,7 +267,7 @@ private:
bool
m_normalPerVertex
;
bool
m_normalPerVertex
;
bool
colorPerVertex
;
bool
colorPerVertex
;
S3D_MESH
*
m_model
;
S3D_MESH
_PTR
m_model
;
FILE
*
m_file
;
FILE
*
m_file
;
wxString
m_Filename
;
wxString
m_Filename
;
S3D_MODEL_PARSER
*
m_ModelParser
;
S3D_MODEL_PARSER
*
m_ModelParser
;
...
...
3d-viewer/vrml_v1_modelparser.cpp
View file @
ae57c469
...
@@ -51,7 +51,7 @@ VRML1_MODEL_PARSER::VRML1_MODEL_PARSER( S3D_MODEL_PARSER* aModelParser )
...
@@ -51,7 +51,7 @@ VRML1_MODEL_PARSER::VRML1_MODEL_PARSER( S3D_MODEL_PARSER* aModelParser )
{
{
m_ModelParser
=
aModelParser
;
m_ModelParser
=
aModelParser
;
m_Master
=
m_ModelParser
->
GetMaster
();
m_Master
=
m_ModelParser
->
GetMaster
();
m_model
=
NULL
;
m_model
.
reset
()
;
m_file
=
NULL
;
m_file
=
NULL
;
m_normalPerVertex
=
true
;
m_normalPerVertex
=
true
;
colorPerVertex
=
true
;
colorPerVertex
=
true
;
...
@@ -88,7 +88,7 @@ bool VRML1_MODEL_PARSER::Load( const wxString& aFilename )
...
@@ -88,7 +88,7 @@ bool VRML1_MODEL_PARSER::Load( const wxString& aFilename )
if
(
strcmp
(
text
,
"Separator"
)
==
0
)
if
(
strcmp
(
text
,
"Separator"
)
==
0
)
{
{
m_model
=
new
S3D_MESH
(
);
m_model
.
reset
(
new
S3D_MESH
()
);
m_ModelParser
->
childs
.
push_back
(
m_model
);
m_ModelParser
->
childs
.
push_back
(
m_model
);
read_separator
();
read_separator
();
}
}
...
@@ -122,18 +122,18 @@ int VRML1_MODEL_PARSER::read_separator()
...
@@ -122,18 +122,18 @@ int VRML1_MODEL_PARSER::read_separator()
}
}
else
if
(
strcmp
(
text
,
"Separator"
)
==
0
)
else
if
(
strcmp
(
text
,
"Separator"
)
==
0
)
{
{
S3D_MESH
*
parent
=
m_model
;
S3D_MESH
_PTR
parent
(
m_model
.
get
()
)
;
S3D_MESH
*
new_mesh_model
=
new
S3D_MESH
(
);
S3D_MESH
_PTR
new_mesh_model
(
new
S3D_MESH
()
);
m_model
->
childs
.
push_back
(
new_mesh_model
);
m_model
->
childs
.
push_back
(
new_mesh_model
);
m_model
=
new_mesh_model
;
m_model
.
reset
(
new_mesh_model
.
get
()
)
;
// recursive
// recursive
read_separator
();
read_separator
();
m_model
=
parent
;
m_model
.
reset
(
parent
.
get
()
)
;
}
}
else
if
(
(
*
text
!=
'}'
)
)
else
if
(
(
*
text
!=
'}'
)
)
{
{
...
...
3d-viewer/vrml_v2_modelparser.cpp
View file @
ae57c469
This diff is collapsed.
Click to expand it.
3d-viewer/vrmlmodelparser.cpp
View file @
ae57c469
...
@@ -45,14 +45,6 @@ VRML_MODEL_PARSER::VRML_MODEL_PARSER( S3D_MASTER* aMaster ) :
...
@@ -45,14 +45,6 @@ VRML_MODEL_PARSER::VRML_MODEL_PARSER( S3D_MASTER* aMaster ) :
VRML_MODEL_PARSER
::~
VRML_MODEL_PARSER
()
VRML_MODEL_PARSER
::~
VRML_MODEL_PARSER
()
{
{
for
(
unsigned
int
idx
=
0
;
idx
<
childs
.
size
();
idx
++
)
{
if
(
childs
[
idx
]
)
{
delete
childs
[
idx
];
childs
[
idx
]
=
0
;
}
}
}
}
bool
VRML_MODEL_PARSER
::
Load
(
const
wxString
&
aFilename
)
bool
VRML_MODEL_PARSER
::
Load
(
const
wxString
&
aFilename
)
...
...
3d-viewer/x3dmodelparser.cpp
View file @
ae57c469
...
@@ -52,20 +52,12 @@ static const wxChar* traceX3DParser = wxT( "KI_TRACE_X3D_PARSER" );
...
@@ -52,20 +52,12 @@ static const wxChar* traceX3DParser = wxT( "KI_TRACE_X3D_PARSER" );
X3D_MODEL_PARSER
::
X3D_MODEL_PARSER
(
S3D_MASTER
*
aMaster
)
:
X3D_MODEL_PARSER
::
X3D_MODEL_PARSER
(
S3D_MASTER
*
aMaster
)
:
S3D_MODEL_PARSER
(
aMaster
)
S3D_MODEL_PARSER
(
aMaster
)
{
{
m_model
=
NULL
;
m_model
.
reset
()
;
}
}
X3D_MODEL_PARSER
::~
X3D_MODEL_PARSER
()
X3D_MODEL_PARSER
::~
X3D_MODEL_PARSER
()
{
{
for
(
unsigned
int
idx
=
0
;
idx
<
childs
.
size
();
idx
++
)
{
if
(
childs
[
idx
]
)
{
delete
childs
[
idx
];
childs
[
idx
]
=
0
;
}
}
}
}
...
@@ -102,7 +94,7 @@ bool X3D_MODEL_PARSER::Load( const wxString& aFilename )
...
@@ -102,7 +94,7 @@ bool X3D_MODEL_PARSER::Load( const wxString& aFilename )
node_it
!=
transforms
.
end
();
node_it
!=
transforms
.
end
();
node_it
++
)
node_it
++
)
{
{
m_model
=
new
S3D_MESH
(
);
m_model
.
reset
(
new
S3D_MESH
()
);
childs
.
push_back
(
m_model
);
childs
.
push_back
(
m_model
);
readTransform
(
*
node_it
);
readTransform
(
*
node_it
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment