From 9a3d7594d9d9fc183844436590d3e5a77dccab6c Mon Sep 17 00:00:00 2001
From: Alex Shvartzkop <dudesuchamazing@gmail.com>
Date: Sun, 5 Jan 2025 11:42:50 +0500
Subject: [PATCH] Add pivot/pan/rotation/lights controls to PCB render dialog.

---
 common/jobs/job_pcb_render.cpp            |   38 +
 common/jobs/job_pcb_render.h              |    5 +
 kicad/cli/command_pcb_render.cpp          |  107 ++
 libs/kimath/include/math/vector3.h        |   16 +
 pcbnew/dialogs/dialog_render_job.cpp      |   38 +
 pcbnew/dialogs/dialog_render_job_base.cpp |  229 ++-
 pcbnew/dialogs/dialog_render_job_base.fbp | 2130 ++++++++++++++++++++-
 pcbnew/dialogs/dialog_render_job_base.h   |   32 +-
 pcbnew/pcbnew_jobs_handler.cpp            |   32 +
 9 files changed, 2527 insertions(+), 100 deletions(-)

diff --git a/common/jobs/job_pcb_render.cpp b/common/jobs/job_pcb_render.cpp
index e0ce4237bf..a2f01cb8c2 100644
--- a/common/jobs/job_pcb_render.cpp
+++ b/common/jobs/job_pcb_render.cpp
@@ -24,6 +24,26 @@
 #include <i18n_utility.h>
 
 
+namespace nlohmann
+{
+template <>
+struct adl_serializer<VECTOR3D>
+{
+    static void from_json( const json& j, VECTOR3D& s )
+    {
+        if( !j.is_array() || j.size() != 3 )
+            throw std::invalid_argument( "JSON array size should be 3 for VECTOR3D" );
+
+        s.x = j[0];
+        s.y = j[1];
+        s.z = j[2];
+    }
+
+    static void to_json( json& j, const VECTOR3D& s ) { j = json::array( { s.x, s.y, s.z } ); }
+};
+} // namespace nlohmann
+
+
 std::map<JOB_PCB_RENDER::FORMAT, wxString> outputFormatNameMap = {
     { JOB_PCB_RENDER::FORMAT::JPEG, wxT( "JPEG" ) },
     { JOB_PCB_RENDER::FORMAT::PNG, wxT( "PNG" ) }
@@ -75,6 +95,24 @@ JOB_PCB_RENDER::JOB_PCB_RENDER() :
     m_params.emplace_back( new JOB_PARAM<int>( "width", &m_width, m_width ) );
     m_params.emplace_back( new JOB_PARAM<int>( "height", &m_height, m_height ) );
 
+    m_params.emplace_back( new JOB_PARAM<double>( "pivot_x", &m_pivot.x, m_pivot.x ) );
+    m_params.emplace_back( new JOB_PARAM<double>( "pivot_y", &m_pivot.y, m_pivot.y ) );
+    m_params.emplace_back( new JOB_PARAM<double>( "pivot_z", &m_pivot.z, m_pivot.z ) );
+
+    m_params.emplace_back( new JOB_PARAM<double>( "pan_x", &m_pan.x, m_pan.x ) );
+    m_params.emplace_back( new JOB_PARAM<double>( "pan_y", &m_pan.y, m_pan.y ) );
+    m_params.emplace_back( new JOB_PARAM<double>( "pan_z", &m_pan.z, m_pan.z ) );
+
+    m_params.emplace_back( new JOB_PARAM<double>( "rotation_x", &m_rotation.x, m_rotation.x ) );
+    m_params.emplace_back( new JOB_PARAM<double>( "rotation_y", &m_rotation.y, m_rotation.y ) );
+    m_params.emplace_back( new JOB_PARAM<double>( "rotation_z", &m_rotation.z, m_rotation.z ) );
+
+    m_params.emplace_back( new JOB_PARAM<VECTOR3D>( "light_top_intensity", &m_lightTopIntensity, m_lightTopIntensity ) );
+    m_params.emplace_back( new JOB_PARAM<VECTOR3D>( "light_bottom_intensity", &m_lightBottomIntensity, m_lightBottomIntensity ) );
+    m_params.emplace_back( new JOB_PARAM<VECTOR3D>( "light_side_intensity", &m_lightSideIntensity, m_lightSideIntensity ) );
+    m_params.emplace_back( new JOB_PARAM<VECTOR3D>( "light_camera_intensity", &m_lightCameraIntensity, m_lightCameraIntensity ) );
+
+    m_params.emplace_back( new JOB_PARAM<int>( "light_side_elevation", &m_lightSideElevation, m_lightSideElevation ) );
 }
 
 
diff --git a/common/jobs/job_pcb_render.h b/common/jobs/job_pcb_render.h
index 6359a1a171..b663d617c1 100644
--- a/common/jobs/job_pcb_render.h
+++ b/common/jobs/job_pcb_render.h
@@ -93,6 +93,11 @@ public:
     VECTOR3D    m_pan;
     VECTOR3D    m_pivot;
     bool        m_floor = false;
+    VECTOR3D    m_lightTopIntensity;
+    VECTOR3D    m_lightBottomIntensity;
+    VECTOR3D    m_lightCameraIntensity;
+    VECTOR3D    m_lightSideIntensity = VECTOR3D( 0.5, 0.5, 0.5 );
+    int         m_lightSideElevation = 60;
 };
 
 #endif
\ No newline at end of file
diff --git a/kicad/cli/command_pcb_render.cpp b/kicad/cli/command_pcb_render.cpp
index a784933aec..0a01be1caf 100644
--- a/kicad/cli/command_pcb_render.cpp
+++ b/kicad/cli/command_pcb_render.cpp
@@ -51,6 +51,13 @@
 #define ARG_PERSPECTIVE "--perspective"
 #define ARG_FLOOR "--floor"
 
+#define ARG_LIGHT_TOP "--light-top"
+#define ARG_LIGHT_BOTTOM "--light-bottom"
+#define ARG_LIGHT_SIDE "--light-side"
+#define ARG_LIGHT_CAMERA "--light-camera"
+
+#define ARG_LIGHT_SIDE_ELEVATION "--light-side-elevation"
+
 
 template <typename T>
 static wxString enumString()
@@ -158,6 +165,51 @@ static bool getToVector3( const std::string& aInput, VECTOR3D& aOutput )
 }
 
 
