12DIALOG_RENDER_JOB_BASE::DIALOG_RENDER_JOB_BASE( wxWindow* parent, wxWindowID 
id, 
const wxString& title, 
const wxPoint& pos, 
const wxSize& size, 
long style ) : 
DIALOG_SHIM( parent, id, title, pos, size, style )
 
   14    this->SetSizeHints( wxDefaultSize, wxDefaultSize );
 
   16    wxBoxSizer* bSizerMain;
 
   17    bSizerMain = 
new wxBoxSizer( wxVERTICAL );
 
   19    wxFlexGridSizer* fgSizerTop;
 
   20    fgSizerTop = 
new wxFlexGridSizer( 0, 2, 3, 5 );
 
   21    fgSizerTop->AddGrowableCol( 1 );
 
   22    fgSizerTop->SetFlexibleDirection( wxBOTH );
 
   23    fgSizerTop->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   25    m_textOutputPath = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Output file:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   29    m_textCtrlOutputFile = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
   34    m_formatLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Format:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   36    fgSizerTop->Add( 
m_formatLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
   38    wxArrayString m_choiceFormatChoices;
 
   39    m_choiceFormat = 
new wxChoice( 
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceFormatChoices, 0 );
 
   43    m_dimensionsLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Dimensions:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   47    wxBoxSizer* bSizerDimensions;
 
   48    bSizerDimensions = 
new wxBoxSizer( wxHORIZONTAL );
 
   50    m_spinCtrlWidth = 
new wxSpinCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 128, 32767, 0 );
 
   51    bSizerDimensions->Add( 
m_spinCtrlWidth, 0, wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
 
   53    m_staticText17 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"px"), wxDefaultPosition, wxDefaultSize, 0 );
 
   55    bSizerDimensions->Add( 
m_staticText17, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
   57    m_staticText19 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"x"), wxDefaultPosition, wxDefaultSize, 0 );
 
   59    bSizerDimensions->Add( 
m_staticText19, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
 
   61    m_spinCtrlHeight = 
new wxSpinCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 128, 32767, 0 );
 
   62    bSizerDimensions->Add( 
m_spinCtrlHeight, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
 
   64    m_staticText182 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"px"), wxDefaultPosition, wxDefaultSize, 0 );
 
   66    bSizerDimensions->Add( 
m_staticText182, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
   69    fgSizerTop->Add( bSizerDimensions, 1, wxEXPAND, 5 );
 
   71    m_presetLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Appearance preset:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   73    fgSizerTop->Add( 
m_presetLabel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
 
   75    wxString m_presetCtrlChoices[] = { 
_(
"Default"), 
_(
"Follow PCB Editor"), 
_(
"Follow PCB Plot Settings") };
 
   76    int m_presetCtrlNChoices = 
sizeof( m_presetCtrlChoices ) / 
sizeof( wxString );
 
   77    m_presetCtrl = 
new wxChoice( 
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_presetCtrlNChoices, m_presetCtrlChoices, 0 );
 
   79    fgSizerTop->Add( 
m_presetCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 );
 
   81    m_backgroundStyleLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Background style:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   85    wxArrayString m_choiceBgStyleChoices;
 
   86    m_choiceBgStyle = 
new wxChoice( 
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceBgStyleChoices, 0 );
 
   91    bSizerMain->Add( fgSizerTop, 1, wxALL|wxEXPAND, 10 );
 
   94    gSizer1 = 
new wxGridSizer( 0, 1, 6, 0 );
 
   96    m_cbUseBoardStackupColors = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Use board stackup colors"), wxDefaultPosition, wxDefaultSize, 0 );
 
  112    m_cbRaytracing_postProcessing = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Screen space ambient occlusions and global illumination reflections"), wxDefaultPosition, wxDefaultSize, 0 );
 
  117    bSizerMain->Add( gSizer1, 0, wxBOTTOM|wxRIGHT|wxLEFT, 10 );
 
  119    wxBoxSizer* bSizerViewProjection;
 
  120    bSizerViewProjection = 
new wxBoxSizer( wxHORIZONTAL );
 
  122    wxStaticBoxSizer* sbSizer1;
 
  123    sbSizer1 = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"View") ), wxVERTICAL );
 
  125    wxGridBagSizer* gbSizer1;
 
  126    gbSizer1 = 
