Browse Source

Fix rendering issues with hide-holes-while-moving.

Also fixes the checkbox names to be more accurate.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20775
pull/18/head
Jeff Young 7 months ago
parent
commit
e0e1f73f9e
  1. 4
      3d-viewer/3d_canvas/create_layer_items.cpp
  2. 5
      3d-viewer/3d_rendering/opengl/create_scene.cpp
  3. 10
      3d-viewer/3d_rendering/opengl/render_3d_opengl.cpp
  4. 2
      3d-viewer/3d_rendering/opengl/render_3d_opengl.h
  5. 2
      3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp
  6. 2
      3d-viewer/3d_viewer/eda_3d_viewer_settings.h
  7. 4
      3d-viewer/dialogs/panel_3D_opengl_options.cpp
  8. 4
      3d-viewer/dialogs/panel_3D_opengl_options_base.cpp
  9. 4
      3d-viewer/dialogs/panel_3D_opengl_options_base.fbp

4
3d-viewer/3d_canvas/create_layer_items.cpp

@ -515,7 +515,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// The hole in the body is inflated by copper thickness, if not plated, no copper
int inflate = 0;
if( pad->GetAttribute () != PAD_ATTRIB::NPTH )
if( pad->GetAttribute() != PAD_ATTRIB::NPTH )
inflate = KiROUND( GetHolePlatingThickness() / 2.0 );
m_holeCount++;
@ -547,7 +547,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// The hole in the body is inflated by copper thickness.
const int inflate = GetHolePlatingThickness();
if( pad->GetAttribute () != PAD_ATTRIB::NPTH )
if( pad->GetAttribute() != PAD_ATTRIB::NPTH )
{
if( cfg.clip_silk_on_via_annuli )
pad->TransformHoleToPolygon( m_viaAnnuliPolys, inflate, maxError, ERROR_INSIDE );

5
3d-viewer/3d_rendering/opengl/create_scene.cpp

@ -481,9 +481,8 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo
SHAPE_POLY_SET board_poly_with_holes = m_boardAdapter.GetBoardPoly().CloneDropTriangulation();
board_poly_with_holes.BooleanSubtract( m_boardAdapter.GetTH_ODPolys() );
board_poly_with_holes.BooleanSubtract( m_boardAdapter.GetNPTH_ODPolys() );
m_boardWithHoles = createBoard( board_poly_with_holes );
m_boardWithHoles = createBoard( board_poly_with_holes, &m_boardAdapter.GetTH_IDs() );
if( m_antiBoard )
m_antiBoard->SetItIsTransparent( true );
@ -778,7 +777,7 @@ void RENDER_3D_OPENGL::generateViasAndPads()
}
}
m_vias = new OPENGL_RENDER_LIST( *layerTriangleVIA, 0, 0.0f, 0.0f );
m_microviaHoles = new OPENGL_RENDER_LIST( *layerTriangleVIA, 0, 0.0f, 0.0f );
delete layerTriangleVIA;
}

10
3d-viewer/3d_rendering/opengl/render_3d_opengl.cpp

@ -71,7 +71,7 @@ RENDER_3D_OPENGL::RENDER_3D_OPENGL( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aAdap
m_outerThroughHoles = nullptr;
m_outerThroughHoleRings = nullptr;
m_outerViaThroughHoles = nullptr;
m_vias = nullptr;
m_microviaHoles = nullptr;
m_padHoles = nullptr;
m_circleTexture = 0;
@ -595,15 +595,15 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
bool skipThickness = aIsMoving && cfg.opengl_thickness_disableOnMove;
bool skipRenderHoles = aIsMoving && cfg.opengl_holes_disableOnMove;
bool skipRenderVias = aIsMoving && cfg.opengl_vias_disableOnMove;
bool skipRenderMicroVias = aIsMoving && cfg.opengl_microvias_disableOnMove;
bool showThickness = !skipThickness;
std::bitset<LAYER_3D_END> layerFlags = m_boardAdapter.GetVisibleLayers();
setLayerMaterial( B_Cu );
if( !( skipRenderVias || skipRenderHoles ) && m_vias )
m_vias->DrawAll();
if( !( skipRenderMicroVias || skipRenderHoles ) && m_microviaHoles )
m_microviaHoles->DrawAll();
if( !skipRenderHoles && m_padHoles )
m_padHoles->DrawAll();
@ -947,7 +947,7 @@ void RENDER_3D_OPENGL::freeAllLists()
DELETE_AND_FREE( m_outerViaThroughHoles )
DELETE_AND_FREE( m_outerThroughHoleRings )
DELETE_AND_FREE( m_vias )
DELETE_AND_FREE( m_microviaHoles )
DELETE_AND_FREE( m_padHoles )
}

