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
d089ff52
Commit
d089ff52
authored
Aug 20, 2014
by
jean-pierre charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
3d-viewer: Fix some issues and clean code.
parent
fafd19c6
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
113 additions
and
127 deletions
+113
-127
3d_canvas.h
3d-viewer/3d_canvas.h
+16
-0
3d_draw.cpp
3d-viewer/3d_draw.cpp
+36
-47
3d_draw_helper_functions.cpp
3d-viewer/3d_draw_helper_functions.cpp
+29
-27
3d_frame.cpp
3d-viewer/3d_frame.cpp
+0
-39
3d_toolbar.cpp
3d-viewer/3d_toolbar.cpp
+1
-10
3d_viewer_id.h
3d-viewer/3d_viewer_id.h
+0
-2
info3d_visu.cpp
3d-viewer/info3d_visu.cpp
+27
-0
info3d_visu.h
3d-viewer/info3d_visu.h
+4
-2
No files found.
3d-viewer/3d_canvas.h
View file @
d089ff52
...
@@ -143,6 +143,22 @@ public:
...
@@ -143,6 +143,22 @@ public:
}
}
private
:
private
:
/**
* return true if we are in realistic mode render
*/
bool
isRealisticMode
()
const
;
/**
* return true if aItem should be displayed
* @param aItem = an item of DISPLAY3D_FLG enum
*/
bool
isEnabled
(
DISPLAY3D_FLG
aItem
)
const
;
/* Helper function
* @return true if aLayer should be displayed, false otherwise
*/
bool
is3DLayerEnabled
(
LAYER_ID
aLayer
)
const
;
/**
/**
* Helper function SetGLTechLayersColor
* Helper function SetGLTechLayersColor
* Initialize the color to draw the non copper layers
* Initialize the color to draw the non copper layers
...
...
3d-viewer/3d_draw.cpp
View file @
d089ff52
...
@@ -53,11 +53,6 @@
...
@@ -53,11 +53,6 @@
#include <trackball.h>
#include <trackball.h>
#include <3d_draw_basic_functions.h>
#include <3d_draw_basic_functions.h>
/* Helper function
* returns true if aLayer should be displayed, false otherwise
*/
static
bool
Is3DLayerEnabled
(
LAYER_ID
aLayer
);
/* returns the Z orientation parameter 1.0 or -1.0 for aLayer
/* returns the Z orientation parameter 1.0 or -1.0 for aLayer
* Z orientation is 1.0 for all layers but "back" layers:
* Z orientation is 1.0 for all layers but "back" layers:
* B_Cu , B_Adhes, B_Paste ), B_SilkS
* B_Cu , B_Adhes, B_Paste ), B_SilkS
...
@@ -333,8 +328,8 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -333,8 +328,8 @@ void EDA_3D_CANVAS::Redraw()
InitGL
();
InitGL
();
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
&&
g_Parm_3D_Visu
.
I
sRealisticMode
()
&&
if
(
isEnabled
(
FL_MODULE
)
&&
i
sRealisticMode
()
&&
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_SHADOWS
)
)
isEnabled
(
FL_RENDER_SHADOWS
)
)
{
{
GenerateFakeShadowsTextures
();
GenerateFakeShadowsTextures
();
}
}
...
@@ -348,7 +343,7 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -348,7 +343,7 @@ void EDA_3D_CANVAS::Redraw()
glClearDepth
(
1.0
);
glClearDepth
(
1.0
);
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
|
GL_STENCIL_BUFFER_BIT
);
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
|
GL_STENCIL_BUFFER_BIT
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_SMOOTH
)
)
if
(
isEnabled
(
FL_RENDER_SMOOTH
)
)
{
{
glShadeModel
(
GL_SMOOTH
);
glShadeModel
(
GL_SMOOTH
);
}
}
...
@@ -450,7 +445,7 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -450,7 +445,7 @@ void EDA_3D_CANVAS::Redraw()
if
(
!
m_glLists
[
GL_ID_BOARD
]
||
!
m_glLists
[
GL_ID_TECH_LAYERS
]
)
if
(
!
m_glLists
[
GL_ID_BOARD
]
||
!
m_glLists
[
GL_ID_TECH_LAYERS
]
)
CreateDrawGL_List
();
CreateDrawGL_List
();
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_AXIS
)
&&
m_glLists
[
GL_ID_AXIS
]
)
if
(
isEnabled
(
FL_AXIS
)
&&
m_glLists
[
GL_ID_AXIS
]
)
glCallList
(
m_glLists
[
GL_ID_AXIS
]
);
glCallList
(
m_glLists
[
GL_ID_AXIS
]
);
// move the board in order to draw it with its center at 0,0 3D coordinates
// move the board in order to draw it with its center at 0,0 3D coordinates
...
@@ -461,7 +456,7 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -461,7 +456,7 @@ void EDA_3D_CANVAS::Redraw()
// draw all objects in lists
// draw all objects in lists
// transparent objects should be drawn after opaque objects
// transparent objects should be drawn after opaque objects
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
)
if
(
isEnabled
(
FL_MODULE
)
)
{
{
if
(
!
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
)
if
(
!
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
)
CreateDrawGL_List
();
CreateDrawGL_List
();
...
@@ -470,9 +465,9 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -470,9 +465,9 @@ void EDA_3D_CANVAS::Redraw()
glEnable
(
GL_BLEND
);
glEnable
(
GL_BLEND
);
glBlendFunc
(
GL_SRC_ALPHA
,
GL_ONE_MINUS_SRC_ALPHA
);
glBlendFunc
(
GL_SRC_ALPHA
,
GL_ONE_MINUS_SRC_ALPHA
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_SHOW_BOARD_BODY
)
)
if
(
isEnabled
(
FL_SHOW_BOARD_BODY
)
)
{
{
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_SOLDERMASK
)
)
if
(
isEnabled
(
FL_SOLDERMASK
)
||
!
isRealisticMode
(
)
)
{
{
glDisable
(
GL_TEXTURE_2D
);
glDisable
(
GL_TEXTURE_2D
);
}
}
...
@@ -501,7 +496,7 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -501,7 +496,7 @@ void EDA_3D_CANVAS::Redraw()
glMateriali
(
GL_FRONT_AND_BACK
,
GL_SHININESS
,
shininess_value
);
glMateriali
(
GL_FRONT_AND_BACK
,
GL_SHININESS
,
shininess_value
);
glMaterialfv
(
GL_FRONT_AND_BACK
,
GL_SPECULAR
,
&
specular
.
x
);
glMaterialfv
(
GL_FRONT_AND_BACK
,
GL_SPECULAR
,
&
specular
.
x
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
if
(
isEnabled
(
FL_RENDER_TEXTURES
)
&&
isRealisticMode
(
)
)
{
{
glEnable
(
GL_TEXTURE_2D
);
glEnable
(
GL_TEXTURE_2D
);
}
}
...
@@ -522,7 +517,7 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -522,7 +517,7 @@ void EDA_3D_CANVAS::Redraw()
glCallList
(
m_glLists
[
GL_ID_TECH_LAYERS
]
);
glCallList
(
m_glLists
[
GL_ID_TECH_LAYERS
]
);
}
}
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_COMMENTS
)
||
g_Parm_3D_Visu
.
GetFlag
(
FL_COMMENTS
)
)
if
(
isEnabled
(
FL_COMMENTS
)
||
isEnabled
(
FL_COMMENTS
)
)
{
{
if
(
!
m_glLists
[
GL_ID_AUX_LAYERS
]
)
if
(
!
m_glLists
[
GL_ID_AUX_LAYERS
]
)
CreateDrawGL_List
();
CreateDrawGL_List
();
...
@@ -531,9 +526,8 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -531,9 +526,8 @@ void EDA_3D_CANVAS::Redraw()
}
}
// Draw Component Shadow
// Draw Component Shadow
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
&&
if
(
isEnabled
(
FL_MODULE
)
&&
isRealisticMode
()
&&
g_Parm_3D_Visu
.
IsRealisticMode
()
&&
isEnabled
(
FL_RENDER_SHADOWS
)
)
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_SHADOWS
)
)
{
{
glEnable
(
GL_CULL_FACE
);
glEnable
(
GL_CULL_FACE
);
glDisable
(
GL_DEPTH_TEST
);
glDisable
(
GL_DEPTH_TEST
);
...
@@ -575,7 +569,7 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -575,7 +569,7 @@ void EDA_3D_CANVAS::Redraw()
glColor4f
(
1.0
,
1.0
,
1.0
,
1.0
);
glColor4f
(
1.0
,
1.0
,
1.0
,
1.0
);
// Draw Solid Shapes
// Draw Solid Shapes
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
)
if
(
isEnabled
(
FL_MODULE
)
)
{
{
if
(
!
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
)
if
(
!
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
)
CreateDrawGL_List
();
CreateDrawGL_List
();
...
@@ -584,19 +578,18 @@ void EDA_3D_CANVAS::Redraw()
...
@@ -584,19 +578,18 @@ void EDA_3D_CANVAS::Redraw()
}
}
// Grid uses transparency: draw it after all objects
// Grid uses transparency: draw it after all objects
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_GRID
)
&&
m_glLists
[
GL_ID_GRID
]
)
if
(
isEnabled
(
FL_GRID
)
&&
m_glLists
[
GL_ID_GRID
]
)
glCallList
(
m_glLists
[
GL_ID_GRID
]
);
glCallList
(
m_glLists
[
GL_ID_GRID
]
);
// This list must be drawn last, because it contains the
// This list must be drawn last, because it contains the
// transparent gl objects, which should be drawn after all
// transparent gl objects, which should be drawn after all
// non transparent objects
// non transparent objects
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
&&
m_glLists
[
GL_ID_3DSHAPES_TRANSP_FRONT
]
)
if
(
isEnabled
(
FL_MODULE
)
&&
m_glLists
[
GL_ID_3DSHAPES_TRANSP_FRONT
]
)
glCallList
(
m_glLists
[
GL_ID_3DSHAPES_TRANSP_FRONT
]
);
glCallList
(
m_glLists
[
GL_ID_3DSHAPES_TRANSP_FRONT
]
);
// Draw Board Shadow
// Draw Board Shadow
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
&&
if
(
isEnabled
(
FL_MODULE
)
&&
isRealisticMode
()
&&
g_Parm_3D_Visu
.
IsRealisticMode
()
&&
isEnabled
(
FL_RENDER_SHADOWS
)
)
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_SHADOWS
)
)
{
{
if
(
m_glLists
[
GL_ID_SHADOW_BOARD
]
)
if
(
m_glLists
[
GL_ID_SHADOW_BOARD
]
)
{
{
...
@@ -696,9 +689,9 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
...
@@ -696,9 +689,9 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
// If FL_RENDER_SHOW_HOLES_IN_ZONES is true, holes are correctly removed from copper zones areas.
// If FL_RENDER_SHOW_HOLES_IN_ZONES is true, holes are correctly removed from copper zones areas.
// If FL_RENDER_SHOW_HOLES_IN_ZONES is false, holes are not removed from copper zones areas,
// If FL_RENDER_SHOW_HOLES_IN_ZONES is false, holes are not removed from copper zones areas,
// but the calculation time is twice shorter.
// but the calculation time is twice shorter.
bool
remove_Holes
=
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_SHOW_HOLES_IN_ZONES
);
bool
remove_Holes
=
isEnabled
(
FL_RENDER_SHOW_HOLES_IN_ZONES
);
bool
realistic_mode
=
g_Parm_3D_Visu
.
I
sRealisticMode
();
bool
realistic_mode
=
i
sRealisticMode
();
// Number of segments to convert a circle to polygon
// Number of segments to convert a circle to polygon
// Boost polygon (at least v 1.54, v1.55 and previous) in very rare cases crashes
// Boost polygon (at least v 1.54, v1.55 and previous) in very rare cases crashes
...
@@ -758,7 +751,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
...
@@ -758,7 +751,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
// Skip non enabled layers in normal mode,
// Skip non enabled layers in normal mode,
// and internal layers in realistic mode
// and internal layers in realistic mode
if
(
!
I
s3DLayerEnabled
(
layer
)
)
if
(
!
i
s3DLayerEnabled
(
layer
)
)
continue
;
continue
;
bufferPolys
.
RemoveAllContours
();
bufferPolys
.
RemoveAllContours
();
...
@@ -823,7 +816,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
...
@@ -823,7 +816,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
}
}
// Draw copper zones
// Draw copper zones
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_ZONE
)
)
if
(
isEnabled
(
FL_ZONE
)
)
{
{
for
(
int
ii
=
0
;
ii
<
pcb
->
GetAreaCount
();
ii
++
)
for
(
int
ii
=
0
;
ii
<
pcb
->
GetAreaCount
();
ii
++
)
{
{
...
@@ -903,7 +896,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
...
@@ -903,7 +896,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
thickness
,
thickness
,
g_Parm_3D_Visu
.
m_BiuTo3Dunits
);
g_Parm_3D_Visu
.
m_BiuTo3Dunits
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_USE_COPPER_THICKNESS
)
==
true
)
if
(
isEnabled
(
FL_USE_COPPER_THICKNESS
)
==
true
)
{
{
thickness
-=
(
0.04
*
IU_PER_MM
);
thickness
-=
(
0.04
*
IU_PER_MM
);
}
}
...
@@ -917,7 +910,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
...
@@ -917,7 +910,7 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
throughHolesListBuilt
=
true
;
throughHolesListBuilt
=
true
;
}
}
if
(
!
g_Parm_3D_Visu
.
GetFlag
(
FL_SHOW_BOARD_BODY
)
)
if
(
!
isEnabled
(
FL_SHOW_BOARD_BODY
)
)
{
{
SetGLCopperColor
();
SetGLCopperColor
();
...
@@ -940,10 +933,10 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
...
@@ -940,10 +933,10 @@ void EDA_3D_CANVAS::BuildBoard3DView(GLuint aBoardList, GLuint aBodyOnlyList)
glEndList
();
glEndList
();
// Build the body board:
glNewList
(
aBodyOnlyList
,
GL_COMPILE
);
glNewList
(
aBodyOnlyList
,
GL_COMPILE
);
if
(
g_Parm_3D_Visu
.
I
sRealisticMode
()
)
if
(
i
sRealisticMode
()
)
{
{
SetGLEpoxyColor
(
0.95
);
SetGLEpoxyColor
(
0.95
);
}
}
...
@@ -1069,18 +1062,15 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
...
@@ -1069,18 +1062,15 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
F_Mask
,
F_Mask
,
};
};
// User layers are not drawn here, only technical layers
for
(
LSEQ
seq
=
LSET
::
AllTechMask
().
Seq
(
teckLayerList
,
DIM
(
teckLayerList
)
);
seq
;
++
seq
)
for
(
LSEQ
seq
=
LSET
::
AllTechMask
().
Seq
(
teckLayerList
,
DIM
(
teckLayerList
)
);
seq
;
++
seq
)
{
{
LAYER_ID
layer
=
*
seq
;
LAYER_ID
layer
=
*
seq
;
// Skip user layers, which are not drawn here
if
(
!
is3DLayerEnabled
(
layer
)
)
// if( IsUserLayer( layer) )
// continue;
if
(
!
Is3DLayerEnabled
(
layer
)
)
continue
;
continue
;
if
(
layer
==
Edge_Cuts
&&
g_Parm_3D_Visu
.
GetFlag
(
FL_SHOW_BOARD_BODY
)
)
if
(
layer
==
Edge_Cuts
&&
isEnabled
(
FL_SHOW_BOARD_BODY
)
)
continue
;
continue
;
bufferPolys
.
RemoveAllContours
();
bufferPolys
.
RemoveAllContours
();
...
@@ -1132,7 +1122,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
...
@@ -1132,7 +1122,7 @@ void EDA_3D_CANVAS::BuildTechLayers3DView()
}
}
// Draw non copper zones
// Draw non copper zones
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_ZONE
)
)
if
(
isEnabled
(
FL_ZONE
)
)
{
{
for
(
int
ii
=
0
;
ii
<
pcb
->
GetAreaCount
();
ii
++
)
for
(
int
ii
=
0
;
ii
<
pcb
->
GetAreaCount
();
ii
++
)
{
{
...
@@ -1237,7 +1227,7 @@ void EDA_3D_CANVAS::BuildBoard3DAuxLayers()
...
@@ -1237,7 +1227,7 @@ void EDA_3D_CANVAS::BuildBoard3DAuxLayers()
{
{
LAYER_ID
layer
=
*
aux
;
LAYER_ID
layer
=
*
aux
;
if
(
!
I
s3DLayerEnabled
(
layer
)
)
if
(
!
i
s3DLayerEnabled
(
layer
)
)
continue
;
continue
;
bufferPolys
.
RemoveAllContours
();
bufferPolys
.
RemoveAllContours
();
...
@@ -1369,7 +1359,7 @@ void EDA_3D_CANVAS::CreateDrawGL_List()
...
@@ -1369,7 +1359,7 @@ void EDA_3D_CANVAS::CreateDrawGL_List()
}
}
// draw modules 3D shapes
// draw modules 3D shapes
if
(
!
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
&&
g_Parm_3D_Visu
.
GetFlag
(
FL_MODULE
)
)
if
(
!
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
&&
isEnabled
(
FL_MODULE
)
)
{
{
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
=
glGenLists
(
1
);
m_glLists
[
GL_ID_3DSHAPES_SOLID_FRONT
]
=
glGenLists
(
1
);
...
@@ -1468,10 +1458,9 @@ void MODULE::ReadAndInsert3DComponentShape( EDA_3D_CANVAS* glcanvas,
...
@@ -1468,10 +1458,9 @@ void MODULE::ReadAndInsert3DComponentShape( EDA_3D_CANVAS* glcanvas,
}
}
static
bool
Is3DLayerEnabled
(
LAYER_ID
aLayer
)
bool
EDA_3D_CANVAS
::
is3DLayerEnabled
(
LAYER_ID
aLayer
)
const
{
{
DISPLAY3D_FLG
flg
;
DISPLAY3D_FLG
flg
;
bool
realistic_mode
=
g_Parm_3D_Visu
.
IsRealisticMode
();
// see if layer needs to be shown
// see if layer needs to be shown
// check the flags
// check the flags
...
@@ -1499,7 +1488,7 @@ static bool Is3DLayerEnabled( LAYER_ID aLayer )
...
@@ -1499,7 +1488,7 @@ static bool Is3DLayerEnabled( LAYER_ID aLayer )
case
Dwgs_User
:
case
Dwgs_User
:
case
Cmts_User
:
case
Cmts_User
:
if
(
realistic_mode
)
if
(
isRealisticMode
()
)
return
false
;
return
false
;
flg
=
FL_COMMENTS
;
flg
=
FL_COMMENTS
;
...
@@ -1507,7 +1496,7 @@ static bool Is3DLayerEnabled( LAYER_ID aLayer )
...
@@ -1507,7 +1496,7 @@ static bool Is3DLayerEnabled( LAYER_ID aLayer )
case
Eco1_User
:
case
Eco1_User
:
case
Eco2_User
:
case
Eco2_User
:
if
(
realistic_mode
)
if
(
isRealisticMode
()
)
return
false
;
return
false
;
flg
=
FL_ECO
;
flg
=
FL_ECO
;
...
@@ -1516,20 +1505,20 @@ static bool Is3DLayerEnabled( LAYER_ID aLayer )
...
@@ -1516,20 +1505,20 @@ static bool Is3DLayerEnabled( LAYER_ID aLayer )
case
B_Cu
:
case
B_Cu
:
case
F_Cu
:
case
F_Cu
:
return
g_Parm_3D_Visu
.
m_BoardSettings
->
IsLayerVisible
(
aLayer
)
return
g_Parm_3D_Visu
.
m_BoardSettings
->
IsLayerVisible
(
aLayer
)
||
realistic_mode
;
||
isRealisticMode
()
;
break
;
break
;
default
:
default
:
// the layer is an internal copper layer, used the visibility
// the layer is an internal copper layer, used the visibility
//
//
if
(
realistic_mode
)
if
(
isRealisticMode
()
)
return
false
;
return
false
;
return
g_Parm_3D_Visu
.
m_BoardSettings
->
IsLayerVisible
(
aLayer
);
return
g_Parm_3D_Visu
.
m_BoardSettings
->
IsLayerVisible
(
aLayer
);
}
}
// The layer has a flag, return the flag
// The layer has a flag, return the flag
return
g_Parm_3D_Visu
.
GetFlag
(
flg
);
return
isEnabled
(
flg
);
}
}
...
...
3d-viewer/3d_draw_helper_functions.cpp
View file @
d089ff52
...
@@ -42,6 +42,19 @@
...
@@ -42,6 +42,19 @@
#define TEXTURE_PCB_SCALE 5.0
#define TEXTURE_PCB_SCALE 5.0
// return true if we are in realistic mode render
bool
EDA_3D_CANVAS
::
isRealisticMode
()
const
{
return
g_Parm_3D_Visu
.
IsRealisticMode
();
}
// return true if aItem should be displayed
bool
EDA_3D_CANVAS
::
isEnabled
(
DISPLAY3D_FLG
aItem
)
const
{
return
g_Parm_3D_Visu
.
GetFlag
(
aItem
);
}
// Helper function: initialize the copper color to draw the board
// Helper function: initialize the copper color to draw the board
// in realistic mode.
// in realistic mode.
void
EDA_3D_CANVAS
::
SetGLCopperColor
()
void
EDA_3D_CANVAS
::
SetGLCopperColor
()
...
@@ -58,9 +71,9 @@ void EDA_3D_CANVAS::SetGLCopperColor()
...
@@ -58,9 +71,9 @@ void EDA_3D_CANVAS::SetGLCopperColor()
void
EDA_3D_CANVAS
::
SetGLEpoxyColor
(
double
aTransparency
)
void
EDA_3D_CANVAS
::
SetGLEpoxyColor
(
double
aTransparency
)
{
{
// Generates an epoxy color, near board color
// Generates an epoxy color, near board color
glColor4f
(
0.45
*
0.85
-
(
1.0
-
g_Parm_3D_Visu
.
m_BoardColor
.
m_Red
)
*
0.32
,
glColor4f
(
g_Parm_3D_Visu
.
m_BoardBodyColor
.
m_Red
,
0.39
*
0.85
-
(
1.0
-
g_Parm_3D_Visu
.
m_BoardColor
.
m_Green
)
*
0.28
,
g_Parm_3D_Visu
.
m_BoardBodyColor
.
m_Green
,
0.33
*
0.85
-
(
1.0
-
g_Parm_3D_Visu
.
m_BoardColor
.
m_Blue
)
*
0.23
,
g_Parm_3D_Visu
.
m_BoardBodyColor
.
m_Blue
,
aTransparency
);
aTransparency
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
...
@@ -74,9 +87,9 @@ void EDA_3D_CANVAS::SetGLEpoxyColor( double aTransparency )
...
@@ -74,9 +87,9 @@ void EDA_3D_CANVAS::SetGLEpoxyColor( double aTransparency )
void
EDA_3D_CANVAS
::
SetGLSolderMaskColor
(
double
aTransparency
)
void
EDA_3D_CANVAS
::
SetGLSolderMaskColor
(
double
aTransparency
)
{
{
// Generates a solder mask color
// Generates a solder mask color
glColor4f
(
g_Parm_3D_Visu
.
m_
Board
Color
.
m_Red
,
glColor4f
(
g_Parm_3D_Visu
.
m_
SolderMask
Color
.
m_Red
,
g_Parm_3D_Visu
.
m_
Board
Color
.
m_Green
,
g_Parm_3D_Visu
.
m_
SolderMask
Color
.
m_Green
,
g_Parm_3D_Visu
.
m_
Board
Color
.
m_Blue
,
g_Parm_3D_Visu
.
m_
SolderMask
Color
.
m_Blue
,
aTransparency
);
aTransparency
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
...
@@ -91,7 +104,7 @@ void EDA_3D_CANVAS::SetGLTechLayersColor( LAYER_NUM aLayer )
...
@@ -91,7 +104,7 @@ void EDA_3D_CANVAS::SetGLTechLayersColor( LAYER_NUM aLayer )
{
{
EDA_COLOR_T
color
;
EDA_COLOR_T
color
;
if
(
g_Parm_3D_Visu
.
I
sRealisticMode
()
)
if
(
i
sRealisticMode
()
)
{
{
switch
(
aLayer
)
switch
(
aLayer
)
{
{
...
@@ -102,26 +115,15 @@ void EDA_3D_CANVAS::SetGLTechLayersColor( LAYER_NUM aLayer )
...
@@ -102,26 +115,15 @@ void EDA_3D_CANVAS::SetGLTechLayersColor( LAYER_NUM aLayer )
case
B_SilkS
:
case
B_SilkS
:
case
F_SilkS
:
case
F_SilkS
:
glColor4f
(
g_Parm_3D_Visu
.
m_SilkScreenColor
.
m_Red
,
g_Parm_3D_Visu
.
m_SilkScreenColor
.
m_Green
,
g_Parm_3D_Visu
.
m_SilkScreenColor
.
m_Blue
,
0.96
);
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
{
{
// http://en.wikipedia.org/wiki/Luminance_(relative)
SetGLTexture
(
m_text_silk
,
10.0
f
);
double
luminance
=
g_Parm_3D_Visu
.
m_BoardColor
.
m_Red
*
0.2126
+
g_Parm_3D_Visu
.
m_BoardColor
.
m_Green
*
0.7152
+
g_Parm_3D_Visu
.
m_BoardColor
.
m_Blue
*
0.0722
;
if
(
luminance
<
0.5
)
{
glColor4f
(
0.9
,
0.9
,
0.9
,
0.96
);
}
else
{
glColor4f
(
0.1
,
0.1
,
0.1
,
0.96
);
}
if
(
g_Parm_3D_Visu
.
GetFlag
(
FL_RENDER_TEXTURES
)
)
{
SetGLTexture
(
m_text_silk
,
10.0
f
);
}
}
}
break
;
break
;
case
B_Mask
:
case
B_Mask
:
...
@@ -319,7 +321,7 @@ void EDA_3D_CANVAS::Draw3DPadHole( const D_PAD* aPad )
...
@@ -319,7 +321,7 @@ void EDA_3D_CANVAS::Draw3DPadHole( const D_PAD* aPad )
int
height
=
g_Parm_3D_Visu
.
GetLayerZcoordBIU
(
F_Cu
)
-
int
height
=
g_Parm_3D_Visu
.
GetLayerZcoordBIU
(
F_Cu
)
-
g_Parm_3D_Visu
.
GetLayerZcoordBIU
(
B_Cu
);
g_Parm_3D_Visu
.
GetLayerZcoordBIU
(
B_Cu
);
if
(
g_Parm_3D_Visu
.
I
sRealisticMode
()
)
if
(
i
sRealisticMode
()
)
SetGLCopperColor
();
SetGLCopperColor
();
else
else
SetGLColor
(
DARKGRAY
);
SetGLColor
(
DARKGRAY
);
...
@@ -371,7 +373,7 @@ void EDA_3D_CANVAS::Draw3DViaHole( const VIA* aVia )
...
@@ -371,7 +373,7 @@ void EDA_3D_CANVAS::Draw3DViaHole( const VIA* aVia )
aVia
->
LayerPair
(
&
top_layer
,
&
bottom_layer
);
aVia
->
LayerPair
(
&
top_layer
,
&
bottom_layer
);
// Drawing via hole:
// Drawing via hole:
if
(
g_Parm_3D_Visu
.
I
sRealisticMode
()
)
if
(
i
sRealisticMode
()
)
SetGLCopperColor
();
SetGLCopperColor
();
else
else
{
{
...
...
3d-viewer/3d_frame.cpp
View file @
d089ff52
...
@@ -50,14 +50,6 @@ static const wxChar keyBgColor_Red_Top[] = wxT( "BgColor_Red_Top" );
...
@@ -50,14 +50,6 @@ static const wxChar keyBgColor_Red_Top[] = wxT( "BgColor_Red_Top" );
static
const
wxChar
keyBgColor_Green_Top
[]
=
wxT
(
"BgColor_Green_Top"
);
static
const
wxChar
keyBgColor_Green_Top
[]
=
wxT
(
"BgColor_Green_Top"
);
static
const
wxChar
keyBgColor_Blue_Top
[]
=
wxT
(
"BgColor_Blue_Top"
);
static
const
wxChar
keyBgColor_Blue_Top
[]
=
wxT
(
"BgColor_Blue_Top"
);
static
const
wxChar
keyBoardColor_Red
[]
=
wxT
(
"BoardColor_Red"
);
static
const
wxChar
keyBoardColor_Green
[]
=
wxT
(
"BoardColor_Green"
);
static
const
wxChar
keyBoardColor_Blue
[]
=
wxT
(
"BoardColor_Blue"
);
static
const
wxChar
keyCopperColor_Red
[]
=
wxT
(
"CopperColor_Red"
);
static
const
wxChar
keyCopperColor_Green
[]
=
wxT
(
"CopperColor_Green"
);
static
const
wxChar
keyCopperColor_Blue
[]
=
wxT
(
"CopperColor_Blue"
);
static
const
wxChar
keyShowRealisticMode
[]
=
wxT
(
"ShowRealisticMode"
);
static
const
wxChar
keyShowRealisticMode
[]
=
wxT
(
"ShowRealisticMode"
);
static
const
wxChar
keyRenderShadows
[]
=
wxT
(
"Render_Shadows"
);
static
const
wxChar
keyRenderShadows
[]
=
wxT
(
"Render_Shadows"
);
static
const
wxChar
keyRenderRemoveHoles
[]
=
wxT
(
"Render_RemoveHoles"
);
static
const
wxChar
keyRenderRemoveHoles
[]
=
wxT
(
"Render_RemoveHoles"
);
...
@@ -242,14 +234,6 @@ void EDA_3D_FRAME::LoadSettings( wxConfigBase* aCfg )
...
@@ -242,14 +234,6 @@ void EDA_3D_FRAME::LoadSettings( wxConfigBase* aCfg )
aCfg
->
Read
(
keyBgColor_Green_Top
,
&
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Green
,
0.8
);
aCfg
->
Read
(
keyBgColor_Green_Top
,
&
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Green
,
0.8
);
aCfg
->
Read
(
keyBgColor_Blue_Top
,
&
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Blue
,
0.9
);
aCfg
->
Read
(
keyBgColor_Blue_Top
,
&
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Blue
,
0.9
);
aCfg
->
Read
(
keyBoardColor_Red
,
&
g_Parm_3D_Visu
.
m_BoardColor
.
m_Red
,
0.0
);
aCfg
->
Read
(
keyBoardColor_Green
,
&
g_Parm_3D_Visu
.
m_BoardColor
.
m_Green
,
0.5
);
aCfg
->
Read
(
keyBoardColor_Blue
,
&
g_Parm_3D_Visu
.
m_BoardColor
.
m_Blue
,
0.0
);
aCfg
->
Read
(
keyCopperColor_Red
,
&
g_Parm_3D_Visu
.
m_CopperColor
.
m_Red
,
0.8
);
aCfg
->
Read
(
keyCopperColor_Green
,
&
g_Parm_3D_Visu
.
m_CopperColor
.
m_Green
,
0.75
);
aCfg
->
Read
(
keyCopperColor_Blue
,
&
g_Parm_3D_Visu
.
m_CopperColor
.
m_Blue
,
0.0
);
bool
tmp
;
bool
tmp
;
aCfg
->
Read
(
keyShowRealisticMode
,
&
tmp
,
false
);
aCfg
->
Read
(
keyShowRealisticMode
,
&
tmp
,
false
);
prms
.
SetFlag
(
FL_USE_REALISTIC_MODE
,
tmp
);
prms
.
SetFlag
(
FL_USE_REALISTIC_MODE
,
tmp
);
...
@@ -323,14 +307,6 @@ void EDA_3D_FRAME::SaveSettings( wxConfigBase* aCfg )
...
@@ -323,14 +307,6 @@ void EDA_3D_FRAME::SaveSettings( wxConfigBase* aCfg )
aCfg
->
Write
(
keyBgColor_Green_Top
,
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Green
);
aCfg
->
Write
(
keyBgColor_Green_Top
,
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Green
);
aCfg
->
Write
(
keyBgColor_Blue_Top
,
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Blue
);
aCfg
->
Write
(
keyBgColor_Blue_Top
,
g_Parm_3D_Visu
.
m_BgColor_Top
.
m_Blue
);
aCfg
->
Write
(
keyBoardColor_Red
,
g_Parm_3D_Visu
.
m_BoardColor
.
m_Red
);
aCfg
->
Write
(
keyBoardColor_Green
,
g_Parm_3D_Visu
.
m_BoardColor
.
m_Green
);
aCfg
->
Write
(
keyBoardColor_Blue
,
g_Parm_3D_Visu
.
m_BoardColor
.
m_Blue
);
aCfg
->
Write
(
keyCopperColor_Red
,
g_Parm_3D_Visu
.
m_CopperColor
.
m_Red
);
aCfg
->
Write
(
keyCopperColor_Green
,
g_Parm_3D_Visu
.
m_CopperColor
.
m_Green
);
aCfg
->
Write
(
keyCopperColor_Blue
,
g_Parm_3D_Visu
.
m_CopperColor
.
m_Blue
);
aCfg
->
Write
(
keyShowRealisticMode
,
prms
.
GetFlag
(
FL_USE_REALISTIC_MODE
)
);
aCfg
->
Write
(
keyShowRealisticMode
,
prms
.
GetFlag
(
FL_USE_REALISTIC_MODE
)
);
aCfg
->
Write
(
keyRenderShadows
,
prms
.
GetFlag
(
FL_RENDER_SHADOWS
)
);
aCfg
->
Write
(
keyRenderShadows
,
prms
.
GetFlag
(
FL_RENDER_SHADOWS
)
);
...
@@ -491,21 +467,6 @@ void EDA_3D_FRAME::Process_Special_Functions( wxCommandEvent& event )
...
@@ -491,21 +467,6 @@ void EDA_3D_FRAME::Process_Special_Functions( wxCommandEvent& event )
Set3DBgColor
(
g_Parm_3D_Visu
.
m_BgColor_Top
);
Set3DBgColor
(
g_Parm_3D_Visu
.
m_BgColor_Top
);
return
;
return
;
case
ID_MENU3D_BOARDCOLOR_SELECTION
:
if
(
Set3DBgColor
(
g_Parm_3D_Visu
.
m_BoardColor
)
==
true
)
{
NewDisplay
(
GL_ID_TECH_LAYERS
);
NewDisplay
(
GL_ID_BOARD
);
}
return
;
case
ID_MENU3D_COPPERCOLOR_SELECTION
:
if
(
Set3DBgColor
(
g_Parm_3D_Visu
.
m_CopperColor
)
==
true
)
{
NewDisplay
(
GL_ID_BOARD
);
}
return
;
case
ID_MENU3D_REALISTIC_MODE
:
case
ID_MENU3D_REALISTIC_MODE
:
g_Parm_3D_Visu
.
SetFlag
(
FL_USE_REALISTIC_MODE
,
isChecked
);
g_Parm_3D_Visu
.
SetFlag
(
FL_USE_REALISTIC_MODE
,
isChecked
);
NewDisplay
();
NewDisplay
();
...
...
3d-viewer/3d_toolbar.cpp
View file @
d089ff52
...
@@ -195,16 +195,7 @@ void EDA_3D_FRAME::CreateMenuBar()
...
@@ -195,16 +195,7 @@ void EDA_3D_FRAME::CreateMenuBar()
_
(
"Background Top Color"
),
KiBitmap
(
palette_xpm
)
);
_
(
"Background Top Color"
),
KiBitmap
(
palette_xpm
)
);
AddMenuItem
(
backgrounColorMenu
,
ID_MENU3D_BGCOLOR_SELECTION
,
AddMenuItem
(
backgrounColorMenu
,
ID_MENU3D_BGCOLOR_SELECTION
,
_
(
"Background Botton Color"
),
KiBitmap
(
palette_xpm
)
);
_
(
"Background Bottom Color"
),
KiBitmap
(
palette_xpm
)
);
backgrounColorMenu
->
AppendSeparator
();
AddMenuItem
(
backgrounColorMenu
,
ID_MENU3D_BOARDCOLOR_SELECTION
,
_
(
"Board Mask Color"
),
KiBitmap
(
pads_mask_layers_xpm
)
);
AddMenuItem
(
backgrounColorMenu
,
ID_MENU3D_COPPERCOLOR_SELECTION
,
_
(
"Copper Color"
),
KiBitmap
(
use_3D_copper_thickness_xpm
)
);
//
AddMenuItem
(
prefsMenu
,
ID_MENU3D_AXIS_ONOFF
,
AddMenuItem
(
prefsMenu
,
ID_MENU3D_AXIS_ONOFF
,
_
(
"Show 3D &Axis"
),
KiBitmap
(
axis3d_front_xpm
),
wxITEM_CHECK
);
_
(
"Show 3D &Axis"
),
KiBitmap
(
axis3d_front_xpm
),
wxITEM_CHECK
);
...
...
3d-viewer/3d_viewer_id.h
View file @
d089ff52
...
@@ -33,8 +33,6 @@ enum id_3dview_frm
...
@@ -33,8 +33,6 @@ enum id_3dview_frm
ID_MENU3D_COLOR
,
ID_MENU3D_COLOR
,
ID_MENU3D_BGCOLOR_SELECTION
,
ID_MENU3D_BGCOLOR_SELECTION
,
ID_MENU3D_BGCOLOR_TOP_SELECTION
,
ID_MENU3D_BGCOLOR_TOP_SELECTION
,
ID_MENU3D_BOARDCOLOR_SELECTION
,
ID_MENU3D_COPPERCOLOR_SELECTION
,
ID_MENU3D_USE_COPPER_THICKNESS
,
ID_MENU3D_USE_COPPER_THICKNESS
,
ID_MENU3D_AXIS_ONOFF
,
ID_MENU3D_AXIS_ONOFF
,
ID_MENU3D_MODULE_ONOFF
,
ID_MENU3D_MODULE_ONOFF
,
...
...
3d-viewer/info3d_visu.cpp
View file @
d089ff52
...
@@ -66,6 +66,33 @@ INFO3D_VISU::INFO3D_VISU()
...
@@ -66,6 +66,33 @@ INFO3D_VISU::INFO3D_VISU()
m_epoxyThickness
=
0
;
m_epoxyThickness
=
0
;
m_nonCopperLayerThickness
=
0
;
m_nonCopperLayerThickness
=
0
;
// Set copper color, in realistic mode
#define LUMINANCE 0.7/255.0
m_CopperColor
.
m_Red
=
255.0
*
LUMINANCE
;
m_CopperColor
.
m_Green
=
223.0
*
LUMINANCE
;
m_CopperColor
.
m_Blue
=
0.0
*
LUMINANCE
;
// Set the solder mask color, in realistic mode
#undef LUMINANCE
#define LUMINANCE 0.2/255.0
m_SolderMaskColor
.
m_Red
=
100.0
*
LUMINANCE
;
m_SolderMaskColor
.
m_Green
=
255.0
*
LUMINANCE
;
m_SolderMaskColor
.
m_Blue
=
180.0
*
LUMINANCE
;
// Set the silk screen mask color, in realistic mode
#undef LUMINANCE
#define LUMINANCE 0.9
m_SilkScreenColor
.
m_Red
=
1.0
*
LUMINANCE
;
m_SilkScreenColor
.
m_Green
=
1.0
*
LUMINANCE
;
m_SilkScreenColor
.
m_Blue
=
1.0
*
LUMINANCE
;
// Set the body board (FR4) color, in realistic mode
#undef LUMINANCE
#define LUMINANCE 0.2/255.0
m_BoardBodyColor
.
m_Red
=
255.0
*
LUMINANCE
;
m_BoardBodyColor
.
m_Green
=
218.0
*
LUMINANCE
;
m_BoardBodyColor
.
m_Blue
=
110.0
*
LUMINANCE
;
// default all special item layers Visible
// default all special item layers Visible
for
(
ii
=
0
;
ii
<
FL_LAST
;
ii
++
)
for
(
ii
=
0
;
ii
<
FL_LAST
;
ii
++
)
m_drawFlags
[
ii
]
=
true
;
m_drawFlags
[
ii
]
=
true
;
...
...
3d-viewer/info3d_visu.h
View file @
d089ff52
...
@@ -89,8 +89,10 @@ public:
...
@@ -89,8 +89,10 @@ public:
double
m_3D_Grid
;
// 3D grid value, in mm
double
m_3D_Grid
;
// 3D grid value, in mm
S3D_COLOR
m_BgColor
;
S3D_COLOR
m_BgColor
;
S3D_COLOR
m_BgColor_Top
;
S3D_COLOR
m_BgColor_Top
;
S3D_COLOR
m_BoardColor
;
S3D_COLOR
m_BoardBodyColor
;
// in realistic mode: FR4 board color
S3D_COLOR
m_CopperColor
;
S3D_COLOR
m_SolderMaskColor
;
// in realistic mode: solder mask color
S3D_COLOR
m_SilkScreenColor
;
// in realistic mode: SilkScreen color
S3D_COLOR
m_CopperColor
;
// in realistic mode: copper color
wxPoint
m_BoardPos
;
// center board actual position in board units
wxPoint
m_BoardPos
;
// center board actual position in board units
wxSize
m_BoardSize
;
// board actual size in board units
wxSize
m_BoardSize
;
// board actual size in board units
int
m_CopperLayersCount
;
// Number of copper layers actually used by the board
int
m_CopperLayersCount
;
// Number of copper layers actually used by the board
...
...
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