- Set KICAD_BUILD_3D_VIEWER_WASM=OFF in build script - Add comprehensive 3D canvas stubs (~500 lines) including: - EDA_3D_CANVAS with wxWidgets event table - BOARD_ADAPTER, EDA_3D_VIEWER_SETTINGS - PANEL_PREVIEW_3D_MODEL with all event handlers - DIALOG_SELECT_3DMODEL - TRACK_BALL camera - BBOX_2D, BBOX_3D, BVH_CONTAINER_2D - OGL_ATT_LIST::GetAttributesList - Add 3D scenegraph stubs for VRML export - Update KiCad submodule with WASM guards - Update WebGL GAL implementation plan to COMPLETE status All 4 phases of the WebGL GAL implementation are now complete: - Phase 1: Native test harness (28 scenarios) - Phase 2: WebGL GAL implementation (~27,800 lines) - Phase 3: Complete API coverage - Phase 4: KiCad integration with 3D viewer stubs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
258 lines
6 KiB
C++
258 lines
6 KiB
C++
/*
|
|
* 3D Viewer stubs for KiCad WASM build
|
|
* When KICAD_BUILD_3D_VIEWER_WASM=OFF, the 3D viewer library is not linked.
|
|
* These stubs provide implementations for symbols that pcbnew references.
|
|
*/
|
|
|
|
#include <3d_viewer/eda_3d_viewer_frame.h>
|
|
#include <3d_viewer/eda_3d_viewer_settings.h>
|
|
#include <3d_viewer/toolbars_3d.h>
|
|
#include <base_units.h>
|
|
|
|
// EDA_3D_VIEWER_FRAME stub implementations
|
|
// The 3D viewer is not available in WASM builds
|
|
|
|
EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent,
|
|
const wxString& aTitle, long style ) :
|
|
KIWAY_PLAYER( aKiway, aParent, FRAME_PCB_DISPLAY3D, aTitle, wxDefaultPosition,
|
|
wxDefaultSize, style, wxT( "3D Viewer" ), unityScale ),
|
|
m_currentCamera( m_trackBallCamera ),
|
|
m_trackBallCamera( 2 * RANGE_SCALE_3D )
|
|
{
|
|
m_canvas = nullptr;
|
|
m_disable_ray_tracing = true;
|
|
m_appearancePanel = nullptr;
|
|
|
|
// 3D Viewer is not supported in WASM - close immediately
|
|
wxLogWarning( "3D Viewer is not available in this build" );
|
|
}
|
|
|
|
EDA_3D_VIEWER_FRAME::~EDA_3D_VIEWER_FRAME()
|
|
{
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::ReloadRequest()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::NewDisplay( bool aForceImmediateRedraw )
|
|
{
|
|
(void)aForceImmediateRedraw;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::Redraw()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
|
|
{
|
|
(void)aCfg;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
|
|
{
|
|
(void)aCfg;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::CommonSettingsChanged( int aFlags )
|
|
{
|
|
(void)aFlags;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::ShowChangedLanguage()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::ToggleAppearanceManager()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::OnDarkModeToggle()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::TakeScreenshot( EDA_3D_VIEWER_EXPORT_FORMAT aFormat )
|
|
{
|
|
(void)aFormat;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::ExportImage( EDA_3D_VIEWER_EXPORT_FORMAT aFormat, const wxSize& aSize )
|
|
{
|
|
(void)aFormat;
|
|
(void)aSize;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::setupUIConditions()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::handleIconizeEvent( wxIconizeEvent& aEvent )
|
|
{
|
|
(void)aEvent;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::Exit3DFrame( wxCommandEvent& event )
|
|
{
|
|
(void)event;
|
|
Close( true );
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::OnCloseWindow( wxCloseEvent& event )
|
|
{
|
|
(void)event;
|
|
Destroy();
|
|
}
|
|
|
|
bool EDA_3D_VIEWER_FRAME::TryBefore( wxEvent& aEvent )
|
|
{
|
|
return wxFrame::TryBefore( aEvent );
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|
{
|
|
(void)event;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::onDisableRayTracing( wxCommandEvent& aEvent )
|
|
{
|
|
(void)aEvent;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::OnActivate( wxActivateEvent& event )
|
|
{
|
|
(void)event;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::OnSetFocus( wxFocusEvent& event )
|
|
{
|
|
(void)event;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::doReCreateMenuBar()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::RenderEngineChanged()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::refreshRender()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::loadCommonSettings()
|
|
{
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::applySettings( EDA_3D_VIEWER_SETTINGS* aSettings )
|
|
{
|
|
(void)aSettings;
|
|
// No-op: 3D viewer not available
|
|
}
|
|
|
|
bool EDA_3D_VIEWER_FRAME::getExportFileName( EDA_3D_VIEWER_EXPORT_FORMAT& aFormat, wxString& fullFileName )
|
|
{
|
|
(void)aFormat;
|
|
(void)fullFileName;
|
|
return false;
|
|
}
|
|
|
|
wxImage EDA_3D_VIEWER_FRAME::captureScreenshot( const wxSize& aSize )
|
|
{
|
|
(void)aSize;
|
|
return wxImage();
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::setupRenderingConfig( BOARD_ADAPTER& adapter )
|
|
{
|
|
(void)adapter;
|
|
}
|
|
|
|
wxImage EDA_3D_VIEWER_FRAME::captureCurrentViewScreenshot()
|
|
{
|
|
return wxImage();
|
|
}
|
|
|
|
wxImage EDA_3D_VIEWER_FRAME::captureRaytracingScreenshot( BOARD_ADAPTER& adapter, TRACK_BALL& camera, const wxSize& aSize )
|
|
{
|
|
(void)adapter;
|
|
(void)camera;
|
|
(void)aSize;
|
|
return wxImage();
|
|
}
|
|
|
|
wxImage EDA_3D_VIEWER_FRAME::convertRGBAToImage( uint8_t* rgbaBuffer, const wxSize& realSize )
|
|
{
|
|
(void)rgbaBuffer;
|
|
(void)realSize;
|
|
return wxImage();
|
|
}
|
|
|
|
wxImage EDA_3D_VIEWER_FRAME::captureOpenGLScreenshot( BOARD_ADAPTER& adapter, TRACK_BALL& camera, const wxSize& aSize )
|
|
{
|
|
(void)adapter;
|
|
(void)camera;
|
|
(void)aSize;
|
|
return wxImage();
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::configureCanvas( std::unique_ptr<EDA_3D_CANVAS>& canvas, EDA_3D_VIEWER_SETTINGS* cfg )
|
|
{
|
|
(void)canvas;
|
|
(void)cfg;
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::saveOrCopyImage( const wxImage& screenshotImage, EDA_3D_VIEWER_EXPORT_FORMAT aFormat, const wxString& fullFileName )
|
|
{
|
|
(void)screenshotImage;
|
|
(void)aFormat;
|
|
(void)fullFileName;
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::copyImageToClipboard( const wxImage& screenshotImage )
|
|
{
|
|
(void)screenshotImage;
|
|
}
|
|
|
|
void EDA_3D_VIEWER_FRAME::saveImageToFile( const wxImage& screenshotImage, EDA_3D_VIEWER_EXPORT_FORMAT aFormat, const wxString& fullFileName )
|
|
{
|
|
(void)screenshotImage;
|
|
(void)aFormat;
|
|
(void)fullFileName;
|
|
}
|
|
|
|
// Static member
|
|
const wxChar* EDA_3D_VIEWER_FRAME::m_logTrace = wxT( "KI_TRACE_EDA_3D_VIEWER" );
|
|
|
|
// Event table (empty - no events to handle)
|
|
wxBEGIN_EVENT_TABLE( EDA_3D_VIEWER_FRAME, KIWAY_PLAYER )
|
|
wxEND_EVENT_TABLE()
|
|
|
|
|
|
// EDA_3D_VIEWER_TOOLBAR_SETTINGS stub
|
|
std::optional<TOOLBAR_CONFIGURATION> EDA_3D_VIEWER_TOOLBAR_SETTINGS::DefaultToolbarConfig( TOOLBAR_LOC aToolbar )
|
|
{
|
|
(void)aToolbar;
|
|
return std::nullopt;
|
|
}
|