2
3d-viewer/3d_rendering/opengl/render_3d_opengl.h

@ -230,7 +230,7 @@ private:
GLuint m_grid; ///< oGL list that stores current grid
GRID3D_TYPE m_lastGridType; ///< Stores the last grid type.
OPENGL_RENDER_LIST* m_vias;
OPENGL_RENDER_LIST* m_microviaHoles;
OPENGL_RENDER_LIST* m_padHoles;
// Caches

2
3d-viewer/3d_viewer/eda_3d_viewer_settings.cpp

@ -253,7 +253,7 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
m_params.emplace_back( new PARAM<bool>( "render.opengl_thickness_disableOnMove",
&m_Render.opengl_thickness_disableOnMove, false ) );
m_params.emplace_back( new PARAM<bool>( "render.opengl_vias_disableOnMove",
&m_Render.opengl_vias_disableOnMove, false ) );
&m_Render.opengl_microvias_disableOnMove, false ) );
m_params.emplace_back( new PARAM<bool>( "render.opengl_holes_disableOnMove",
&m_Render.opengl_holes_disableOnMove, false ) );
m_params.emplace_back( new PARAM<bool>( "render.opengl_render_bbox_only_OnMove",

2
3d-viewer/3d_viewer/eda_3d_viewer_settings.h

@ -90,7 +90,7 @@ public:
bool opengl_AA_disableOnMove;
bool opengl_thickness_disableOnMove;
bool opengl_vias_disableOnMove;
bool opengl_microvias_disableOnMove;
bool opengl_holes_disableOnMove;
bool opengl_render_bbox_only_OnMove;
bool opengl_copper_thickness;

4
3d-viewer/dialogs/panel_3D_opengl_options.cpp

@ -49,7 +49,7 @@ void PANEL_3D_OPENGL_OPTIONS::loadSettings( EDA_3D_VIEWER_SETTINGS* aCfg )
m_checkBoxDisableAAMove->SetValue( aCfg->m_Render.opengl_AA_disableOnMove );
m_checkBoxDisableMoveThickness->SetValue( aCfg->m_Render.opengl_thickness_disableOnMove );
m_checkBoxDisableMoveVias->SetValue( aCfg->m_Render.opengl_vias_disableOnMove );
m_checkBoxDisableMoveVias->SetValue( aCfg->m_Render.opengl_microvias_disableOnMove );
m_checkBoxDisableMoveHoles->SetValue( aCfg->m_Render.opengl_holes_disableOnMove );
}
@ -80,7 +80,7 @@ bool PANEL_3D_OPENGL_OPTIONS::TransferDataFromWindow()
cfg->m_Render.opengl_AA_disableOnMove = m_checkBoxDisableAAMove->GetValue();
cfg->m_Render.opengl_thickness_disableOnMove = m_checkBoxDisableMoveThickness->GetValue();
cfg->m_Render.opengl_vias_disableOnMove = m_checkBoxDisableMoveVias->GetValue();
cfg->m_Render.opengl_microvias_disableOnMove = m_checkBoxDisableMoveVias->GetValue();
cfg->m_Render.opengl_holes_disableOnMove = m_checkBoxDisableMoveHoles->GetValue();
return true;

4
3d-viewer/dialogs/panel_3D_opengl_options_base.cpp

@ -88,10 +88,10 @@ PANEL_3D_OPENGL_OPTIONS_BASE::PANEL_3D_OPENGL_OPTIONS_BASE( wxWindow* parent, wx
m_checkBoxDisableMoveThickness = new wxCheckBox( this, wxID_ANY, _("Disable thickness"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer3->Add( m_checkBoxDisableMoveThickness, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_checkBoxDisableMoveVias = new wxCheckBox( this, wxID_ANY, _("Disable vias"), wxDefaultPosition, wxDefaultSize, 0 );
m_checkBoxDisableMoveVias = new wxCheckBox( this, wxID_ANY, _("Disable uVia holes"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer3->Add( m_checkBoxDisableMoveVias, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_checkBoxDisableMoveHoles = new wxCheckBox( this, wxID_ANY, _("Disable holes"), wxDefaultPosition, wxDefaultSize, 0 );
m_checkBoxDisableMoveHoles = new wxCheckBox( this, wxID_ANY, _("Disable all plated holes"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer3->Add( m_checkBoxDisableMoveHoles, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );

4
3d-viewer/dialogs/panel_3D_opengl_options_base.fbp

@ -977,7 +977,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Disable vias</property>
<property name="label">Disable uVia holes</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
@ -1042,7 +1042,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Disable holes</property>
<property name="label">Disable all plated holes</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>

Loading…
Cancel
Save