+static bool getColorOrIntensity( const std::string& aInput, VECTOR3D& aOutput )
+{
+    // If not specified, leave at default
+    if( aInput.empty() )
+        return true;
+
+    // Remove potential quotes
+    wxString wxStr = From_UTF8( aInput );
+
+    if( wxStr[0] == '\'' )
+        wxStr = wxStr.AfterFirst( '\'' );
+
+    if( wxStr[wxStr.length() - 1] == '\'' )
+        wxStr = wxStr.BeforeLast( '\'' );
+
+    wxArrayString arr = wxSplit( wxStr, ',', 0 );
+
+    if( arr.size() == 3 )
+    {
+        VECTOR3D vec;
+        bool     success = true;
+        success &= arr[0].Trim().ToCDouble( &vec.x );
+        success &= arr[1].Trim().ToCDouble( &vec.y );
+        success &= arr[2].Trim().ToCDouble( &vec.z );
+
+        if( !success )
+            return false;
+
+        aOutput = vec;
+        return true;
+    }
+    else if( arr.size() == 1 )
+    {
+        double val;
+        if( arr[0].Trim().ToCDouble( &val ) )
+        {
+            aOutput = VECTOR3D( val, val, val );
+            return true;
+        }
+    }
+
+    return false;
+}
+
+
 CLI::PCB_RENDER_COMMAND::PCB_RENDER_COMMAND() : COMMAND( "render" )
 {
     addCommonArgs( true, true, false, false );
@@ -237,6 +289,32 @@ CLI::PCB_RENDER_COMMAND::PCB_RENDER_COMMAND() : COMMAND( "render" )
             .metavar( "ANGLES" )
             .help( UTF8STDSTR(
                     _( "Rotate board, format 'X,Y,Z' e.g.: '-45,0,45' for isometric view" ) ) );
+
+    m_argParser.add_argument( ARG_LIGHT_TOP )
+            .default_value( std::string( "" ) )
+            .metavar( "COLOR" )
+            .help( UTF8STDSTR( _( "Top light intensity, format 'R,G,B' or a single number, range: 0-1" ) ) );
+
+    m_argParser.add_argument( ARG_LIGHT_BOTTOM )
+            .default_value( std::string( "" ) )
+            .metavar( "COLOR" )
+            .help( UTF8STDSTR( _( "Bottom light intensity, format 'R,G,B' or a single number, range: 0-1" ) ) );
+    
+    m_argParser.add_argument( ARG_LIGHT_SIDE )
+            .default_value( std::string( "" ) )
+            .metavar( "COLOR" )
+            .help( UTF8STDSTR( _( "Side lights intensity, format 'R,G,B' or a single number, range: 0-1" ) ) );
+    
+    m_argParser.add_argument( ARG_LIGHT_CAMERA )
+            .default_value( std::string( "" ) )
+            .metavar( "COLOR" )
+            .help( UTF8STDSTR( _( "Camera light intensity, format 'R,G,B' or a single number, range: 0-1" ) ) );
+
+    m_argParser.add_argument( ARG_LIGHT_SIDE_ELEVATION )
+            .default_value( 60 )
+            .scan<'i', int>()
+            .metavar( "ANGLE" )
+            .help( UTF8STDSTR( _( "Side lights elevation angle in degrees, range: 0-90" ) ) );
 }
 
 
@@ -254,6 +332,7 @@ int CLI::PCB_RENDER_COMMAND::doPerform( KIWAY& aKiway )
     renderJob->m_zoom = m_argParser.get<double>( ARG_ZOOM );
     renderJob->m_perspective = m_argParser.get<bool>( ARG_PERSPECTIVE );
     renderJob->m_floor = m_argParser.get<bool>( ARG_FLOOR );
+    renderJob->m_lightSideElevation = m_argParser.get<double>( ARG_LIGHT_SIDE_ELEVATION );
 
     getToEnum( m_argParser.get<std::string>( ARG_QUALITY ), renderJob->m_quality );
     getToEnum( m_argParser.get<std::string>( ARG_SIDE ), renderJob->m_side );
@@ -282,6 +361,34 @@ int CLI::PCB_RENDER_COMMAND::doPerform( KIWAY& aKiway )
         return EXIT_CODES::ERR_ARGS;
     }
 
+    if( !getColorOrIntensity( m_argParser.get<std::string>( ARG_LIGHT_TOP ),
+                              renderJob->m_lightTopIntensity ) )
+    {
+        wxFprintf( stderr, _( "Invalid light top intensity format\n" ) );
+        return EXIT_CODES::ERR_ARGS;
+    }
+
+    if( !getColorOrIntensity( m_argParser.get<std::string>( ARG_LIGHT_BOTTOM ),
+                              renderJob->m_lightBottomIntensity ) )
+    {
+        wxFprintf( stderr, _( "Invalid light bottom intensity format\n" ) );
+        return EXIT_CODES::ERR_ARGS;
+    }
+
+    if( !getColorOrIntensity( m_argParser.get<std::string>( ARG_LIGHT_SIDE ),
+                              renderJob->m_lightSideIntensity ) )
+    {
+        wxFprintf( stderr, _( "Invalid light side intensity format\n" ) );
+        return EXIT_CODES::ERR_ARGS;
+    }
+
+    if( !getColorOrIntensity( m_argParser.get<std::string>( ARG_LIGHT_CAMERA ),
+                              renderJob->m_lightCameraIntensity ) )
+    {
+        wxFprintf( stderr, _( "Invalid light camera intensity format\n" ) );
+        return EXIT_CODES::ERR_ARGS;
+    }
+
     if( m_argOutput.Lower().EndsWith( wxS( ".png" ) ) )
     {
         renderJob->m_format = JOB_PCB_RENDER::FORMAT::PNG;
diff --git a/libs/kimath/include/math/vector3.h b/libs/kimath/include/math/vector3.h
index 7d1cd765fa..381a12c9d8 100644
--- a/libs/kimath/include/math/vector3.h
+++ b/libs/kimath/include/math/vector3.h
@@ -99,6 +99,11 @@ public:
      */
     VECTOR3<T> Normalize();
 
+    /**
+     * Set all elements to \a val
+     */
+    VECTOR3<T> SetAll( T val );
+
     /// Equality operator
     bool operator==( const VECTOR3<T>& aVector ) const;
 
@@ -166,6 +171,17 @@ VECTOR3<T> VECTOR3<T>::Normalize()
 }
 
 
+template <class T>
+VECTOR3<T> VECTOR3<T>::SetAll( T val )
+{
+    x = val;
+    y = val;
+    z = val;
+
+    return *this;
+}
+
+
 template <class T>
 bool VECTOR3<T>::operator==( VECTOR3<T> const& aVector ) const
 {
diff --git a/pcbnew/dialogs/dialog_render_job.cpp b/pcbnew/dialogs/dialog_render_job.cpp
index 83ba868c25..9b66dc7d8b 100644
--- a/pcbnew/dialogs/dialog_render_job.cpp
+++ b/pcbnew/dialogs/dialog_render_job.cpp
@@ -163,6 +163,25 @@ bool DIALOG_RENDER_JOB::TransferDataFromWindow()
     m_job->m_width = m_spinCtrlWidth->GetValue();
     m_job->m_height = m_spinCtrlHeight->GetValue();
 
+    m_job->m_pivot.x = m_spinCtrlPivotX->GetValue();
+    m_job->m_pivot.y = m_spinCtrlPivotY->GetValue();
+    m_job->m_pivot.z = m_spinCtrlPivotZ->GetValue();
+
+    m_job->m_pan.x = m_spinCtrlPanX->GetValue();
+    m_job->m_pan.y = m_spinCtrlPanY->GetValue();
+    m_job->m_pan.z = m_spinCtrlPanZ->GetValue();
+
+    m_job->m_rotation.x = m_spinCtrlRotX->GetValue();
+    m_job->m_rotation.y = m_spinCtrlRotY->GetValue();
+    m_job->m_rotation.z = m_spinCtrlRotZ->GetValue();
+
+    m_job->m_lightTopIntensity.SetAll( m_spinCtrlLightsTop->GetValue() );
+    m_job->m_lightBottomIntensity.SetAll( m_spinCtrlLightsBottom->GetValue() );
+    m_job->m_lightSideIntensity.SetAll( m_spinCtrlLightsSides->GetValue() );
+    m_job->m_lightCameraIntensity.SetAll( m_spinCtrlLightsCamera->GetValue() );
+
+    m_job->m_lightSideElevation = m_spinCtrlLightsSideElevation->GetValue();
+
     m_radioProjection->GetSelection() == 0 ? m_job->m_perspective = true
                                            : m_job->m_perspective = false;
 
@@ -202,5 +221,24 @@ bool DIALOG_RENDER_JOB::TransferDataToWindow()
     m_spinCtrlWidth->SetValue( width );
     m_spinCtrlHeight->SetValue( height );
 
+    m_spinCtrlPivotX->SetValue( m_job->m_pivot.x );
+    m_spinCtrlPivotY->SetValue( m_job->m_pivot.y );
+    m_spinCtrlPivotZ->SetValue( m_job->m_pivot.z );
+
+    m_spinCtrlPanX->SetValue( m_job->m_pan.x );
+    m_spinCtrlPanY->SetValue( m_job->m_pan.y );
+    m_spinCtrlPanZ->SetValue( m_job->m_pan.z );
+
+    m_spinCtrlRotX->SetValue( m_job->m_rotation.x );
+    m_spinCtrlRotY->SetValue( m_job->m_rotation.y );
+    m_spinCtrlRotZ->SetValue( m_job->m_rotation.z );
+
+    m_spinCtrlLightsTop->SetValue( m_job->m_lightTopIntensity.x );
+    m_spinCtrlLightsBottom->SetValue( m_job->m_lightBottomIntensity.x );
+    m_spinCtrlLightsSides->SetValue( m_job->m_lightSideIntensity.x );
+    m_spinCtrlLightsCamera->SetValue( m_job->m_lightCameraIntensity.x );
+
+    m_spinCtrlLightsSideElevation->SetValue( m_job->m_lightSideElevation );
+
     return true;
 }
