From 00da17bc7de7f269ccddfe6dba1042a39334fb92 Mon Sep 17 00:00:00 2001 From: Mario Luzeiro Date: Fri, 17 Apr 2020 22:33:23 +0100 Subject: [PATCH] 3D-Viewer: Add new options: Anti-aliasing quality, "While moving" Create new window options with tabs for 3D-Viewer. Remove "showCopperThickness" option from menus and place it on OpenGL options. --- .../3d_cache/dialogs/dlg_select_3dmodel.cpp | 4 +- 3d-viewer/3d_cache/dialogs/panel_prev_3d.cpp | 2 +- 3d-viewer/3d_canvas/board_adapter.cpp | 10 +- 3d-viewer/3d_canvas/board_adapter.h | 16 +- 3d-viewer/3d_enums.h | 6 +- .../c3d_render_ogl_legacy.cpp | 163 +- .../c3d_render_ogl_legacy.h | 5 +- .../3d_render_ogl_legacy/c_ogl_3dmodel.h | 4 +- 3d-viewer/3d_viewer/3d_menubar.cpp | 3 +- 3d-viewer/3d_viewer/3d_viewer_settings.cpp | 20 + 3d-viewer/3d_viewer/3d_viewer_settings.h | 6 + .../dialogs/dialog_3D_view_option.cpp | 42 +- .../dialogs/dialog_3D_view_option_base.cpp | 271 +- .../dialogs/dialog_3D_view_option_base.fbp | 6226 ++++++++++------- .../dialogs/dialog_3D_view_option_base.h | 34 +- 3d-viewer/3d_viewer/eda_3d_viewer.cpp | 73 +- 3d-viewer/3d_viewer/tools/3d_actions.cpp | 6 - 3d-viewer/3d_viewer/tools/3d_actions.h | 3 +- 3d-viewer/3d_viewer/tools/3d_controller.cpp | 1 - 3d-viewer/common_ogl/cogl_att_list.cpp | 23 +- 3d-viewer/common_ogl/cogl_att_list.h | 18 +- 21 files changed, 4390 insertions(+), 2546 deletions(-) diff --git a/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp b/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp index a8105274b3..d4a3f0cfd1 100644 --- a/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp +++ b/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp @@ -3,7 +3,7 @@ * * Copyright (C) 2016 Mario Luzeiro * Copyright (C) 2016 Cirilo Bernardo - * Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -86,7 +86,7 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana bSizer2->Add( m_FileTree, 1, wxEXPAND | wxALL, 5 ); bSizer1->Add( bSizer2, 3, wxEXPAND, 5 ); - m_modelViewer = new C3D_MODEL_VIEWER( this, COGL_ATT_LIST::GetAttributesList( true ), m_cache ); + m_modelViewer = new C3D_MODEL_VIEWER( this, COGL_ATT_LIST::GetAttributesList( ANTIALIASING_MODE::AA_8X ), m_cache ); m_modelViewer->SetMinSize( wxSize( 500, 400 ) ); bSizer1->Add( m_modelViewer, 5, wxEXPAND | wxALL | wxCENTER, 5 ); diff --git a/3d-viewer/3d_cache/dialogs/panel_prev_3d.cpp b/3d-viewer/3d_cache/dialogs/panel_prev_3d.cpp index 715557613e..d95e8fd869 100644 --- a/3d-viewer/3d_cache/dialogs/panel_prev_3d.cpp +++ b/3d-viewer/3d_cache/dialogs/panel_prev_3d.cpp @@ -84,7 +84,7 @@ PANEL_PREV_3D::PANEL_PREV_3D( wxWindow* aParent, PCB_BASE_FRAME* aFrame, MODULE* m_dummyBoard->Add( m_dummyModule ); // Create the 3D canvas - m_previewPane = new EDA_3D_CANVAS( this, COGL_ATT_LIST::GetAttributesList( true ), + m_previewPane = new EDA_3D_CANVAS( this, COGL_ATT_LIST::GetAttributesList( ANTIALIASING_MODE::AA_8X ), m_dummyBoard, m_boardAdapter, m_currentCamera, aFrame->Prj().Get3DCacheManager() ); diff --git a/3d-viewer/3d_canvas/board_adapter.cpp b/3d-viewer/3d_canvas/board_adapter.cpp index c77fd90ebf..b77262e1ef 100644 --- a/3d-viewer/3d_canvas/board_adapter.cpp +++ b/3d-viewer/3d_canvas/board_adapter.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -57,6 +57,7 @@ BOARD_ADAPTER::BOARD_ADAPTER() : wxLogTrace( m_logTrace, wxT( "BOARD_ADAPTER::BOARD_ADAPTER" ) ); m_3D_grid_type = GRID3D_TYPE::NONE; + m_antialiasing_mode = ANTIALIASING_MODE::AA_8X; m_drawFlags.resize( FL_LAST, false ); if( PgmOrNull() ) @@ -93,7 +94,6 @@ BOARD_ADAPTER::BOARD_ADAPTER() : SetFlag( FL_USE_REALISTIC_MODE, true ); SetFlag( FL_MODULE_ATTRIBUTES_NORMAL, true ); SetFlag( FL_SHOW_BOARD_BODY, true ); - SetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS, true ); SetFlag( FL_MODULE_ATTRIBUTES_NORMAL, true ); SetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT, true ); SetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL, true ); @@ -102,6 +102,12 @@ BOARD_ADAPTER::BOARD_ADAPTER() : SetFlag( FL_SOLDERMASK, true ); SetFlag( FL_SUBTRACT_MASK_FROM_SILK, false ); + SetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS, true ); + SetFlag( FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE, false ); + SetFlag( FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE, false ); + SetFlag( FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE, false ); + SetFlag( FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE, false ); + m_BgColorBot = SFVEC3D( 0.4, 0.4, 0.5 ); m_BgColorTop = SFVEC3D( 0.8, 0.8, 0.9 ); m_BoardBodyColor = SFVEC3D( 0.4, 0.4, 0.5 ); diff --git a/3d-viewer/3d_canvas/board_adapter.h b/3d-viewer/3d_canvas/board_adapter.h index 2fe197634f..1e2a7562da 100644 --- a/3d-viewer/3d_canvas/board_adapter.h +++ b/3d-viewer/3d_canvas/board_adapter.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -33,6 +33,7 @@ #include "../3d_rendering/ccamera.h" #include "../3d_enums.h" #include "../3d_cache/3d_cache.h" +#include "../common_ogl/cogl_att_list.h" #include #include @@ -254,6 +255,18 @@ class BOARD_ADAPTER m_3D_grid_type = aGridType; } + /** + * @brief GridGet - get the current antialiasing mode value + * @return antialiasing mode value + */ + ANTIALIASING_MODE AntiAliasingGet() const { return m_antialiasing_mode; } + + /** + * @brief AntiAliasingSet - set the current antialiasing mode value + * @param aAAmode = antialiasing mode value + */ + void AntiAliasingSet( ANTIALIASING_MODE aAAmode ) { m_antialiasing_mode = aAAmode; } + /** * @brief RenderEngineSet * @param aRenderEngine = the render engine mode selected @@ -629,6 +642,7 @@ private: GRID3D_TYPE m_3D_grid_type; RENDER_ENGINE m_render_engine; MATERIAL_MODE m_material_mode; + ANTIALIASING_MODE m_antialiasing_mode; // Pcb board position diff --git a/3d-viewer/3d_enums.h b/3d-viewer/3d_enums.h index 9f5b4ff922..bf7a556a9e 100644 --- a/3d-viewer/3d_enums.h +++ b/3d-viewer/3d_enums.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -53,6 +53,10 @@ enum DISPLAY3D_FLG { // OpenGL options FL_RENDER_OPENGL_SHOW_MODEL_BBOX, FL_RENDER_OPENGL_COPPER_THICKNESS, + FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE, + FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE, + FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE, + FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE, // Raytracing options FL_RENDER_RAYTRACING_SHADOWS, diff --git a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp index 6b2dc87799..9c3585d47f 100644 --- a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp +++ b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -565,13 +565,16 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( glViewport( 0, 0, m_windowSize.x, m_windowSize.y ); - if( aIsMoving == false ) + if( m_boardAdapter.GetFlag( FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE ) ) { - glEnable( GL_MULTISAMPLE ); - } - else - { - glDisable( GL_MULTISAMPLE ); + if( aIsMoving == false ) + { + glEnable( GL_MULTISAMPLE ); + } + else + { + glDisable( GL_MULTISAMPLE ); + } } // clear color and depth buffers @@ -633,6 +636,11 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( glLightfv( GL_LIGHT0, GL_POSITION, headlight_pos ); } + bool drawMiddleSegments = !( (aIsMoving == true) && + m_boardAdapter.GetFlag( FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE ) ); + + const bool skipRenderHoles = (aIsMoving == true ) && + m_boardAdapter.GetFlag( FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE ); // Display board body // ///////////////////////////////////////////////////////////////////////// @@ -647,7 +655,7 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( m_ogl_disp_list_board->SetItIsTransparent( false ); - if( m_ogl_disp_list_through_holes_outer_with_npth ) + if( (m_ogl_disp_list_through_holes_outer_with_npth) && (!skipRenderHoles) ) { m_ogl_disp_list_through_holes_outer_with_npth->ApplyScalePosition( -m_boardAdapter.GetEpoxyThickness3DU() / 2.0f, @@ -675,14 +683,26 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( OGL_SetMaterial( m_materials.m_GrayMaterial ); } - if( m_ogl_disp_list_via ) + if( ( (aIsMoving == true) && + m_boardAdapter.GetFlag( FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE ) ) || + skipRenderHoles ) { - m_ogl_disp_list_via->DrawAll(); + // Do not render vias while moving or if skipRenderHoles + } + else + { + if( m_ogl_disp_list_via ) + { + m_ogl_disp_list_via->DrawAll(); + } } - if( m_ogl_disp_list_pads_holes ) + if( !skipRenderHoles ) { - m_ogl_disp_list_pads_holes->DrawAll(); + if( m_ogl_disp_list_pads_holes ) + { + m_ogl_disp_list_pads_holes->DrawAll(); + } } @@ -722,33 +742,41 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( if( (layer_id >= F_Cu) && (layer_id <= B_Cu) ) { - if( m_ogl_disp_lists_layers_holes_outer.find( layer_id ) != - m_ogl_disp_lists_layers_holes_outer.end() ) + if( skipRenderHoles ) { - const CLAYERS_OGL_DISP_LISTS* viasHolesLayer = - m_ogl_disp_lists_layers_holes_outer.at( layer_id ); - - wxASSERT( viasHolesLayer != NULL ); - - if( viasHolesLayer != NULL ) - { - pLayerDispList->DrawAllCameraCulledSubtractLayer( - m_ogl_disp_list_through_holes_outer, - viasHolesLayer, - (aIsMoving == false) ); - } + pLayerDispList->DrawAllCameraCulled( m_camera.GetPos().z, drawMiddleSegments ); } else { - pLayerDispList->DrawAllCameraCulledSubtractLayer( - m_ogl_disp_list_through_holes_outer, - NULL, - (aIsMoving == false) ); + if( m_ogl_disp_lists_layers_holes_outer.find( layer_id ) != + m_ogl_disp_lists_layers_holes_outer.end() ) + { + const CLAYERS_OGL_DISP_LISTS* viasHolesLayer = + m_ogl_disp_lists_layers_holes_outer.at( layer_id ); + + wxASSERT( viasHolesLayer != NULL ); + + if( viasHolesLayer != NULL ) + { + pLayerDispList->DrawAllCameraCulledSubtractLayer( + m_ogl_disp_list_through_holes_outer, + viasHolesLayer, + drawMiddleSegments ); + } + } + else + { + pLayerDispList->DrawAllCameraCulledSubtractLayer( + m_ogl_disp_list_through_holes_outer, + NULL, + drawMiddleSegments ); + } } } else { - if( m_boardAdapter.GetFlag( FL_SUBTRACT_MASK_FROM_SILK ) && + if( (!skipRenderHoles) && + m_boardAdapter.GetFlag( FL_SUBTRACT_MASK_FROM_SILK ) && ( ( ( layer_id == B_SilkS ) && ( m_ogl_disp_lists_layers.find( B_Mask ) != m_ogl_disp_lists_layers.end() ) ) || ( ( layer_id == F_SilkS ) && @@ -761,11 +789,12 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( pLayerDispList->DrawAllCameraCulledSubtractLayer( pLayerDispListMask, m_ogl_disp_list_through_holes_vias_outer, - (aIsMoving == false) ); + drawMiddleSegments ); } else { - if( m_ogl_disp_list_through_holes_vias_outer && + if( (!skipRenderHoles) && + m_ogl_disp_list_through_holes_vias_outer && ( ( layer_id == B_SilkS ) || ( layer_id == F_SilkS ) // Remove vias on SolderPaste can be added as an option in future // ( layer_id == B_Paste ) || ( layer_id == F_Paste ) ) @@ -774,11 +803,17 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( pLayerDispList->DrawAllCameraCulledSubtractLayer( NULL, m_ogl_disp_list_through_holes_vias_outer, - (aIsMoving == false) ); + drawMiddleSegments ); } else { - pLayerDispList->DrawAllCameraCulled( m_camera.GetPos().z, aIsMoving == false ); + // Do not render Paste layers when skipRenderHoles is enabled + // otherwise it will cause z-fight issues + if( !( skipRenderHoles && + ( ( layer_id == B_Paste ) || ( layer_id == F_Paste ) ) ) ) + { + pLayerDispList->DrawAllCameraCulled( m_camera.GetPos().z, drawMiddleSegments ); + } } } } @@ -790,12 +825,7 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( // Render 3D Models (Non-transparent) // ///////////////////////////////////////////////////////////////////////// - //setLight_Top( false ); - //setLight_Bottom( true ); render_3D_models( false, false ); - - //setLight_Top( true ); - //setLight_Bottom( false ); render_3D_models( true, false ); @@ -814,18 +844,18 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( if( m_camera.GetPos().z > 0 ) { render_solder_mask_layer( B_Mask, m_boardAdapter.GetLayerTopZpos3DU( B_Mask ), - aIsMoving ); + drawMiddleSegments, skipRenderHoles ); render_solder_mask_layer( F_Mask, m_boardAdapter.GetLayerBottomZpos3DU( F_Mask ), - aIsMoving ); + drawMiddleSegments, skipRenderHoles ); } else { render_solder_mask_layer( F_Mask, m_boardAdapter.GetLayerBottomZpos3DU( F_Mask ), - aIsMoving ); + drawMiddleSegments, skipRenderHoles ); render_solder_mask_layer( B_Mask, m_boardAdapter.GetLayerTopZpos3DU( B_Mask ), - aIsMoving ); + drawMiddleSegments, skipRenderHoles ); } glDisable( GL_POLYGON_OFFSET_FILL ); @@ -835,13 +865,7 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( // Render 3D Models (Transparent) // ///////////////////////////////////////////////////////////////////////// - - //setLight_Top( false ); - //setLight_Bottom( true ); render_3D_models( false, true ); - - //setLight_Top( true ); - //setLight_Bottom( false ); render_3D_models( true, true ); @@ -1027,9 +1051,10 @@ void C3D_RENDER_OGL_LEGACY::ogl_free_all_display_lists() } -void C3D_RENDER_OGL_LEGACY::render_solder_mask_layer( PCB_LAYER_ID aLayerID, - float aZPosition, - bool aIsRenderingOnPreviewMode ) +void C3D_RENDER_OGL_LEGACY::render_solder_mask_layer(PCB_LAYER_ID aLayerID, + float aZPosition, + bool aDrawMiddleSegments, + bool aSkipRenderHoles ) { wxASSERT( (aLayerID == B_Mask) || (aLayerID == F_Mask) ); @@ -1053,10 +1078,18 @@ void C3D_RENDER_OGL_LEGACY::render_solder_mask_layer( PCB_LAYER_ID aLayerID, m_ogl_disp_list_board->SetItIsTransparent( true ); - m_ogl_disp_list_board->DrawAllCameraCulledSubtractLayer( - pLayerDispListMask, - m_ogl_disp_list_through_holes_vias_outer, - !aIsRenderingOnPreviewMode ); + if( aSkipRenderHoles ) + { + m_ogl_disp_list_board->DrawAllCameraCulled( m_camera.GetPos().z, + aDrawMiddleSegments ); + } + else + { + m_ogl_disp_list_board->DrawAllCameraCulledSubtractLayer( + pLayerDispListMask, + m_ogl_disp_list_through_holes_vias_outer, + aDrawMiddleSegments ); + } } else { @@ -1075,10 +1108,18 @@ void C3D_RENDER_OGL_LEGACY::render_solder_mask_layer( PCB_LAYER_ID aLayerID, m_ogl_disp_list_board->SetItIsTransparent( true ); - m_ogl_disp_list_board->DrawAllCameraCulledSubtractLayer( - NULL, - m_ogl_disp_list_through_holes_vias_outer, - !aIsRenderingOnPreviewMode ); + if( aSkipRenderHoles ) + { + m_ogl_disp_list_board->DrawAllCameraCulled( m_camera.GetPos().z, + aDrawMiddleSegments ); + } + else + { + m_ogl_disp_list_board->DrawAllCameraCulledSubtractLayer( + NULL, + m_ogl_disp_list_through_holes_vias_outer, + aDrawMiddleSegments ); + } } } } diff --git a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.h b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.h index 59cbbd734c..4d52ee18a4 100644 --- a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.h +++ b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -148,7 +148,8 @@ private: void render_solder_mask_layer( PCB_LAYER_ID aLayerID, float aZPosition, - bool aIsRenderingOnPreviewMode ); + bool aDrawMiddleSegments, + bool aSkipRenderHoles ); void get_layer_z_pos( PCB_LAYER_ID aLayerID, float &aOutZtop, diff --git a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c_ogl_3dmodel.h b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c_ogl_3dmodel.h index d212081ba1..c5c25a2761 100644 --- a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c_ogl_3dmodel.h +++ b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c_ogl_3dmodel.h @@ -3,7 +3,7 @@ * * Copyright (C) 2020 Oleg Endo * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -37,7 +37,7 @@ #include "../3d_render_raytracing/shapes3D/cbbox.h" #include "../../3d_enums.h" -/// +/// class C_OGL_3DMODEL { public: diff --git a/3d-viewer/3d_viewer/3d_menubar.cpp b/3d-viewer/3d_viewer/3d_menubar.cpp index 44588e8223..13bac8e238 100644 --- a/3d-viewer/3d_viewer/3d_menubar.cpp +++ b/3d-viewer/3d_viewer/3d_menubar.cpp @@ -4,7 +4,7 @@ * Copyright (C) 2016 Mario Luzeiro * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2013 Wayne Stambaugh - * Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -205,7 +205,6 @@ void EDA_3D_VIEWER::CreateMenuBar() optsSubmenu->AddMenu( propsSubmenu, SELECTION_CONDITIONS::ShowAlways ); - optsSubmenu->AddCheckItem( EDA_3D_ACTIONS::showCopperThickness, copperThicknessCondition ); optsSubmenu->AddCheckItem( EDA_3D_ACTIONS::showBoundingBoxes, boundingBoxesCondition ); // Raytracing submenu diff --git a/3d-viewer/3d_viewer/3d_viewer_settings.cpp b/3d-viewer/3d_viewer/3d_viewer_settings.cpp index f50d9a26da..9337bded05 100644 --- a/3d-viewer/3d_viewer/3d_viewer_settings.cpp +++ b/3d-viewer/3d_viewer/3d_viewer_settings.cpp @@ -19,6 +19,7 @@ */ #include <3d_enums.h> +#include #include #include @@ -48,10 +49,28 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() : static_cast( MATERIAL_MODE::NORMAL ), static_cast( MATERIAL_MODE::CAD_MODE ) ) ); + m_params.emplace_back( new PARAM( "render.opengl_AA_mode", &m_Render.opengl_AA_mode, + static_cast( ANTIALIASING_MODE::AA_8X ), + static_cast( ANTIALIASING_MODE::AA_NONE ), + static_cast( ANTIALIASING_MODE::AA_8X ) ) ); + + // OpenGL options m_params.emplace_back( new PARAM( "render.opengl_copper_thickness", &m_Render.opengl_copper_thickness, true ) ); m_params.emplace_back( new PARAM( "render.opengl_show_model_bbox", &m_Render.opengl_show_model_bbox, false ) ); + m_params.emplace_back( new PARAM( + "render.opengl_AA_disableOnMove", &m_Render.opengl_AA_disableOnMove, false ) ); + m_params.emplace_back( new PARAM( + "render.opengl_thickness_disableOnMove", &m_Render.opengl_thickness_disableOnMove, false ) ); + m_params.emplace_back( new PARAM( + "render.opengl_vias_disableOnMove", &m_Render.opengl_vias_disableOnMove, false ) ); + m_params.emplace_back( new PARAM( + "render.opengl_holes_disableOnMove", &m_Render.opengl_holes_disableOnMove, false ) ); + m_params.emplace_back( new PARAM( + "render.opengl_render_bbox_only_OnMove", &m_Render.opengl_render_bbox_only_OnMove, false ) ); + + // Raytracing options m_params.emplace_back( new PARAM( "render.raytrace_anti_aliasing", &m_Render.raytrace_anti_aliasing, true ) ); m_params.emplace_back( new PARAM( "render.raytrace_backfloor", @@ -66,6 +85,7 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() : &m_Render.raytrace_refractions, true ) ); m_params.emplace_back( new PARAM( "render.raytrace_shadows", &m_Render.raytrace_shadows, true ) ); + m_params.emplace_back( new PARAM( "render.realistic", &m_Render.realistic, true ) ); m_params.emplace_back( new PARAM( "render.show_adhesive", &m_Render.show_adhesive, true ) ); diff --git a/3d-viewer/3d_viewer/3d_viewer_settings.h b/3d-viewer/3d_viewer/3d_viewer_settings.h index de87b2eec3..dee16d38fa 100644 --- a/3d-viewer/3d_viewer/3d_viewer_settings.h +++ b/3d-viewer/3d_viewer/3d_viewer_settings.h @@ -32,7 +32,13 @@ public: { int engine; int grid_type; + int opengl_AA_mode; int material_mode; + bool opengl_AA_disableOnMove; + bool opengl_thickness_disableOnMove; + bool opengl_vias_disableOnMove; + bool opengl_holes_disableOnMove; + bool opengl_render_bbox_only_OnMove; bool opengl_copper_thickness; bool opengl_show_model_bbox; bool raytrace_anti_aliasing; diff --git a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option.cpp b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option.cpp index 3fae847770..8abdfd71a1 100644 --- a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option.cpp +++ b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr - * Copyright (C) 2014-2018 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2014-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -94,9 +94,7 @@ bool DIALOG_3D_VIEW_OPTIONS::TransferDataToWindow() // Check/uncheck checkboxes m_checkBoxRealisticMode->SetValue( m_settings.GetFlag( FL_USE_REALISTIC_MODE ) ); m_checkBoxBoardBody->SetValue( m_settings.GetFlag( FL_SHOW_BOARD_BODY ) ); - m_checkBoxCuThickness->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) ); m_checkBoxAreas->SetValue( m_settings.GetFlag( FL_ZONE ) ); - m_checkBoxBoundingBoxes->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) ); m_checkBox3DshapesTH->SetValue( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL ) ); m_checkBox3DshapesSMD->SetValue( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT ) ); @@ -110,6 +108,24 @@ bool DIALOG_3D_VIEW_OPTIONS::TransferDataToWindow() m_checkBoxECO->SetValue( m_settings.GetFlag( FL_ECO ) ); m_checkBoxSubtractMaskFromSilk->SetValue( m_settings.GetFlag( FL_SUBTRACT_MASK_FROM_SILK ) ); + // OpenGL options + m_checkBoxCuThickness->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) ); + m_checkBoxBoundingBoxes->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) ); + m_checkBoxDisableAAMove->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE ) ); + m_checkBoxDisableMoveThickness->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE ) ); + m_checkBoxDisableMoveVias->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE ) ); + m_checkBoxDisableMoveHoles->SetValue( m_settings.GetFlag( FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE ) ); + m_choiceAntiAliasing->SetSelection( static_cast( m_settings.AntiAliasingGet() ) ); + + // Raytracing options + m_checkBoxRaytracing_renderShadows->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS ) ); + m_checkBoxRaytracing_addFloor->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR ) ); + m_checkBoxRaytracing_showRefractions->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS ) ); + m_checkBoxRaytracing_showReflections->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS ) ); + m_checkBoxRaytracing_postProcessing->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING ) ); + m_checkBoxRaytracing_antiAliasing->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING ) ); + m_checkBoxRaytracing_proceduralTextures->SetValue( m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES ) ); + return true; } @@ -121,9 +137,7 @@ bool DIALOG_3D_VIEW_OPTIONS::TransferDataFromWindow() // Set visibility of items m_settings.SetFlag( FL_SHOW_BOARD_BODY, m_checkBoxBoardBody->GetValue() ); - m_settings.SetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS, m_checkBoxCuThickness->GetValue() ); m_settings.SetFlag( FL_ZONE, m_checkBoxAreas->GetValue() ); - m_settings.SetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX, m_checkBoxBoundingBoxes->GetValue() ); m_settings.SetFlag( FL_SUBTRACT_MASK_FROM_SILK, m_checkBoxSubtractMaskFromSilk->GetValue() ); // Set 3D shapes visibility @@ -139,5 +153,23 @@ bool DIALOG_3D_VIEW_OPTIONS::TransferDataFromWindow() m_settings.SetFlag( FL_COMMENTS, m_checkBoxComments->GetValue() ); m_settings.SetFlag( FL_ECO, m_checkBoxECO->GetValue( ) ); + // OpenGL options + m_settings.SetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS, m_checkBoxCuThickness->GetValue() ); + m_settings.SetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX, m_checkBoxBoundingBoxes->GetValue() ); + m_settings.SetFlag( FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE, m_checkBoxDisableAAMove->GetValue() ); + m_settings.SetFlag( FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE, m_checkBoxDisableMoveThickness->GetValue() ); + m_settings.SetFlag( FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE, m_checkBoxDisableMoveVias->GetValue() ); + m_settings.SetFlag( FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE, m_checkBoxDisableMoveHoles->GetValue() ); + m_settings.AntiAliasingSet( static_cast( m_choiceAntiAliasing->GetSelection() ) ); + + // Raytracing options + m_settings.SetFlag( FL_RENDER_RAYTRACING_SHADOWS, m_checkBoxRaytracing_renderShadows->GetValue() ); + m_settings.SetFlag( FL_RENDER_RAYTRACING_BACKFLOOR, m_checkBoxRaytracing_addFloor->GetValue() ); + m_settings.SetFlag( FL_RENDER_RAYTRACING_REFRACTIONS, m_checkBoxRaytracing_showRefractions->GetValue() ); + m_settings.SetFlag( FL_RENDER_RAYTRACING_REFLECTIONS, m_checkBoxRaytracing_showReflections->GetValue() ); + m_settings.SetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING, m_checkBoxRaytracing_postProcessing->GetValue() ); + m_settings.SetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING, m_checkBoxRaytracing_antiAliasing->GetValue() ); + m_settings.SetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES, m_checkBoxRaytracing_proceduralTextures->GetValue() ); + return true; } diff --git a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.cpp b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.cpp index 30f306c08a..203eda7131 100644 --- a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.cpp +++ b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.cpp @@ -16,13 +16,15 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi wxBoxSizer* bSizerMain; bSizerMain = new wxBoxSizer( wxVERTICAL ); + m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panelDspOpt = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer* bSizerUpper; bSizerUpper = new wxBoxSizer( wxHORIZONTAL ); wxBoxSizer* bSizeLeft; bSizeLeft = new wxBoxSizer( wxVERTICAL ); - m_staticText3DRenderOpts = new wxStaticText( this, wxID_ANY, _("Render options:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText3DRenderOpts = new wxStaticText( m_panelDspOpt, wxID_ANY, _("Render options:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText3DRenderOpts->Wrap( -1 ); m_staticText3DRenderOpts->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); @@ -36,55 +38,37 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi fgSizerRenderOptions->Add( 0, 0, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 ); - m_bitmapRealisticMode = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapRealisticMode = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_bitmapRealisticMode, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxRealisticMode = new wxCheckBox( this, wxID_ANY, _("Realistic mode"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRealisticMode = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Realistic mode"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_checkBoxRealisticMode, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizerRenderOptions->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapBoardBody = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapBoardBody = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_bitmapBoardBody, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxBoardBody = new wxCheckBox( this, wxID_ANY, _("Show board body"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxBoardBody = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show board body"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_checkBoxBoardBody, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - fgSizerRenderOptions->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_bitmapCuThickness = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerRenderOptions->Add( m_bitmapCuThickness, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_checkBoxCuThickness = new wxCheckBox( this, wxID_ANY, _("Show copper thickness"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerRenderOptions->Add( m_checkBoxCuThickness, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - fgSizerRenderOptions->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapBoundingBoxes = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerRenderOptions->Add( m_bitmapBoundingBoxes, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_checkBoxBoundingBoxes = new wxCheckBox( this, wxID_ANY, _("Show model bounding boxes"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerRenderOptions->Add( m_checkBoxBoundingBoxes, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - - fgSizerRenderOptions->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - - m_bitmapAreas = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapAreas = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_bitmapAreas, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxAreas = new wxCheckBox( this, wxID_ANY, _("Show filled areas in zones"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxAreas = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show filled areas in zones"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_checkBoxAreas, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizerRenderOptions->Add( 0, 0, 0, wxALIGN_LEFT|wxALIGN_RIGHT, 10 ); - m_bitmapSubtractMaskFromSilk = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapSubtractMaskFromSilk = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_bitmapSubtractMaskFromSilk, 0, wxALL, 5 ); - m_checkBoxSubtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract soldermask from silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxSubtractMaskFromSilk = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Subtract soldermask from silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerRenderOptions->Add( m_checkBoxSubtractMaskFromSilk, 0, wxALL, 5 ); wxFlexGridSizer* fgSizer3; @@ -101,7 +85,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi bSizeLeft->Add( 0, 10, 0, 0, 5 ); - m_staticText3DmodelVisibility = new wxStaticText( this, wxID_ANY, _("3D model visibility:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText3DmodelVisibility = new wxStaticText( m_panelDspOpt, wxID_ANY, _("3D model visibility:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText3DmodelVisibility->Wrap( -1 ); m_staticText3DmodelVisibility->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); @@ -115,28 +99,28 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi fgSizer3DVisibility->Add( 0, 0, 1, wxRIGHT|wxLEFT, 10 ); - m_bitmap3DshapesTH = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmap3DshapesTH = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizer3DVisibility->Add( m_bitmap3DshapesTH, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBox3DshapesTH = new wxCheckBox( this, wxID_ANY, _("Show 3D through hole models"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBox3DshapesTH = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show 3D through hole models"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer3DVisibility->Add( m_checkBox3DshapesTH, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizer3DVisibility->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmap3DshapesSMD = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmap3DshapesSMD = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizer3DVisibility->Add( m_bitmap3DshapesSMD, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBox3DshapesSMD = new wxCheckBox( this, wxID_ANY, _("Show 3D SMD models"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBox3DshapesSMD = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show 3D SMD models"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer3DVisibility->Add( m_checkBox3DshapesSMD, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizer3DVisibility->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmap3DshapesVirtual = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmap3DshapesVirtual = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizer3DVisibility->Add( m_bitmap3DshapesVirtual, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBox3DshapesVirtual = new wxCheckBox( this, wxID_ANY, _("Show 3D virtual models"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBox3DshapesVirtual = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show 3D virtual models"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer3DVisibility->Add( m_checkBox3DshapesVirtual, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); @@ -145,7 +129,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi bSizerUpper->Add( bSizeLeft, 1, wxEXPAND, 5 ); - m_staticlineVertical = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); + m_staticlineVertical = new wxStaticLine( m_panelDspOpt, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); bSizerUpper->Add( m_staticlineVertical, 0, wxEXPAND | wxALL, 5 ); wxBoxSizer* bSizerRight; @@ -154,7 +138,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi wxBoxSizer* bSizeLayer; bSizeLayer = new wxBoxSizer( wxVERTICAL ); - m_staticTextBoardLayers = new wxStaticText( this, wxID_ANY, _("Board layers:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextBoardLayers = new wxStaticText( m_panelDspOpt, wxID_ANY, _("Board layers:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextBoardLayers->Wrap( -1 ); m_staticTextBoardLayers->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); @@ -168,37 +152,37 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi fgSizerShowBrdLayersOpts->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapSilkscreen = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapSilkscreen = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_bitmapSilkscreen, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxSilkscreen = new wxCheckBox( this, wxID_ANY, _("Show silkscreen layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxSilkscreen = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show silkscreen layers"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_checkBoxSilkscreen, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); fgSizerShowBrdLayersOpts->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapSolderMask = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapSolderMask = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_bitmapSolderMask, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxSolderMask = new wxCheckBox( this, wxID_ANY, _("Show solder mask layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxSolderMask = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show solder mask layers"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_checkBoxSolderMask, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizerShowBrdLayersOpts->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapSolderPaste = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapSolderPaste = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_bitmapSolderPaste, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxSolderpaste = new wxCheckBox( this, wxID_ANY, _("Show solder paste layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxSolderpaste = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show solder paste layers"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_checkBoxSolderpaste, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizerShowBrdLayersOpts->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapAdhesive = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapAdhesive = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_bitmapAdhesive, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxAdhesive = new wxCheckBox( this, wxID_ANY, _("Show adhesive layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxAdhesive = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show adhesive layers"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowBrdLayersOpts->Add( m_checkBoxAdhesive, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); @@ -207,7 +191,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi bSizeLayer->Add( 0, 10, 0, 0, 5 ); - m_staticTextUserLayers = new wxStaticText( this, wxID_ANY, _("User layers (not shown in realistic mode):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextUserLayers = new wxStaticText( m_panelDspOpt, wxID_ANY, _("User layers (not shown in realistic mode):"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextUserLayers->Wrap( -1 ); m_staticTextUserLayers->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); @@ -221,19 +205,19 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi fgSizerShowUserLayersOpts->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapComments = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapComments = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowUserLayersOpts->Add( m_bitmapComments, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxComments = new wxCheckBox( this, wxID_ANY, _("Show comments and drawings layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxComments = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show comments and drawings layers"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowUserLayersOpts->Add( m_checkBoxComments, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); fgSizerShowUserLayersOpts->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_bitmapECO = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmapECO = new wxStaticBitmap( m_panelDspOpt, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowUserLayersOpts->Add( m_bitmapECO, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_checkBoxECO = new wxCheckBox( this, wxID_ANY, _("Show ECO layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxECO = new wxCheckBox( m_panelDspOpt, wxID_ANY, _("Show ECO layers"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShowUserLayersOpts->Add( m_checkBoxECO, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); @@ -246,7 +230,193 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi bSizerUpper->Add( bSizerRight, 1, wxEXPAND, 5 ); - bSizerMain->Add( bSizerUpper, 1, wxEXPAND, 5 ); + m_panelDspOpt->SetSizer( bSizerUpper ); + m_panelDspOpt->Layout(); + bSizerUpper->Fit( m_panelDspOpt ); + m_notebook->AddPage( m_panelDspOpt, _("Display Options"), true ); + m_panelOpenGL = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerOpenGL; + bSizerOpenGL = new wxBoxSizer( wxVERTICAL ); + + m_staticTextOpenGLRenderOpts = new wxStaticText( m_panelOpenGL, wxID_ANY, _("OpenGL Render options:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextOpenGLRenderOpts->Wrap( -1 ); + m_staticTextOpenGLRenderOpts->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bSizerOpenGL->Add( m_staticTextOpenGLRenderOpts, 0, wxALL|wxEXPAND, 5 ); + + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizer6->SetFlexibleDirection( wxBOTH ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + fgSizer6->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_bitmapBoundingBoxes = new wxStaticBitmap( m_panelOpenGL, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer6->Add( m_bitmapBoundingBoxes, 0, wxALL, 5 ); + + m_checkBoxBoundingBoxes = new wxCheckBox( m_panelOpenGL, wxID_ANY, _("Show model bounding boxes"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer6->Add( m_checkBoxBoundingBoxes, 0, wxALL, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_bitmapCuThickness = new wxStaticBitmap( m_panelOpenGL, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer6->Add( m_bitmapCuThickness, 0, wxALL, 5 ); + + m_checkBoxCuThickness = new wxCheckBox( m_panelOpenGL, wxID_ANY, _("Show copper thickness"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer6->Add( m_checkBoxCuThickness, 0, wxALL, 5 ); + + + bSizerOpenGL->Add( fgSizer6, 1, wxEXPAND, 5 ); + + m_staticTextOpenGLRenderOptsAA = new wxStaticText( m_panelOpenGL, wxID_ANY, _("Anti-aliasing"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextOpenGLRenderOptsAA->Wrap( -1 ); + m_staticTextOpenGLRenderOptsAA->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bSizerOpenGL->Add( m_staticTextOpenGLRenderOptsAA, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer7; + fgSizer7 = new wxFlexGridSizer( 1, 2, 0, 0 ); + fgSizer7->SetFlexibleDirection( wxBOTH ); + fgSizer7->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + fgSizer7->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + wxString m_choiceAntiAliasingChoices[] = { _("Disabled"), _("2x"), _("4x"), _("8x"), wxEmptyString }; + int m_choiceAntiAliasingNChoices = sizeof( m_choiceAntiAliasingChoices ) / sizeof( wxString ); + m_choiceAntiAliasing = new wxChoice( m_panelOpenGL, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceAntiAliasingNChoices, m_choiceAntiAliasingChoices, 0 ); + m_choiceAntiAliasing->SetSelection( 0 ); + fgSizer7->Add( m_choiceAntiAliasing, 0, 0, 5 ); + + + fgSizer7->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_staticText14 = new wxStaticText( m_panelOpenGL, wxID_ANY, _("(3D-Viewer must be closed and re-opened to apply this setting)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText14->Wrap( -1 ); + fgSizer7->Add( m_staticText14, 0, wxLEFT, 5 ); + + + bSizerOpenGL->Add( fgSizer7, 1, wxEXPAND, 5 ); + + m_staticTextOpenGLWhileMoving = new wxStaticText( m_panelOpenGL, wxID_ANY, _("While Moving"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextOpenGLWhileMoving->Wrap( -1 ); + m_staticTextOpenGLWhileMoving->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bSizerOpenGL->Add( m_staticTextOpenGLWhileMoving, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer8; + fgSizer8 = new wxFlexGridSizer( 0, 4, 0, 0 ); + fgSizer8->SetFlexibleDirection( wxBOTH ); + fgSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + fgSizer8->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxDisableAAMove = new wxCheckBox( m_panelOpenGL, wxID_ANY, _("Disable anti-aliasing"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer8->Add( m_checkBoxDisableAAMove, 0, wxALL, 5 ); + + + fgSizer8->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxDisableMoveThickness = new wxCheckBox( m_panelOpenGL, wxID_ANY, _("Disable thickness"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer8->Add( m_checkBoxDisableMoveThickness, 0, wxALL, 5 ); + + + fgSizer8->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxDisableMoveVias = new wxCheckBox( m_panelOpenGL, wxID_ANY, _("Disable vias"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer8->Add( m_checkBoxDisableMoveVias, 0, wxALL, 5 ); + + + fgSizer8->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxDisableMoveHoles = new wxCheckBox( m_panelOpenGL, wxID_ANY, _("Disable holes"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer8->Add( m_checkBoxDisableMoveHoles, 0, wxALL, 5 ); + + + bSizerOpenGL->Add( fgSizer8, 1, wxEXPAND, 5 ); + + + m_panelOpenGL->SetSizer( bSizerOpenGL ); + m_panelOpenGL->Layout(); + bSizerOpenGL->Fit( m_panelOpenGL ); + m_notebook->AddPage( m_panelOpenGL, _("OpenGL"), false ); + m_panelRaytracing = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer14; + bSizer14 = new wxBoxSizer( wxVERTICAL ); + + m_staticTextRaytracingRenderOpts = new wxStaticText( m_panelRaytracing, wxID_ANY, _("Raytracing Render options:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextRaytracingRenderOpts->Wrap( -1 ); + m_staticTextRaytracingRenderOpts->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bSizer14->Add( m_staticTextRaytracingRenderOpts, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer9; + fgSizer9 = new wxFlexGridSizer( 0, 4, 0, 0 ); + fgSizer9->SetFlexibleDirection( wxBOTH ); + fgSizer9->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_renderShadows = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Render Shadows"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_renderShadows->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_renderShadows, 0, wxALL, 5 ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_proceduralTextures = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Procedural Textures"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_proceduralTextures->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_proceduralTextures, 0, wxALL, 5 ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_addFloor = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Add Floor"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_addFloor->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_addFloor, 0, wxALL, 5 ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_showRefractions = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Refractions"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_showRefractions->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_showRefractions, 0, wxALL, 5 ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_showReflections = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Reflections"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_showReflections->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_showReflections, 0, wxALL, 5 ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_antiAliasing = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Anti-aliasing"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_antiAliasing->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_antiAliasing, 0, wxALL, 5 ); + + + fgSizer9->Add( 0, 0, 1, wxLEFT|wxRIGHT, 5 ); + + m_checkBoxRaytracing_postProcessing = new wxCheckBox( m_panelRaytracing, wxID_ANY, _("Post-processing"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkBoxRaytracing_postProcessing->SetValue(true); + fgSizer9->Add( m_checkBoxRaytracing_postProcessing, 0, wxALL, 5 ); + + + bSizer14->Add( fgSizer9, 1, wxEXPAND, 5 ); + + + m_panelRaytracing->SetSizer( bSizer14 ); + m_panelRaytracing->Layout(); + bSizer14->Fit( m_panelRaytracing ); + m_notebook->AddPage( m_panelRaytracing, _("Raytracing"), false ); + + bSizerMain->Add( m_notebook, 1, wxALL|wxEXPAND, 5 ); m_staticlineH = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); bSizerMain->Add( m_staticlineH, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); @@ -263,6 +433,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi this->SetSizer( bSizerMain ); this->Layout(); + bSizerMain->Fit( this ); this->Centre( wxBOTH ); diff --git a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp index 1d3a00da2e..4a56a51d64 100644 --- a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp +++ b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp @@ -45,7 +45,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE - 571,372 + -1,-1 wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER DIALOG_SHIM; dialog_shim.h 3D Display Options @@ -60,1404 +60,66 @@ none 5 - wxEXPAND + wxALL|wxEXPAND 1 - + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 - bSizerUpper - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizeLeft - wxVERTICAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,92,-1,70,0 - 0 - 0 - wxID_ANY - Render options: - 0 - - 0 - - - 0 - - 1 - m_staticText3DRenderOpts - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxBOTTOM - 0 - - 3 - wxBOTH - - - 0 - - fgSizerRenderOptions - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 10 - wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapRealisticMode - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Realistic mode - - 0 - - - 0 - - 1 - m_checkBoxRealisticMode - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnCheckRealisticMode - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ; [-1; -1] - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapBoardBody - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show board body - - 0 - - - 0 - - 1 - m_checkBoxBoardBody - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxEXPAND - 1 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ; [-1; -1] - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapCuThickness - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show copper thickness - - 0 - - - 0 - - 1 - m_checkBoxCuThickness - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapBoundingBoxes - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show model bounding boxes - - 0 - - - 0 - - 1 - m_checkBoxBoundingBoxes - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapAreas - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show filled areas in zones - - 0 - - - 0 - - 1 - m_checkBoxAreas - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxALIGN_LEFT|wxALIGN_RIGHT - 0 - - 0 - protected - 0 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapSubtractMaskFromSilk - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Subtract soldermask from silkscreen - - 0 - - - 0 - - 1 - m_checkBoxSubtractMaskFromSilk - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 5 - wxEXPAND - 1 - - 2 - wxBOTH - - - 0 - - fgSizer3 - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - - - - - 5 - - 0 - - 10 - protected - 0 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,92,-1,70,0 - 0 - 0 - wxID_ANY - 3D model visibility: - 0 - - 0 - - - 0 - - 1 - m_staticText3DmodelVisibility - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxEXPAND - 0 - - 3 - wxBOTH - - - 0 - - fgSizer3DVisibility - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 10 - wxRIGHT|wxLEFT - 1 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap3DshapesTH - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show 3D through hole models - - 0 - - - 0 - - 1 - m_checkBox3DshapesTH - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap3DshapesSMD - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show 3D SMD models - - 0 - - - 0 - - 1 - m_checkBox3DshapesSMD - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap3DshapesVirtual - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show 3D virtual models - - 0 - - - 0 - - 1 - m_checkBox3DshapesVirtual - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - 5 - wxEXPAND | wxALL - 0 - + 1 + m_notebook + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + + + Display Options + 1 + 1 1 1 @@ -1492,7 +154,7 @@ 0 1 - m_staticlineVertical + m_panelDspOpt 1 @@ -1502,990 +164,3840 @@ Resizable 1 - wxLI_VERTICAL - + ; ; forward_declare 0 - + wxTAB_TRAVERSAL + + + bSizerUpper + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizeLeft + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + Render options: + 0 + + 0 + + + 0 + + 1 + m_staticText3DRenderOpts + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND|wxBOTTOM + 0 + + 3 + wxBOTH + + + 0 + + fgSizerRenderOptions + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 10 + wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapRealisticMode + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Realistic mode + + 0 + + + 0 + + 1 + m_checkBoxRealisticMode + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnCheckRealisticMode + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ; [-1; -1] + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapBoardBody + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show board body + + 0 + + + 0 + + 1 + m_checkBoxBoardBody + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapAreas + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show filled areas in zones + + 0 + + + 0 + + 1 + m_checkBoxAreas + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxALIGN_LEFT|wxALIGN_RIGHT + 0 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapSubtractMaskFromSilk + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Subtract soldermask from silkscreen + + 0 + + + 0 + + 1 + m_checkBoxSubtractMaskFromSilk + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxEXPAND + 1 + + 2 + wxBOTH + + + 0 + + fgSizer3 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + + + + + 5 + + 0 + + 10 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + 3D model visibility: + 0 + + 0 + + + 0 + + 1 + m_staticText3DmodelVisibility + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 0 + + 3 + wxBOTH + + + 0 + + fgSizer3DVisibility + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 10 + wxRIGHT|wxLEFT + 1 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap3DshapesTH + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show 3D through hole models + + 0 + + + 0 + + 1 + m_checkBox3DshapesTH + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap3DshapesSMD + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show 3D SMD models + + 0 + + + 0 + + 1 + m_checkBox3DshapesSMD + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap3DshapesVirtual + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show 3D virtual models + + 0 + + + 0 + + 1 + m_checkBox3DshapesVirtual + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticlineVertical + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_VERTICAL + + 0 + + + + + + + + 5 + wxEXPAND + 1 + + + bSizerRight + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizeLayer + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + Board layers: + 0 + + 0 + + + 0 + + 1 + m_staticTextBoardLayers + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 0 + + 3 + wxBOTH + + + 0 + + fgSizerShowBrdLayersOpts + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapSilkscreen + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show silkscreen layers + + 0 + + + 0 + + 1 + m_checkBoxSilkscreen + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapSolderMask + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show solder mask layers + + 0 + + + 0 + + 1 + m_checkBoxSolderMask + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapSolderPaste + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show solder paste layers + + 0 + + + 0 + + 1 + m_checkBoxSolderpaste + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapAdhesive + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show adhesive layers + + 0 + + + 0 + + 1 + m_checkBoxAdhesive + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + 5 + + 0 + + 10 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + User layers (not shown in realistic mode): + 0 + + 0 + + + 0 + + 1 + m_staticTextUserLayers + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 0 + + 3 + wxBOTH + + + 0 + + fgSizerShowUserLayersOpts + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapComments + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show comments and drawings layers + + 0 + + + 0 + + 1 + m_checkBoxComments + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 10 + wxRIGHT|wxLEFT + 0 + + 0 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapECO + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show ECO layers + + 0 + + + 0 + + 1 + m_checkBoxECO + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + - - 5 - wxEXPAND - 1 - + + + OpenGL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 - bSizerRight - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bSizeLayer - wxVERTICAL - none - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,92,-1,70,0 - 0 - 0 - wxID_ANY - Board layers: - 0 - - 0 - - - 0 - - 1 - m_staticTextBoardLayers - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - + 1 + m_panelOpenGL + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizerOpenGL + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + OpenGL Render options: + 0 + + 0 + + + 0 + + 1 + m_staticTextOpenGLRenderOpts + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 - - 5 - wxEXPAND - 0 - - 3 - wxBOTH - - - 0 - - fgSizerShowBrdLayersOpts - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - + + + 5 + wxEXPAND + 1 + + 3 + wxBOTH + + + 0 + + fgSizer6 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapSilkscreen - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapBoundingBoxes + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show silkscreen layers - - 0 - - - 0 - - 1 - m_checkBoxSilkscreen - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show model bounding boxes + + 0 + + + 0 + + 1 + m_checkBoxBoundingBoxes + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapSolderMask - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ; [-1; -1] + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmapCuThickness + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show solder mask layers - - 0 - - - 0 - - 1 - m_checkBoxSolderMask - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapSolderPaste - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show solder paste layers - - 0 - - - 0 - - 1 - m_checkBoxSolderpaste - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapAdhesive - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show adhesive layers - - 0 - - - 0 - - 1 - m_checkBoxAdhesive - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Show copper thickness + + 0 + + + 0 + + 1 + m_checkBoxCuThickness + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + - - 5 - - 0 - - 10 - protected - 0 + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + Anti-aliasing + 0 + + 0 + + + 0 + + 1 + m_staticTextOpenGLRenderOptsAA + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 1 + + 2 + wxBOTH + + + 0 + + fgSizer7 + wxFLEX_GROWMODE_SPECIFIED + none + 1 + 0 + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + "Disabled" "2x" "4x" "8x" "" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choiceAntiAliasing + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + (3D-Viewer must be closed and re-opened to apply this setting) + 0 + + 0 + + + 0 + + 1 + m_staticText14 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,92,-1,70,0 - 0 - 0 - wxID_ANY - User layers (not shown in realistic mode): - 0 - - 0 - - - 0 - - 1 - m_staticTextUserLayers - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + While Moving + 0 + + 0 + + + 0 + + 1 + m_staticTextOpenGLWhileMoving + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 1 + + 4 + wxBOTH + + + 0 + + fgSizer8 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Disable anti-aliasing + + 0 + + + 0 + + 1 + m_checkBoxDisableAAMove + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Disable thickness + + 0 + + + 0 + + 1 + m_checkBoxDisableMoveThickness + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Disable vias + + 0 + + + 0 + + 1 + m_checkBoxDisableMoveVias + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Disable holes + + 0 + + + 0 + + 1 + m_checkBoxDisableMoveHoles + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + - - 5 - wxEXPAND - 0 - - 3 - wxBOTH - - - 0 - - fgSizerShowUserLayersOpts - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - + + + + + + + Raytracing + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panelRaytracing + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + + bSizer14 + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + Raytracing Render options: + 0 + + 0 + + + 0 + + 1 + m_staticTextRaytracingRenderOpts + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxEXPAND + 1 + + 4 + wxBOTH + + + 0 + + fgSizer9 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapComments - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Render Shadows + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_renderShadows + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show comments and drawings layers - - 0 - - - 0 - - 1 - m_checkBoxComments - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 - - 10 - wxRIGHT|wxLEFT - 0 - - 0 - protected - 0 - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Procedural Textures + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_proceduralTextures + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmapECO - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 - - 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Show ECO layers - - 0 - - - 0 - - 1 - m_checkBoxECO - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Add Floor + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_addFloor + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Refractions + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_showRefractions + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Reflections + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_showReflections + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Anti-aliasing + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_antiAliasing + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxLEFT|wxRIGHT + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Post-processing + + 0 + + + 0 + + 1 + m_checkBoxRaytracing_postProcessing + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + diff --git a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h index d8480b442e..6f4519e9b4 100644 --- a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h +++ b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h @@ -24,6 +24,9 @@ #include #include #include +#include +#include +#include #include #include @@ -38,15 +41,13 @@ class DIALOG_3D_VIEW_OPTIONS_BASE : public DIALOG_SHIM private: protected: + wxNotebook* m_notebook; + wxPanel* m_panelDspOpt; wxStaticText* m_staticText3DRenderOpts; wxStaticBitmap* m_bitmapRealisticMode; wxCheckBox* m_checkBoxRealisticMode; wxStaticBitmap* m_bitmapBoardBody; wxCheckBox* m_checkBoxBoardBody; - wxStaticBitmap* m_bitmapCuThickness; - wxCheckBox* m_checkBoxCuThickness; - wxStaticBitmap* m_bitmapBoundingBoxes; - wxCheckBox* m_checkBoxBoundingBoxes; wxStaticBitmap* m_bitmapAreas; wxCheckBox* m_checkBoxAreas; wxStaticBitmap* m_bitmapSubtractMaskFromSilk; @@ -73,6 +74,29 @@ class DIALOG_3D_VIEW_OPTIONS_BASE : public DIALOG_SHIM wxCheckBox* m_checkBoxComments; wxStaticBitmap* m_bitmapECO; wxCheckBox* m_checkBoxECO; + wxPanel* m_panelOpenGL; + wxStaticText* m_staticTextOpenGLRenderOpts; + wxStaticBitmap* m_bitmapBoundingBoxes; + wxCheckBox* m_checkBoxBoundingBoxes; + wxStaticBitmap* m_bitmapCuThickness; + wxCheckBox* m_checkBoxCuThickness; + wxStaticText* m_staticTextOpenGLRenderOptsAA; + wxChoice* m_choiceAntiAliasing; + wxStaticText* m_staticText14; + wxStaticText* m_staticTextOpenGLWhileMoving; + wxCheckBox* m_checkBoxDisableAAMove; + wxCheckBox* m_checkBoxDisableMoveThickness; + wxCheckBox* m_checkBoxDisableMoveVias; + wxCheckBox* m_checkBoxDisableMoveHoles; + wxPanel* m_panelRaytracing; + wxStaticText* m_staticTextRaytracingRenderOpts; + wxCheckBox* m_checkBoxRaytracing_renderShadows; + wxCheckBox* m_checkBoxRaytracing_proceduralTextures; + wxCheckBox* m_checkBoxRaytracing_addFloor; + wxCheckBox* m_checkBoxRaytracing_showRefractions; + wxCheckBox* m_checkBoxRaytracing_showReflections; + wxCheckBox* m_checkBoxRaytracing_antiAliasing; + wxCheckBox* m_checkBoxRaytracing_postProcessing; wxStaticLine* m_staticlineH; wxStdDialogButtonSizer* m_sdbSizer; wxButton* m_sdbSizerOK; @@ -84,7 +108,7 @@ class DIALOG_3D_VIEW_OPTIONS_BASE : public DIALOG_SHIM public: - DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Display Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 571,372 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Display Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); ~DIALOG_3D_VIEW_OPTIONS_BASE(); }; diff --git a/3d-viewer/3d_viewer/eda_3d_viewer.cpp b/3d-viewer/3d_viewer/eda_3d_viewer.cpp index e818513f62..9593b826d0 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer.cpp +++ b/3d-viewer/3d_viewer/eda_3d_viewer.cpp @@ -112,7 +112,7 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent, const wxSt wxStatusBar *status_bar = CreateStatusBar( arrayDim( status_dims ) ); SetStatusWidths( arrayDim( status_dims ), status_dims ); - m_canvas = new EDA_3D_CANVAS( this, COGL_ATT_LIST::GetAttributesList( true ), + m_canvas = new EDA_3D_CANVAS( this, COGL_ATT_LIST::GetAttributesList( m_boardAdapter.AntiAliasingGet() ), aParent->GetBoard(), m_boardAdapter, m_currentCamera, Prj().Get3DCacheManager() ); @@ -404,38 +404,43 @@ void EDA_3D_VIEWER::LoadSettings( APP_SETTINGS_BASE *aCfg ) if( cfg ) { -#define TRANSER_SETTING( flag, field ) m_boardAdapter.SetFlag( flag, cfg->m_Render.field ) +#define TRANSFER_SETTING( flag, field ) m_boardAdapter.SetFlag( flag, cfg->m_Render.field ) - TRANSER_SETTING( FL_USE_REALISTIC_MODE, realistic ); - TRANSER_SETTING( FL_SUBTRACT_MASK_FROM_SILK, subtract_mask_from_silk ); + TRANSFER_SETTING( FL_USE_REALISTIC_MODE, realistic ); + TRANSFER_SETTING( FL_SUBTRACT_MASK_FROM_SILK, subtract_mask_from_silk ); // OpenGL options - TRANSER_SETTING( FL_RENDER_OPENGL_COPPER_THICKNESS, opengl_copper_thickness ); - TRANSER_SETTING( FL_RENDER_OPENGL_SHOW_MODEL_BBOX, opengl_show_model_bbox ); + TRANSFER_SETTING( FL_RENDER_OPENGL_COPPER_THICKNESS, opengl_copper_thickness ); + TRANSFER_SETTING( FL_RENDER_OPENGL_SHOW_MODEL_BBOX, opengl_show_model_bbox ); + TRANSFER_SETTING( FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE, opengl_AA_disableOnMove ); + TRANSFER_SETTING( FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE, opengl_thickness_disableOnMove ); + TRANSFER_SETTING( FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE, opengl_vias_disableOnMove ); + TRANSFER_SETTING( FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE, opengl_holes_disableOnMove ); // Raytracing options - TRANSER_SETTING( FL_RENDER_RAYTRACING_SHADOWS, raytrace_shadows ); - TRANSER_SETTING( FL_RENDER_RAYTRACING_BACKFLOOR, raytrace_backfloor ); - TRANSER_SETTING( FL_RENDER_RAYTRACING_REFRACTIONS, raytrace_refractions ); - TRANSER_SETTING( FL_RENDER_RAYTRACING_REFLECTIONS, raytrace_reflections ); - TRANSER_SETTING( FL_RENDER_RAYTRACING_POST_PROCESSING, raytrace_post_processing ); - TRANSER_SETTING( FL_RENDER_RAYTRACING_ANTI_ALIASING, raytrace_anti_aliasing ); - TRANSER_SETTING( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES, raytrace_procedural_textures ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_SHADOWS, raytrace_shadows ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_BACKFLOOR, raytrace_backfloor ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_REFRACTIONS, raytrace_refractions ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_REFLECTIONS, raytrace_reflections ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_POST_PROCESSING, raytrace_post_processing ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_ANTI_ALIASING, raytrace_anti_aliasing ); + TRANSFER_SETTING( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES, raytrace_procedural_textures ); - TRANSER_SETTING( FL_AXIS, show_axis ); - TRANSER_SETTING( FL_MODULE_ATTRIBUTES_NORMAL, show_footprints_normal ); - TRANSER_SETTING( FL_MODULE_ATTRIBUTES_NORMAL_INSERT, show_footprints_insert ); - TRANSER_SETTING( FL_MODULE_ATTRIBUTES_VIRTUAL, show_footprints_virtual ); - TRANSER_SETTING( FL_ZONE, show_zones ); - TRANSER_SETTING( FL_ADHESIVE, show_adhesive ); - TRANSER_SETTING( FL_SILKSCREEN, show_silkscreen ); - TRANSER_SETTING( FL_SOLDERMASK, show_soldermask ); - TRANSER_SETTING( FL_SOLDERPASTE, show_solderpaste ); - TRANSER_SETTING( FL_COMMENTS, show_comments ); - TRANSER_SETTING( FL_ECO, show_eco ); - TRANSER_SETTING( FL_SHOW_BOARD_BODY, show_board_body ); + TRANSFER_SETTING( FL_AXIS, show_axis ); + TRANSFER_SETTING( FL_MODULE_ATTRIBUTES_NORMAL, show_footprints_normal ); + TRANSFER_SETTING( FL_MODULE_ATTRIBUTES_NORMAL_INSERT, show_footprints_insert ); + TRANSFER_SETTING( FL_MODULE_ATTRIBUTES_VIRTUAL, show_footprints_virtual ); + TRANSFER_SETTING( FL_ZONE, show_zones ); + TRANSFER_SETTING( FL_ADHESIVE, show_adhesive ); + TRANSFER_SETTING( FL_SILKSCREEN, show_silkscreen ); + TRANSFER_SETTING( FL_SOLDERMASK, show_soldermask ); + TRANSFER_SETTING( FL_SOLDERPASTE, show_solderpaste ); + TRANSFER_SETTING( FL_COMMENTS, show_comments ); + TRANSFER_SETTING( FL_ECO, show_eco ); + TRANSFER_SETTING( FL_SHOW_BOARD_BODY, show_board_body ); m_boardAdapter.GridSet( static_cast( cfg->m_Render.grid_type ) ); + m_boardAdapter.AntiAliasingSet( static_cast( cfg->m_Render.opengl_AA_mode ) ); RENDER_ENGINE engine = static_cast( cfg->m_Render.engine ); wxLogTrace( m_logTrace, engine == RENDER_ENGINE::RAYTRACING ? @@ -482,12 +487,18 @@ void EDA_3D_VIEWER::SaveSettings( APP_SETTINGS_BASE *aCfg ) { #define TRANSFER_SETTING( field, flag ) cfg->m_Render.field = m_boardAdapter.GetFlag( flag ) - cfg->m_Render.engine = static_cast( m_boardAdapter.RenderEngineGet() ); - cfg->m_Render.grid_type = static_cast( m_boardAdapter.GridGet() ); - cfg->m_Render.material_mode = static_cast( m_boardAdapter.MaterialModeGet() ); + cfg->m_Render.engine = static_cast( m_boardAdapter.RenderEngineGet() ); + cfg->m_Render.grid_type = static_cast( m_boardAdapter.GridGet() ); + cfg->m_Render.material_mode = static_cast( m_boardAdapter.MaterialModeGet() ); + cfg->m_Render.opengl_AA_mode = static_cast( m_boardAdapter.AntiAliasingGet() ); + + TRANSFER_SETTING( opengl_AA_disableOnMove, FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE ); + TRANSFER_SETTING( opengl_copper_thickness, FL_RENDER_OPENGL_COPPER_THICKNESS ); + TRANSFER_SETTING( opengl_show_model_bbox, FL_RENDER_OPENGL_SHOW_MODEL_BBOX ); + TRANSFER_SETTING( opengl_thickness_disableOnMove, FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE ); + TRANSFER_SETTING( opengl_vias_disableOnMove, FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE ); + TRANSFER_SETTING( opengl_holes_disableOnMove, FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE ); - TRANSFER_SETTING( opengl_copper_thickness, FL_RENDER_OPENGL_COPPER_THICKNESS ); - TRANSFER_SETTING( opengl_show_model_bbox, FL_RENDER_OPENGL_SHOW_MODEL_BBOX ); TRANSFER_SETTING( raytrace_anti_aliasing, FL_RENDER_RAYTRACING_ANTI_ALIASING ); TRANSFER_SETTING( raytrace_backfloor, FL_RENDER_RAYTRACING_BACKFLOOR ); TRANSFER_SETTING( raytrace_post_processing, FL_RENDER_RAYTRACING_POST_PROCESSING ); @@ -511,7 +522,7 @@ void EDA_3D_VIEWER::SaveSettings( APP_SETTINGS_BASE *aCfg ) TRANSFER_SETTING( show_zones, FL_ZONE ); TRANSFER_SETTING( subtract_mask_from_silk, FL_SUBTRACT_MASK_FROM_SILK ); -#undef TRANSER_SETTING +#undef TRANSFER_SETTING } } diff --git a/3d-viewer/3d_viewer/tools/3d_actions.cpp b/3d-viewer/3d_viewer/tools/3d_actions.cpp index 929718541c..8e2c8e24ec 100644 --- a/3d-viewer/3d_viewer/tools/3d_actions.cpp +++ b/3d-viewer/3d_viewer/tools/3d_actions.cpp @@ -198,11 +198,6 @@ TOOL_ACTION EDA_3D_ACTIONS::attributesVirtual( "3DViewer.Control.attributesVirtu _( "Toggle Virtual 3D models" ), _( "Toggle 3D models with 'Virtual' attribute" ), nullptr, AF_NONE, (void*) FL_MODULE_ATTRIBUTES_VIRTUAL ); -TOOL_ACTION EDA_3D_ACTIONS::showCopperThickness( "3DViewer.Control.showCopperThickness", - AS_GLOBAL, 0, "", - _( "Show Copper Thickness" ), _( "Shows the thickness of copper layers (slow)" ), - use_3D_copper_thickness_xpm, AF_NONE, (void*) FL_RENDER_OPENGL_COPPER_THICKNESS ); - TOOL_ACTION EDA_3D_ACTIONS::showBoundingBoxes( "3DViewer.Control.showBoundingBoxes", AS_GLOBAL, 0, "", _( "Show Model Bounding Boxes" ), _( "Show Model Bounding Boxes" ), @@ -238,7 +233,6 @@ TOOL_ACTION EDA_3D_ACTIONS::antiAliasing( "3DViewer.Control.antiAliasing", _( "Anti-aliasing" ), _( "Render with improved quality on final render (slow)" ), nullptr, AF_NONE, (void*) FL_RENDER_RAYTRACING_ANTI_ALIASING ); - TOOL_ACTION EDA_3D_ACTIONS::postProcessing( "3DViewer.Control.postProcessing", AS_GLOBAL, 0, "", _( "Post-processing" ), diff --git a/3d-viewer/3d_viewer/tools/3d_actions.h b/3d-viewer/3d_viewer/tools/3d_actions.h index 5b36ff17ca..51f3d708f7 100644 --- a/3d-viewer/3d_viewer/tools/3d_actions.h +++ b/3d-viewer/3d_viewer/tools/3d_actions.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2013-2016 CERN - * Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * @author Maciej Suminski * * This program is free software; you can redistribute it and/or @@ -75,7 +75,6 @@ public: static TOOL_ACTION attributesTHT; static TOOL_ACTION attributesSMD; static TOOL_ACTION attributesVirtual; - static TOOL_ACTION showCopperThickness; static TOOL_ACTION showBoundingBoxes; static TOOL_ACTION renderShadows; static TOOL_ACTION proceduralTextures; diff --git a/3d-viewer/3d_viewer/tools/3d_controller.cpp b/3d-viewer/3d_viewer/tools/3d_controller.cpp index d98a28dc3a..7bfdd53a84 100644 --- a/3d-viewer/3d_viewer/tools/3d_controller.cpp +++ b/3d-viewer/3d_viewer/tools/3d_controller.cpp @@ -322,7 +322,6 @@ void EDA_3D_CONTROLLER::setTransitions() Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::attributesTHT.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::attributesSMD.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::attributesVirtual.MakeEvent() ); - Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showCopperThickness.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showBoundingBoxes.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::renderShadows.MakeEvent() ); Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::proceduralTextures.MakeEvent() ); diff --git a/3d-viewer/common_ogl/cogl_att_list.cpp b/3d-viewer/common_ogl/cogl_att_list.cpp index f1ae10dcb6..688c50f5e9 100644 --- a/3d-viewer/common_ogl/cogl_att_list.cpp +++ b/3d-viewer/common_ogl/cogl_att_list.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,7 +28,10 @@ */ #include "cogl_att_list.h" +#include +#include #include +#include /** * Attributes list to be passed to a wxGLCanvas creation. @@ -46,7 +49,7 @@ const int COGL_ATT_LIST::m_openGL_attributes_list[] = { // Boolean attributes (using itself at padding): // 0 1 - WX_GL_RGBA, WX_GL_RGBA, + WX_GL_RGBA, WX_GL_RGBA, // 2 3 WX_GL_DOUBLEBUFFER, WX_GL_DOUBLEBUFFER, @@ -78,13 +81,15 @@ int COGL_ATT_LIST::m_openGL_attributes_list_to_use[ arrayDim( COGL_ATT_LIST::m_openGL_attributes_list ) ] = { 0 }; -const int *COGL_ATT_LIST::GetAttributesList( bool aUseAntiAliasing ) +const int *COGL_ATT_LIST::GetAttributesList( ANTIALIASING_MODE aAntiAliasingMode ) { + wxASSERT( aAntiAliasingMode <= ANTIALIASING_MODE::AA_8X ); + memcpy( m_openGL_attributes_list_to_use, m_openGL_attributes_list, sizeof( m_openGL_attributes_list_to_use ) ); - if( aUseAntiAliasing ) + if( aAntiAliasingMode > ANTIALIASING_MODE::AA_NONE ) { // There is a bug on wxGLCanvas that makes IsDisplaySupported fail // while testing for antialiasing. @@ -98,8 +103,10 @@ const int *COGL_ATT_LIST::GetAttributesList( bool aUseAntiAliasing ) // Check if the canvas supports multisampling. if( wxGLCanvas::IsDisplaySupported( m_openGL_attributes_list_to_use ) ) { - // Check for possible sample sizes, start form the top. - int maxSamples = 8; // Any higher doesn't change anything. + static const int aaSamples[4] = {0, 2, 4, 8}; + + // Check for possible sample sizes, start form the requested. + int maxSamples = aaSamples[static_cast( aAntiAliasingMode )]; m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLES_OFFSET_DATA] = maxSamples; @@ -113,12 +120,12 @@ const int *COGL_ATT_LIST::GetAttributesList( bool aUseAntiAliasing ) else { DBG( printf("GetAttributesList: AntiAliasing is not supported.\n") ); - aUseAntiAliasing = false; + aAntiAliasingMode = ANTIALIASING_MODE::AA_NONE; } } // Disable antialising if it failed or was not requested - if( !aUseAntiAliasing ) + if( aAntiAliasingMode == ANTIALIASING_MODE::AA_NONE ) { // Remove multisampling information // (hoping that the GPU driver will decide what is best) diff --git a/3d-viewer/common_ogl/cogl_att_list.h b/3d-viewer/common_ogl/cogl_att_list.h index 209877ea2b..bb76e701e4 100644 --- a/3d-viewer/common_ogl/cogl_att_list.h +++ b/3d-viewer/common_ogl/cogl_att_list.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015-2016 Mario Luzeiro - * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,10 +30,14 @@ #ifndef _COGL_ATT_LIST_H #define _COGL_ATT_LIST_H -#include -#include - - +/// Anti-aliasing options +enum class ANTIALIASING_MODE +{ + AA_NONE, + AA_2X, + AA_4X, + AA_8X +}; /** * Class COGL_ATT_LIST @@ -45,11 +49,11 @@ class COGL_ATT_LIST public: /** * Get a list of attributes to pass to wxGLCanvas - * @param aUseAntiAliasing = if true try to initialize (if is supported) the + * @param aAntiAliasingMode = 0 - disabled; try to initialize (if is supported) the * list with anti aliasing capabilities * @return a list of options to be passed in the creation of a EDA_3D_CANVAS class */ - static const int *GetAttributesList( bool aUseAntiAliasing ); + static const int *GetAttributesList( ANTIALIASING_MODE aAntiAliasingMode ); private: /**