new wxGridBagSizer( 5, 5 );
 
  127    gbSizer1->SetFlexibleDirection( wxBOTH );
 
  128    gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  130    m_sideLabel = 
new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, 
_(
"Side:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  132    gbSizer1->Add( 
m_sideLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  134    wxArrayString m_choiceSideChoices;
 
  135    m_choiceSide = 
new wxChoice( sbSizer1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceSideChoices, 0 );
 
  137    gbSizer1->Add( 
m_choiceSide, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), 0, 5 );
 
  139    m_zoomLabel = 
new wxStaticText( sbSizer1->GetStaticBox(), wxID_ANY, 
_(
"Zoom:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  141    gbSizer1->Add( 
m_zoomLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  143    m_spinCtrlZoom = 
new wxSpinCtrlDouble( sbSizer1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 1, 0.1 );
 
  145    gbSizer1->Add( 
m_spinCtrlZoom, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  148    sbSizer1->Add( gbSizer1, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
  151    bSizerViewProjection->Add( sbSizer1, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
 
  153    wxString m_radioProjectionChoices[] = { 
_(
"Perspective"), 
_(
"Orthogonal") };
 
  154    int m_radioProjectionNChoices = 
sizeof( m_radioProjectionChoices ) / 
sizeof( wxString );
 
  155    m_radioProjection = 
new wxRadioBox( 
this, wxID_ANY, 
_(
"Projection"), wxDefaultPosition, wxDefaultSize, m_radioProjectionNChoices, m_radioProjectionChoices, 1, wxRA_SPECIFY_COLS );
 
  160    bSizerMain->Add( bSizerViewProjection, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
 
  162    wxStaticBoxSizer* sbSizerPositioning;
 
  163    sbSizerPositioning = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Positioning") ), wxVERTICAL );
 
  165    wxFlexGridSizer* fgSizer2;
 
  166    fgSizer2 = 
new wxFlexGridSizer( 0, 5, 5, 5 );
 
  167    fgSizer2->SetFlexibleDirection( wxBOTH );
 
  168    fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  171    fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
 
  173    m_labelX = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"X"), wxDefaultPosition, wxDefaultSize, 0 );
 
  175    fgSizer2->Add( 
m_labelX, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
 
  177    m_labelY = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"Y"), wxDefaultPosition, wxDefaultSize, 0 );
 
  179    fgSizer2->Add( 
m_labelY, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
 
  181    m_labelZ = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"Z"), wxDefaultPosition, wxDefaultSize, 0 );
 
  183    fgSizer2->Add( 
m_labelZ, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
 
  186    fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
 
  188    m_labelxx = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"Pivot:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  190    fgSizer2->Add( 
m_labelxx, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  192    m_spinCtrlPivotX = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  196    m_spinCtrlPivotY = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  200    m_spinCtrlPivotZ = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  204    m_labelMM1 = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  206    fgSizer2->Add( 
m_labelMM1, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  208    m_labelxx2 = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"Pan:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  210    fgSizer2->Add( 
m_labelxx2, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  212    m_spinCtrlPanX = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  216    m_spinCtrlPanY = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  218    fgSizer2->Add( 
m_spinCtrlPanY, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  220    m_spinCtrlPanZ = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  222    fgSizer2->Add( 
m_spinCtrlPanZ, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  224    m_labelMM2 = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  226    fgSizer2->Add( 
m_labelMM2, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  228    m_labelxx21 = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"Rotation:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  230    fgSizer2->Add( 
m_labelxx21, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  232    m_spinCtrlRotX = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  236    m_spinCtrlRotY = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  238    fgSizer2->Add( 
m_spinCtrlRotY, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  240    m_spinCtrlRotZ = 
new wxSpinCtrlDouble( sbSizerPositioning->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -10000, 10000, 0, 1 );
 
  242    fgSizer2->Add( 
m_spinCtrlRotZ, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  244    m_labelDeg1 = 
new wxStaticText( sbSizerPositioning->GetStaticBox(), wxID_ANY, 
_(
"°"), wxDefaultPosition, wxDefaultSize, 0 );
 
  246    fgSizer2->Add( 
m_labelDeg1, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  249    sbSizerPositioning->Add( fgSizer2, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
  252    bSizerMain->Add( sbSizerPositioning, 0, wxALL|wxEXPAND, 10 );
 
  254    wxBoxSizer* bSizerLights;
 
  255    bSizerLights = 
new wxBoxSizer( wxHORIZONTAL );
 
  257    wxStaticBoxSizer* sbSizerLightsIntensity;
 
  258    sbSizerLightsIntensity = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Lights Intensity") ), wxVERTICAL );
 
  260    wxGridBagSizer* gbSizer11;
 
  261    gbSizer11 = 
new wxGridBagSizer( 5, 5 );
 
  262    gbSizer11->SetFlexibleDirection( wxBOTH );
 
  263    gbSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  265    m_TopLabel = 
new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, 
_(
"Top:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  267    gbSizer11->Add( 
m_TopLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  269    m_spinCtrlLightsTop = 
new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0, 0.1 );
 
  271    gbSizer11->Add( 
m_spinCtrlLightsTop, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  273    m_bottomLabel = 
new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, 
_(
"Bottom:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  275    gbSizer11->Add( 
m_bottomLabel, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
 
  277    m_spinCtrlLightsBottom = 
new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0, 0.1 );
 
  279    gbSizer11->Add( 
m_spinCtrlLightsBottom, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  281    m_sidesLabel = 
new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, 
_(
"Side:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  283    gbSizer11->Add( 
m_sidesLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  285    m_spinCtrlLightsSides = 
new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.5, 0.1 );
 
  287    gbSizer11->Add( 
m_spinCtrlLightsSides, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  289    m_cameraLabel = 
new wxStaticText( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, 
_(
"Camera:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  291    gbSizer11->Add( 
m_cameraLabel, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
 
  293    m_spinCtrlLightsCamera = 
new wxSpinCtrlDouble( sbSizerLightsIntensity->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0, 0.1 );
 
  295    gbSizer11->Add( 
m_spinCtrlLightsCamera, wxGBPosition( 1, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  298    gbSizer11->AddGrowableCol( 1 );
 
  299    gbSizer11->AddGrowableCol( 3 );
 
  301    sbSizerLightsIntensity->Add( gbSizer11, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
  304    bSizerLights->Add( sbSizerLightsIntensity, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
 
  306    wxStaticBoxSizer* sbSizerLightsPosition;
 
  307    sbSizerLightsPosition = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Lights Position") ), wxVERTICAL );
 
  309    wxFlexGridSizer* fgSizer3;
 
  310    fgSizer3 = 
new wxFlexGridSizer( 0, 3, 5, 5 );
 
  311    fgSizer3->AddGrowableCol( 1 );
 
  312    fgSizer3->SetFlexibleDirection( wxBOTH );
 
  313    fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  315    m_labelSideLightsElevation = 
new wxStaticText( sbSizerLightsPosition->GetStaticBox(), wxID_ANY, 
_(
"Side lights elevation:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  319    m_spinCtrlLightsSideElevation = 
new wxSpinCtrl( sbSizerLightsPosition->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 90, 60 );
 
  322    m_labelDegrees = 
new wxStaticText( sbSizerLightsPosition->GetStaticBox(), wxID_ANY, 
_(
"°"), wxDefaultPosition, wxDefaultSize, 0 );
 
  327    sbSizerLightsPosition->Add( fgSizer3, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
  330    bSizerLights->Add( sbSizerLightsPosition, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
 
  333    bSizerMain->Add( bSizerLights, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
 
  342    bSizerMain->Add( 
m_sdbSizer1, 0, wxALL|wxEXPAND, 5 );
 
  345    this->SetSizer( bSizerMain );
 
  347    bSizerMain->Fit( 
this );
 
  349    this->Centre( wxBOTH );