\ No newline at end of file
diff --git a/pcbnew/dialogs/dialog_render_job_base.cpp b/pcbnew/dialogs/dialog_render_job_base.cpp
index 06c6293bce..faf4ddeef3 100644
--- a/pcbnew/dialogs/dialog_render_job_base.cpp
+++ b/pcbnew/dialogs/dialog_render_job_base.cpp
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
+// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
 // http://www.wxformbuilder.org/
 //
 // PLEASE DO *NOT* EDIT THIS FILE!
@@ -16,32 +16,32 @@ DIALOG_RENDER_JOB_BASE::DIALOG_RENDER_JOB_BASE( wxWindow* parent, wxWindowID id,
 	wxBoxSizer* bSizerMain;
 	bSizerMain = new wxBoxSizer( wxVERTICAL );
 
-	wxFlexGridSizer* fgSizer1;
-	fgSizer1 = new wxFlexGridSizer( 0, 2, 6, 5 );
-	fgSizer1->SetFlexibleDirection( wxBOTH );
-	fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+	wxFlexGridSizer* fgSizerTop;
+	fgSizerTop = new wxFlexGridSizer( 0, 2, 6, 5 );
+	fgSizerTop->SetFlexibleDirection( wxBOTH );
+	fgSizerTop->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
 	m_textOutputPath = new wxStaticText( this, wxID_ANY, _("Output file:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_textOutputPath->Wrap( -1 );
-	fgSizer1->Add( m_textOutputPath, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+	fgSizerTop->Add( m_textOutputPath, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
 
 	m_textCtrlOutputFile = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 	m_textCtrlOutputFile->SetMinSize( wxSize( 350,-1 ) );
 
-	fgSizer1->Add( m_textCtrlOutputFile, 0, 0, 5 );
+	fgSizerTop->Add( m_textCtrlOutputFile, 0, 0, 5 );
 
 	m_formatLabel = new wxStaticText( this, wxID_ANY, _("Format:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_formatLabel->Wrap( -1 );
-	fgSizer1->Add( m_formatLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+	fgSizerTop->Add( m_formatLabel, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
 
 	wxArrayString m_choiceFormatChoices;
 	m_choiceFormat = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceFormatChoices, 0 );
 	m_choiceFormat->SetSelection( 0 );
-	fgSizer1->Add( m_choiceFormat, 0, 0, 5 );
+	fgSizerTop->Add( m_choiceFormat, 0, 0, 5 );
 
 	m_dimensionsLabel = new wxStaticText( this, wxID_ANY, _("Dimensions:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_dimensionsLabel->Wrap( -1 );
-	fgSizer1->Add( m_dimensionsLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+	fgSizerTop->Add( m_dimensionsLabel, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
 
 	wxBoxSizer* bSizer3;
 	bSizer3 = new wxBoxSizer( wxHORIZONTAL );
@@ -65,39 +65,39 @@ DIALOG_RENDER_JOB_BASE::DIALOG_RENDER_JOB_BASE( wxWindow* parent, wxWindowID id,
 	bSizer3->Add( m_staticText182, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
 
-	fgSizer1->Add( bSizer3, 1, wxEXPAND, 5 );
+	fgSizerTop->Add( bSizer3, 1, wxEXPAND, 5 );
 
-	m_qualityLabel = new wxStaticText( this, wxID_ANY, _("Quality:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_qualityLabel = new wxStaticText( this, wxID_ANY, _("Quality preset:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_qualityLabel->Wrap( -1 );
-	fgSizer1->Add( m_qualityLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+	fgSizerTop->Add( m_qualityLabel, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
 
 	wxArrayString m_choiceQualityChoices;
 	m_choiceQuality = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceQualityChoices, 0 );
 	m_choiceQuality->SetSelection( 0 );
-	fgSizer1->Add( m_choiceQuality, 0, 0, 5 );
+	fgSizerTop->Add( m_choiceQuality, 0, 0, 5 );
 
 	m_backgroundStyleLabel = new wxStaticText( this, wxID_ANY, _("Background style:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_backgroundStyleLabel->Wrap( -1 );
-	fgSizer1->Add( m_backgroundStyleLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+	fgSizerTop->Add( m_backgroundStyleLabel, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
 
 	wxArrayString m_choiceBgStyleChoices;
 	m_choiceBgStyle = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceBgStyleChoices, 0 );
 	m_choiceBgStyle->SetSelection( 0 );
-	fgSizer1->Add( m_choiceBgStyle, 0, 0, 5 );
+	fgSizerTop->Add( m_choiceBgStyle, 0, 0, 5 );
 
 	m_staticText15 = new wxStaticText( this, wxID_ANY, _("Zoom:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_staticText15->Wrap( -1 );
-	fgSizer1->Add( m_staticText15, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
+	fgSizerTop->Add( m_staticText15, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
 
 	m_spinCtrlZoom = new wxSpinCtrlDouble( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 1, 0.1 );
 	m_spinCtrlZoom->SetDigits( 2 );
-	fgSizer1->Add( m_spinCtrlZoom, 0, 0, 5 );
+	fgSizerTop->Add( m_spinCtrlZoom, 0, 0, 5 );
 
 
-	bSizerMain->Add( fgSizer1, 1, wxALL|wxEXPAND, 5 );
+	bSizerMain->Add( fgSizerTop, 1, wxALL|wxEXPAND, 5 );
 
-	wxBoxSizer* bSizerBottom;
-	bSizerBottom = new wxBoxSizer( wxHORIZONTAL );
+	wxBoxSizer* bSizerViewProjection;
+	bSizerViewProjection = new wxBoxSizer( wxHORIZONTAL );
 
 	wxStaticBoxSizer* sbSizer1;
 	sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("View") ), wxVERTICAL );
@@ -109,30 +109,203 @@ DIALOG_RENDER_JOB_BASE::DIALOG_RENDER_JOB_BASE( wxWindow* parent, wxWindowID id,
 
 	m_sideLabel = new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, _("Side:"), wxDefaultPosition, wxDefaultSize, 0 );
 	m_sideLabel->Wrap( -1 );
-	gbSizer1->Add( m_sideLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
+	gbSizer1->Add( m_sideLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
 	wxArrayString m_choiceSideChoices;
 	m_choiceSide = new wxChoice( sbSizer1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceSideChoices, 0 );
 	m_choiceSide->SetSelection( 0 );
-	gbSizer1->Add( m_choiceSide, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
+	gbSizer1->Add( m_choiceSide, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), 0, 5 );
 
-	m_cbFloor = new wxCheckBox( sbSizer1->GetStaticBox(), wxID_ANY, _("Show floor"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_cbFloor = new wxCheckBox( sbSizer1->GetStaticBox(), wxID_ANY, _("Add floor"), wxDefaultPosition, wxDefaultSize, 0 );
 	gbSizer1->Add( m_cbFloor, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), 0, 5 );
 
 
-	sbSizer1->Add( gbSizer1, 1, wxEXPAND, 5 );
+	sbSizer1->Add( gbSizer1, 1, wxALL|wxEXPAND, 5 );
 
 
-	bSizerBottom->Add( sbSizer1, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
+	bSizerViewProjection->Add( sbSizer1, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
 
 	wxString m_radioProjectionChoices[] = { _("Perspective"), _("Orthogonal") };
 	int m_radioProjectionNChoices = sizeof( m_radioProjectionChoices ) / sizeof( wxString );
 	m_radioProjection = new wxRadioBox( this, wxID_ANY, _("Projection"), wxDefaultPosition, wxDefaultSize, m_radioProjectionNChoices, m_radioProjectionChoices, 1, wxRA_SPECIFY_COLS );
 	m_radioProjection->SetSelection( 1 );
-	bSizerBottom->Add( m_radioProjection, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
+	bSizerViewProjection->Add( m_radioProjection, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
 
 
-	bSizerMain->Add( bSizerBottom, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
+	bSizerMain->Add( bSizerViewProjection, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
+
+	wxStaticBoxSizer* sbSizerPositioning;
+	sbSizerPositioning = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Positioning") ), wxVERTICAL );
+
+	wxFlexGridSizer* fgSizer2;
+	fgSizer2 = new wxFlexGridSizer( 0, 5, 5, 5 );
+	fgSizer2->SetFlexibleDirection( wxBOTH );
+	fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+
+
+	fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
+
+	m_labelX = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("X"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelX->Wrap( -1 );
+	fgSizer2->Add( m_labelX, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
+
+	m_labelY = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("Y"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelY->Wrap( -1 );
+	fgSizer2->Add( m_labelY, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
+
+	m_labelZ = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("Z"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelZ->Wrap( -1 );
+	fgSizer2->Add( m_labelZ, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
+
+
+	fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
+
+	m_labelxx = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("Pivot:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelxx->Wrap( -1 );
+	fgSizer2->Add( m_labelxx, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT, 5 );
+
+	m_spinCtrlPivotX = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlPivotX->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlPivotX, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_spinCtrlPivotY = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlPivotY->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlPivotY, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_spinCtrlPivotZ = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlPivotZ->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlPivotZ, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_labelMM1 = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelMM1->Wrap( -1 );
+	fgSizer2->Add( m_labelMM1, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_labelxx2 = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("Pan:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelxx2->Wrap( -1 );
+	fgSizer2->Add( m_labelxx2, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT, 5 );
+
+	m_spinCtrlPanX = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlPanX->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlPanX, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_spinCtrlPanY = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlPanY->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlPanY, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_spinCtrlPanZ = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlPanZ->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlPanZ, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_labelMM2 = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelMM2->Wrap( -1 );
+	fgSizer2->Add( m_labelMM2, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_labelxx21 = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("Rotation:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelxx21->Wrap( -1 );
+	fgSizer2->Add( m_labelxx21, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT, 5 );
+
+	m_spinCtrlRotX = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlRotX->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlRotX, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_spinCtrlRotY = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlRotY->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlRotY, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_spinCtrlRotZ = new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
+	m_spinCtrlRotZ->SetDigits( 3 );
+	fgSizer2->Add( m_spinCtrlRotZ, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+	m_labelDeg1 = new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, _("°"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelDeg1->Wrap( -1 );
+	fgSizer2->Add( m_labelDeg1, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+
+	sbSizerPositioning->Add( fgSizer2, 1, wxALL|wxEXPAND, 5 );
+
+
+	bSizerMain->Add( sbSizerPositioning, 0, wxALL|wxEXPAND, 5 );
+
+	wxBoxSizer* bSizerLights;
+	bSizerLights = new wxBoxSizer( wxHORIZONTAL );
+
+	wxStaticBoxSizer* sbSizerLightsIntensity;
+	sbSizerLightsIntensity = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Lights intensity") ), wxVERTICAL );
+
+	wxGridBagSizer* gbSizer11;
+	gbSizer11 = new wxGridBagSizer( 5, 5 );
+	gbSizer11->SetFlexibleDirection( wxBOTH );
+	gbSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+
+	m_TopLabel = new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, _("Top:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_TopLabel->Wrap( -1 );
+	gbSizer11->Add( m_TopLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
+
+	m_spinCtrlLightsTop = new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0, 0.1 );
+	m_spinCtrlLightsTop->SetDigits( 2 );
+	gbSizer11->Add( m_spinCtrlLightsTop, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+
+	m_bottomLabel = new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, _("Bottom:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_bottomLabel->Wrap( -1 );
+	gbSizer11->Add( m_bottomLabel, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
+
+	m_spinCtrlLightsBottom = new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0, 0.1 );
+	m_spinCtrlLightsBottom->SetDigits( 2 );
+	gbSizer11->Add( m_spinCtrlLightsBottom, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+
+	m_sidesLabel = new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, _("Side:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_sidesLabel->Wrap( -1 );
+	gbSizer11->Add( m_sidesLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
+
+	m_spinCtrlLightsSides = new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.5, 0.1 );
+	m_spinCtrlLightsSides->SetDigits( 2 );
+	gbSizer11->Add( m_spinCtrlLightsSides, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+
+	m_cameraLabel = new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, _("Camera:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_cameraLabel->Wrap( -1 );
+	gbSizer11->Add( m_cameraLabel, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
+
+	m_spinCtrlLightsCamera = new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0, 0.1 );
+	m_spinCtrlLightsCamera->SetDigits( 2 );
+	gbSizer11->Add( m_spinCtrlLightsCamera, wxGBPosition( 1, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+
+
+	gbSizer11->AddGrowableCol( 1 );
+	gbSizer11->AddGrowableCol( 3 );
+
+	sbSizerLightsIntensity->Add( gbSizer11, 1, wxALL|wxEXPAND, 5 );
+
+
+	bSizerLights->Add( sbSizerLightsIntensity, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
+
+	wxStaticBoxSizer* sbSizerLightsPosition;
+	sbSizerLightsPosition = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Lights position") ), wxVERTICAL );
+
+	wxFlexGridSizer* fgSizer3;
+	fgSizer3 = new wxFlexGridSizer( 0, 3, 5, 5 );
+	fgSizer3->AddGrowableCol( 1 );
+	fgSizer3->SetFlexibleDirection( wxBOTH );
+	fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+
+	m_labelSideLightsElevation = new wxStaticText( sbSizerLightsPosition->GetStaticBox(), wxID_ANY, _("Side lights elevation:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelSideLightsElevation->Wrap( -1 );
+	fgSizer3->Add( m_labelSideLightsElevation, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
+
+	m_spinCtrlLightsSideElevation = new wxSpinCtrl( sbSizerLightsPosition->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 90, 60 );
+	fgSizer3->Add( m_spinCtrlLightsSideElevation, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+
+	m_labelDegrees = new wxStaticText( sbSizerLightsPosition->GetStaticBox(), wxID_ANY, _("°"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_labelDegrees->Wrap( -1 );
+	fgSizer3->Add( m_labelDegrees, 0, wxALIGN_CENTER_VERTICAL, 5 );
+
+
+	sbSizerLightsPosition->Add( fgSizer3, 1, wxALL|wxEXPAND, 5 );
+
+
+	bSizerLights->Add( sbSizerLightsPosition, 1, wxEXPAND, 5 );
+
+
+	bSizerMain->Add( bSizerLights, 0, wxEXPAND, 5 );
 
 	m_sdbSizer1 = new wxStdDialogButtonSizer();
 	m_sdbSizer1OK = new wxButton( this, wxID_OK );
diff --git a/pcbnew/dialogs/dialog_render_job_base.fbp b/pcbnew/dialogs/dialog_render_job_base.fbp
index 3c5efc85c1..55290a7ee9 100644
--- a/pcbnew/dialogs/dialog_render_job_base.fbp
+++ b/pcbnew/dialogs/dialog_render_job_base.fbp
@@ -1,34 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <wxFormBuilder_Project>
-  <FileVersion major="1" minor="17"/>
+  <FileVersion major="1" minor="18"/>
   <object class="Project" expanded="true">
-    <property name="class_decoration">; </property>
     <property name="code_generation">C++</property>
-    <property name="disconnect_events">1</property>
-    <property name="disconnect_mode">source_name</property>
-    <property name="disconnect_php_events">0</property>
-    <property name="disconnect_python_events">0</property>
+    <property name="cpp_class_decoration">; </property>
+    <property name="cpp_disconnect_events">1</property>
+    <property name="cpp_event_generation">connect</property>
+    <property name="cpp_help_provider">none</property>
+    <property name="cpp_namespace"></property>
+    <property name="cpp_precompiled_header"></property>
+    <property name="cpp_use_array_enum">0</property>
+    <property name="cpp_use_enum">0</property>
     <property name="embedded_files_path">res</property>
     <property name="encoding">UTF-8</property>
-    <property name="event_generation">connect</property>
     <property name="file">dialog_render_job_base</property>
     <property name="first_id">1000</property>
-    <property name="help_provider">none</property>
-    <property name="image_path_wrapper_function_name"></property>
-    <property name="indent_with_spaces"></property>
     <property name="internationalize">1</property>
+    <property name="lua_skip_events">1</property>
+    <property name="lua_ui_table">UI</property>
     <property name="name">DIALOG_RENDER_JOB_BASE</property>
-    <property name="namespace"></property>
     <property name="path">.</property>
-    <property name="precompiled_header"></property>
+    <property name="php_disconnect_events">0</property>
+    <property name="php_disconnect_mode">source_name</property>
+    <property name="php_skip_events">1</property>
+    <property name="python_disconnect_events">0</property>
+    <property name="python_disconnect_mode">source_name</property>
+    <property name="python_image_path_wrapper_function_name"></property>
+    <property name="python_indent_with_spaces"></property>
+    <property name="python_skip_events">1</property>
     <property name="relative_path">1</property>
-    <property name="skip_lua_events">1</property>
-    <property name="skip_php_events">1</property>
-    <property name="skip_python_events">1</property>
-    <property name="ui_table">UI</property>
-    <property name="use_array_enum">0</property>
-    <property name="use_enum">0</property>
     <property name="use_microsoft_bom">0</property>
+    <property name="use_native_eol">0</property>
     <object class="Dialog" expanded="true">
       <property name="aui_managed">0</property>
       <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
@@ -66,21 +68,21 @@
           <property name="border">5</property>
           <property name="flag">wxALL|wxEXPAND</property>
           <property name="proportion">1</property>
-          <object class="wxFlexGridSizer" expanded="true">
+          <object class="wxFlexGridSizer" expanded="false">
             <property name="cols">2</property>
             <property name="flexible_direction">wxBOTH</property>
             <property name="growablecols"></property>
             <property name="growablerows"></property>
             <property name="hgap">5</property>
             <property name="minimum_size"></property>
-            <property name="name">fgSizer1</property>
+            <property name="name">fgSizerTop</property>
             <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
             <property name="permission">none</property>
             <property name="rows">0</property>
             <property name="vgap">6</property>
             <object class="sizeritem" expanded="false">
               <property name="border">5</property>
-              <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+              <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
               <property name="proportion">0</property>
               <object class="wxStaticText" expanded="false">
                 <property name="BottomDockable">1</property>
@@ -207,7 +209,7 @@
             </object>
             <object class="sizeritem" expanded="false">
               <property name="border">5</property>
-              <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+              <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
               <property name="proportion">0</property>
               <object class="wxStaticText" expanded="false">
                 <property name="BottomDockable">1</property>
@@ -333,11 +335,11 @@
                 <event name="OnChoice">OnFormatChoice</event>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
-              <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+              <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
               <property name="proportion">0</property>
-              <object class="wxStaticText" expanded="true">
+              <object class="wxStaticText" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -395,20 +397,20 @@
                 <property name="wrap">-1</property>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
               <property name="flag">wxEXPAND</property>
               <property name="proportion">1</property>
-              <object class="wxBoxSizer" expanded="true">
+              <object class="wxBoxSizer" expanded="false">
                 <property name="minimum_size"></property>
                 <property name="name">bSizer3</property>
                 <property name="orient">wxHORIZONTAL</property>
                 <property name="permission">none</property>
-                <object class="sizeritem" expanded="true">
+                <object class="sizeritem" expanded="false">
                   <property name="border">5</property>
                   <property name="flag">wxRIGHT|wxALIGN_CENTER_VERTICAL</property>
                   <property name="proportion">0</property>
-                  <object class="wxSpinCtrl" expanded="true">
+                  <object class="wxSpinCtrl" expanded="false">
                     <property name="BottomDockable">1</property>
                     <property name="LeftDockable">1</property>
                     <property name="RightDockable">1</property>
@@ -467,11 +469,11 @@
                     <property name="window_style"></property>
                   </object>
                 </object>
-                <object class="sizeritem" expanded="true">
+                <object class="sizeritem" expanded="false">
                   <property name="border">5</property>
                   <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
                   <property name="proportion">0</property>
-                  <object class="wxStaticText" expanded="true">
+                  <object class="wxStaticText" expanded="false">
                     <property name="BottomDockable">1</property>
                     <property name="LeftDockable">1</property>
                     <property name="RightDockable">1</property>
@@ -529,11 +531,11 @@
                     <property name="wrap">-1</property>
                   </object>
                 </object>
-                <object class="sizeritem" expanded="true">
+                <object class="sizeritem" expanded="false">
                   <property name="border">10</property>
                   <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
                   <property name="proportion">0</property>
-                  <object class="wxStaticText" expanded="true">
+                  <object class="wxStaticText" expanded="false">
                     <property name="BottomDockable">1</property>
                     <property name="LeftDockable">1</property>
                     <property name="RightDockable">1</property>
@@ -591,11 +593,11 @@
                     <property name="wrap">-1</property>
                   </object>
                 </object>
-                <object class="sizeritem" expanded="true">
+                <object class="sizeritem" expanded="false">
                   <property name="border">5</property>
                   <property name="flag">wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL</property>
                   <property name="proportion">0</property>
-                  <object class="wxSpinCtrl" expanded="true">
+                  <object class="wxSpinCtrl" expanded="false">
                     <property name="BottomDockable">1</property>
                     <property name="LeftDockable">1</property>
                     <property name="RightDockable">1</property>
@@ -654,11 +656,11 @@
                     <property name="window_style"></property>
                   </object>
                 </object>
-                <object class="sizeritem" expanded="true">
+                <object class="sizeritem" expanded="false">
                   <property name="border">5</property>
                   <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
                   <property name="proportion">0</property>
-                  <object class="wxStaticText" expanded="true">
+                  <object class="wxStaticText" expanded="false">
                     <property name="BottomDockable">1</property>
                     <property name="LeftDockable">1</property>
                     <property name="RightDockable">1</property>
@@ -718,11 +720,11 @@
                 </object>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
-              <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+              <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
               <property name="proportion">0</property>
-              <object class="wxStaticText" expanded="true">
+              <object class="wxStaticText" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -751,7 +753,7 @@
                 <property name="gripper">0</property>
                 <property name="hidden">0</property>
                 <property name="id">wxID_ANY</property>
-                <property name="label">Quality:</property>
+                <property name="label">Quality preset:</property>
                 <property name="markup">0</property>
                 <property name="max_size"></property>
                 <property name="maximize_button">0</property>
@@ -780,11 +782,11 @@
                 <property name="wrap">-1</property>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
               <property name="flag"></property>
               <property name="proportion">0</property>
-              <object class="wxChoice" expanded="true">
+              <object class="wxChoice" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -846,11 +848,11 @@
                 <event name="OnChoice">OnFormatChoice</event>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
-              <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+              <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
               <property name="proportion">0</property>
-              <object class="wxStaticText" expanded="true">
+              <object class="wxStaticText" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -908,11 +910,11 @@
                 <property name="wrap">-1</property>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
               <property name="flag"></property>
               <property name="proportion">0</property>
-              <object class="wxChoice" expanded="true">
+              <object class="wxChoice" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -974,11 +976,11 @@
                 <event name="OnChoice">OnFormatChoice</event>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
-              <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+              <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
               <property name="proportion">0</property>
-              <object class="wxStaticText" expanded="true">
+              <object class="wxStaticText" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -1036,11 +1038,11 @@
                 <property name="wrap">-1</property>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
               <property name="flag"></property>
               <property name="proportion">0</property>
-              <object class="wxSpinCtrlDouble" expanded="true">
+              <object class="wxSpinCtrlDouble" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -1107,16 +1109,16 @@
           <property name="border">5</property>
           <property name="flag">wxEXPAND|wxTOP|wxBOTTOM</property>
           <property name="proportion">0</property>
-          <object class="wxBoxSizer" expanded="true">
+          <object class="wxBoxSizer" expanded="false">
             <property name="minimum_size"></property>
-            <property name="name">bSizerBottom</property>
+            <property name="name">bSizerViewProjection</property>
             <property name="orient">wxHORIZONTAL</property>
             <property name="permission">none</property>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
               <property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
               <property name="proportion">1</property>
-              <object class="wxStaticBoxSizer" expanded="true">
+              <object class="wxStaticBoxSizer" expanded="false">
                 <property name="id">wxID_ANY</property>
                 <property name="label">View</property>
                 <property name="minimum_size"></property>
@@ -1124,11 +1126,11 @@
                 <property name="orient">wxVERTICAL</property>
                 <property name="parent">1</property>
                 <property name="permission">none</property>
-                <object class="sizeritem" expanded="true">
+                <object class="sizeritem" expanded="false">
                   <property name="border">5</property>
-                  <property name="flag">wxEXPAND</property>
+                  <property name="flag">wxALL|wxEXPAND</property>
                   <property name="proportion">1</property>
-                  <object class="wxGridBagSizer" expanded="true">
+                  <object class="wxGridBagSizer" expanded="false">
                     <property name="empty_cell_size"></property>
                     <property name="flexible_direction">wxBOTH</property>
                     <property name="growablecols"></property>
@@ -1139,14 +1141,14 @@
                     <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
                     <property name="permission">none</property>
                     <property name="vgap">5</property>
-                    <object class="gbsizeritem" expanded="true">
+                    <object class="gbsizeritem" expanded="false">
                       <property name="border">5</property>
                       <property name="colspan">1</property>
                       <property name="column">0</property>
-                      <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
                       <property name="row">0</property>
                       <property name="rowspan">1</property>
-                      <object class="wxStaticText" expanded="true">
+                      <object class="wxStaticText" expanded="false">
                         <property name="BottomDockable">1</property>
                         <property name="LeftDockable">1</property>
                         <property name="RightDockable">1</property>
@@ -1204,14 +1206,14 @@
                         <property name="wrap">-1</property>
                       </object>
                     </object>
-                    <object class="gbsizeritem" expanded="true">
+                    <object class="gbsizeritem" expanded="false">
                       <property name="border">5</property>
                       <property name="colspan">1</property>
                       <property name="column">1</property>
-                      <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                      <property name="flag"></property>
                       <property name="row">0</property>
                       <property name="rowspan">1</property>
-                      <object class="wxChoice" expanded="true">
+                      <object class="wxChoice" expanded="false">
                         <property name="BottomDockable">1</property>
                         <property name="LeftDockable">1</property>
                         <property name="RightDockable">1</property>
@@ -1273,7 +1275,7 @@
                         <event name="OnChoice">OnFormatChoice</event>
                       </object>
                     </object>
-                    <object class="gbsizeritem" expanded="true">
+                    <object class="gbsizeritem" expanded="false">
                       <property name="border">5</property>
                       <property name="colspan">2</property>
                       <property name="column">0</property>
@@ -1310,7 +1312,7 @@
                         <property name="gripper">0</property>
                         <property name="hidden">0</property>
                         <property name="id">wxID_ANY</property>
-                        <property name="label">Show floor</property>
+                        <property name="label">Add floor</property>
                         <property name="max_size"></property>
                         <property name="maximize_button">0</property>
                         <property name="maximum_size"></property>
@@ -1345,11 +1347,11 @@
                 </object>
               </object>
             </object>
-            <object class="sizeritem" expanded="true">
+            <object class="sizeritem" expanded="false">
               <property name="border">5</property>
               <property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
               <property name="proportion">1</property>
-              <object class="wxRadioBox" expanded="true">
+              <object class="wxRadioBox" expanded="false">
                 <property name="BottomDockable">1</property>
                 <property name="LeftDockable">1</property>
                 <property name="RightDockable">1</property>
@@ -1414,6 +1416,1994 @@
             </object>
           </object>
         </object>
+        <object class="sizeritem" expanded="true">
+          <property name="border">5</property>
+          <property name="flag">wxALL|wxEXPAND</property>
+          <property name="proportion">0</property>
+          <object class="wxStaticBoxSizer" expanded="false">
+            <property name="id">wxID_ANY</property>
+            <property name="label">Positioning</property>
+            <property name="minimum_size"></property>
+            <property name="name">sbSizerPositioning</property>
+            <property name="orient">wxVERTICAL</property>
+            <property name="parent">1</property>
+            <property name="permission">none</property>
+            <object class="sizeritem" expanded="false">
+              <property name="border">5</property>
+              <property name="flag">wxALL|wxEXPAND</property>
+              <property name="proportion">1</property>
+              <object class="wxFlexGridSizer" expanded="false">
+                <property name="cols">5</property>
+                <property name="flexible_direction">wxBOTH</property>
+                <property name="growablecols"></property>
+                <property name="growablerows"></property>
+                <property name="hgap">5</property>
+                <property name="minimum_size"></property>
+                <property name="name">fgSizer2</property>
+                <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
+                <property name="permission">none</property>
+                <property name="rows">0</property>
+                <property name="vgap">5</property>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxEXPAND</property>
+                  <property name="proportion">1</property>
+                  <object class="spacer" expanded="false">
+                    <property name="height">0</property>
+                    <property name="permission">protected</property>
+                    <property name="width">0</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_HORIZONTAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">X</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelX</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_HORIZONTAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">Y</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelY</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_HORIZONTAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">Z</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelZ</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxEXPAND</property>
+                  <property name="proportion">1</property>
+                  <object class="spacer" expanded="false">
+                    <property name="height">0</property>
+                    <property name="permission">protected</property>
+                    <property name="width">0</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">Pivot:</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelxx</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlPivotX</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlPivotY</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlPivotZ</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">mm</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelMM1</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">Pan:</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelxx2</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlPanX</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlPanY</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlPanZ</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">mm</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelMM2</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">Rotation:</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelxx21</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlRotX</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlRotY</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxSpinCtrlDouble" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="digits">3</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="inc">1</property>
+                    <property name="initial">0</property>
+                    <property name="max">10000</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min">-10000</property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_spinCtrlRotZ</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style">wxSP_ARROW_KEYS</property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="value"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                  </object>
+                </object>
+                <object class="sizeritem" expanded="false">
+                  <property name="border">5</property>
+                  <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                  <property name="proportion">0</property>
+                  <object class="wxStaticText" expanded="false">
+                    <property name="BottomDockable">1</property>
+                    <property name="LeftDockable">1</property>
+                    <property name="RightDockable">1</property>
+                    <property name="TopDockable">1</property>
+                    <property name="aui_layer">0</property>
+                    <property name="aui_name"></property>
+                    <property name="aui_position">0</property>
+                    <property name="aui_row">0</property>
+                    <property name="best_size"></property>
+                    <property name="bg"></property>
+                    <property name="caption"></property>
+                    <property name="caption_visible">1</property>
+                    <property name="center_pane">0</property>
+                    <property name="close_button">1</property>
+                    <property name="context_help"></property>
+                    <property name="context_menu">1</property>
+                    <property name="default_pane">0</property>
+                    <property name="dock">Dock</property>
+                    <property name="dock_fixed">0</property>
+                    <property name="docking">Left</property>
+                    <property name="drag_accept_files">0</property>
+                    <property name="enabled">1</property>
+                    <property name="fg"></property>
+                    <property name="floatable">1</property>
+                    <property name="font"></property>
+                    <property name="gripper">0</property>
+                    <property name="hidden">0</property>
+                    <property name="id">wxID_ANY</property>
+                    <property name="label">°</property>
+                    <property name="markup">0</property>
+                    <property name="max_size"></property>
+                    <property name="maximize_button">0</property>
+                    <property name="maximum_size"></property>
+                    <property name="min_size"></property>
+                    <property name="minimize_button">0</property>
+                    <property name="minimum_size"></property>
+                    <property name="moveable">1</property>
+                    <property name="name">m_labelDeg1</property>
+                    <property name="pane_border">1</property>
+                    <property name="pane_position"></property>
+                    <property name="pane_size"></property>
+                    <property name="permission">protected</property>
+                    <property name="pin_button">1</property>
+                    <property name="pos"></property>
+                    <property name="resize">Resizable</property>
+                    <property name="show">1</property>
+                    <property name="size"></property>
+                    <property name="style"></property>
+                    <property name="subclass">; ; forward_declare</property>
+                    <property name="toolbar_pane">0</property>
+                    <property name="tooltip"></property>
+                    <property name="window_extra_style"></property>
+                    <property name="window_name"></property>
+                    <property name="window_style"></property>
+                    <property name="wrap">-1</property>
+                  </object>
+                </object>
+              </object>
+            </object>
+          </object>
+        </object>
+        <object class="sizeritem" expanded="true">
+          <property name="border">5</property>
+          <property name="flag">wxEXPAND</property>
+          <property name="proportion">0</property>
+          <object class="wxBoxSizer" expanded="true">
+            <property name="minimum_size"></property>
+            <property name="name">bSizerLights</property>
+            <property name="orient">wxHORIZONTAL</property>
+            <property name="permission">none</property>
+            <object class="sizeritem" expanded="true">
+              <property name="border">5</property>
+              <property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
+              <property name="proportion">1</property>
+              <object class="wxStaticBoxSizer" expanded="true">
+                <property name="id">wxID_ANY</property>
+                <property name="label">Lights intensity</property>
+                <property name="minimum_size"></property>
+                <property name="name">sbSizerLightsIntensity</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="parent">1</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="true">
+                  <property name="border">5</property>
+                  <property name="flag">wxALL|wxEXPAND</property>
+                  <property name="proportion">1</property>
+                  <object class="wxGridBagSizer" expanded="true">
+                    <property name="empty_cell_size"></property>
+                    <property name="flexible_direction">wxBOTH</property>
+                    <property name="growablecols">1,3</property>
+                    <property name="growablerows"></property>
+                    <property name="hgap">5</property>
+                    <property name="minimum_size"></property>
+                    <property name="name">gbSizer11</property>
+                    <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
+                    <property name="permission">none</property>
+                    <property name="vgap">5</property>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">0</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
+                      <property name="row">0</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxStaticText" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Top:</property>
+                        <property name="markup">0</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_TopLabel</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">1</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                      <property name="row">0</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxSpinCtrlDouble" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="digits">2</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="inc">0.1</property>
+                        <property name="initial">0</property>
+                        <property name="max">1</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min">0</property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_spinCtrlLightsTop</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style">wxSP_ARROW_KEYS</property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">2</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
+                      <property name="row">0</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxStaticText" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Bottom:</property>
+                        <property name="markup">0</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_bottomLabel</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">3</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                      <property name="row">0</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxSpinCtrlDouble" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="digits">2</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="inc">0.1</property>
+                        <property name="initial">0</property>
+                        <property name="max">1</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min">0</property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_spinCtrlLightsBottom</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style">wxSP_ARROW_KEYS</property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">0</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT</property>
+                      <property name="row">1</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxStaticText" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Side:</property>
+                        <property name="markup">0</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_sidesLabel</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">1</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                      <property name="row">1</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxSpinCtrlDouble" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="digits">2</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="inc">0.1</property>
+                        <property name="initial">0.5</property>
+                        <property name="max">1</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min">0</property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_spinCtrlLightsSides</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style">wxSP_ARROW_KEYS</property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">2</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
+                      <property name="row">1</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxStaticText" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Camera:</property>
+                        <property name="markup">0</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_cameraLabel</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                      </object>
+                    </object>
+                    <object class="gbsizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="colspan">1</property>
+                      <property name="column">3</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                      <property name="row">1</property>
+                      <property name="rowspan">1</property>
+                      <object class="wxSpinCtrlDouble" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="digits">2</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="inc">0.1</property>
+                        <property name="initial">0</property>
+                        <property name="max">1</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min">0</property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_spinCtrlLightsCamera</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style">wxSP_ARROW_KEYS</property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                      </object>
+                    </object>
+                  </object>
+                </object>
+              </object>
+            </object>
+            <object class="sizeritem" expanded="true">
+              <property name="border">5</property>
+              <property name="flag">wxEXPAND</property>
+              <property name="proportion">1</property>
+              <object class="wxStaticBoxSizer" expanded="true">
+                <property name="id">wxID_ANY</property>
+                <property name="label">Lights position</property>
+                <property name="minimum_size"></property>
+                <property name="name">sbSizerLightsPosition</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="parent">1</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="true">
+                  <property name="border">5</property>
+                  <property name="flag">wxALL|wxEXPAND</property>
+                  <property name="proportion">1</property>
+                  <object class="wxFlexGridSizer" expanded="true">
+                    <property name="cols">3</property>
+                    <property name="flexible_direction">wxBOTH</property>
+                    <property name="growablecols">1</property>
+                    <property name="growablerows"></property>
+                    <property name="hgap">5</property>
+                    <property name="minimum_size"></property>
+                    <property name="name">fgSizer3</property>
+                    <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
+                    <property name="permission">none</property>
+                    <property name="rows">0</property>
+                    <property name="vgap">5</property>
+                    <object class="sizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
+                      <property name="proportion">0</property>
+                      <object class="wxStaticText" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Side lights elevation:</property>
+                        <property name="markup">0</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_labelSideLightsElevation</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                      </object>
+                    </object>
+                    <object class="sizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                      <property name="proportion">0</property>
+                      <object class="wxSpinCtrl" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="initial">60</property>
+                        <property name="max">90</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min">0</property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_spinCtrlLightsSideElevation</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style">wxSP_ARROW_KEYS</property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                      </object>
+                    </object>
+                    <object class="sizeritem" expanded="true">
+                      <property name="border">5</property>
+                      <property name="flag">wxALIGN_CENTER_VERTICAL</property>
+                      <property name="proportion">0</property>
+                      <object class="wxStaticText" expanded="true">
+                        <property name="BottomDockable">1</property>
+                        <property name="LeftDockable">1</property>
+                        <property name="RightDockable">1</property>
+                        <property name="TopDockable">1</property>
+                        <property name="aui_layer">0</property>
+                        <property name="aui_name"></property>
+                        <property name="aui_position">0</property>
+                        <property name="aui_row">0</property>
+                        <property name="best_size"></property>
+                        <property name="bg"></property>
+                        <property name="caption"></property>
+                        <property name="caption_visible">1</property>
+                        <property name="center_pane">0</property>
+                        <property name="close_button">1</property>
+                        <property name="context_help"></property>
+                        <property name="context_menu">1</property>
+                        <property name="default_pane">0</property>
+                        <property name="dock">Dock</property>
+                        <property name="dock_fixed">0</property>
+                        <property name="docking">Left</property>
+                        <property name="drag_accept_files">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="floatable">1</property>
+                        <property name="font"></property>
+                        <property name="gripper">0</property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">°</property>
+                        <property name="markup">0</property>
+                        <property name="max_size"></property>
+                        <property name="maximize_button">0</property>
+                        <property name="maximum_size"></property>
+                        <property name="min_size"></property>
+                        <property name="minimize_button">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="moveable">1</property>
+                        <property name="name">m_labelDegrees</property>
+                        <property name="pane_border">1</property>
+                        <property name="pane_position"></property>
+                        <property name="pane_size"></property>
+                        <property name="permission">protected</property>
+                        <property name="pin_button">1</property>
+                        <property name="pos"></property>
+                        <property name="resize">Resizable</property>
+                        <property name="show">1</property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass">; ; forward_declare</property>
+                        <property name="toolbar_pane">0</property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                      </object>
+                    </object>
+                  </object>
+                </object>
+              </object>
+            </object>
+          </object>
+        </object>
         <object class="sizeritem" expanded="true">
           <property name="border">5</property>
           <property name="flag">wxALL|wxEXPAND</property>
diff --git a/pcbnew/dialogs/dialog_render_job_base.h b/pcbnew/dialogs/dialog_render_job_base.h
index b26b905fbd..f23a5cc55e 100644
--- a/pcbnew/dialogs/dialog_render_job_base.h
+++ b/pcbnew/dialogs/dialog_render_job_base.h
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
+// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
 // http://www.wxformbuilder.org/
 //
 // PLEASE DO *NOT* EDIT THIS FILE!
@@ -30,7 +30,6 @@
 
 ///////////////////////////////////////////////////////////////////////////
 
-
 ///////////////////////////////////////////////////////////////////////////////
 /// Class DIALOG_RENDER_JOB_BASE
 ///////////////////////////////////////////////////////////////////////////////
@@ -59,6 +58,35 @@ class DIALOG_RENDER_JOB_BASE : public DIALOG_SHIM
 		wxChoice* m_choiceSide;
 		wxCheckBox* m_cbFloor;
 		wxRadioBox* m_radioProjection;
+		wxStaticText* m_labelX;
+		wxStaticText* m_labelY;
+		wxStaticText* m_labelZ;
+		wxStaticText* m_labelxx;
+		wxSpinCtrlDouble* m_spinCtrlPivotX;
+		wxSpinCtrlDouble* m_spinCtrlPivotY;
+		wxSpinCtrlDouble* m_spinCtrlPivotZ;
+		wxStaticText* m_labelMM1;
+		wxStaticText* m_labelxx2;
+		wxSpinCtrlDouble* m_spinCtrlPanX;
+		wxSpinCtrlDouble* m_spinCtrlPanY;
+		wxSpinCtrlDouble* m_spinCtrlPanZ;
+		wxStaticText* m_labelMM2;
+		wxStaticText* m_labelxx21;
+		wxSpinCtrlDouble* m_spinCtrlRotX;
+		wxSpinCtrlDouble* m_spinCtrlRotY;
+		wxSpinCtrlDouble* m_spinCtrlRotZ;
+		wxStaticText* m_labelDeg1;
+		wxStaticText* m_TopLabel;
+		wxSpinCtrlDouble* m_spinCtrlLightsTop;
+		wxStaticText* m_bottomLabel;
+		wxSpinCtrlDouble* m_spinCtrlLightsBottom;
+		wxStaticText* m_sidesLabel;
+		wxSpinCtrlDouble* m_spinCtrlLightsSides;
+		wxStaticText* m_cameraLabel;
+		wxSpinCtrlDouble* m_spinCtrlLightsCamera;
+		wxStaticText* m_labelSideLightsElevation;
+		wxSpinCtrl* m_spinCtrlLightsSideElevation;
+		wxStaticText* m_labelDegrees;
 		wxStdDialogButtonSizer* m_sdbSizer1;
 		wxButton* m_sdbSizer1OK;
 		wxButton* m_sdbSizer1Cancel;
diff --git a/pcbnew/pcbnew_jobs_handler.cpp b/pcbnew/pcbnew_jobs_handler.cpp
index 7d9a4848db..036ab962fa 100644
--- a/pcbnew/pcbnew_jobs_handler.cpp
+++ b/pcbnew/pcbnew_jobs_handler.cpp
@@ -535,6 +535,38 @@ int PCBNEW_JOBS_HANDLER::JobExportRender( JOB* aJob )
         cfg->m_Render.raytrace_post_processing = true;
     }
 
+    cfg->m_Render.raytrace_lightColorTop = COLOR4D(aRenderJob->m_lightTopIntensity.x,
+                                                  aRenderJob->m_lightTopIntensity.y,
+                                                  aRenderJob->m_lightTopIntensity.z, 1.0);
+
+    cfg->m_Render.raytrace_lightColorBottom = COLOR4D(aRenderJob->m_lightBottomIntensity.x,
+                                                     aRenderJob->m_lightBottomIntensity.y,
+                                                     aRenderJob->m_lightBottomIntensity.z, 1.0);
+
+    cfg->m_Render.raytrace_lightColorCamera = COLOR4D( aRenderJob->m_lightCameraIntensity.x,
+                                                      aRenderJob->m_lightCameraIntensity.y,
+                                                      aRenderJob->m_lightCameraIntensity.z, 1.0 );
+
+    COLOR4D lightColor( aRenderJob->m_lightSideIntensity.x,
+                             aRenderJob->m_lightSideIntensity.y,
+                             aRenderJob->m_lightSideIntensity.z, 1.0 );
+
+    cfg->m_Render.raytrace_lightColor = {
+        lightColor, lightColor, lightColor, lightColor,
+        lightColor, lightColor, lightColor, lightColor,
+    };
+
+    int sideElevation = aRenderJob->m_lightSideElevation;
+
+    cfg->m_Render.raytrace_lightElevation = {
+        sideElevation,  sideElevation,  sideElevation,  sideElevation,
+        -sideElevation, -sideElevation, -sideElevation, -sideElevation,
+    };
+
+    cfg->m_Render.raytrace_lightAzimuth = {
+        45, 135, 225, 315, 45, 135, 225, 315,
+    };
+
     cfg->m_CurrentPreset = aRenderJob->m_colorPreset;
     boardAdapter.m_Cfg = cfg;